如何在 R 中导入 openstreetmaps 形状文件并提取 lat/long 质心?
How do I import an openstreetmaps shape file in R and extract lat/long centroids?
我正在尝试使用 rgdal 包在 R 中导入一个 openstreetmaps 形状文件。
我下载的形状文件里面有5个组件:
places.cpg
places.dbf
places.prj
places.shp
places.shx
可以在以下位置访问这些文件:
https://drive.google.com/open?id=0B1ITb_7lHh1EUFVfVWc4ekRfSnc
我必须执行以下操作:
1)导入形状文件
2) 在多边形的情况下提取形状的点或质心的 lat/long
3) 将 lat/long 对附加到 dbf 文件以进行一些分析
我卡在导入本身的第一阶段,我是运行下面的代码:
shape1 <- readOGR(dsn = "try", layer = "places")
这里 'try' 是我工作目录中的文件夹,上面提到的来自 openstreetmaps 的所有 5 'places' 文件都位于其中。
执行此操作时出现以下错误:
Error in readOGR(dsn = "try", layer = "places") : no features found
In addition: Warning message:
In ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv =
use_iconv, : ogrInfo: all features NULL
我需要有关此导入的帮助。或者,如果有一种方法可以直接从其中一个形状文件中提取 lat/long,我可以只打开 excel 中的 places.dbf 文件并添加 lat/long.
您需要使用 shapefile (.shp
) 作为 DSN。将 SpatialPointsDataFrame
转换为 "normal" data.frame
将给出 "ugh" 列名称
对于 lang 和 lat,因此您可以重命名它们以使其更有用:
library(sp)
library(rgdal)
places <- readOGR("places/places.shp", "places", verbose=FALSE, stringsAsFactors=FALSE)
places_df <- setNames(as.data.frame(places),
c("osm_id", "name", "type", "population", "longitude", "latitude"))
head(places_df)
## osm_id name type population longitude latitude
## 1 25431184 Stockertown village NA -75.26156 40.75446
## 2 25716549 Mechanicsburg village NA -77.00473 40.21020
## 3 25762119 Mansfield hamlet NA -77.07929 41.80569
## 4 25840249 New Columbia hamlet NA -76.87368 41.03368
## 5 25840585 Williamsport town 29381 -77.00277 41.24933
## 6 25930002 Hershey town 14257 -76.65060 40.28549
我无法让这个包工作,但包 "shapefiles" 为我完成了工作。它具有导入 shapefile 的 read.shapefile 功能。
当您遇到 readOGR() 函数的问题时:另一种可能性是使用 maptools
包。它创建 SpatialXXXDataFrames
以便您可以使用 rgeos
等中的所有功能。
library(maptools)
setwd("/your/data/path/")
places <- readShapeSpatial("places")
# ... your geospatial functions, like
plot(places)
您可能需要调整空间数据的投影。对于 OSM-Data,您需要在 spatialreference.org 处找到 WGS84(或 EPSG:4326)的 proj4string
。
因此您可以在 R 中调整投影:
proj4string(places) <- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
对于多边形质心的计算/"extraction",请参阅 post。
我正在尝试使用 rgdal 包在 R 中导入一个 openstreetmaps 形状文件。 我下载的形状文件里面有5个组件:
places.cpg
places.dbf
places.prj
places.shp
places.shx
可以在以下位置访问这些文件:
https://drive.google.com/open?id=0B1ITb_7lHh1EUFVfVWc4ekRfSnc
我必须执行以下操作: 1)导入形状文件 2) 在多边形的情况下提取形状的点或质心的 lat/long 3) 将 lat/long 对附加到 dbf 文件以进行一些分析
我卡在导入本身的第一阶段,我是运行下面的代码:
shape1 <- readOGR(dsn = "try", layer = "places")
这里 'try' 是我工作目录中的文件夹,上面提到的来自 openstreetmaps 的所有 5 'places' 文件都位于其中。
执行此操作时出现以下错误:
Error in readOGR(dsn = "try", layer = "places") : no features found
In addition: Warning message:
In ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv =
use_iconv, : ogrInfo: all features NULL
我需要有关此导入的帮助。或者,如果有一种方法可以直接从其中一个形状文件中提取 lat/long,我可以只打开 excel 中的 places.dbf 文件并添加 lat/long.
您需要使用 shapefile (.shp
) 作为 DSN。将 SpatialPointsDataFrame
转换为 "normal" data.frame
将给出 "ugh" 列名称
对于 lang 和 lat,因此您可以重命名它们以使其更有用:
library(sp)
library(rgdal)
places <- readOGR("places/places.shp", "places", verbose=FALSE, stringsAsFactors=FALSE)
places_df <- setNames(as.data.frame(places),
c("osm_id", "name", "type", "population", "longitude", "latitude"))
head(places_df)
## osm_id name type population longitude latitude
## 1 25431184 Stockertown village NA -75.26156 40.75446
## 2 25716549 Mechanicsburg village NA -77.00473 40.21020
## 3 25762119 Mansfield hamlet NA -77.07929 41.80569
## 4 25840249 New Columbia hamlet NA -76.87368 41.03368
## 5 25840585 Williamsport town 29381 -77.00277 41.24933
## 6 25930002 Hershey town 14257 -76.65060 40.28549
我无法让这个包工作,但包 "shapefiles" 为我完成了工作。它具有导入 shapefile 的 read.shapefile 功能。
当您遇到 readOGR() 函数的问题时:另一种可能性是使用 maptools
包。它创建 SpatialXXXDataFrames
以便您可以使用 rgeos
等中的所有功能。
library(maptools)
setwd("/your/data/path/")
places <- readShapeSpatial("places")
# ... your geospatial functions, like
plot(places)
您可能需要调整空间数据的投影。对于 OSM-Data,您需要在 spatialreference.org 处找到 WGS84(或 EPSG:4326)的 proj4string
。
因此您可以在 R 中调整投影:
proj4string(places) <- CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
对于多边形质心的计算/"extraction",请参阅