Questions tagged «arcpy»

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


2
在ArcGIS Python Toolbox中刷新导入的模块?
在ArcMap中使用python工具箱(.pyt)时,我通常会遵循以下模式:.pyt文件本身只是包装器,用于收集输入参数并定义工具本身。支持代码保存在单独的可单元测试模块中。 例: import supporting_module class MyTool(object): ... def execute(self, parameters, messages): """The source code of the tool.""" some_input = parameters[0].valueAsText some_output = parameters[1].valueAsText supporting_module.do_something(some_input, some_output) arcpy.SetParameter(2, some_output) 这确实很好,但是在开发过程中遇到了一个令人沮丧的问题。在ArcMap中右键单击->刷新.pyt仅刷新.pyt文件的代码。它不会刷新导入的模块,因此,每当我在其中更改某些内容时,都必须关闭并重新打开ArcMap。幸运的是,由于我是独立测试代码,因此不必花很多时间,但这仍然是一个很大的麻烦。有没有办法解决?有点相关-有什么方法可以完全刷新Python控制台(我有一个自定义站点包,我还必须关闭/重新打开ArcMap才能从中引入更改)? 我正在使用ArcMap 10.2.1。

4
编辑脚本后重新编译Python Addin?
我一直在开发一些python插件,但我想知道什么是在我每次编辑脚本时重新编译插件的最佳方法。 当前,如果我对脚本进行编辑,看来我必须 关闭ArcMap 转到“我的插件”文件夹,然后双击“ makeaddin” python文件 双击“ Python加载项文件 重新启动ArcMap,以使更改生效 如果我不执行这些步骤,则无法识别编辑。当我想在某处放置一条简单的打印行,或者我只是为了测试结果而做一些小的编辑时,这变得非常烦人和耗时。 有更好的方法吗?

3
仅将某些列导出到ArcGIS for Desktop中的CSV文件?
我已经使用arcpy编写了python脚本,该脚本将面要素类输出到File Geodatabase中。我添加了将属性导出到单独的CSV文件的功能。我正在使用在这篇文章中找到的代码,效果很好。但是,该代码将导出要素类中的每一列。我只是想导出不具有下列名称字段:OBJECTID,Shape,或Shape_Length。 我的CSV文件生成成功,并且正确不包含OBJECTID或Shape_Length字段。但是,该Shape字段被写入文件。写入该字段的示例值是: <geoprocessing describe geometry object object at 0x28CB90A0> 我添加了一行以打印遍历它们的字段名称,令人惊讶的Shape是,它没有被打印。就像ArcGIS正在隐藏它或给它起其他名字一样。 我的函数的代码如下: def exportToTable(): """ Exports the final outputs to a CSV File. """ # Create path to CSV File (note the varialbe outputPath is declared elsewhere). CSVFile = outputPath+'\\FinalOutput.csv' arcpy.AddMessage("Created CSV File: %s" %CSVFile) # Get all fields in …

1
理解为什么ArcPy成本路径分析工具比ArcObjects更快?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 尽管我使用python创建地理处理脚本/服务,但给我的印象是,使用ArcObjects进行等效操作将具有更好的性能。 我已经发布了ArcGIS Server GP服务-RasterIO.dll崩溃了,ArcSOC.exe和ArcGIS Geoprocessing Script在桌面上运行良好,但崩溃了,成为Geoprocessing Service?在过去的两天内,有关获取使用Spatial Analyst工具用作地理处理服务的地理处理脚本的信息。我的截止日期快到了,所以我决定走SOE路线以实现所需的功能。 获得在ArcObjects的成本路径分析是相对直接使用.NET ESRI.ArcGIS.SpatialAnalyst.RasterDistanceOpClass,特别是CostDistanceFull()和CostPath()方法。 有关我的工作方式的一些代码片段: 蟒蛇 # Get Cost Path Origin and Destination Points inputPointsShp = 'D:/RasterStuff/test_points.shp' arcpy.MakeFeatureLayer_management(inputPointsShp,"origin",' "TYPE" = \'ORIGIN\' ') arcpy.MakeFeatureLayer_management(inputPointsShp,"destination",' "TYPE" = \'DESTINATION\' ') # Check out the ArcGIS Spatial Analyst extension license arcpy.CheckOutExtension("Spatial") # Execute CostDistance outCostDistance …

