【问题标题】:Esri maps coordinate convertEsri 地图坐标转换
【发布时间】:2017-01-15 05:40:44
【问题描述】:

我正在尝试将Esri maps 实施到 WPF 项目中,但我无法理解他们使用的坐标。旧系统使用lat/long,所以我需要从 Esri 获取相同的值。

当我得到地图当前位置的 MapPoint 对象时,它的 X 值为300464.16687909653,它的 Y 值为524877.02696703083。我需要获取这些值并将它们转换为纬度和经度,然后在必要时将它们转换为另一种方式。我正在努力寻找任何可以帮助进行这种转换的方法,我认为周围会有一些简单的 C# 转换方法,但我似乎找不到它们。

谁能帮忙?

(为了清楚起见,我使用的是 .NET sdk)

【问题讨论】:

  • 首先你应该知道这个坐标在哪个坐标参考系统中。可能是网络墨卡托,例如...
  • 您还有更多real worldcoordinates 吗?可能点必须向左移动四个字符?如果是这样,google.de/maps/@52.4877027,30.0464167,5z 在白俄罗斯的任何地方,X / Y 更改为伊朗。
  • Esri 地图的起源是什么?
  • 如果您在地图上查看:spatialreference.org/ref/sr-org/16。您可以看到 -1.9995856060759, 53.701171875 是英格兰的中心,位于纬度/经度。它还提供了其他坐标(与 Esri/ArcGis 提供的相同),即 -222592.851466、7079301.949831。我需要找到一种方法在它们之间进行转换。

标签: c# wpf arcgis esri esri-maps


【解决方案1】:

根据您的最后一条评论,我明白了,正如@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"]]

更深入地了解这一点,您可以查看以下链接。 DotSpatial 是一个为 .NET 4 编写的地理信息系统库。它允许开发人员将空间数据、分析和制图功能整合到他们的应用程序中,或者为社区贡献 GIS 扩展(参见第二个链接)。

  1. How to perform transformations using ProjNet?

  2. How to transform Lambert coordinates in C#?

【讨论】:

    【解决方案2】:

    如果您直接从 ESRI Map 获得 X,Y,那么我会假设您还没有进行任何重投影。这样坐标应该仍然在 ESRI Web Mercator 的 EPSG:102100 中。

    由于您的要求是将点投影到 WGS84 (EPSG:4326) 以获取经度和纬度,因此您可以使用许多 .Net 库来完成此任务,例如 proj4Net。还有多个 Web API 也可以像 ESRI Javascript API 一样做到这一点:https://developers.arcgis.com/javascript/3/jssamples/util_project.html

    【讨论】:

      【解决方案3】:

      我认为您需要将距离转换为坐标。 您需要一个参考坐标来进行转换。

      您提供的 X 和 Y 应该是以米为单位的经纬度距离。

      以下是您可能需要的公式。 https://math.stackexchange.com/questions/29157/how-do-i-convert-the-distance-between-two-lat-long-points-into-feet-meters

      所以你需要弄清楚 X 和 Y 是什么。 我怀疑它们在 WGS84 南极极地立体图 (EPSG:3031) 中,这是一个指代 -90°、0° 的系统。

      更新:请根据 cmets 的说法,它清楚地表明它是墨卡托投影,并且页面上甚至还有指向 google 结果的链接。

      这是一个 C# 解决方案: http://wiki.openstreetmap.org/wiki/Mercator#C.23

      【讨论】:

      • "以米为单位的经度距离" 什么?这对我来说毫无意义。根据实际的参考系统,曲线可以是椭圆体上定义的角度(例如 WGS84),也可以是矩形单位(例如平面地图上定义的米)。而且只有x对应经度,y对应纬度。
      猜你喜欢
      • 2010-11-12
      • 1970-01-01
      • 2016-12-31
      • 1970-01-01
      • 2013-09-22
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多