我有一百万个点和一个大的形状文件——8GB——它太大了,无法加载到我系统的 R 中的内存中。形状文件是单层的,所以给定 x
, y
最多会击中一个多边形 - 只要它不完全在边界上!每个多边形都标有 severity
- 例如1
, 2
, 3
.我在具有 12GB 内存的 64 位 ubuntu 机器上使用 R。
能够将数据框“标记”到多边形的最简单方法是什么severity
所以我得到一个 data.frame
带有额外的列,即 x
, y
, severity
?
最佳答案
仅仅因为你只有一把锤子,并不意味着每个问题都是钉子。
将您的数据加载到 PostGIS,为您的多边形构建一个空间索引,并执行单个 SQL 空间叠加。将结果导出回 R。
顺便说一句,说 shapefile 是 8Gb 并不是一个非常有用的信息。 Shapefiles 由至少三个文件组成,.shp 是几何图形,.dbf 是数据库,.shx 是连接两者。如果您的 .dbf 是 8Gb,那么您可以通过将其替换为不同的 .dbf 来轻松读取形状本身。即使 .shp 是 8Gb,它也可能只有三个多边形,在这种情况下,简化它们可能很容易。您有多少个多边形,shapefile 的 .shp 部分有多大?
关于多边形中的 r 个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3807136/