r多边形点

Sea*_*ean 6 gis r

我有一百万点和一个大的形状文件-8GB-这太大了,无法加载到我系统上的R内存中.形状文件是单层的,因此给定的x,y最多只能击中一个多边形 - 只要它不完全在边界上!每个多边形都标有一个severity-例如1,2,3.我在64位ubuntu机器上使用R,配备12GB内存.

什么是最简单的方法能够"标签"的数据帧的多边形severity,让我得到了data.frame一个额外的列,即x,y,severity

Spa*_*man 8

只因为你拥有的只是一把锤子,并不意味着每一个问题都是钉子.

将数据加载到PostGIS中,为多边形构建空间索引,并执行单个SQL空间叠加.将结果导出回R.

顺便说一句,说shapefile是8Gb并不是一个非常有用的信息.Shapefile由至少三个文件组成,.shp是几何体,.dbf是数据库,.shx是连接两者的.shx.如果您的.dbf是8Gb,那么您可以通过将其替换为不同的.dbf来轻松读取形状.即使.shp是8Gb,也可能只有三个多边形,在这种情况下,可能很容易简化它们.你有多少个多边形,shapefile的.shp部分有多大?


sch*_*der 5

我认为你应该预处理数据并创建一个结构,列出网格中矩形区域的可能多边形.这样,你可以减少你必须检查点的多边形,并且附加结构将适合内存,因为它只有指向多边形的指针.

这是一张图片来说明:

http://img191.imageshack.us/img191/5189/stackoverflowpolygonmes.png

您想要检查黄点所在的多边形.您通常会检查所有多边形,但是通过网格优化(橙色线,没有绘制整个网格,只是其中一个字段),您只需要检查填充的多边形,因为它们都在网格字段内部或部分内部.

类似的方法是不将所有多边形数据存储在内存中,而只是多边形边界框,每个多边形只需要2个而不是3个X/Y对(以及指向实际多边形数据的附加指针),但是这样没有像第一个建议那样节省空间.