Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Esri地图坐标转换_C#_Wpf_Arcgis_Esri_Esri Maps - Fatal编程技术网

C# Esri地图坐标转换

C# Esri地图坐标转换,c#,wpf,arcgis,esri,esri-maps,C#,Wpf,Arcgis,Esri,Esri Maps,我试图将Esri映射实现到一个WPF项目中,但我无法理解它们使用的坐标。旧系统使用了lat/long,因此我需要从Esri获得相同的值 当我获取地图当前位置的MapPoint对象时,其X值为300464.16687909653,Y值为524877.02696703083。我需要将这些值转换为lat和lon,然后在必要时以另一种方式进行转换。我正在努力寻找任何有助于这种转换的方法,我认为会有一些简单的C#转换方法,但我似乎找不到它们 有人能帮忙吗 (为了澄清,我使用的是.NET sdk)我认为需要

我试图将
Esri映射
实现到一个WPF项目中,但我无法理解它们使用的坐标。旧系统使用了
lat/long
,因此我需要从Esri获得相同的值

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

有人能帮忙吗


(为了澄清,我使用的是.NET sdk)

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

提供的X和Y应为经纬度距离,单位为米

以下是您可能需要的公式。

所以你需要弄清楚X和Y是什么。 我怀疑它们在WGS84南极极赤平摄影(EPSG:3031)中,这是一个参考-90°、0°的系统

更新:根据评论,它清楚地表明这是墨卡托投影,甚至在页面上有一个指向谷歌结果的链接

下面是一个C#解决方案:

在你最后的评论中,我得到了它,正如@himbrombeer所提到的——坐标是WGS84(世界墨卡托)和WGS84(全球定位系统)。EPSG:3395和EPSG:4326

你可以自己试一试

在坐标参考系(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是一个为.NET4编写的地理信息系统库。它允许开发者将空间数据、分析和绘图功能整合到他们的应用程序中,或者为社区提供GIS扩展(参见第二个链接)


  • 如果你直接从ESRI映射得到X,Y,那么我假设你还没有做任何重投影。因此,坐标仍应在EPSG:102100中,即ESRI Web Mercator


    由于您的需求是将点投影到WGS84(EPSG:4326)以获取经度和纬度,因此有许多.Net库可用于此任务,如proj4Net。还有多个web API也可以做到这一点,如ESRI Javascript API:

    首先,您应该了解该坐标系位于哪个坐标系中。例如,可能是Web mercator…您是否有更多的
    真实世界
    坐标?点是否必须向左移动四个字符?如果是白俄罗斯的任何地方,X/Y发生了变化,那就是伊朗。Esri地图的来源是什么?如果你在地图上看到:。你可以看到-1.9995856060759,53.701171875是英格兰的中心。它还提供了其他坐标(与Esri/ArcGis提供的坐标相同),即-222592.851466、7079301.949831。我需要找到一种在它们之间转换的方法。“经度-米距离”什么?那对我来说毫无意义。根据实际参考系统,CORRD为椭球体(如WGS84)上定义的角度或矩形单位(如平面地图上定义的米)。此外,只有x对应经度,y对应纬度。