问题标签 [map-projections]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
d3.js - D3.js解析错误-正交地图投影的旋转
我有一个世界地图的正交投影,在 D3 中并使用 TopoJSON。我通过调用此代码为每次加载数据的国家/地区着色。地球在不停地旋转。
我的问题是,在旋转过程中我收到错误消息:
错误
>> 错误:在 d3.v3.min.js:1 中解析 d="" >> 时出现问题
对于每个:
首先,我认为它取决于 topojson 脚本,因为有不同的版本。但它没有。
javascript代码:
初始化地球/投影的属性:
从 json 和 tsv 读取数据并附加土地和国家:
地球自转:
javascript - d3.js:正交旋转优化
我使用正交投影制作了一张地图,并尝试提高性能,因为旋转不平滑(大约 6-7FPS)。
这是一张使用 topojson 文件 (world-100m) 构建的世界地图。我需要与国家互动并对它们进行着色,因此svg:path 与国家一样多。
加载后,我使用 d3.timer 启动了自动旋转功能:
为了理解它为什么这么慢,我在 Chrome 中做了一个个人资料记录,结果如下:
似乎Animation Frame Fired是缓慢的部分,但我真的不知道它是什么。当我打开它时,有 2 个 GC 事件(垃圾收集器?)但周围什么都没有……你知道在这 90 毫秒期间发生了什么吗?
任何提高性能的提示都非常受欢迎:-)
提前感谢!
顺便说一句,它看起来像这样:
silverlight - 如何在 ArcGIS 中将图形转换为不同的坐标系?
我正在尝试向 Silverlight ArcGIS 应用程序添加功能,该应用程序允许将 shapefile 上传并显示在地图上。每当我上传 shapefile 时,它都会正确显示,但在错误的位置,例如应该在德克萨斯州绘制的形状在撒哈拉沙漠中绘制。
我很确定问题在于我们的地图使用的坐标系与每个 shapefile 不同,但我无法找到任何可以成功转换 shapefile 坐标的资源。WebMercator.FromGeographic适用于某些 shapefile,但会导致应用程序在其他文件中崩溃。
我尝试使用 GeometryService 并尝试更改形状的 SpatialReferences,但都没有任何明显的效果。
不适用于 FromGeographic 的文件的 PRJ 如下所示:
PROJCS["Basic Albers WGS84",GEOGCS["D_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.013453292519]9 ,PROJECTION["Albers"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-96.0],PARAMETER["Standard_Parallel_1",45.5],PARAMETER["Standard_Parallel_2" ,29.5],PARAMETER["Latitude_Of_Origin",23.0],UNIT["Foot_US",0.3048006096012192]]
我该从哪里着手解决这个问题?
编辑:
以下是如何创建多边形图形的代码:
GeometryService 的使用方式如下:
r - 如何批量裁剪 R 中的栅格图层并更改投影
我正在使用空间数据为分析做准备——我在我的研究区域的所需范围内有一个 DEM,尽管我在全国范围内有大约 39 个其他图层(美国)。有没有办法一次将所有这 39 层裁剪到与 DEM 相同的程度?
此外,我将在不同的投影中将输出与其他层叠加。是否可以调整输出层的投影和像素大小?
我正在尝试尽可能多地使用免费软件来处理我的数据......
mkmapview - CLLocationCoordinate2D 到 MKMapPoint 使用 PROJ4
我正在尝试使用 Proj4 库来转换不同的地图投影以与 Apple Map Kit 一起使用。出于测试目的,我想我将从使用 Proj4 复制 MKMapPointForCoordinate 函数开始。
这些是我正在使用的定义:
当我使用坐标 47.5、-97.3 时,Proj4 转换返回:
6028687.013553943,-10834169.44145535
但是 MKMapPointForCoordinate 返回: 61646948.12444445, 93835627.5941129 相差一个数量级。
Map Kit 的世界尺寸为 268435456 x 268435456
shapefile - esri 投影文件代表什么?
我在这里真的把自己搞糊涂了。我正在尝试确定 esri shapefile 随附的关联 *.prj 文件的含义。如果我有一个 *.prj 文件,其中包含:
这里定义了两件事。投影坐标系和地理坐标系。
- 这是否意味着 shapefile 中的坐标已经计算过了,如果您想返回地理坐标,则需要使用上述投影变量进行转换,还是表示当前转换后的坐标值的元数据值?
我想使用 OpenGL 绘制 shapefile,所以我需要根据投影信息进行转换,还是只使用从 shapefile 读取的坐标?
php - 如何使用 php 将 WGS84 转换为 ETRS89 UTM?
我需要找到一种方法来使用 php 将一对 WGS84 地理坐标转换为 ETRS89 投影坐标 (UTM)。
例子:
有人知道我该怎么做吗?
谢谢!!
c++ - 在具有地理坐标系的 opengl 中渲染 shapefile
如您所知,我们在 GIS 中有两种坐标系:地理坐标系和投影坐标系
考虑以下情况:
我有一个带有投影坐标系的 shapefile ,我的意思是顶点的坐标在PCS中,所以我可以使用 GDAL/OGR 库提取顶点,然后使用正交投影在 OpenGL 中显示它们是没有问题的。由于坐标以米为单位,并且它们被投影在 2D 平面上,所以我认为不会有问题。
数据源有一个地理坐标系,我只想在投影坐标系中渲染它,所以我必须使用 PROJ.4 库进行转换,然后在 OpenGL 中渲染转换后的坐标。我再次认为不会有问题,因为我想显示的坐标是投影在 2D 平面上的。
数据源有一个地理坐标系,我想在 OpenGL 窗口上的同一个 GCS 中渲染它们。所以我在地理坐标系中使用 GDAL/OGR 提取坐标,并且没有任何转换,我将在 OpenGL 中渲染它们。我怎样才能做到这一点?我的意思是如何在 OpenGL 窗口中设置椭圆平面,就像 ArcGIS 在地理坐标系中渲染数据一样?
image - 如何将平面图像投影到球形墨卡托 EPGS:900013 以在 openlayers 的图像层中使用
我有一个 400x400 像素的平面图像,代表 400x400 公里的区域。我需要将此图像绘制为我的 OpenLayers 映射系统上的叠加层。我使用 OpenStreetMap/Google Maps 作为基础层。我想使用图像层绘制覆盖图像,并且我想将覆盖图像居中在特定的纬度/经度点。基础层的投影是 EPSG:900913,实际上是 OpenStreetMap 和 Google Maps 使用的投影。
我所理解的(如果我错了,请纠正我)是我不能使用平面的“未投影”图像作为图像层,但我必须做一种“重新投影”来调整图像符合地图的投影,即EPSG:900913。在这里和网上搜索,似乎我应该使用一个名为 GDAL 的库/工具来执行此操作,但是虽然我对此完全陌生,但我问你:
- 谁能告诉我如何使用它?
- 你能告诉我我刚才所说的是否正确,我在这里描述的方式是否有效?
- 如何使用 gdal 将我的平面未投影 400x400 像素图像转换为投影在 EPSG:900913 中的图像,并适合作为图像层作为叠加层放置?
谢谢。
我按要求添加了图像。
@capdragon 提供的答案很有用,让我更进一步。无论如何,我还有一些问题。我这样做了:
- 使用 gdal_translate 将 GCP 设置为图像的四个角和中心,如下所示:
gdal_translate -of "GTIFF" -gcp 0 0 8.6923 45.5427 -gcp 400 0 13.8149 45.5427 -gcp 200 200 11.2536 43.771702 -gcp 0 400 8.8413 41.9460 -gcp 400 400 13.6659 41.9460 quadrprod.png quadrprod_gpc.tif
这样我得到一个 quadrprod_gcp.tif 输出。然后。
- 使用 gdalwarp 应用上述点中设置的 GCP 并设置正确的投影,即 EPSG:4326,如下所示:
gdalwarp -t_srs EPSG:4326 quadrprod_gcp.tif quadrprod_gcp_warped.tif
这样我得到了一个最终的 quadrprod_gcp_warped.tif。生成的图像不再是 400x400 像素,而是 458x331 像素。然后,如果我使用 gdalinfo 来查看它,我发现了这个:
如您所见,4 个角和中心纬度/经度与我使用 -gcp 值设置的值不同。我的问题:
- 为什么 gdalinfo 返回的纬度/经度值与我在步骤 1 中使用 -gpc 设置的值不同?
- 这是正常的还是我做错了什么?
- 下一步是什么?我应该再次将图像从 EPSG:4326 转换为 EPSG:900913 吗?
- 当我将图像作为叠加层放置在 openlayers 中时,当我创建边界对象时,我应该将其用作西南角和东北角,我在 -gcp 中使用的值还是我在 gdalinfo 中看到的最终值?