我是ArcGIS的Python脚本的新手,但不是ModelBuilder的新手。

我想知道Python vs ModelBuilder的好处。

我们什么时候应该为GIS自动化编写Python脚本,而不是使用ModelBuilder?

我们在ModelBuilder中找不到Python的哪些自动化功能?

#1 楼

我认为,用户在决定使用哪种工具之前应明确定义其目标。 ModelBuilder和Python脚本擅长于不同的任务。一些想法:


ModelBuilder没有映射功能,而
arcpy.mapping有映射功能。 />多处理包或并行处理。
Python支持嵌套循环和其他方便的迭代逻辑工具。要在ModelBuilder中获得相似的结果,您必须
构建复杂而复杂的嵌套模型。

使用Python进行简单的文本操作非常容易,要么非常困难要么使用ModelBuilder无法实现。

例如另一方面,使用Python使用os.path模块可以轻松地将文件名列表从“ m_2010_naip_2310345_nw.img”重命名为“ 2310345nw.img”。


另一方面:


ModelBuilder对于快速组合通用工具并消除调试脚本的需求非常有用。
ModelBuilder具有非常有用的递归迭代器,易于迭代
实现以循环浏览文件夹和子文件夹。
ModelBuilder擅长直观直观地描述复杂任务的工作流程。
ModelBuilder可以合并Python脚本工具。


评论


清楚地描述了Python和ArcGIS中的Model Builder之间的区别。谢谢

–BBG_GIS
13年4月7日在17:34

我还要添加:1.您可以在ArcMap外部运行Python脚本。2.您可以在Python中使用ArcObjects。3.可能存在一些速度差异。

–柚木
13年4月7日在19:19

gis.stackexchange.com/questions/80/…

–柚木
13年4月8日在5:39

+1嵌套循环和arcpy.mapping!我喜欢在脚本中进行计算并将其添加到属性表或更好地添加到地图布局(例如,每种湿地类型的区域)的功能。

–罗伊
13年4月9日在19:43

我阅读了ArcGIS书的python脚本。我还添加了其他一些功能:1-脚本游标使您可以遍历表中的记录,读取现有行并插入新行。 2-脚本可用于包装其他软件,即将应用程序粘合在一起。例如python可用于访问Microsoft Excel或统计数据包R中的函数。3-A脚本可作为独立脚本在ArcGIS之外的磁盘上运行。您无需运行ArcMap或ArcCatalog脚本即可工作。 (适用于ArcGIS的Python脚本,第2章,第39页)

–BBG_GIS
13年4月13日在15:02

#2 楼

如果您仅在ArcGIS范围内工作,则在尝试确定采用的方法时会考虑一些注意事项。


您要完成什么,
您目前的技能是什么,
您将与他人共享工作以使用,学习或操纵,以及
谁是您的目标受众。

考虑到这些因素:


与在ModelBuilder中构建流程相比,通常更快捷,更容易Python,除非无法在ModelBuilder中复制您的过程的一部分。想要学习将其整合到您的技能中,ModelBuilder是从创建简单模型开始,然后将其导出到Python的好方法,这样您就可以为您预先构建最终流程的框架。这种方法的确要付出一定的代价,因为通常会在转换过程中创建很多无关的信息和变量,但这仍然是开始学习的好方法。
如果您要构建用于个人使用的工具,无论哪种方法,您通常最适合的方法就是走。我会根据自己的需要使用这两种方法。
如果您打算与他人共享您的分析,并且希望与他人共享您的模型/脚本是流程文档的一部分,那么通常更容易遵循模型并了解非技术人员。

对于个人使用“更好”可能没有答案,但是如果您长期寻找就业机会,那么通过学习Python,您将与那些只知道如何使用预编程工具的人脱颖而出,只知道如何使用ModelBuilder。您还可以超越Python for ArcGIS(ArcPy)的范围,并通过使用其他专有和开源GIS库以及许多非GIS库(例如, ,图像处理,统计信息等)。

#3 楼

Model Builder是一种很棒且易于学习的可视化编程语言,通常是GIS编程的良好入口。但是在某些方面,python可以做得更多。

一个示例是非ESRI GIS库的集成。几乎所有的开放源GIS都可以通过python来解决(例如GRASS,Sextante,QGIS,SAGA)。这对我很有帮助,因为我只有ArcView许可证。因此,每次我无法在ArcGIS中使用某个地理处理工具时,都会查看开放源GIS中还有哪些其他选项。然后,我将使用这些OpenSource工具,并在较大的python脚本中将它们与ArcGIS工具组合在一起,或者通过较小的python脚本将它们集成到ModelBuilder中。

我敢肯定其他成员可以说出更多优势。

#4 楼

使用Python和ArcGIS时,除了拥有ArcGIS中已有的功能外,还可以获得Python的全部功能。是否需要这种功能和灵活性取决于您的意愿。此外,了解并真正利用Python之类的编程语言还需要时间。如果这项投资对您来说值得,则取决于您。但是,对于认真的数据处理来说,在您的工具库中,真正的脚本语言是一个很好的补充。

除了ModelBuilder可能会错过的任何功能之外,还有一个更基础的讨论。通常,脚本更适合于创建复杂的工作流程。代码是从上到下处理的,可以使用例如职能。或对象。诸如模型构建器之类的图形工具趋向于成为大面条。

#5 楼

我偏爱创建Python脚本。至少对我来说,编写代码比弄乱将电线连接到盒子等有趣。

Python脚本真正的优点是您可以安排脚本在方便的时候运行。如果您的脚本需要一段时间才能完成,或者需要在正常工作时间之外运行,那么这确实很方便。您可以在此处查看如何安排脚本的示例。

正如@Aaron所提到的,您可以轻松地在Python脚本中设置循环。

如果仅使用Python脚本编制,则可能需要使用“模型构建器”创建模型并将其导出为Python脚本。如果我无法理解如何在脚本中使用多个工具,有时会这样做。它可以帮助您了解如何将脚本组合在一起。

#6 楼

我发现,与python脚本相比,与模型生成器相比,我似乎更受困于解决方案。对我而言,模型构建者有些“黑匣子”性质,因此很难找到问题所在。

我还发现我可以在python上找到更多帮助。我趋向于找到许多关于模型构建器的死胡同线程和主题。还有更少的示例可供参考,与python一样,您可能会在所编写脚本的大部分部分中找到小片段。

#7 楼

正确。 Python适用于“专业人士”和想要进阶的人。 Model Builder有限,适合初学者或不懂编程的人使用。是的,死胡同线程是正确的,仅因为模型构建器是死胡同的解决方案。 ;)

Python确实很强大,无论它在哪里,都可以在几乎任何地方使用。冒险。