Esri 地图坐标转换
Esri maps coordinate convert
我正在尝试将 Esri maps
实施到 WPF 项目中,但我无法理解他们使用的坐标。旧系统使用 lat/long
,所以我需要从 Esri 获取相同的值。
当我获取地图当前位置的MapPoint 对象时,它的X 值为300464.16687909653
,Y 值为524877.02696703083
。我需要获取这些值并将它们转换为纬度和经度,然后在必要时以其他方式转换它们。我正在努力寻找任何可以帮助进行此转换的方法,我认为周围会有一些简单的 C# 转换方法,但我似乎找不到它们。
有人能帮忙吗?
(说明一下,我使用的是 .NET SDK)
我认为您需要将距离转换为坐标。
您需要一个参考坐标来进行转换。
您提供的 X 和 Y 应该是以米为单位的经度和纬度距离。
所以你需要弄清楚X和Y是什么。
我怀疑他们在WGS84 Antarctic Polar Stereographic (EPSG:3031),这是一个参考-90°,0°的系统。
更新:请看评论,明明是墨卡托投影,页面上竟然还有一个link到google的结果。
这是一个 C# 解决方案:
http://wiki.openstreetmap.org/wiki/Mercator#C.23
根据你最后的评论,我明白了,正如@HimBromBeere 提到的——坐标是 WGS84(世界墨卡托)和 WGS84(GPS)。是 EPSG:3395 和 EPSG:4326。
您可以自己尝试Online coordinate converter。
在坐标参考系统 (CRS) 下拉框旁边,您可以单击并显示 CRS 的参数:
EPSG:3395
PROJCS["WGS 84 / World Mercator",
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4326"]],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]],
PROJECTION["Mercator_1SP"],
PARAMETER["central_meridian",0],
PARAMETER["scale_factor",1],
PARAMETER["false_easting",0],
PARAMETER["false_northing",0],
AUTHORITY["EPSG","3395"],
AXIS["Easting",EAST],
AXIS["Northing",NORTH]]
EPSG:4326
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4326"]]
要深入了解,您可以查看以下 link。 DotSpatial 是一个为 .NET 4 编写的地理信息系统库。它允许开发人员将空间数据、分析和映射功能合并到他们的应用程序中,或者为社区贡献 GIS 扩展(参见第二个 link)。
如果您直接从 ESRI 地图获得 X、Y,那么我会假设您还没有进行任何重投影。这样坐标应该仍然在 EPSG:102100 哪个 ESRI Web 墨卡托。
由于您的要求是将点投影到 WGS84 (EPSG:4326) 以获得经度和纬度,因此有许多 .Net 库可用于此任务,例如 proj4Net。还有多个网络 API 也可以像 ESRI Javascript API 那样做:https://developers.arcgis.com/javascript/3/jssamples/util_project.html
我正在尝试将 Esri maps
实施到 WPF 项目中,但我无法理解他们使用的坐标。旧系统使用 lat/long
,所以我需要从 Esri 获取相同的值。
当我获取地图当前位置的MapPoint 对象时,它的X 值为300464.16687909653
,Y 值为524877.02696703083
。我需要获取这些值并将它们转换为纬度和经度,然后在必要时以其他方式转换它们。我正在努力寻找任何可以帮助进行此转换的方法,我认为周围会有一些简单的 C# 转换方法,但我似乎找不到它们。
有人能帮忙吗?
(说明一下,我使用的是 .NET SDK)
我认为您需要将距离转换为坐标。 您需要一个参考坐标来进行转换。
您提供的 X 和 Y 应该是以米为单位的经度和纬度距离。
所以你需要弄清楚X和Y是什么。 我怀疑他们在WGS84 Antarctic Polar Stereographic (EPSG:3031),这是一个参考-90°,0°的系统。
更新:请看评论,明明是墨卡托投影,页面上竟然还有一个link到google的结果。
这是一个 C# 解决方案: http://wiki.openstreetmap.org/wiki/Mercator#C.23
根据你最后的评论,我明白了,正如@HimBromBeere 提到的——坐标是 WGS84(世界墨卡托)和 WGS84(GPS)。是 EPSG:3395 和 EPSG:4326。
您可以自己尝试Online coordinate converter。
在坐标参考系统 (CRS) 下拉框旁边,您可以单击并显示 CRS 的参数:
EPSG:3395
PROJCS["WGS 84 / World Mercator",
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4326"]],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]],
PROJECTION["Mercator_1SP"],
PARAMETER["central_meridian",0],
PARAMETER["scale_factor",1],
PARAMETER["false_easting",0],
PARAMETER["false_northing",0],
AUTHORITY["EPSG","3395"],
AXIS["Easting",EAST],
AXIS["Northing",NORTH]]
EPSG:4326
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4326"]]
要深入了解,您可以查看以下 link。 DotSpatial 是一个为 .NET 4 编写的地理信息系统库。它允许开发人员将空间数据、分析和映射功能合并到他们的应用程序中,或者为社区贡献 GIS 扩展(参见第二个 link)。
如果您直接从 ESRI 地图获得 X、Y,那么我会假设您还没有进行任何重投影。这样坐标应该仍然在 EPSG:102100 哪个 ESRI Web 墨卡托。
由于您的要求是将点投影到 WGS84 (EPSG:4326) 以获得经度和纬度,因此有许多 .Net 库可用于此任务,例如 proj4Net。还有多个网络 API 也可以像 ESRI Javascript API 那样做:https://developers.arcgis.com/javascript/3/jssamples/util_project.html