R:以特定顺序将 shapefile ID 保存为向量
R: save the shapefile IDs in a particular order as a vector
示例数据
library(raster)
dat <- getData('GADM', country='FRA', level=1)
plot(dat)
text(dat, labels=as.character(dat$ID_1), col="darkred", font=2, offset=0.5, adj=c(0,2))
保存省份ID,我可以这样做
province.id <- dat$ID_1
但是,我想按照某个方向(即从南到北)排列这些 ID
比如我的province.id
id应该从10开始(因为是最南的省份)一直到17因为是最北的省份
我想的一种方法是我可以生成每个省的质心并基于质心,
我可以确定哪些是最南到最北的位置。
library(rgeos)
trueCentroids = gCentroid(dat,byid=TRUE)
plot(dat)
points(coordinates(dat),pch=1)
但我还是无法导出输出或在南北方向排列质心
保存为矢量
一个简单的方法是获取每个多边形的最小纬度并根据它对您的 ID 进行排序:
# data
library(raster)
dat <- getData('GADM', country='FRA', level=1)
# create south to north index
sn_index <- unlist(lapply(dat@polygons, function(x) min(x@Polygons[[1]]@coords[,2])))
#sort IDs
dat$ID_1[order(sn_index)]
# [1] 10 13 21 16 22 3 2 14 20 6 18 8 11 7 1 9 15 4 5 19 12 17
示例数据
library(raster)
dat <- getData('GADM', country='FRA', level=1)
plot(dat)
text(dat, labels=as.character(dat$ID_1), col="darkred", font=2, offset=0.5, adj=c(0,2))
保存省份ID,我可以这样做
province.id <- dat$ID_1
但是,我想按照某个方向(即从南到北)排列这些 ID
比如我的province.id
id应该从10开始(因为是最南的省份)一直到17因为是最北的省份
我想的一种方法是我可以生成每个省的质心并基于质心,
我可以确定哪些是最南到最北的位置。
library(rgeos)
trueCentroids = gCentroid(dat,byid=TRUE)
plot(dat)
points(coordinates(dat),pch=1)
但我还是无法导出输出或在南北方向排列质心 保存为矢量
一个简单的方法是获取每个多边形的最小纬度并根据它对您的 ID 进行排序:
# data
library(raster)
dat <- getData('GADM', country='FRA', level=1)
# create south to north index
sn_index <- unlist(lapply(dat@polygons, function(x) min(x@Polygons[[1]]@coords[,2])))
#sort IDs
dat$ID_1[order(sn_index)]
# [1] 10 13 21 16 22 3 2 14 20 6 18 8 11 7 1 9 15 4 5 19 12 17