Я использую ArcGIS .NET SDK
с WPF
, и мой код основан на этом проекте .
Я пытаюсь загрузить полигоны из базы данных для отображения на карте , Я также хочу иметь возможность редактировать эти полигоны и обновлять их в базе данных. У меня все работает нормально, так как я сохранял свои полигоны с помощью свойства SpatialReferences.WebMercator.
Но теперь у меня есть база данных, где полигоны сохраняются как Wgs84 (широта и долгота). Теперь я могу загрузить эти полигоны на карту, но я не могу их редактировать, так как Map - это WebMercator, а полигоны - Wgs84. Как только я пытаюсь редактировать, я получаю исключение:
Входная пространственная привязка не соответствует собственной пространственной привязке ...
Мне нужно преобразовать мои полигоны как только я загружаю их из базы данных (Wgs84 в WebMercator) и преобразовываю их обратно непосредственно перед сохранением в базу данных (WebMercator в Wgs84).
Итак, я смог выполнить первое преобразование, загружаю полигон Wgs84 из базы данных и конвертировать каждую точку в WebMercator. Я могу отображать эти многоугольники и редактировать их.
Но я пытаюсь выполнить второе преобразование при попытке сохранить многоугольник. Я нашел формулу, которая может преобразовать эти точки WebMercator обратно в Wgs84 для сохранения в базе данных, но в дополнение к широте и долготе ему также нужна зона. Таким образом, я получаю очки:
String geomStr = MyMapView.SketchEditor.Geometry.ToJson();
Оттуда я могу получить все пары широт и долг для конвертации, но мне нужна зона каждой точки. Есть ли способ получить зону из объекта Graphi c или Geometry? Или как насчет определения зоны по простому знанию точки широты или долготы? Это все, что мне нужно, прежде чем я смогу попробовать формулу преобразования для Wgs84 в WebMercator.
Этот инструмент обладает необходимой мне функциональностью. Но при конвертации из EPSG: 3857 в EPSG: 4326. это не на 100% точно *