将R中的readShapePoly坐标转换为经纬度坐标


9

我正在尝试为丹麦市政当局查找shapefile的质心,然后找到它们之间的行驶时间。我使用RreadShapePoly从功能maptools与组合gCentroid,从功能rgeos,和一切正常。但是,我得到诸如

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

我显然不能在Google中使用这来获取旅行时间。我正在寻找一种将这些数字转换为经度-纬度的方法,但不知道如何。

当我readOGRrgdal库中读取数据时,我得到了相同的坐标,但是它告诉我以下有关我假设是投影的信息(但是坐标是相同的)

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

Answers:


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 2014年

@sBarfort如果答案解决了您的问题,那么您可能希望接受。这样,其他人就会知道这是正确的答案。
2014年

您没有与gCentroid相同的控件,但是SpatialPolygons将质心保留在对象中。您可以使用以下格式将其检索为矩阵:ordinates(map_wgs84)
Jeffrey Evans
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.