Questions tagged «arcpy»

由Esri创建的网站包,用于将Python桌面(ArcMap和ArcGIS Pro)的地理处理,地图绘制等内容暴露给Python。


5
调试ArcPy脚本?
我已经在ArcGIS 10中使用ArcPy编写了许多Python脚本,到目前为止,我唯一的调试方法仅限于使用来将消息打印到地理处理结果窗口arcpy.AddMessage()。 还有其他选项,例如设置断点吗? 杰森的方法效果很好。如果您的工具箱中有错误(例如验证),则IDE可能无法查明问题,因为工具箱已编码。至少WING无法查明。

4
ArcGISScripting和大型空间数据集的性能
我目前正在使用arcgisscripting模块编写python脚本,以处理少量表(总数为8)标准化的相当大的数据集(总计10,000条记录)。该过程包括基于坐标元组(x,y)创建要素,并使用其他7个表中的关系作为指导来创建图形(节点和线)。最终输出是一个个人地理数据库(pgdb / fgdb),其节点和边缘空间数据集直观地表示了关系。 我最初的尝试是使用对新的地理数据库表和SearchCursor记录集的查询来为出现的多对多关系填充链接表(InsertCursor)。除15-20分钟的处理时间外,这非常有效。 使用Python中的cProfiler模块,很明显,在执行搜索查询以使用游标(搜索和插入游标)的请求填充链接表时“破坏”个人地理数据库会导致令人震惊的性能。 经过一些重构,我设法将处理时间缩短到2.5分钟以下。折衷方案是在代码中部分构建地理数据库架构,并在整理所有关系后将对arcgisscripting游标的请求限制为InsertCursors。 我的问题是表现之一。 人们在处理大数据集时使用了哪些技术来维持合理的计算时间? 我在寻求优化过程中错过了ESRI建议的方法吗? 我理解创建弧形游标时会产生的开销,特别是如果它是来自个人地理数据库的,虽然在从本网站和Google长期搜索了与性能相关的答案之后,但我的印象是性能并不是人们努力的最前沿。 作为ESRI产品的用户,有人期望并容忍这些性能落后吗? 更新 使用该产品进行一些工作之后,我积累了一系列优化技术,这些技术已将空间信息从适当格式转换为地理数据库。这是为个人和文件地理数据库开发的。花絮: 读取您的数据并将其合理化在内存中。这将使您的时间减少一半。 在内存中创建要素类和表。使用要素数据集键盘输入'in_memory'将内存用作ram磁盘,在其中执行功能,然后写出到磁盘 要写到磁盘,请使用CopyFeatureclass作为要素类,并使用CopyRow作为表。 这三件事使用了一个脚本,该脚本将100,000+个要素从30分钟转换为30-40秒,这其中包括关系类。不能轻易使用它们,上面的大多数方法都占用大量内存,如果不注意,可能会导致问题。



2
简化大数据的Python代码
我有Python代码,旨在通过以下工作流程获取点shapefile: 合并点 积分点,使彼此之间1 m之内的任何点成为一个点 创建要素图层,在其中选择z <10的点 缓冲点 多边形到栅格的1m分辨率 重新分类,其中1-9 = 1;NoData = 0 每个shapefile大约有250,000至350,000个点,覆盖〜5x7 km。用作输入的点数据表示树的位置。每个点(即树)都有一个关联的“ z”值,该值代表冠半径,并在缓冲过程中使用。我的目的是在单独的过程中使用最终的二进制输出来生成描述遮篷的栅格。 我对四个shapefile进行了测试,生成了700MB的栅格,耗时35分钟(i5处理器和8GB RAM)。鉴于我将需要在3500个shapefile上运行此过程,因此,我希望获得有关简化该过程的任何建议(请参阅随附的代码)。一般来说,处理地理数据的最佳方法是什么?更具体地说,对代码或工作流程是否有任何有助于提高效率的调整? 编辑: 地理处理任务的时间(占总数的百分比): 合并= 7.6% 积分= 7.1% Lyr = 0的特征 缓冲= 8.8% 多边形转栅格= 74.8% 重新分类= 1.6% # Import arcpy module import arcpy # Check out any necessary licenses arcpy.CheckOutExtension("spatial") # Script arguments temp4 …


3
ArcGIS“ in_memory”工作区的正确语法和用法是什么?
我不清楚如何最好地使用in_memoryArcGIS中的工作区。我找到的关于该主题的最佳资源来自ESRI的“ 使用内存中的工作空间”。不幸的是,帮助部分的信息不是很多。另外,此网站上有一篇帖子,简要介绍了此处和此处的主题。 我的具体问题: in_memory在基于ArcGIS / arcpy的脚本中使用工作区的正确用法和语法是什么? 是in_memory工作区中的相同,例如,创建使用层arcpy.MakeFeatureLayer_management()? 是否有任何标准,例如in_memory在脚本末尾删除工作区?

