Konversi koordinat dari readShapePoly dalam R ke koordinat panjang-lat

9

Saya mencoba untuk menemukan beberapa centroid dari shapefile untuk kota Denmark dan kemudian menemukan waktu mengemudi di antara mereka. Saya menggunakan R's readShapePolyfungsi dari maptoolsdikombinasikan dengan gCentroidfungsi dari rgeos, dan semuanya bekerja. Namun, saya mendapatkan titik spasial seperti

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

Yang jelas bukan sesuatu yang bisa saya gunakan di Google untuk mengambil waktu perjalanan. Saya mencari cara untuk mengubah angka-angka ini menjadi bujur-lintang, tetapi tidak tahu caranya.

Ketika saya membaca data menggunakan readOGRdari rgdalperpustakaan saya mendapatkan koordinat yang sama tetapi ini memberi tahu saya berikut tentang apa yang saya asumsikan adalah proyeksi (tetapi koordinatnya sama)

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

Contoh yang dapat direproduksi: Saya telah memasukkan data untuk contoh di sini: https://github.com/sebastianbarfort/shapefiles

Ini seharusnya mereproduksi masalah:

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

map = readShapePoly("~/Downloads/shapefiles-master/kommuner1983.shp")
centroid = gCentroid(map)
centroid
sBarfort
sumber

Jawaban:

14

Gunakan spTransformuntuk mengubah koordinat ke WGS84:

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

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

merencanakan

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::readOGRmampu membaca informasi proyeksi secara otomatis. maptoolsfungsi tidak membaca atau menulis informasi proyeksi, sehingga terserah Anda untuk mengelola detail ini secara manual.

rcs
sumber
Inilah yang saya cari.
sBarfort
@sBarfort Jika jawabannya memecahkan pertanyaan Anda, maka Anda mungkin ingin menerimanya. Dengan begitu orang lain akan tahu bahwa itu adalah jawaban yang benar.
RK
Anda tidak memiliki kontrol yang sama dengan gCentroid, tetapi SpatialPolygons memegang centroid di objek. Anda dapat mengambilnya sebagai matriks menggunakan: coordinate (map_wgs84)
Jeffrey Evans