问题标签 [arcpy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
102 浏览

python - 根据子类确定行为

使用 Python 2.6,我正在尝试处理越来越多的格式(xls、csv、shp、json、xml、html 表数据)的表,并将内容输入到 ArcGIS 数据库表中(请留在我身边,这是更多关于过程的python部分而不是GIS部分)。在当前设计中,我的基类格式化目标数据库表并使用源格式的内容填充它。子类目前设计用于将内容输入字典,以便基类可以处理内容,无论源格式是什么。

问题是我的用户可能会将这些格式中的任何一种格式的文件或表格输入到脚本中,因此子类将在运行时最佳地确定。除了运行一个真正涉及的 if-elif-elif-... 块之外,我不知道如何做到这一点。结构看起来像这样:

我对鸭子类型和多态性的理解表明这不是解决问题的方法,但我很难找到更好的设计。这方面的帮助会有所帮助,但我真正想要的是如何转换x.exty.ext转换为确定子类(以及输入处理)的分叉。

如果有帮助,假设foo.xlsbar.xml具有相同的数据,因此x.dy.d最终将具有相同的项目,例如{'name':'Somegrad', 'lat':52.91025, 'lon':47.88267}.

0 投票
0 回答
403 浏览

python - 更好地使用 Python 或 R 在非常大的表中搜索记录以匹配 FGDB 中的特征?

编辑:我正在努力寻找最好的解决方案,虽然我只熟悉 Python,但我想做的事情不应该那么难或花那么长时间。我编辑了标题以询问使用 R 或其他程序的选项。

我正在使用 Python 2.7 的 64 位计算机上的 ArcGIS 10.1 中应对以下挑战。

  • 我有一个包含三个字段的表:ID#、“收入”和“直播”——以及 210 万条记录。

  • 我正在尝试通过将 fGDB 的名称与此表中的 ID# 匹配来从 fGDB 中提取要素类,将两个字段添加到 FC,并使用收入和实时数据值填充这些字段。

  • 我的脚本包括一层又一层的 for 循环、if 语句和搜索游标。尽管它在小批量测试中工作,但它对真实数据的处理时间很长,因为它正在搜索 210 万条记录。

  • 我在下面包含了我的脚本,它可以工作 - 并且还显示了我的逻辑流程,这是我需要指导的地方......

将很长的记录列表与一组要素类进行比较/匹配时,最佳策略是什么?

0 投票
1 回答
843 浏览

python-2.7 - 使用 Python 在表格中逐行、逐字母地搜索和替换

我使用 python 为 ArcMap 编写了一个脚本,该脚本将获取一个包含不受支持的字符的表格,对这些适用的字段进行罗马化或音译,并创建一个带有任何可能包含在表格中的地理信息的 shapefile。我确定的其余代码工作正常。我的主要问题是能够在输入表的每一行中逐字母搜索,这是我之前工作过的,但我想我恢复到了之前的错误。

我觉得我错过了一些东西,但不太确定。如果您需要我详细说明我的脚本中包含的其他内容,请告诉我。不一定需要为我编写脚本,但如果有一个模块或功能我可以,请告诉我它是什么以及我可以在哪里阅读它。

0 投票
1 回答
429 浏览

python - 如何组织具有多个分析步骤的 Python GIS 项目?

我刚开始使用 ArcPy 通过 ArcGIS 分析地理数据。分析有不同的步骤,要一个接一个地执行。

这是一些伪代码:

到目前为止,这段代码运行得非常好。但是,光栅文件很大,一些步骤需要很长时间才能执行(5-60 分钟)。因此,我只想在输入栅格数据发生变化时执行这些步骤。从 GIS 工作流程的角度来看,这应该不是问题,因为每一步都会在硬盘上保存一个物理结果,然后将其用作下一步的输入。

我想如果我想暂时禁用例如步骤 1,我可以简单地#在这一步的每一行前面放一个。但是,在实际分析中,每个步骤可能有很多行代码,因此我更愿意将每个步骤的代码外包到一个单独的文件中(例如“step1.py”、“step2.py”、.. .),然后执行每个文件。

我尝试过execfile(step1.py),但收到错误NameError: global name 'files_to_process' is not defined。似乎主脚本中定义的变量不会自动传递给execfile.

我也试过这个,但我收到了与上面相同的错误。

我是一个完全的 Python 新手(正如您可能通过滥用任何与 Python 相关的表达式而发现的那样),我将非常感谢有关如何组织这样一个 GIS 项目的任何建议。

0 投票
1 回答
1627 浏览

python - 加速 Arcpy python 脚本,大数据

我有一个使用 arcpy 模块的非常简单的 python 脚本。我把它变成了 arcmap 中的脚本工具,并以这种方式运行。它工作得很好,我已经在小型数据集上对其进行了多次测试。问题是我有大量的数据。我需要在具有 4 列和 490,481,440 行的 .dbf 表上运行脚本/工具,目前需要几天时间。有人对如何加快速度有任何建议吗?为了节省时间,我已经在运行脚本之前创建了将在表中填充的列。“back”表示“back_pres_dist”列中逗号后的第二个数字,“dist”表示第四个。我想要的只是让他们在自己的单独列中。表格和脚本如下所示:

任何建议将不胜感激。我知道将数据的某些部分读入内存可能会加快速度,但我不确定如何用 python 做到这一点(当使用 R 时,它需要很长时间才能读入内存,并且试图写入 .csv 是一场噩梦)。

0 投票
1 回答
737 浏览

gis - Arcview 10中如何计算栖息地斑块的数量和面积

我目前正在研究我的硕士论文,并且在 GIS 方面遇到了真正的麻烦。我已经从http://www.kew.org/gis/projects/mad_veg/datasets_gis.html下载了 arc gis 网格数据集

我在 arcmap 10 中成功绘制了它。该地图由各种不同的栖息地组成。我想知道如何获取其中一种栖息地类型,例如“潮湿森林”,并计算该栖息地有多少块,以及每个块有多大。

我已经在这方面工作了几个星期,但没有取得太大进展。有人建议我将区域几何视为表格http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//009z000000w5000000.htm看起来很有希望,但我尝试了编码但我不能让它工作。我在下面发布了我的一些尝试。

问题是我在示例中复制的一些内容特定于示例,但我不确定。如果有人能指出我正确的方向,那将是一个很大的帮助

0 投票
1 回答
6011 浏览

python - 如何修复 IOError:[Errno 2] 没有此类文件或目录错误?

我收到了 IOError: [Errno 2] No such file or directory 错误,我似乎无法弄清楚问题出在哪里。我检查了目录并且文件存在。另外我正在尝试通过许多文本文件运行这个程序,所以如果你能检查一下是否还有其他问题会很好!

这是具体的错误:

IOError:[Errno 2] 没有这样的文件或目录:u'20060705t2.csv'

0 投票
1 回答
437 浏览

python - 在 arcpy 中 FeatureClassToGeodatabase_conversion 出现问题,使用 .da.Walk

使用此代码,我正在尝试读取目录及其所有子目录的所有文件。我有另一个文件名列表,如果搜索在另一个列表中的目录中找到文件,我想将这些要素类复制到另一个位置。当代码到达 FeatureClasstoGeodatabase 时,我不断收到输入要素数据类型不受支持或不存在的错误。我不确定我是否需要以某种方式获取路径和文件名,所以我创建了几个列表来分别捕获它,但我有点卡在这里:

0 投票
2 回答
6651 浏览

python - Python:如何从文本文件创建点形状文件

我正在编写一个 python 代码来读取多边形形状文件中的点并将它们保存在一个点形状文件中。所以首先我制作了一个文本文件并将点 (x,y) 存储在该 .txt 文件中。然后我试图从文本文件中创建一个点形状文件,但它给出了一个错误。
这是代码(只是最后一部分):

这是错误:

0 投票
1 回答
167 浏览

python - Python 中的表操作(转换现有的 R 代码)

寻找一些在 python 或 arcpy 中操作表格的技巧。在一列中,我有流段的 ID 值和它们所属组的第二个值。如果该段属于多个组,我想将所有出现的“额外”组替换为单个组值。我知道如何在 R 中执行此操作并附加了代码,但希望能够在 Python 中执行此操作。任何帮助深表感谢。