Несоответствие между полигонами POSGAR94 и листовой картой WGS84 - PullRequest
0 голосов
/ 09 июля 2020

Мне нужно нарисовать кучу полигонов из этого набора данных на карте листовок на R:

Координаты указаны в POSGAR94 , но они мне нужны WGS84 для нанесения на листок (поверх слоя OpenStreetMap) и сравнения их с другими данными (уже на WGS84):

library(rgdal)
library(magrittr)
library(leaflet)


complete_data <- readOGR("data_folder", 
                GDAL1_integer64_policy = TRUE)

complete_data <- spTransform(bsas, 
                    CRS("+proj=longlat +datum=WGS84 +no_defs"))

Я фильтрую данные, чтобы сохранить только их часть :

int_data <- complete_data[grep("^0604219|^0604201|060421102|060421103", complete_data@data$link), ]

И я строю:

leaflet(int_data, options = leafletOptions(minZoom = 12, maxZoom = 18)) %>%
  setMaxBounds(lat1 = -37.1815, lng1 = -58.5581, lat2 = -37.1197, lng2 = -58.4297) %>%
  addTiles()%>%
  addPolygons(color = "#3498db", weight = 2, smoothFactor = 0.5,
              opacity = 0.5, fillOpacity = 0.1,
              highlightOptions = highlightOptions(color = "black", weight = 3,
                                                  bringToFront = TRUE))

Текущий результат выглядит так:

актуальная карта

Все полигоны смещены блоком, наиболее заметным по периметру города. Вот как должен выглядеть этот многоугольник:

ожидаемая карта

Мои вопросы:

Не ошибаюсь ли я с прогнозом? Или spTransform вносит ошибку в координаты?

или

Мой код в порядке, но данные неверны?

EDIT : Это результат st_crs до и после преобразования:

ДО

Coordinate Reference System:
  User input: +proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0=0 +ellps=WGS84 +units=m +no_defs  
  wkt:
PROJCS["unnamed",
    GEOGCS["WGS 84",
        DATUM["unknown",
            SPHEROID["WGS84",6378137,298.257223563]],
        PRIMEM["Greenwich",0],
        UNIT["degree",0.0174532925199433]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",-90],
    PARAMETER["central_meridian",-66],
    PARAMETER["scale_factor",1],
    PARAMETER["false_easting",3500000],
    PARAMETER["false_northing",0],
    UNIT["Meter",1]]

ПОСЛЕ

Coordinate Reference System:
  User input: +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
  wkt:
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.0174532925199433,
        AUTHORITY["EPSG","9122"]],
    AUTHORITY["EPSG","4326"]]

1 Ответ

0 голосов
/ 09 июля 2020

Похоже, проблема с набором данных. Я смотрю на это в QGIS вместе с некоторой базовой картой OSM, и вокруг Буэнос-Айреса все, кажется, прекрасно вписывается в дорожную сеть:

BSAS

But going a bit south (e.g. around Mar del Plata coastline) shows an obvious misalignment:

Mar del Plata

Is my code ok, but the data is wrong?

Since the same problem can be seen using a completely different method, it's safe to say that your code is OK, and working as expected.

We can say that the dataset mismatches when reprojected over a OSM basemap. However, we cannot say that the data is wrong. If we load your dataset along with some reference data from ide.ign.gob.ar (ограничения по отделам), данные тоже не совпадают:

ideign + indec

In fact, superimposing OSM, IDE-IGN and INDEC data means three different data sources which don't match:

ideign + inde c + osm

Это нормально . Когда дело доходит до согласования наборов данных ГИС, не существует простого определения «правильного», и здесь задействовано множество факторов: критерии сбора, параметры ортотрансформирования, смещение датума, деформация проекции и даже дрейф континентов, среди прочего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...