Questions tagged «arcpy»

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

7
使用ArcPy获取投影点的经度和纬度?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为地理信息系统堆栈交换的主题。 2年前关闭。 我在ArcPy正在访问的要素类中有一个点要素。该点是已投影的,但我需要找到一种有效的方法来获取该点的未投影的纬度和经度。 除了重新投影(取消投影),在新要素类上找到搜索光标,找到要素,然后从要素形状中获取经纬度之外,还有其他方法吗?


5
使用ArcPy脚本删除要素图层?
我有一个基于ArcPy的脚本,在该脚本中,我试图将两层相交,其中一层必须在另一层中具有其质心。 由于我需要知道一层(下面的feature_layer)包括另一层的质心,因此我使用了arcpy.SelectLayerByLocation_management()工具。 我没有打开地图文档(* .mxd),因此要执行此操作,必须使用“生成要素图层”将其输入。 文档指出,功能层将在程序退出时消失,但是我需要尽快将其消失,因为我将其置于类似于下面的循环中 for feature_class in large_list_of_feature_classes: some_function(feature_class) def some_function(): feature = "{path to feature class}" feature_layer = "feature_layer" HUCs_layer = "all_HUCs" #HUCs being Hydrologic Unit Codes arcpy.MakeFeatureLayer_management(feature, feature_layer) arcpy.MakeFeatureLayer_management(feature, HUCs_layer) arcpy.SelectLayerByLocation_management(HUCs_layer, "HAVE_THEIR_CENTER_IN", feature_layer, selection_type="NEW_SELECTION") arcpy.CopyFeatures_management(HUCs_layer, selection_name) 我正在寻找一种功能来删除要素图层,但我一直找不到。 我意识到我可以在其中添加某种计数,或者在程序范围内添加一些使每个数字唯一的方法,但这不是理想的方法,除非无法删除要素图层。

1
在ArcGIS地理处理结果窗口中向用户显示引发的错误消息?
是否可以在“地理处理结果”窗口中显示从自定义例外引发的打印语句? 我修改了一个脚本,发现该脚本从用户处获取两个输入,找到关联的功能,然后缩放到该功能。该工具工作正常。我试图通过自动格式化输入以使其具有正确数量的字符来使其更加用户友好。我添加了一个消息框,告知用户输入框中是否有太多字符,但是我使用easygui创建了该消息框(用于GUI的Python库)。相反,我想使用gp结果窗口显示消息。我以为我正确设置了raise和except语句的格式,但是该工具运行并且得到完整的结果,而不是错误消息。我尝试了esri的arcpy帮助,但没有得到我想要的结果。 class BadInputError(Exception): pass # Import arcpy module import arcpy, sys, string from arcpy import env try: def checkInput(inp): mNCount = len(inp) trigger = 0 while trigger == 0: if mNCount == 4: trigger = 1 elif mNCount > 4: inp = '' trigger = -1 raise BadInputError elif …

4
ArcGIS Desktop是否支持最新的Python 2.x或Python 3.x版本?
我很好奇,是否知道ArcGIS Desktop 10.0是否支持比2.6更高的Python版本。因此,NumPy的更新版本(即1.4、1.5等)。我确定该文档位于ESRI网站上的某个地方,但是找不到。 我发现只要安装了Numpy 1.3.0(ref),ArcGIS Desktop 10.0就会尊重现有的Python 2.6安装,而且我猜测,至少要等到Numpy 1.5.0发行并支持Python 3为止,否则适用于ArcGIS的Python 3,但我仍然想知道在可用时是否可以进行升级。

1
获得OBJECTID名称的最佳方法是什么?
获取要素类的OBJECTID名称的最佳方法是什么? 我知道您可以在光标中使用“ OID @”来获取该字段,但是您也可以从中获取名称吗? 我正在编写脚本,并且需要考虑将在查询中使用的各种OBJECTID名称,例如OBJECTID_2,OBJECTID_12,FID等。 使用Describe是获得名称的唯一方法吗? 例如: oid_field = [field.name for field in arcpy.ListFields("FC") if field.type == "OID"] 我只是想知道是否还有另一种方式。 谢谢。
13 arcpy  objectid 

6
在ArcMap中确定真实的曲线/弧?
在ArcMap中创建圆的唯一好方法是使用真实的圆弧(复合曲线),但是由于兼容性问题,我需要将圆弧转换为顶点(密集化)。我需要有关地理数据库和SDO_geometry(arcsde)的信息 是的,有办法。我用: UPDATE layer1 a SET arctype = 'compound' WHERE has_compound_curves(a.shape) <> 0; 然后使用ET Geotools逐层压实。 但是在Oracle或ArcMap中应该有更简单的方法来做到这一点,而我只是想浓缩具有真正弧线的要素。我不希望直线上有任何不必要的顶点,等等。 如何在ArcMap中标识真实的弧,以及如何尽可能快速,轻松地对其进行密化? 与Oracle SQL相同。

3
期望ArcPy覆盖地理数据库文件中的文件吗?
我正在写一个python脚本,我有一个mxd,它的工作区是一个地理数据库文件,其中包含我需要的所有文件。尽管有以下命令,但我在测试和编写代码时遇到的问题是: arcpy.env.overwriteOutput=True 地理数据库中包含的所有文件均无法覆盖。有办法解决这个问题吗?
13 arcpy 