6
加速以ArcGIS工具运行的Python脚本的方法[关闭]
这是一个非常普遍的问题。我只是想知道GIS程序员使用了哪些技巧来加快导入到工具箱中并运行的arcpy脚本。 我每天都在工作,编写一些小的脚本来帮助我办公室的非GIS用户处理GIS数据。我发现,ArcGIS 10.0的处理通常比9.3.1慢,并且有时在运行python脚本时会变得更慢。 我将列出一个脚本的特定示例,该脚本需要24个小时才能运行。这是一个循环,针对缓冲区中的每个形状将缓冲区中的栅格区域制成表格。缓冲区大约有7000个形状。我不认为它应该运行这么长时间。一种 while x <= layerRecords: arcpy.SetProgressorLabel("Tabulating Row: " + str(x) + " of " + str(ELClayerRecords)) arcpy.SelectLayerByAttribute_management(Buff,"NEW_SELECTION", "Recno = " + str(x)) # Selecting the record TabulateArea(Buff, "Recno", MatGRID, "VALUE", ScratchWS + "/tab" + str(z) +".dbf", nMatGRIDc) # Tabulate the area of the single row arcpy.AddMessage (" …

6
在ArcMap中定义多个shapefile的投影?
我有100多个没有.prj文件的形状文件,因此,当我将它们导入ArcMap 10时,它们会将坐标系显示为未知。我知道所有形状文件的坐标系都是GCS WGS1984。我也知道我可以使用“定义投影GP”工具分别将坐标系分配给每个文件,但这将永远花费。 我希望有一个GP工具可以批量定义这些,但是我看不到。接下来,我想也许我可以使用python来执行此操作,所以我在帮助菜单中查找并找到了一个脚本,但是它给了我一个错误。 这是我尝试的python代码(这是针对单个shp文件的,因此我仍然会为每个文件键入名称而感到痛苦: import arcpy infc = r"C:\Documents and Settings\User\My Documents\ArcGIS\shpfiles\Site_2.shp" prjfile = r"<install directory>\Coordinate Systems\Geographic Coordinate Systems\World\WGS 1984.prj" arcpy.DefineProjection_management(infc, prjfile)

6
如何通过其值缓冲栅格像素?
左侧的像素表示树的位置及其关联的树冠半径(即像素值范围为2-5)。我想通过它们的冠状半径值来缓冲这些栅格像素。右边的图像是我希望仅使用栅格处理方法来完成的图像。 我最初会考虑在ArcGIS中使用圆形焦点总和,尽管邻域设置是一个固定值,但不会考虑可变大小的冠状半径。 用像素值“缓冲”像素的好方法是什么?

4
制作可调用ArcPy的单独Python安装?
我看到很多问答,询问您如何创建可以使用arcpy而又不“破坏”原始ArcGIS python安装的单独Python安装(例如Anaconda或Python XY发行版)。 我遇到了同样的问题,我想我已经找到了“通用”解决方案。到目前为止,我们已经在大约8台工作的计算机上完成了此操作,并且一切正常。 如何安装可以使用ArcGIS的单独的Python发行版?

5
在不运行ArcMap的情况下在Python中使用ArcGIS功能(例如,单独的编辑器/环境)?
我正在尝试使用Python对ArcGIS进行编程的下一步,看看是否确实有可能运行我的脚本/代码而不必加载ArcMap并将其粘贴到Python窗口中。我想我会在此视图中执行某种特定于Python的IDE,以便从ArcGIS加载某些东西。 我将如何做呢? 更新:解决方案摘要 我走了Eclipse + PyDev路线。这是我关于安装一切并使之正常运行的说明: 下载Eclipse 鉴于所有可用的风格(Java,Java EE,C / C ++等),这有点令人困惑。我使用C / C ++是因为我很熟悉。这并不重要,因为在此步骤之后安装了PyDev。选择您想要的。 安装PyDev PyDev将通过Eclipse安装。链接的说明工作正常。 配置PyDev 上面的问题提供了Windows配置的屏幕快照,尽管来自ESRI博客的此链接具有Unix系统的更多信息,尽管该信息来自2008年。 运行测试脚本 启动我一直在工作的脚本,它起作用了。以这种方式执行代码似乎在访问shapefile和工作空间等方面存在一些差异,需要更明确。在此处了解更多信息。

3
为什么要通过Python脚本工具来学习/使用Python工具箱?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 我已经编写了一些Python工具箱(这是ArcGIS 10.1中的新增功能),但是还没有决定是否/何时应该在标准工具箱中编写而不是Python脚本工具。 我以为在线帮助开头带有一些点,可能会启发我: 创建后,Python工具箱中的工具具有许多优势 但是,列出的五个优点似乎都是无法使用Python编写工具的原因,而且似乎都没有一个比Python脚本工具更能说明Python Toolboxes的优点。 我能想到的两个优点是: 现在,我可以在一个Python脚本中编写“纯” Python工具,而不必像使用工具验证那样将其连接到单独编写的对话框中,但是我很乐于务实而不是单纯 我现在可以使用代码(Python或任何能够编写文本文件的语言)来自动编写Python工具箱,但是我还没有遇到这样做的要求 我是否忽略了导致Esri提供Python Toolbox功能的引人注目的案例,如果是的话,它是什么?

4
列出文件地理数据库中的所有要素类,包括要素数据集中的所有要素类?
如何从python中建立文件地理数据库(* .gdb)中所有要素类的列表,包括内部要素数据集?该标准的例子只列出了在地理数据库的顶层要素类: import arcgisscripting, os gp = arcgisscripting.create(9.3) gp.workspace = 'd:\scratch.gdb' fcs = gp.ListFeatureClasses() for fc in fcs: print fc 请指出您的答案适用于哪个ArcGIS Desktop版本(我正在寻找9.3,但我们最好将所有版本收集在一个地方)。
24 arcpy  arcgis-9.3 

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.