Questions tagged «arcpy»

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


4
使用ArcPy在另一个Python脚本中运行Python脚本(带有参数)?
AML中使用的一种常见编码模式是在另一个AML中运行AML(带有参数)。 我当前正在开发的应用程序将从能够在另一个Python脚本中运行Python脚本(带有参数)中受益。 但是,这似乎一点也不简单。 使用ArcGIS 10,我正在尝试将“内部” Python脚本包装到具有参数的ArcGIS工具中。我认为让“外部” Python脚本使用arcpy.ImportToolbox导入工具箱,然后在其中运行工具将是一件简单的事情。但是,到目前为止,在测试中,我从“外部”脚本运行“内部”工具的所有尝试似乎只是跳过了“内部”工具(不会引发任何错误)。 这是一些测试代码,试图更好地说明我要描述的内容。 我的testinner.py脚本是: inputString = arcpy.GetParameterAsText(0) newFC = "C:\\Temp\\test.gdb\\" + inputString arcpy.Copy_management("C:\\Temp\\test.gdb\\test",newFC) 我的testouter.py脚本是: import arcpy inputString1 = arcpy.GetParameterAsText(0) inputString2 = arcpy.GetParameterAsText(1) arcpy.ImportToolbox("C:\\Temp\\test.tbx") arcpy.testinner_test(inputString1) arcpy.testinner_test(inputString2) 对于testinner.py,其工具需要单个String参数。 对于testouter.py,其工具需要两个String参数 这两个工具放置在test.tbx中。 test.gdb仅需要一个名为test的空要素类。 完成上述组装后,使用传入的字符串(例如abc)作为参数运行testinner工具,应将要素类“ test”复制到一个名为“ abc”的OK。 但是,当您尝试使用两个字符串(例如'uvw'和'xyz')作为参数运行testouter工具时,testouter.py中的testinner工具似乎运行一次,但是在以下情况下将Vista SP2上的ArcMap 10 SP2发送给严重应用程序错误:尝试第二次使用它。 使用Windows XP SP3和ArcGIS Desktop 10 SP2进行的同一测试也会在同一点产生严重的应用程序错误。

6
让ArcPy与Anaconda合作?
我想在回答一步一步的方向,以遵循“ 如何Python安装在ArcGIS分离 ”,但无法找到路径的文件,DTBGGP64.pth在C:\Python27\ArcGIS10.2\Lib\site-packages。 有人遇到过类似的问题吗? 我想知道是否有一种解决方法,包括一个告诉Anaconda arcpy安装在哪里的路径文件?我试图创建一个包含以下文本的.pth文件: # .pth file for arcpy C:\Program Files (x86)\ArcGIS\Desktop10.2\bin C:\Program Files (x86)\ArcGIS\Desktop10.2\arcpy C:\Program Files (x86)\ArcGIS\Desktop10.2\Scripts 并将其保存到C:\Anaconda\Lib\site-packages(也就是说,如果确实是所有软件包都保存在这里),但出现以下错误: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Program Files (x86)\ArcGIS\Desktop10.2\arcpy\arcpy\__init__.py", line 21, in <module> from arcpy.geoprocessing import gp File "C:\Program Files (x86)\ArcGIS\Desktop10.2\arcpy\arcpy\geoprocessing\__init__.py", line 14, …

1
如何获取磁盘上文件地理数据库要素类的大小?
有没有简单的方法来确定要素类占用的硬盘空间? 我觉得我缺少一些简单的东西,但是我不记得有这样做的方法。 您会认为,右键单击ArcCatalog中的数据集将为您完成此操作。 我曾经能够做的最好的事情就是通过在Windows资源管理器中查找来获得整个gdb的大小。 如果在ArcCatalog UI中没有办法做到这一点,我仍然会对在代码中做到这一点的方法感兴趣。 有任何想法吗?

3
ArcGIS SpatialReference对象工厂代码是否与EPSG号相对应?
我有一个项目,正在从文本文件中读取几何对象以将其放入ArcSDE。这些几何对象有一个关联的EPSG代码,我正在寻找一种方法来确保完成后它们处于正确的投影中。 在查看了我感兴趣的工厂代码(GCS GDA94; EPSG:4283和VicGrid 94; EPSG:3111)之后,看来该EPSG代码直接对应于ESRI空间参考的工厂代码(此处和此处)。这很棒,因为这意味着我不必担心导航到投影文件来创建SpatialReference对象,例如在下面的代码中: import arcpy # Create a spatial reference object using a factory code # sr = arcpy.SpatialReference() sr.factoryCode = int(epsg_code.lstrip("EPSG:")) sr.create() 不幸的是,我在ESRI文档中找不到任何参考来说明这是否一直存在-我想是的,但是我宁愿肯定知道。有人知道我可以找到哪里吗?


2
使用ArcPy确定ArcMap文档版本?
ArcPy是否可以识别地图文档(MXD)的版本。我正在研究一种解决方案,以库存我们的MXD,并想知道文档是否为8.1、9.2、10.0等。 我当前正在使用ArcGIS 10.0,但是如果10.1中有一个更新不存在于10.0中,那么我也很高兴听到这一消息。 我看到有一个先前的问题:如何以编程方式找到ArcGIS版本?,但它引用了所有ArcObjects解决方案(我想我可以从python调用它,但我不想这样做)。