3
删除字典理解范围内SearchCursor中使用的光标?
如果最好使用with语句打开游标以确保将其删除,如下所示: with arcpy.da.UpdateCursor(fc,fields) as cursor: 然后,如果将游标用作像这样的理解中的可迭代对象: d = {k:v for (k,v) in arcpy.da.SearchCursor(fc,fields)} 在理解中使用光标后是否有必要删除它?
12 arcpy  cursor 

1
在同一台计算机上使用ArcPy和ArcGIS Pro和ArcGIS Desktop?
我只是第一次尝试ArcGIS Pro,不得不将PYTHONPATH更改为python34 现在,每次打开“分析”选项卡时,ArcGIS Pro都可以正常运行而不会崩溃。但是,当我尝试在ArcMap 10.3.1中运行进程时,出现了各种python错误;使用半小时前使用完全相同的数据输入的工具。 由于ArcGIS 10.3.1使用2.7,这在python版本中是否存在冲突? 即使各自使用不同的python版本,有没有办法使ArcGIS Pro和ArcGIS 10.3.1在同一台计算机上同时运行?

1
用Python修改属性表的最快方法?
不久前,我编写了一个快速的Python函数,用于将属性表转换为python字典,其中的键来自用户指定的唯一ID字段(通常是OID字段)。另外,默认情况下,所有字段都复制到字典中,但是我包含了一个参数,只允许指定一个子集。 def make_attribute_dict(fc, key_field, attr_list=['*']): dict = {} fc_field_objects = arcpy.ListFields(fc) fc_fields = [field.name for field in fc_field_objects if field.type != 'Geometry'] if attr_list == ['*']: valid_fields = fc_fields else: valid_fields = [field for field in attr_list if field in fc_fields] if key_field not in valid_fields: cursor_fields = valid_fields + …

3
基于行业的在Python中使用ArcPy进行地理处理的示例?
这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 最近,一些学生问我,GIS Analyst / Developer通常试图通过在ArcGIS和ArcPy网站包中使用带有地理处理功能的Python来实现自动化的操作类型。我想知道在搜索一些练习时可能很有用,以确保您创建的内容与行业相关,并且以后可能已经在工作场所重复使用。 最简单的答案是“阅读Esri帮助并仔细阅读样本”,但是我正在寻找最常见的更具体的方案。因此,非常欢迎共享工作流,因为“我们将获得一个带有shapefile的.zip文件,我们使用Python对其进行解压缩,将它们全部投影到X坐标系,加载到ArcSDE地理数据库中,并授予用户访问这些数据的权限”。请轻松提供工作流程的简要说明,不需要任何极端细节。
12 arcpy  references 

4
使用pymssql将点插入SQL Server?
我正在通过python脚本从Web服务(Twitter)收集X和Y值。从长远来看,这将持续几个月,我打算停在600万点左右。 最初输入的坐标是WGS84地理信息,但我需要将其转换为预计的WGS Web Mercator。稍后,该表​​将发布到ArcGIS Server地图服务并进行缓存。 这是一个学习Python的私人项目,没有任何期限,并且想知道仅使用SQL Server 的本机空间类型是否是一个好主意? 我当前未经测试的计划: 使用SSMS创建带有GEOMETRY字段设置(和其他一些属性)的表 在我的python脚本中,利用arcpy或pyproj将WGS84中的纬度/经度转换为WGS84 Web Mercator(或者我可以以某种方式避免这种情况,以及使用SQL可以实现的所有方法吗?) 利用pymssql插入记录,然后将这些点插入表的GEOMETRY字段中。 我的问题是,在WGS84中采用一对经纬度,然后将其插入使用SQL Server空间类型的SQL Server表中,并在其中具有结果点层的一种好,简单且有效的方法是什么? WGS84 Web Mercator,以便可以在ArcGIS Desktop 10.1中渲染/查询它们? 我确实可以访问arcpy / ArcSDE 10.1,但希望以此作为不需要ArcSDE的示例。

2
SP1 for ArcGIS 10.1具有64位Python扩展,用于背景地理处理-对其他Python使用的影响
如果安装了用于ArcGIS Desktop 10.1sp1的64位背景地理处理,这将如何影响一般使用的Python配置? Esri为ArcGIS 10.1产品发布了SP1,并且为Desktop组件提供了一个64位Python 2.7.2实例,该实例在安装时将Esri 32位Python 2.7调用替换为用于背景地理处理的64位调用(发送的处理)活动的ArcGIS Desktop GUI会话的一侧)。 安装是可选的,即如果没有安装,则ArcGIS Desktop只能继续使用32位用户存储空间。使用它,在Esri程序文件夹中创建一个\ bin64条目,并在“用于桌面背景地理处理(64位)的HKEY_LOCAL_MACHINE \ SOFTWARE \ ESRI \ ArcGIS 10.1 SP1”处建立了用于64位处理的注册表项,然后进行了背景地理处理在64位内存空间中完成。 Esri的32位和现在的64位Python均已安装完整的2.7.2。 在后台地理处理Esri的注册表期间,路径和配置文件将负责调用64位Python可执行文件。在需要时,ArcGIS Desktop会话中保留使用32位Python。 因此,留给每个用户的是决定是否将已安装的64位Python 2.7.2集成到ArcGIS之外的他们的计算需求中。当32位和64位版本的Python都驻留在系统上时,如何最好地做到这一点? 问了另一种方式-Esri负责在其ArcGIS Desktop中集成64位Python,那么对于ArcGIS之外的其余用例,将有哪些方法可以对其进行配置?


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.