我在文件地理数据库中有一个很大的点要素类(〜4 000 000条记录)。这是具有100m分辨率的常规点网格。
我需要在这一层上进行某种概括。为此,我创建了一个新网格,其中每个点位于4个“旧”点的中间:
* * * *
o o o
* * * *
o o o
* * * *
[*] =原始网格点-[o] =新网格点
每个新点的属性值都是基于旧网格中其4个相邻点的加权值来计算的。因此,我在我的新网格的所有点上循环,并针对它们中的每一个,在我的旧网格的所有点上循环,以查找邻居(通过比较属性表中的X和Y的值)。一旦找到4个邻居,我们就会跳出循环。
这里没有方法上的复杂性,但是我的问题是,根据我的第一个测试,该脚本将持续数周才能完成...
您是否有提高效率的可能性?我脑海中浮现出一些想法:
- 索引字段X和Y =>我这样做了,但是没有注意到任何明显的性能变化
- 进行空间查询以查找邻居,而不是基于属性的查询。这真的有帮助吗?ArcGIS中应该执行哪些空间功能?我怀疑,例如,缓冲每个新点会更有效
- 将要素类转换为NumPy数组。有帮助吗?到目前为止,我与NumPy的合作并不多,除非有人告诉我这可能真的有助于减少处理时间,否则我不愿涉足其中
- 还要别的吗?