2
从.NET调用arcpy / python?
是否有任何可用的示例说明如何将python集成到.NET ArcGIS Addin或Extension中?我想从.NET中的表单事件(例如按钮单击)调用一系列python脚本。我还希望能够从.NET表单中在脚本中设置变量。 我应该咬紧牙关,然后在.NET中重新编写这些脚本,还是有一种简单的方法来包装python代码?

3
使用ArcPy在ArcGIS Desktop中按点选择ArcSDE多边形?
我一直认为我必须缺少某些东西,但是ArcGIS 10中似乎没有工具可以通过ArcPy从点(X,Y)位置的图层中选择要素(特别是多边形)。这种工具的参数只是图层名称和XY位置。 目前,我通过创建包含该点的点要素类并对其执行SelectLayerByLocation来解决此问题。但是,当面要素类在Oracle中(可通过ArcSDE 9.x访问)并且包含350万个面时,我认为一两秒钟(用更少的代码)将花费5分钟以上的时间进行选择更合适。要素类具有空间索引,我尝试使用arcpy.env.extent(SelectLayerByLocation似乎忽略了它)来限制访问的地理区域,但性能仍然很差。 有没有使用ArcGIS Desktop 10和ArcPy进行此操作的更快方法?

1
使用ArcPy在中点分割多边形?
我正尝试在其中点(垂直于最长轴)(即在中点的宽度上)周围的4000个多边形中进行分割,如下图所示。 理想情况下,我想自动执行此操作,避免手动分割每个多边形。我已经通过转换可以在每个多边形中绘制的最长线来提取多边形的中点,我只需要确定一种自动在该点上绘制宽度线的方法即可。 多边形的宽度各不相同,因此,通过定义一定长度的宽度线来分割多边形的工具并不是我真正想要的。 有任何想法吗?

2
使用ArcPy有效选择相关记录?
下面是我用来复制ArcMap中“相关表”按钮的代码。在ArcMap中,该按钮基于对另一个相关要素类或表中要素的选择来选择一个要素类或表中的要素。 在ArcMap中,我可以使用该按钮在几秒钟内将我的选择“推送”到相关表。我找不到arcpy内置的任何可复制按钮的内容,因此我使用了一些嵌套循环来完成相同的任务。 下面的代码遍历“处理”表。对于每种处理,它都会遍历“树”列表。当在处理的ID字段和树的ID字段中找到匹配项时,将在树层中进行选择。找到治疗的匹配项后,该代码将不会继续在树层中搜索其他匹配项。它返回到处理表,选择下一个处理,然后再次搜索树要素类。 该代码本身可以正常工作,但是非常缓慢。在这种情况下,“治疗表”具有16,000条记录。“树”要素类具有60,000条记录。 当ESRI将选择从一个表推到另一个表时,还有另一种更有效的方法来重新创建ESRI所做的事情吗?我应该为表创建索引吗?注意:此数据存储在SDE中。 # Create search cursor to loop through the treatments treatments = arcpy.SearchCursor(treatment_tv) treatment_field = "Facility_ID" for treatment in treatments: #Get ID of treatment treatment_ID = treatment.getValue(treatment_field) # Create search cursor for looping through the trees trees = arcpy.SearchCursor(tree_fl) tree_field = "FACILITYID" for tree in trees: …

5
在ArcGIS中作为Python开发项目团队工作吗?
我们有一个Python开发项目(ArcGIS 10)。该项目涉及工具箱,地图模板,图层文件,文件地理数据库模板(充当通过脚本导入到地图中的模板)和其他各种东西的混合体。 我们使用Eclipse作为源代码编辑器,并使用SVN作为源代码存储库。 尽管每个人都将所有文件(不是py文件)保存在一个同步项目中存在问题。通常,多人编辑该工具箱会弄乱该工具箱,然后调整模板文件,然后不为其他人更新模板文件,因为它们没有被检入。 在公司工具箱项目中拥有多个Python开发人员的组织中的人员如何确保对项目和所有不同文件进行正确版本控制和管理?还是整个项目都进入Eclipse(包括模板层和脚本使用的GDB)进入项目并希望人们正确签出文件的情况?

