我试图将osmdroid与WMS合作,但我找不到使WMS工作的方法. 目标:osmdroid与WMS(投影EPSG:4326) 暂定:我跟随此并包括文件:WMSMAPTILEPROVIDERBASIC,WMSMAPTILEDONDLOADER,WMSTILESOURCE,MAPTILE,并将以下代码放入我的活动中: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // get the mapview holder LinearLayout mapHolder = (LinearLayout)
以下是关于 map-projections 的编程技术问答
我正在使用openlayers 4.6和打字稿. 当我创建一个简单的矢量layer以渲染地图上的平淡的黑点时,我可能会提供一个URL,例如: export interface Options { features: string; url: string; text: string; font: string; textBaseline: string; fillColor: string; } ... constructor(private options: Options) { const { features, url, text, font, textBaseline, fillColor } = this.options; const format = new ol.format.GeoJSON(); this._layer = new ol.layer.Vector({ sou
我有一个扁平的400x400像素图像,代表400x400公里的面积.我需要将此映像绘制为我的OpenLayers映射系统上的覆盖层.我将OpenStreetMap/Google Maps用作基层.我想使用图像层绘制覆盖图像,并想将叠加图像集中在特定的LAT/LON点.基础层的投影是EPSG:900913,实际上是OpenStreetMap和Google Maps使用的投影. 我已经理解的(如果我错了,请纠正我),是我不能使用"未注射"图像作为图像层的平坦图像符合地图的投影,即EPSG:900913.在此处搜索和网络,看来我应该使用一个名为GDAL的库/工具来执行此操作,但是尽管我是全新的,但我问您: 任何人都可以在如何使用它方面向我讲话吗? 您能告诉我我刚才说的是正确的,我在这里描述的方式是有效的吗? 我如何使用GDAL将我的平坦未投影的400x400像素图像转换为EPSG:900913中投影的图像,并适合将图像层作为覆盖层? 谢谢. 我根据要求添加了图像.
据我所知,露天层中没有内置功能可以将两个点的直线投射到地球的曲率之后. 当我有一条直通马达加斯加的路线时,这是一个问题: 前端有任何解决方案,我在开放层中错过的任何功能,还是有任何第三方解决方案来计算此问题. 我知道这种计算在前端很难,这也取决于两个点之间的点的分辨率. 解决方案 我不相信OpenLayers对此问题有包装解决方案.但是,有一些可以解决此问题的选项,一种是使用JavaScript取两个点并返回代表大圆路径的Geojson路线. 使用图书馆,例如var generator = new arc.GreatCircle({x: -90, y: -70},{x: 89, y: 70}); // points to connect var n = 50; // n of points var coords = generator.Arc(n).geometries[0].coords; var geojson = {"type":"Feature",
我使用的是带有普通墨托映射的开放式层压器,我正在尝试通过在LATLONG中找到点网格来采样边界框. Bbox用拉特隆表示,例如 48.1388,-15.3616,55.2057,-3.9359 我可以在度中定义一个距离(例如x:2.5,y:2.4),并从那里弄清楚点. 但是,我想以米的(例如50000)来表达此距离,以将其与用户心态相关联(人们了解仪表,而不是学位). 如何转换此距离?我知道如何重新分辨一个点,但没有距离. 感谢您的任何提示! mulone 解决方案 使用 haversine公式获得lat/long的两个点之间的距离.假设地球是一个球体(在大多数情况下,"足够好"). javaScript实现了它(从在这里)看起来像这样: var R = 6371; // km var dLat = (lat2-lat1).toRad(); var dLon = (lon2-lon1).toRad(); var a = Math.sin(dLat/2
我实施了CPU代码,该代码将投影纹理复制到3D对象上的较大纹理,如果可以的话,"贴花烘烤",但是现在我需要在GPU上实现它.为此,我希望使用Compute着色器,因为很难在我当前的设置中添加FBO. 我当前实现的示例图像 这个问题更多是关于如何使用计算着色器,但对于任何有兴趣的人来说,这个想法是基于我从用户jozxyqk获得的答案,在此处查看: https://stackoverflow.com/a/27124029/2579966 我的代码中写入的纹理称为_texture,而投影的纹理为_textureProj 简单的计算着色器 const char *csSrc[] = { "#version 440\n", "layout (binding = 0, rgba32f) uniform image2D destTex;\ layout (local_size_x = 16, local_size_y = 16) in;\
我正在尝试绘制一个不规则的网格数据集(原始卫星数据),并将相关的纬度和纵向与定期格栅的一组纬度和由basemap.makegrid()给出的纵向绘制.我正在安装mpl_toolkits.natgrid使用matplotlib.mlab.griddata>.以下是Ipython中whos用作输出的变量的列表,以及变量上的一些统计信息: Variable Type Data/Info ------------------------------- datalat ndarray 666x1081: 719946 elems, type `float32`, 2879784 bytes (2 Mb) datalon ndarray 666x1081: 719946 elems, type `float32`, 2879784 bytes (2 Mb) gridlat ndarray 1200x1000: 1200000 elems, t
我正在尝试使unity的着色器 Mercator投影纹理 作为来源,并将其转换为 equiretectangular投射纹理 . 输入示例: 输出示例: 如果您查看上述示例的来源: // mercator float latClamped = clamp(lat, -1.4835298641951802, 1.4835298641951802); float yMerc = log(tan(PI / 4.0 + latClamped / 2.0)) / PI2; float xMerc = xEqui / 2.0; vec4 mercatorPos = vec4(xMerc, yMerc, 0.0, 1.0); 任何人都可以帮助扭转这种情况,这样我就可以从墨卡托地图作为源地图转移到equiRectangular(甚至更好, azimuthal ). 寻找一种方法来进行2D纹理变形,从X/y到经度(X)/Latitude(Y)和Back.
我非常熟悉R中的Geospatial数据.我的研究区域中有几个象限的形状,我根据" Quadid"进行了分类.我可以使用GGPLOT和SF软件包可以很好地显示我的数据,但是,我的数据似乎无法正确显示.在检查形状文件中是否有任何空间数据信息时,似乎没有: > proj4string(quads) Error in (function (classes, fdef, mtable) : unable to find an inherited method for function ‘proj4string’ for signature ‘"sf"’ 我希望X&Y实验室以十进制程度为单位.我试图将CRS分配到文件中,但是我会发现此错误. > proj4string(quads)
i使用在不规则的二维网格上组织的卫星数据,其尺寸为扫描线(沿轨道尺寸)和地面像素(跨越轨道尺寸).每个中心像素的纬度和经度信息都存储在辅助坐标变量中,以及四个角坐标对(在WGS84参考椭圆形中给出纬度和经度坐标).数据存储在NetCDF4文件中. 我要做的是有效地绘制这些文件(可能是文件的组合 - next步骤!). 到目前为止,我的方法是 jeremy Voisey's 回答此 question ,已经构建了一个数据框架,将我的兴趣变量链接到像素边界并将ggplot2与geom_polygon一起使用. 让我说明我的工作流程,并提前对天真的方法表示歉意:我从一两个星期开始就开始使用R编码. 注意 完全重现了问题: 1.下载两个数据帧: so2df
多年来,我一直在使用ggplot2来绘制气候网格数据.这些通常是投影的NetCDF文件.单元格在模型坐标中是正方形的,但取决于模型使用的投影,在现实世界中可能不是如此. 我通常的方法是首先在合适的常规网格上重新映射数据,然后再绘制.这引入了对数据的少量修改,通常这是可以接受的. 但是,我认为这已经不够好了:我想直接绘制投影数据而不重新映射,就像其他程序(例如ncl>)一样模型输出值. 但是,我正在遇到一些问题.我将逐步详细介绍最简单到最复杂的问题及其问题.我们可以克服它们吗? 编辑:感谢 @lbusett的答案,我得到了涵盖了解决方案.如果您喜欢它,请访问@lbusett的答案! 初始设置 #Load packages library(raster) library(ggplot2) #This gives you the starting data, 's' load(url('https://files.fm/down.php?i=kew5pxw
我正在研究一个教育地图项目,其中显示了不同的地图预测.我想在选择不同的预测之间实现变形过渡. 我找到了一个很好的示例,如何实施它,而且我没有太多的麻烦来重新创建它.不幸的是,我还需要能够剪辑预测.这与目标状态完美无瑕,但在变形时却不适合. 选择"正交"作为第一个投影,例如" equiretangular"作为第二个: 剪辑路径遵循较暗的线,而不是当前地图范围.有没有办法正确实施? 解决方案 这比看起来要实现要棘手得多,我记得几年前看着这个.最清洁的解决方案是创建一个新的防止功能,该功能确定投影接地的哪些部分应在靠近原点的部分后面/覆盖.但事实证明,这相对难以定义 - 至少我的我 - 也很难在新的防止功能中使用. 我们可以作弊.有几种方法,我建议几乎可以解决问题 - 但是您仍然可以看到一些重叠.我们将使用D3的抗智良抗底漆来确保没有特征在抗智商上伸展,然后我们将使用一个剪辑角度去除需要去除地球的部分. 设置夹角 当杂交投影纯粹纯正拼字法时,剪辑角度很
杰森·戴维斯(Jason Davies)吹我们 Mollweide WaterColor =" https://www.jasondavies.com/maps/raster/goode/" rel =" noreferrer">中断的Goode Raster 仍然很棒的演示. 现在,在可观察的总部,我看到了最新的 d3-geo-prockoction and d3-tile ,但没有关于如何做Jason的现代例子DID:重新注射标准Mercator瓷砖集. 如何使d3 tile扭曲到新投影? 解决方案 此答案基于: Mike Bostock的Raster Raster Reprocotity Jason Davies的Quad Tiles 和 alan McConchie的耙子重新推荐 这三个资源也相互建立.了解这三个示例将有助于了解下面的示例中发生的情况. 答案还用作基础,是我缓慢移动的持续尝试来构建瓷砖库. 这个答案的目的不是提出最终
我正在尝试使用在这里.一切顺利,直到酒吧越过地平线为止.当它们在行星的另一侧时,我不知道如何从底部切割条.有人可以建议我怎么做? /* * Original code source * http://codepen.io/teetteet/pen/Dgvfw */ var width = 400; var height = 400; var scrollSpeed = 50; var current = 180; var longitudeScale = d3.scale.linear() .domain([0, width]) .range([-180, 180]); var planetProjection = d3.geo.orthographic() .scale(200) .rotate([longitudeScale(current), 0]) .translate([width / 2, height / 2]) .clipAng
我想知道是否有一种方法可以仅显示基于Mollweide/Hammer投影(Matplotlib)(Matplotlib)中的图块. 我试图将绘图束缚在太平洋板块上,如下面的链接.但是,set_xlim和set_ylim函数似乎没有任何效果.预先感谢您的任何指导. 解决方案 从文档中,Hammer和Mollweide投影都不允许这样做,因为它们打印了整个世界地图.这是一些使用Polyconic投影的代码,但它是由直线界定的.这里的诀窍是定义角落的经度和创建的纬度. from mpl_toolkits.basemap import Basemap import matplotlib.pyplot as plt import numpy as np my_map = Basemap(projection='poly', lat_0=0, lon_0=-160, resolution = 'h', area_thresh = 0.1, llcrnrlon=1
我使用的是Python 3.6.1 64bits,Qt 5.6.2,pyqt5 5.6在Ubuntu 16.4上,BaseMap版本1.0.7,Matplotlib 2.0.2.当我尝试使用 Contourf 与 basemap ,带有投影" cyl",例如: from mpl_toolkits.basemap import Basemap import matplotlib.pyplot as plt import numpy as np map = Basemap(projection='cyl',lat_0=45,lon_0=-100,resolution='c') nlats = 73; nlons = 145; delta = 2.*np.pi/(nlons-1) lats = (0.5*np.pi-delta*np.indices((nlats,nlons))[0,:,:]) lons = (delta*np.indices((nlats,nlons))[1,:,:
我正在尝试使用CATTOPY获取地图的特征的坐标,但我想获得图投影的坐标而不是原始投影的数据. 例如: import matplotlib.pyplot as plt import cartopy.crs as ccrs fig = plt.figure(figsize=(10, 10)) ax = plt.axes(projection=ccrs.epsg(3857)) fig.add_axes(ax) ax.coastlines() ax.set_global() lines = ax.plot((0, 360), (-85.06, 85.06), transform=ccrs.PlateCarree()) fig.show() 上一个代码使用映射投影显示了带有两行的地图,但是lines(具有matplotlib.lines.Line2D实例的列表)只是一个在数据原始投影中的坐标的对象(lines[0].get_data() - - > (array([ 0, 36
我有一组2D网格点(x,y),我想将其映射到一个球上,为3D点(x,y,z). 我意识到,随着腹肌(y)的增加,我的网格贴片只会覆盖赤道附近的一部分球,因此将避免进行严重的翘曲. 我很难为此找到正确的方程式. 解决方案 从Wikipedia的文章中解释了有关Mercator投影的文章: Given a "mapping sphere" of radius R, the Mercator projection (x,y) of a given latitude and longitude is: x = R * longitude y = R * log( tan( (latitude + pi/2)/2 ) ) and the inverse mapping of a given map location (x,y) is: longitude = x / R latitude = 2 * atan(exp(y/R)) - pi/2 从
我知道我可以使用投影将两种对象类型映射为: var destModel = from m in sourceModel select new DestModelType {A = m.A, C = m.C, E = m.E} 其中 class SourceModelType { string A {get; set;} string B {get; set;} string C {get; set;} string D {get; set;} string E {get; set;} } class DestModelType { string A {get; set;} string C {get; set;} string E {get; set;} } 但是,如果我想做一个像通用之类的事情来做到这一点怎么办,我不知道我要处理的两种类型.因此,它将行走" DEST"类型