5
在arcpy.Select_analysis()的where子句中包含变量?
我试图遍历一个shapefile,依次选择每个特征并将其复制到一个临时shapefile中,并包含在并集分析中。我正在使用光标查找要设置为变量“名称”的每个功能的ID名称。每当我尝试将此变量用作arcpy.Select_analysis中where子句的一部分时,都会出现错误: ExecuteError:错误999999:执行功能出错。使用了无效的SQL语句。使用了无效的SQL语句。执行失败(选择)。 我使用的代码是: Name = 101 where = "\'\"StudyID\" = \\'"+str(Name)+"\\'\'" arcpy.Select_analysis("C:\\input.shp", "C:\\output.shp", where) 如果我不使用变量就将其键入: arcpy.Select_analysis("C:\\input.shp", "C:\\output.shp", '"StudyID" = \'101\'') 它工作正常 我需要怎么做才能使变量适合sql语句?

6
如何制作GIS库存?
我的办公室的GIS部分将发生巨大变化。该部分自1980年代以来一直可操作,并且具有大量的GIS数据(即shapefile,栅格文件,数据等),但从未经过任何清单。现在它将发生。 是否有任何自动方式可以将PC上有关GIS数据的所有信息(即shapefile,arc-info coverage,图层文件,*。mxd,gdb,栅格文件等)提取出来?该信息可能包括创建日期,最后编辑日期,文件夹或容器名称等。

3
使用ArcPy添加新的图层组?
现在有没有人如何在ArcGIS Desktop 10中使用Python添加组图层? 我可以使用arcpy.mapping.AddLayer,但是可以肯定的是,这仅适用于实际图层,而不是组图层。 到目前为止,我有这个 import arcpy mxd = arcpy.mapping.MapDocument("CURRENT") df = arcpy.mapping.listdataframes(mxd, "layers")[0] arcpy.mapping.AddLayer

1
使用多处理的ArcGIS 10.1 Python加载项会使ArcMap崩溃?
我想从python外接程序工具运行多处理任务。我的问题是该过程不断失败。基本上会使ArcMap崩溃。 这是我的基本代码: def function(startOID, endOID, fc): wrksp = r"c:\temp\mp_addintest\data\test_%s.txt" % (int(startOID) + int(endOID)) # real logic removed to dumb it down with open(wrksp, 'w') as writer: writer.write("%s to %s from %s \n" % (startOID, endOID, fc)) return wrksp class btnMP(object): """Implementation for src_addin.MPButton (Button)""" def __init__(self): self.enabled = True self.checked …


8
如何在ArcMap的Python窗口中手动中断语句执行?
如何在ArcMap的Python控制台中中断长时间运行的进程的执行? 例如,一旦开始,您如何打乱像下面这样的长时间迭代? for i in range(1, 50): # some long process which takes over a minute to complete 我想在运行控制台窗口中输入的代码时按键盘组合键,单击按钮或类似操作以随时停止该过程。

6
使用ArcPy获取shapefile中每个多边形的范围?
在ArcGIS 10和Python中,我想获取shapefile中每个多边形的范围(xmax,ymax,xmin,ymin)信息。 我可以使用获取整个shapefile的范围 file=r"D:\SCRATCH\ARCGIS\100k_trc_tiles_TVM.shp" desc=arcpy.Describe(file) print desc.extent.Xmax 394551.52085039532 但是我似乎无法弄清楚如何为数据集中的每一行获取相同的信息。 rows = arcpy.SearchCursor("100k_trc_tiles_TVM") for row in rows: print row 打印数据集中的31行,但是 for row in rows: desc=arcpy.Describe(row) print desc.extent.Xmax 给出一个错误。 运行时错误:对象:描述输入值无效的类型 我当时正在考虑使用“计算几何”将范围值添加到表中,但这仅给出了质心。然后,我猜我们可以使用诸如row.GetValue(“ xmax”)之类的东西。 话虽这么说,我知道我们可以使用http://www.ian-ko.com/free/free_arcgis.htm中的函数创建X / Y,max / min,但是最好避免添加字段,尤其是在ArcPy可以获取这些值的情况下。 基本上,我需要获取范围以输入到裁剪工具中,以裁剪出30个数据区域(根据1:100,000地图图)进行地理处理,因为拆分工具由于数据集的大尺寸而失败(请参见为什么相交会给错误999999:错误执行功能无效拓扑[太多lineseg端点])。我要自动执行此操作,因为它在许多数据集上重复出现。 ===工作脚本=== # Emulates Arc Info SPLIT tool by using Clip but # Requires a …

2
使用Python / ArcPy将shapefile或要素类添加为ArcGIS Desktop中的图层吗?
我正在尝试使用Python自动执行ArcGIS Desktop(通常使用ArcMap)中的各种任务,并且一直需要一种将shapefile添加到当前地图的方法。(然后做一些事情,但这是另一个故事)。 到目前为止,我能做的最好的就是使用以下命令将图层文件添加到当前地图(“ addLayer”是图层文件对象): def AddLayerFromLayerFile(addLayer): import arcpy mxd = arcpy.mapping.MapDocument("CURRENT") df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0] arcpy.mapping.AddLayer(df, addLayer, "AUTO_ARRANGE") arcpy.RefreshActiveView() arcpy.RefreshTOC() del mxd, df, addLayer 但是,我的原始数据始终是shapefile,因此我需要能够打开它们。(等效地:无需打开即可将shapefile转换为图层文件,但我不希望这样做)。

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.