- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我刚刚开始使用 ArcPy 来通过 ArcGIS 分析地理数据。分析有不同的步骤,需要依次执行。
这是一些伪代码:
import arcpy
# create a masking variable
mask1 = "mask.shp"
# create a list of raster files
files_to_process = ["raster1.tif", "raster2.tif", "raster3.tif"]
# step 1 (e.g. clipping of each raster to study extent)
for index, item in enumerate(files_to_process):
raster_i = "temp/ras_tem_" + str(index) + ".tif"
arcpy.Clip_management(item, '#', raster_i, mask1)
# step 2 (e.g. change projection of raster files)
...
# step 3 (e.g. calculate some statistics for each raster)
...
etc.
到目前为止,这段代码运行得非常好。然而,光栅文件很大,并且某些步骤需要很长时间才能执行(5-60 分钟)。因此,我想仅在输入栅格数据发生变化时才执行这些步骤。从 GIS 工作流的角度来看,这应该不是问题,因为每个步骤都会在硬盘上保存物理结果,然后将其用作下一步的输入。
我想如果我想暂时禁用,例如第 1 步,我可以简单地在此步骤的每一行前面放置一个 #
。然而,在实际分析中,每个步骤可能有很多行代码,因此我更愿意将每个步骤的代码外包到一个单独的文件中(例如“step1.py”,“step2.py”,.. .),然后执行每个文件。
我尝试了 execfile(step1.py)
,但收到错误 NameError:未定义全局名称“files_to_process”
。看来主脚本中定义的变量不会自动传递给execfile
调用的脚本。
我也尝试过this ,但我收到了与上面相同的错误。
我是一个彻头彻尾的 Python 新手(正如您可能通过滥用任何与 Python 相关的表达式而发现的那样),如果您提供有关如何组织此类 GIS 项目的任何建议,我将非常感激。
最佳答案
我认为你想要做的是将每个步骤构建到一个函数中。这些函数可以存储在同一个脚本文件中,也可以存储在使用 import 语句加载的自己的模块中(就像 arcpy 一样)。伪代码如下所示:
#file 1: steps.py
def step1(input_files):
# step 1 code goes here
print 'step 1 complete'
return
def step2(input_files):
# step 2 code goes here
print 'step 2 complete'
return output # optionally return a derivative here
#...and so on
然后,在同一目录中的第二个文件中,您可以导入并调用将栅格作为输入传递的函数。
#file 2: analyze.py
import steps
files_to_process = ["raster1.tif", "raster2.tif", "raster3.tif"]
steps.step1(files_to_process)
#steps.step2(files_to_process) # uncomment this when you're ready for step 2
现在您可以有选择地调用代码的不同步骤,并且只需要注释/排除一行而不是一整 block 代码。希望我正确理解你的问题。
关于python - 如何组织具有多个分析步骤的 Python GIS 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18448495/
我想在自定义格式和 GIS 程序中查看和编辑一些类似 map 的数据(很明显的东西,比如带注释的点/路径/多边形/位图;还有四叉树掩码,但如果需要我可以将它们转换成其他东西)就像 Qgis 一样,它看
我有一张已经数字化并转换为矢量层的 map (仅河流)。 问题在于矢量化为每个河流生成了大量的分段,这些分段显示为不同的特征(每个分段可能具有多个直线分段,但它们不覆盖整个河流)。我正在寻找的是一种工
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。 关闭
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
将栅格数据导入到补丁时,有没有办法缩短计算时间? 这是我的代码。这通常需要大约 20 分钟才能完成。我的世界是500x500。我发现,如果只考虑 true 或 false,使用 gis:interse
GPS是GIS的应用之一吗? 是否有任何 sw create gps 用于特定位置(我确定)? 谢谢 最佳答案 您可以将 GPS 视为收集位置数据的工具。然后将“传递”以供进一步使用:通过您的智能手机
我已经搜索过了,相信我,我已经搜索过了! 但我无法确切地找到所有东西是如何粘合在一起的。 有人可以从开发的角度概述一下 GIS 的工作原理吗? 我了解栅格、图层、空间数据、几何等背后的概念,但我完全不
是否有相当于 GIS 应用程序的“Hello World”程序? 我希望更加熟悉 GIS 应用程序的开发。有哪些流行的(免费/低成本)教程和/或示例应用程序可以帮助人们入门?有没有您认为对 GIS 初
我正在使用 GIS 扩展开发 NetLogo 模型以导入道路网络 shapefile。当我在大约 5x5 公里的小区域上工作时,该模型工作正常。但是,我希望允许模型的潜在用户自行确定他们感兴趣的领域/
我想为计算密集型和耗时的矢量 GIS 操作开发并行算法。我之前尝试过进行多边形叠加。也在寻找其他操作。 最佳答案 即使使用相对较小的 shapefile 但包含大量变量,“合并”花费的时间让我感到惊讶
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 6 年前。 Improve
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 7年前关闭。 Improve this qu
是否可以安装用于基于开放式街道地图数据进行地理编码的服务器? 不幸的是,调用Web服务是没有选择的,我们需要一个自己的服务器。 我看到Map Server不提供地理编码。 最佳答案 build you
我正在研究 pyqgis(使用 pyqgis cookbook 并开始加载矢量图层。 到目前为止,我能够打开一个我已经知道存在于 geopackge 中的层。 iface.addVectorLayer
我想学习如何使用 postGIS 构建应用程序。我想知道是否有好的开源示例可供我查看?我对那些不仅使用 postgres 存储 map 数据而且在应用程序代码中广泛使用 postGIS 特殊功能(聚合
GeoJSON中的LineString和MultiPoint有什么区别? 对我来说,给出的例子是相同的。 http://geojson.org/geojson-spec.html#id3。 我正在计划
我想从芬兰的 OSM 中提取特定于城市的数据。我有芬兰的数据,但我只需要 5 个城市的数据:赫尔辛基、埃斯波、万塔、考尼亚宁和休蒂奥。我可以提取赫尔辛基所需的数据,但我需要其他城市的城市边界(这样我可
我对 GIS 了解不多。我需要有关编辑 GeoTiff 文件坐标的帮助。 例如,这些是文件的角坐标: 左上角 ( 62.0000000, 47.0000000) ( 62d 0' 0.00"E, 47
我想知道特定地理坐标与城市列表的距离(“远”是指坐标与城市之间的欧几里德距离,不考虑道路)。为此,我需要为每个城市找到一个边界框 - 都位于以色列。 This post讨论国家边界框,但我在城市级别需
point有什么区别和 multipoint ? linestring和 multilinestring ? polygon和 multipolygon ?在 PostGIS 中 定义“多”形状背后的
我是一名优秀的程序员,十分优秀!