问题标签 [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.

0 投票
1 回答
682 浏览

d3.js - D3.js解析错误-正交地图投影的旋转

我有一个世界地图的正交投影,在 D3 中并使用 TopoJSON。我通过调用此代码为每次加载数据的国家/地区着色。地球在不停地旋转。

我的问题是,在旋转过程中我收到错误消息:

错误

>> 错误:在 d3.v3.min.js:1 中解析 d="" >> 时出现问题

对于每个:

首先,我认为它取决于 topojson 脚本,因为有不同的版本。但它没有。

javascript代码:

初始化地球/投影的属性:

从 json 和 tsv 读取数据并附加土地和国家:

地球自转:

0 投票
2 回答
2751 浏览

javascript - d3.js:正交旋转优化

我使用正交投影制作了一张地图,并尝试提高性能,因为旋转不平滑(大约 6-7FPS)。

这是一张使用 topojson 文件 (world-100m) 构建的世界地图。我需要与国家互动并对它们进行着色,因此svg:path 与国家一样多

加载后,我使用 d3.timer 启动了自动旋转功能:

为了理解它为什么这么慢,我在 Chrome 中做了一个个人资料记录,结果如下:

铬分析 1/2 铬分析 2/2

似乎Animation Frame Fired是缓慢的部分,但我真的不知道它是什么。当我打开它时,有 2 个 GC 事件(垃圾收集器?)但周围什么都没有……你知道在这 90 毫秒期间发生了什么吗?

任何提高性能的提示都非常受欢迎:-)

提前感谢!

顺便说一句,它看起来像这样: 地图概览

0 投票
1 回答
1682 浏览

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 的使用方式如下:

0 投票
1 回答
3333 浏览

r - 如何批量裁剪 R 中的栅格图层并更改投影

我正在使用空间数据为分析做准备——我在我的研究区域的所需范围内有一个 DEM,尽管我在全国范围内有大约 39 个其他图层(美国)。有没有办法一次将所有这 39 层裁剪到与 DEM 相同的程度?

此外,我将在不同的投影中将输出与其他层叠加。是否可以调整输出层的投影和像素大小?

我正在尝试尽可能多地使用免费软件来处理我的数据......

0 投票
1 回答
1029 浏览

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

0 投票
1 回答
603 浏览

shapefile - esri 投影文件代表什么?

我在这里真的把自己搞糊涂了。我正在尝试确定 esri shapefile 随附的关联 *.prj 文件的含义。如果我有一个 *.prj 文件,其中包含:

这里定义了两件事。投影坐标系和地理坐标系。

  1. 这是否意味着 shapefile 中的坐标已经计算过了,如果您想返回地理坐标,则需要使用上述投影变量进行转换,还是表示当前转换后的坐标值的元数据值?

我想使用 OpenGL 绘制 shapefile,所以我需要根据投影信息进行转换,还是只使用从 shapefile 读取的坐标?

0 投票
2 回答
4715 浏览

php - 如何使用 php 将 WGS84 转换为 ETRS89 UTM?

我需要找到一种方法来使用 php 将一对 WGS84 地理坐标转换为 ETRS89 投影坐标 (UTM)。

例子:

有人知道我该怎么做吗?

谢谢!!

0 投票
0 回答
977 浏览

c++ - 在具有地理坐标系的 opengl 中渲染 shapefile

如您所知,我们在 GIS 中有两种坐标系:地理坐标系投影坐标系
考虑以下情况:

  • 我有一个带有投影坐标系的 shapefile ,我的意思是顶点的坐标在PCS中,所以我可以使用 GDAL/OGR 库提取顶点,然后使用正交投影在 OpenGL 中显示它们是没有问题的。由于坐标以米为单位,并且它们被投影在 2D 平面上,所以我认为不会有问题。

  • 数据源有一个地理坐标系,我只想在投影坐标系中渲染它,所以我必须使用 PROJ.4 库进行转换,然后在 OpenGL 中渲染转换后的坐标。我再次认为不会有问题,因为我想显示的坐标是投影在 2D 平面上的。

  • 数据源有一个地理坐标系,我想在 OpenGL 窗口上的同一个 GCS 中渲染它们。所以我在地理坐标系中使用 GDAL/OGR 提取坐标,并且没有任何转换,我将在 OpenGL 中渲染它们。我怎样才能做到这一点?我的意思是如何在 OpenGL 窗口中设置椭圆平面,就像 ArcGIS 在地理坐标系中渲染数据一样?

0 投票
1 回答
3821 浏览

map - d3.js 墨卡托投影到纽约地图

我正在制作纽约市行政区的地图,但我似乎无法正确投影:我唯一得到的是一张小地图。

我尝试重新创建这个示例,它只会让控制台因错误而发疯,我怀疑是因为等式有问题。

当我试图让阿尔伯斯工作时,我尝试了这个问题的答案,但我仍然无法让地图工作。

现在,我正在使用横​​向墨卡托,代码如下,以及我使用这些文件之一创建的 topojson。

请,请停下来:(

提前致谢!

0 投票
1 回答
1473 浏览

image - 如何将平面图像投影到球形墨卡托 EPGS:900013 以在 openlayers 的图像层中使用

我有一个 400x400 像素的平面图像,代表 400x400 公里的区域。我需要将此图像绘制为我的 OpenLayers 映射系统上的叠加层。我使用 OpenStreetMap/Google Maps 作为基础层。我想使用图像层绘制覆盖图像,并且我想将覆盖图像居中在特定的纬度/经度点。基础层的投影是 EPSG:900913,实际上是 OpenStreetMap 和 Google Maps 使用的投影。

我所理解的(如果我错了,请纠正我)是我不能使用平面的“未投影”图像作为图像层,但我必须做一种“重新投影”来调整图像符合地图的投影,即EPSG:900913。在这里和网上搜索,似乎我应该使用一个名为 GDAL 的库/工具来执行此操作,但是虽然我对此完全陌生,但我问你:

  • 谁能告诉我如何使用它?
  • 你能告诉我我刚才所说的是否正确,我在这里描述的方式是否有效?
  • 如何使用 gdal 将我的平面未投影 400x400 像素图像转换为投影在 EPSG:900913 中的图像,并适合作为图像层作为叠加层放置?

谢谢。

我按要求添加了图像。

在此处输入图像描述

@capdragon 提供的答案很有用,让我更进一步。无论如何,我还有一些问题。我这样做了:

  1. 使用 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 输出。然后。

  1. 使用 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 中看到的最终值?