Esri карты конвертировать координаты

Я пытаюсь реализовать Esri maps в проект WPF, и я не могу понять, какие координаты они используют. Старая система используется lat/long поэтому мне нужно получить те же значения от Esri.

Когда я получаю объект MapPoint для текущей позиции карты, его значение X 300464.16687909653 и его значение Y 524877.02696703083, Мне нужно взять эти значения и преобразовать их в широту и долготу, а затем преобразовать их в случае необходимости. Я изо всех сил пытаюсь найти что-нибудь, что может помочь с этим преобразованием, я предполагал, что будут некоторые простые методы преобразования C#, но я не могу их найти.

Кто-нибудь может помочь?

(Просто чтобы прояснить, я использую.NET SDK)

3 ответа

Решение

С вашим последним комментарием я получил его и, как упомянул @HimBromBeere, - координаты WGS84 (World Mercator) и WGS84 (GPS). Это 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 - это библиотека геоинформационных систем, написанная для.NET 4. Она позволяет разработчикам включать функциональные возможности пространственных данных, анализа и отображения в свои приложения или предоставлять расширения ГИС сообществу (см. Вторую ссылку).

  1. Как выполнить преобразования с помощью ProjNet?

  2. Как преобразовать координаты Ламберта в C#?

Если вы непосредственно получите X,Y из ESRI Map, то я бы предположил, что вы еще не делали репроекции. Так что координаты должны еще в EPSG:102100, который ESRI Web Mercator.

Поскольку ваше требование - проецировать точку на WGS84 (EPSG:4326) для получения долготы и широты, есть много библиотек.Net, которые вы можете использовать для этой задачи, таких как proj4Net. Кроме того, есть несколько веб-API, которые могут сделать это, как и ESRI Javascript API: https://developers.arcgis.com/javascript/3/jssamples/util_project.html

Я думаю, что вам нужно конвертировать из расстояния в координаты. Вам нужна справочная координата, чтобы сделать преобразование.

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°.

Обновление: согласно комментариям, пожалуйста, ясно сказано, что это проекция Меркатора, и на странице есть даже ссылка на результат Google.

Вот решение C#: http://wiki.openstreetmap.org/wiki/Mercator

Другие вопросы по тегам