从shapefile中获取带有多边形id和质心(lat long)信息的数据帧



我有一个多边形shapefile(可在这里下载),我想从中创建一个data.frame,包含3列:

  1. 多边形id
  2. 质心纬度
  3. <
  4. 质心经度/gh>

从这里的答案,我知道它很容易得到这个信息作为一个Formal Class SpatialPoints对象。当我将这个对象转换为数据帧时,我丢失了id信息。

# Load Shapefile
  Legislative_areas <- readOGR(dsn = 'C:/Users/.../Downloads/Legislative2010UTM', layer ='Legislative2010UTM')
# Get centroids
  cent <- gCentroid(Legislative_areas, byid=TRUE)
# Convert to data.frame, but loose id info
  cent <- as.data.frame(cent)

关于如何保持id信息的任何想法?

library(rgdal)
library(rgeos)
# download w/o wasting bandwidth
URL <- "ftp://dnrftp.dnr.ne.gov/pub/data/state/Legislative2010UTM.zip"
fil <- basename(URL)
if (!file.exists(fil)) download.file(URL, fil)
# unzip & get list of files
fils <- unzip(fil)
# find the shapefile in it
shp <- grep("shp$", fils, value=TRUE)
# get the first layer from it
lay <- ogrListLayers(shp)[1]
# read in the shapefile
leg <- readOGR(shp, lay)
# get the centroids and then convert them to a SpatialPointsDataFrame
leg_centers <- SpatialPointsDataFrame(gCentroid(leg, byid=TRUE), 
                                      leg@data, match.ID=FALSE)

这只是一个从原始shapefile中保留@data插槽的问题,然后从新的质心制作SpatialPointsDataFrame

然后你可以从它创建一个数据帧或使用它在绘图或其他Spatial…操作直接

相关内容

  • 没有找到相关文章

最新更新