1
使用ArcPy修复多个MXD中的数据源?
我有大约50 mxd,其中包含我正在经历的所有破碎层并手动重置。 数据是从另一台计算机上移动的,并且文件夹结构已更改,因此它不仅仅是更改的简单过程(示例): 从“ F:\ Data \ Rivers.shp”到“ C:\ Data \ Rivers.shp” 它更像是: 将“ F:\ Data \ Rivers.shp”更改为C:\ Data \ Park \ Water \ Rivers.shp 等等,每个数据都在各自的子文件夹中(边界,蔬菜覆盖,道路等)。 我想制作一个脚本,每当我打开这些mxd之一时就可以重复运行,该脚本至少可以修复大多数我的mxd中发现的一些较常见的层,然后我可以手动修复其余的层。这样,我至少可以节省一些时间。 我一直在使用一些类似的东西: import arcpy mxd = arcpy.mapping.MapDocument("CURRENT") for lyr in arcpy.mapping.ListLayers(mxd): if lyr == "Rivers": #Should this be the layner name in TOC or …

5
有效地找到200k多边形的一阶邻居
对于208781个人口普查区块组中的每一个,我想检索其所有一阶邻居的FIPS ID。我已经下载了所有TIGER边界,并合并到一个1GB的shapefile中。 我尝试了一个ArcPython脚本,该脚本在其核心使用SelectLayerByLocation用于BOUNDARY_TOUCHES,但是每个块组都花费了1秒以上的时间,这比我想要的要慢。即使在我将SelectLayerByLocation搜索限制为阻止处于相同状态的组之后,也是如此。我找到了此脚本,但是它在内部也使用SelectLayerByLocation,因此速度没有提高。 该解决方案不一定是基于Arc的-尽管我对使用Python编码最自在,但我也愿意接受其他软件包。

5
使用ArcPy批量更改要素类和字段别名吗?
我有一百多个FC,每个FC具有10或20个属性,每年添加或更改其别名两次或多次。不用说,这不是我要抱怨的事情。我如何使这个过程自动化? 首选Python解决方案,但会使用任何可行的方法。 我可以访问Arcgis 9.3.1和10(ArcInfo许可级别)。

2
在Task Scheduler中运行Python脚本-脚本将无法运行
我有一个脚本,希望每月定期运行,而无需打开并运行它。我已经参考了在Windows Task Scheduler上可以找到的每个网页,并按照其说明进行操作。但是,从Task Scheduler运行脚本只会在Python中打开脚本而不运行它。 在“任务计划程序运行窗口”中,我尝试输入脚本的单独路径和脚本路径以及Python程序的路径。我还尝试按照本文的建议,以脚本作为参数输入Python程序的路径作为脚本。我的脚本是硬编码的,因此我不需要添加任何参数。 我是否缺少明显的东西? 我遇到问题是因为我使用的是Python程序而不是Python命令行的路径。即,当我需要使用“ C:\ Python27 \ ArcGIS10.1 \ python.exe”时,我正在使用“ C:\ Python27 \ ArcGIS10.1 \ Lib \ site-packages \ pythonwin \ Pythonwin.exe”。

4
提取每个多边形中的顶点数量?
我有ArcGIS Desktop 10.2,而我的难题是如何为所有像这样的要素提取每个多边形中的数字顶点: 我的要素类中有很多地块,我想分别提取所有要素的顶点数量,然后要显示所有顶点的XY坐标。 有关更多信息,我只想转换每个多边形的顶点并显示从1个数字开始的每个顶点的数量,所以如果我有多边形并且它有4个顶点,则想将多边形转换为顶点,我会显示这样的顶点数(1,2,3,4,5),然后为每个顶点显示xy,我认​​为真正的挑战ID为,如何将所有多边形转换为顶点,并使每个顶点的数量从1个数字开始。

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.