问题标签 [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 投票
1 回答
1594 浏览

c# - 从 .NET Web 服务调用 Python 脚本

从 .NET Web 服务执行 Python 脚本时出现问题。

Web 服务为 python.exe 创建一个System.Diagnostics.Process并传递一个 Python 脚本路径作为参数。

Web 服务作为自定义本地帐户运行。如果我将自定义本地帐户添加到管理员组,python 脚本会成功,但我无法将其作为解决方案。

Python 脚本无法从 ESRI 导入名为 ArcPy 的库。看起来这个模块利用 Java JAR 从(ESRI 的 API)调用 ArcObjects。

它仅在 Web 服务的上下文中运行时才会失败。如果我使用 runas 打开一个 cmd shell 将其作为 Web 应用程序池自定义帐户运行并调用 python 脚本,它工作正常(即使应用程序池帐户不在管理员组中)。当作为 Web 服务运行时,它只需要在管理员组中。

我查看了 procmon 中来自 w3wp.exe 和 python.exe 的条目,但我没有找到任何需要更改权限的内容。

我想知道为什么它可以从作为应用程序池帐户运行的 shell 运行,而不是从 Web 服务运行。

我将每个本地用户权限分配策略授予应用程序池帐户,但它不起作用,所以我已经排除了这一点。

我还更改了 Web 服务应用程序池以加载用户配置文件,但这也无济于事。

system.diagnostics.process当 a在 IIS 应用程序池的上下文中运行与以相同帐户运行的 shell时,执行环境有什么不同?

0 投票
3 回答
4114 浏览

c# - 如何使用调用python脚本的c#在arcobjects中设置输入和输出参数?

我编写了一个 python 脚本来地理处理 ArcGIS 数据,并将 python 代码中的工作空间、输入和输出参数设置为:

由于我是在 Visual Studio 2010 中使用 c# 的 ArcObjects 新手,因此我尝试使用 ArcMap 插件将按钮添加到 ArcMap 桌面。但我不知道如何从 c# 调用这个 python 脚本,并得到类似文本框弹出窗口并询问有关输入和输出参数路径的信息。由于我直接调用了python,因此它不适GetParameterAsText用于python代码中的命令。

如果有人可以帮助解决此案,我将不胜感激。提前致谢。

0 投票
1 回答
1120 浏览

python - rpy + matplotlib + arcpy

我正在尝试将 ryp 与我的 arcpy 脚本一起使用,但出现以下错误:

即使在为我的 python 版本安装了 pywin32 之后,也会出现此错误。我注意到这似乎是一个常见的错误,通常可以通过安装 pywin32 来解决。

我的matplotlib安装也有问题,每次我尝试使用它(import matplotlib.pyplot as plt),python崩溃......

版本:

Python 2.6.6

matplotlib 安装:matplotlib-1.1.0.win32-py2.6.exe

0 投票
1 回答
970 浏览

python - 从主脚本调用 python 工作脚本作为多个实例

我有一个正在监视 Web 服务请求工作区的 python 脚本。每次客户向我的 Web 服务提交作业时,都会在众所周知的位置创建一个唯一的作业文件夹。我有一个脚本在没有“标志”的情况下轮询这个众所周知的文件夹位置(一个具有特定名称的空白文本文件,表示该作业的处理已完成)。

现在我的脚本可以调用工作脚本来处理新文件夹的内容,但必须等到工作脚本完成才能继续分发文件夹。

我的问题是有哪些选项可以使工作脚本的新实例实例化并将控制权返回给经理。创建一个接受工作脚本参数并让管理器脚本通过命令行调用它的python可执行文件是否可行?或者将工作脚本创建到一个可以有许多 instation 处理工作的类中?

一旦工作脚本完成,它就不需要向管理器脚本作业完成发送消息。它将通过将文本文件放入目录中来完成此操作。虽然现在我想起来了,但我必须在某个地方保存每个作业目录已经分发,因为处理工作脚本需要 1.5 分钟。

任何建议/链接将不胜感激。

0 投票
3 回答
500 浏览

python - 在python中根据文件名定位文件

我有几个包含 a.shp 或 b.shp 的文件夹,以及一些其他杂项文件。或者,一个文件夹可以同时包含 a.shp 和 b.shp。在那种情况下,我想选择a.shp。如果一个文件夹没有这两个文件,我会从我的分析中排除该文件夹。

我必须编写一个类似于以下的python代码:

如果有人可以提供有关如何在 Python 中执行此操作的建议,我将不胜感激。

谢谢你。

0 投票
1 回答
1611 浏览

python - ArcGIS 10 python - 检查栅格值是否在集合中的条件语句

我正在尝试根据来自另一个栅格的输入创建一个栅格。如果栅格值等于 set() 中包含的数字,则我希望它为 1,否则为 0

我尝试了以下方法:

这些都不起作用。我相信它们不起作用,因为 where 子句只接受地图代数表达式:ArcGIS 帮助

我可以想到其他两种方法来做到这一点。一个是将其转换为 NumPyArray 并使用它。另一个是遍历集合并为集合中的每个值创建一个光栅对象。循环完成后合并它们。

有没有人对如何解决这个问题有任何建议或意见?

谢谢

0 投票
2 回答
1172 浏览

python - 附加到覆盖先前值的元组

我正在使用 arcpy 来获取形状文件的所有折线。SearchCursor返回一个光标,以便我可以遍历形状文件的所有功能。问题是我想保存游标返回的所有对象以供以后使用。

元组应该包含游标返回的所有对象。但它只有最后一个元素重复size元组次数。

3610930 2135882 3611593 2134453

3611806 2134981 3611593 2134453

3614160 2136164 3617432 2131734

3611593 2134453 3617432 2131734

3617432 2131734 3620568 2127591

3620568 2127591 3620785 2127423

3617980 2126657 3620568 2127591

3616768 2129454 3617948 2126649

3617948 2126649 3617980 2126657

3615102 2128889 3617587 2126510

3617587 2126510 3617948 2126649

3617624 2126416 3617980 2126657

3613129 2128176 3615155 2125617

3615155 2125617 3617587 2126510

3615086 2125515 3615155 2125617


3615086 2125515 3615155 2125617

3615086 2125515 3615155 2125617

3615086 2125515 3615155 2125617

3615086 2125515 3615155 2125617

3615086 2125515 3615155 2125617

3615086 2125515 3615155 2125617

3615086 2125515 3615155 2125617

3615086 2125515 3615155 2125617

3615086 2125515 3615155 2125617

3615086 2125515 3615155 2125617

3615086 2125515 3615155 2125617

3615086 2125515 3615155 2125617

3615086 2125515 3615155 2125617

3615086 2125515 3615155 2125617

3615086 2125515 3615155 2125617

起初,我已经尝试过使用列表。当我使用“append()”方法时,也为列表找到了相同的输出。由于元组是不可变的数据结构,如何+覆盖元组之前的所有元素。虽然这段代码是为 arcpy 编写的,但我猜这个问题不是 arcgis 特有的。

0 投票
1 回答
3654 浏览

python - Python arcpy.mapping和刷新文档

有什么方法可以在不保存文档的情况下在 python 中使用新添加的图层刷新 ArcMap (.mxd) 文档?

我已经使用 python 完成了一系列任务的自动化,最后一步是将输出转储到 arcmap 文档中并弹出文档,以便脚本用户可以查看输出数据并决定他们是否/在哪里喜欢保存.mxd。

我创建了一个我在脚本中引用的 Default.mxd 文档,但我想将其保持为“只读”,以便用户被迫手动保存自己的文档。但是,使用 arcpy.mapping 模块我无法“看到” mxd 中的数据,除非我保存它。有没有办法解决?

下面是我要完成的脚本示例。

0 投票
3 回答
4182 浏览

python - 对 Python 的 glob 的限制?

glob用来将文件名提供给这样的循环:

我用来制作此脚本原型的玩具示例适用于 2、10 甚至 100 个输入 csv 文件,但我实际上需要它来循环 10,959 个文件。当使用这么多文件时,脚本在第一次迭代后停止工作并且无法找到第二个输入文件。

鉴于脚本在“合理”数量的条目(2-100)下工作得非常好,但不是我需要的(10,959)是否有更好的方法来处理这种情况,或者我可以设置的某种参数允许大量迭代?

PS-最初我使用的是glob.glob,但 glob.iglob fairs 并没有更好。

编辑:

上面的扩展以获得更多上下文......

该脚本在 ArcPy 行失败,其中“csvfile”变量被传递到命令中。报告的错误是找不到指定的csv文件(例如,“NCCSM20110101.csv”),而实际上,csv肯定在目录中。难道你不能像我上面所说的那样多次重用声明的变量(x)吗?同样,如果要 glob'd 的目录只有 100 个左右的文件,这将正常工作,但如果有很多(例如,10,959),它似乎会在列表中的某个地方任意失败。

0 投票
1 回答
5296 浏览

python - 使用 arcpy 在列表中加载要素类:SearchCursor 的奇怪行为

使用arcpy,我的目的是在列表中存储一个要素类以供进一步处理。每行将是 dict {'field name': value},包括几何。

完成此任务的最 Pythonic 方式应该是使用列表推导:

此方法适用于数据,但列表中的几何图形都是相同的(在 fc 中检索到的最后一个几何图形)。SearchCursor 的这种行为已经在 StackOverflow 上进行了评论

我尝试了另一种方法:

它适用于我的数据集,但是:

  • 它很慢。
  • 我不确定断言数据和壮举的顺序相同是否安全。

对此有何看法?