如何利用NumPy数组优化大数据地理处理?


16

我对学习如何利用NumPy数组优化地理处理感兴趣。我的大部分工作都涉及“大数据”,其中地理处理通常需要几天的时间才能完成某些任务。不用说,我对优化这些例程非常感兴趣。ArcGIS 10.1具有许多可通过arcpy访问的NumPy函数,包括:

  1. NumPyArrayToFeatureClass(arcpy.da)
  2. RasterToNumPyArray(arcpy)
  3. TableToNumPyArray(arcpy.da)

出于示例目的,假设我想利用NumPy数组优化以下处理密集型工作流程:

在此处输入图片说明

这里的总体思想是,有大量的基于矢量的点在矢量和基于栅格的操作中移动,从而生成二进制整数栅格数据集。

如何合并NumPy数组以优化此类工作流程?


2
仅供参考,还有NumPyArrayToRaster函数和FeatureClassToNumPyArray函数。
blah238 2013年

2
ArcGIS多处理》博客文章中有一些很好的信息,可能在此处适用。您可能还对其他多处理问题感兴趣。
blah238 2013年

3
在我看来,在考虑在ArcPy中使用Numpy之前,您首先需要了解NumPy数组与Python列表相比具有哪些优势。Numpy的范围比ArcGIS宽得多。
基因

2
@gene,这个StackOverflow答案似乎很好地总结了它。
blah238

3
顺便说一句,如果你也感兴趣的Hadoop太-有大的(空间)数据的发展值得在此检查出的视频GIS工具的Hadoop
PolyGeo

Answers:


3

我认为问题的症结在于工作流中的哪些任务不是真正依赖于ArcGIS的?显而易见的候选者包括表格和栅格运算。如果数据必须以gdb或某种其他ESRI格式开始和结束,那么您需要弄清楚如何最小化这种重新格式化的成本(即,最小化往返次数),甚至证明它是合理的-可能也是如此昂贵的合理化。另一个策略是修改您的工作流程,以便更早使用python友好的数据模型(例如,多久可以抛弃矢量多边形?)。

回显@gene,虽然numpy / scipy确实很棒,但是不要以为这些是唯一可用的方法。您也可以使用列表,集合,字典作为替代结构(尽管@ blah238的链接非常清楚效率差异),也有生成器,迭代器以及其他各种出色,快速,高效的工具,可在python中使用这些结构。Python开发人员之一Raymond Hettinger在那里拥有各种很棒的常规Python内容。这个视频是一个很好的例子

另外,要添加@ blah238关于多路处理的想法,如果要在IPython(不只是“常规” python环境)中编写/执行,则可以使用其“并行”包来利用多个内核。我对这些东西不感兴趣,但是发现它比多处理东西更高级/对新手更友好。可能真的只是那里的个人宗教问题,所以请加一盐。该视频从2:13:00开始对此有很好的概述。总体而言,整个视频对IPython来说很棒。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.