Конвертировать координаты из readShapePoly в R в координаты в длинных латах

9

Я пытаюсь найти несколько центроидов шейп-файла для датских муниципалитетов, а затем найти время в пути между ними. Я использую R«s readShapePolyфункцию из в maptoolsсочетании с gCentroidфункцией от rgeos, и все работает. Тем не менее, я получаю пространственные точки, такие как

SpatialPoints:
     x       y
1 571860.7 6225016
Coordinate Reference System (CRS) arguments: NA 

Это явно не то, что я могу использовать в Google, чтобы захватить время в пути. Я ищу способ преобразования этих чисел в долготу-широту, но понятия не имею, как.

Когда я читаю данные, используя readOGRиз rgdalбиблиотеки, я получаю те же координаты, но они говорят мне следующее о том, что я предполагаю, является проекцией (но координаты одинаковы)

Slot "proj4string":
CRS arguments:
+proj=utm +zone=32 +ellps=intl +units=m +no_defs

Воспроизводимый пример: я поместил данные для примера здесь: https://github.com/sebastianbarfort/shapefiles

Это должно воспроизвести проблему:

library(maptools)
library(rgdal)
library(rgeos)

map = readShapePoly("~/Downloads/shapefiles-master/kommuner1983.shp")
centroid = gCentroid(map)
centroid
sBarfort
источник

Ответы:

14

Используйте spTransformдля преобразования координат в WGS84:

library("rgdal")
library("rgeos")

map <- readOGR(".", "kommuner1983")
map_wgs84 <- spTransform(map, CRS("+proj=longlat +datum=WGS84"))
plot(map_wgs84, axes=TRUE)

сюжет

gCentroid(map_wgs84)
# SpatialPoints:
#       x     y
# 1 10.05 55.96
# Coordinate Reference System (CRS) arguments: +proj=longlat +datum=WGS84
# +ellps=WGS84 +towgs84=0,0,0 

rgdal::readOGRспособен автоматически считывать проекционную информацию. maptoolsФункции не читают и не записывают информацию о проекции, предоставляя вам возможность управлять этими деталями вручную.

система охлаждения реактора
источник
Это было именно то, что я искал.
sBarfort
@sBarfort Если ответ решит ваш вопрос, то вы можете принять его. Таким образом, другие будут знать, что это правильный ответ.
РК
У вас нет такого же элемента управления, как у gCentroid, но SpatialPolygons удерживает центроид в объекте. Вы можете получить их в виде матрицы, используя: координаты (map_wgs84)
Джеффри Эванс