【干货】规划人的福音!DeepSeek帮你一键制作土地转移矩阵!(附工具链接)...
在日常的 GIS 工作中,我们常常会遇到各种繁琐重复的任务,这些任务不仅耗费时间,还容易因人为操作失误而影响结果准确性。不过,现在有了 DeepSeek 这样的强大工具,情况就大不一样了!【理 论】在“【干货】DeepSeek + ArcGIS:小白也能创建自己的工具箱——以"按属性分割并自动归类"工具为例”中,小编介绍了如何借助DeepSeek强大的思考能力帮助我们快速创建专业化的GIS工具,
在日常的 GIS 工作中,我们常常会遇到各种繁琐重复的任务,这些任务不仅耗费时间,还容易因人为操作失误而影响结果准确性。不过,现在有了 DeepSeek 这样的强大工具,情况就大不一样了!
【理 论】
在“【干货】DeepSeek + ArcGIS:小白也能创建自己的工具箱——以"按属性分割并自动归类"工具为例”中,小编介绍了如何借助DeepSeek强大的思考能力帮助我们快速创建专业化的GIS工具,自从学会了这个工具创建逻辑后,小编一发不可收拾,一头钻进了往期业务成果中,开展了大量的复盘工作,查找在项目实施过程中,哪些地方可以用自动化脚本实现,发现其实大部分内容都可以借助自动化工具批量处理,进而解放我们的双手。思来想去,小编决定打造一批规划人专属的自动化工具,帮助那些小白解决一些重复繁琐的工作负担,目前,工具箱还在持续更新完善中,非常欢迎大家积极学习试用,一起交流探讨,共同进步。
本期就推出小编创建的第二款ArcGIS工具:“一键制作土地转移矩阵”。这里还是简单地介绍下工具箱的大致创建步骤,详细步骤可回顾第一款工具箱制作的教程:“按属性分割并自动归类”。

【实 操】
▶ 1.请DeepSeek生成脚本
在开始创建工具之前,需要先向DeepSeek提出请求,让它为我们生成相应的脚本。DeepSeek可以根据我们的需求,利用其强大的逻辑推理能力,快速生成一份基础脚本,为后续的工具制作提供核心框架。当然,准确的提示词是获取到优质代码的关键,可参照"为ArcGIS编写实现【具体功能】的Python工具,要求包含【具体参数】,处理【数据类型】,并考虑【特殊需求】"万能提示词公式,通过合理地引导 DeepSeek,这将大大节省我们从零开始编写代码的时间和精力,让我们能够更高效地投入到工具的定制和完善工作中。

一顿思考后,DeepSeek为我们生成了能直接用于创建ArcGIS工具箱的Python脚本,经过验证后可以直接运行成功,就是这么好运!这里将脚本贴出来大家可以直接用。当然也有一次行通不过的可能性,大家只需要将报错信息反馈给DeepSeek让他反复修改、论证,最终是会成功的。世上无难事,只怕有心人!
import sysreload(sys)sys.setdefaultencoding('utf-8')
import arcpyimport osimport csv
def create_land_use_transition_matrix(start_landuse, end_landuse, class_field, output_csv): # Clear in_memory workspace arcpy.Delete_management("in_memory")
# Create temporary table to store intersected features temp_intersect = "in_memory\\intersectTable"
# Perform intersect to match start and end land use categories arcpy.analysis.Intersect(in_features=[start_landuse, end_landuse], out_feature_class=temp_intersect, join_attributes="ALL", cluster_tolerance="#", output_type="INPUT")
# Get all unique class codes classes = set() with arcpy.da.SearchCursor(temp_intersect, [class_field, class_field + "_1"]) as cursor: for row in cursor: if row[0] and row[1]: classes.add(row[0]) classes.add(row[1])
# Initialize transition matrix transition_matrix = {} for cls in classes: transition_matrix[cls] = {} for cls2 in classes: transition_matrix[cls][cls2] = 0.0
# Populate transition matrix with area area_field = "SHAPE@AREA" with arcpy.da.SearchCursor(temp_intersect, [class_field, class_field + "_1", area_field]) as cursor: for row in cursor: if row[0] and row[1]: transition_matrix[row[0]][row[1]] += row[2]
# Write to CSV file with open(output_csv, 'wb') as csvfile: # Use 'wb' mode for binary write in Python 2 writer = csv.writer(csvfile)
# Write header header = ['From/To'] + sorted(list(classes)) writer.writerow(header)
# Write each row of data for from_class in sorted(classes): row_data = [from_class] + [transition_matrix[from_class][to_class] for to_class in sorted(classes)] writer.writerow(row_data)
# Check if the script is being called from ArcGIS toolboxif __name__ == "__main__": start_landuse = arcpy.GetParameterAsText(0) end_landuse = arcpy.GetParameterAsText(1) class_field = arcpy.GetParameterAsText(2) output_csv = arcpy.GetParameterAsText(3)
create_land_use_transition_matrix(start_landuse, end_landuse, class_field, output_csv)
▶ 2.优化完善脚本功能
有了 DeepSeek 生成的基础脚本后,接下来就需要我们对其进行优化和完善,以确保工具能够精准地满足实际业务需求。在这个过程中,我们需要结合具体的项目场景和数据特点,对脚本的逻辑结构、参数设置、异常处理等方面进行细致的调整和优化。例如,针对土地转移矩阵的制作,我们需要考虑如何准确地识别土地类型的变更情况,如何合理地统计各类土地的转移数量和比例,以及如何将结果以清晰易懂的方式呈现出来等。通过对这些细节的精心打磨,使工具在功能上更加完善、稳定和实用,能够真正为用户解决实际问题,提高工作效率和质量。

▶ 3.使用工具
工具制作好后就可以直接打开使用,加入两期土地利用矢量数据,选择分类字段,确定结果CSV文件的保存路径和文件名后点击确定即可运行成功。小编又从头到尾操作了一遍土地转移矩阵分析过程,验证无误。


【结 语】
没什么好总结的,直接上福利吧,后台回复【GIS工具箱】获取所有脚本,工具脚本会持续更新,在探索和实践的过程中,小编会不断挖掘DeepSeek的潜力,结合ArcGIS的强大功能,为广大小白用户打造一系列实用的自动化工具。这些工具不仅能够帮助大家提高工作效率,还能让 GIS 技术的应用变得更加简单、便捷。
都看到这里了,希望您能多多支持小编,你的每一个点赞、分享和互动,都是我不断前进的动力,感谢大家,后台给大家伙磕一个!
往期精彩推荐:
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)