在周围的空间多边形内分配空间线

时间:2018-03-27 16:21:47

标签: r spatial geo sp

我在使用街道(邮政编码)级别的地理参考数据的R中的应用程序时遇到问题。我尝试编写一个以简单方式模仿我的问题的脚本,因此更容易接受建议。我也是R的新人,所以如果问题太简单或太不可能,我很抱歉。

我有一些与城市邮政编码相关的数据,比如犯罪。除此之外,我的应用程序正在与同一城市的人口普查区合作,所以我需要从街道(邮政编码)到这条街周围的人口普查区分配犯罪价值。

Streets被建模为SpatialLinesDataFrames,而Census Tracts是SpatialPolygonsDataFrames,来自包sp。问题是:(1)街道有两面(两条人行道),每边可能包含置于不同人口普查区内的房屋; (2)一些人口普查区域比一个区块大,因此,在这种情况下,街道两侧(两条人行道)都在同一个人口普查区内。

我正在考虑将一条街道的犯罪价值划分到每个人口普查区,其比例与该人口普查区内人行道的长度相同。隐含的假设是犯罪在人行道的每一米都有相同的发生概率。

在下面的剧本中,我有三个人口普查区--A(绿色),B(黄色)和C(红色) - 和一条街(蓝线)。

  • 街道有3个单位的长度(如果考虑两条人行道则为6个),而每个人口普查区只有1个单位的长度。

  • 人口普查区A(绿色)包含人行道的两侧,因此我需要将该街道中犯下的2/6的罪行分配给此人口普查区;

  • 人口普查局B(黄色)只包含一条长度为1的人行道,因此应该分配1/6的罪行;

  • 人口普查C(红色)就像前者一样,它包含一条长度为1的人行道,应该分配1/6的罪行;

  • 其余2/6的罪行都在这些人口普查区之外,所以我不需要在任何地方分配(或者我会在邻近的人口普查区分配)。

这是脚本......

library(sp)


# Definig SpatialLinesDataFrame of streets (zipcodes)
slin <- SpatialLines(list(Lines(list(Line(cbind(x=c(3,3), y=c(5,2)))),"street")))
sldf <- SpatialLinesDataFrame(slin, data.frame(crime=10, row.names="street"))

# Definig SpatialPolygonsDataFrame of Census Tract A, B and C
spol <- SpatialPolygons(list(
Polygons(list(Polygon(cbind(x=c(2,4,4,2), y=c(4,4,3,3)))),"A"),
Polygons(list(Polygon(cbind(x=c(2,3,3,2), y=c(3,3,2,2)))),"B"),
Polygons(list(Polygon(cbind(x=c(3,4,4,3), y=c(3,3,2,2)))),"C")))

spdf <- SpatialPolygonsDataFrame(spol, data.frame(crime=c(0,0,0), row.names=c("A","B","C")))

plot(spdf, col=c("green","yellow","red"),ylim=c(1,5))
lines(sldf, col="blue", lwd=3)

问题是如何实施它?

我认为包裹栅格中的函数intersect()似乎将街道分成更小的段以适合每个人口普查区域,但我仍然不知道如何处理每个人行道属于不同人口普查的情况道中。

我欢迎任何帮助,如有必要,我可以提供有关所需内容的更多信息。

非常感谢。

0 个答案:

没有答案