gpt4 book ai didi

r - 从 shapefile 获取具有多边形 id 和质心(经纬度)信息的数据框

转载 作者:行者123 更新时间:2023-12-02 04:25:18 28 4
gpt4 key购买 nike

我有一个多边形形状文件(可下载 here ),我想从中创建一个包含 3 列的 data.frame ,其中包含:

  1. 多边形 ID
  2. 质心纬度
  3. 质心经度

来自这个答案here ,我知道以 Formal Class SpatialPoints 对象的形式获取此信息非常容易。当我将此对象转换为 data.frame 时,我丢失了 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)

这只是保留原始形状文件中的@data槽,然后从新的质心创建SpatialPointsDataFrame的问题。

然后您可以从中创建数据框或直接在绘图或其他空间...操作中使用它。

关于r - 从 shapefile 获取具有多边形 id 和质心(经纬度)信息的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32571956/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com