R'deki readShapePoly öğesinden koordinatları uzun latte koordinatlara dönüştürün


9

Danimarkalı belediyeler için bir şekil dosyasının bazı centroidlerini bulmaya çalışıyorum ve daha sonra aralarındaki sürüş süresini buluyorum. Kullandığım R'ın readShapePolydan fonksiyonu maptoolsile kombine gCentroidgelen fonksiyonu rgeosve her şey eserler. Ancak,

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

Bu, seyahat sürelerini yakalamak için Google'da kullanabileceğim bir şey değil. Bu sayıları boylam enlemine dönüştürmenin bir yolunu arıyorum, ama nasıl bir fikrim yok.

Ben kullanarak veri okurken readOGRgelen rgdalkütüphanede aynı koordinatları almak ama ben projeksiyon olduğunu varsayalım Ne hakkında aşağıdaki (ancak koordinatları aynıdır) söylüyor

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

Tekrarlanabilir örnek: Örnek için verileri buraya koydum: https://github.com/sebastianbarfort/shapefiles

Bu, sorunu yeniden oluşturmalıdır:

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

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

Yanıtlar:


14

spTransformKoordinatları WGS84'e dönüştürmek için kullanın :

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

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

arsa

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::readOGRprojeksiyon bilgilerini otomatik olarak okuyabilir. maptoolsfonksiyonlar ne projeksiyon bilgilerini okur ne de yazar, bu bilgileri manuel olarak yönetmek için size bırakılır.


Aradığım şey buydu.
sBarfort

@sBarfort Cevap sorunuzu çözerse, bunu kabul etmek isteyebilirsiniz. Bu şekilde başkaları bunun doğru cevap olduğunu bilir.
RK

GCentroid ile aynı kontrole sahip değilsiniz, ancak SpatialPolygons nesnede centroidi tutar. Bunları kullanarak bir matris olarak alabilirsiniz: coordinates (map_wgs84)
Jeffrey Evans
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.