1603c6e15191786b1b3a80d96fdb2cb3.png

在日常的 GIS 工作中,我们常常会遇到各种繁琐重复的任务,这些任务不仅耗费时间,还容易因人为操作失误而影响结果准确性。不过,现在有了 DeepSeek 这样的强大工具,情况就大不一样了!

【理 论】

在“【干货】DeepSeek + ArcGIS:小白也能创建自己的工具箱——以"按属性分割并自动归类"工具为例”中,小编介绍了如何借助DeepSeek强大的思考能力帮助我们快速创建专业化的GIS工具,自从学会了这个工具创建逻辑后,小编一发不可收拾,一头钻进了往期业务成果中,开展了大量的复盘工作,查找在项目实施过程中,哪些地方可以用自动化脚本实现,发现其实大部分内容都可以借助自动化工具批量处理,进而解放我们的双手。思来想去,小编决定打造一批规划人专属的自动化工具,帮助那些小白解决一些重复繁琐的工作负担,目前,工具箱还在持续更新完善中,非常欢迎大家积极学习试用,一起交流探讨,共同进步。

本期就推出小编创建的第二款ArcGIS工具:“一键制作土地转移矩阵”。这里还是简单地介绍下工具箱的大致创建步骤,详细步骤可回顾第一款工具箱制作的教程:“按属性分割并自动归类”。

2825f1033295af869afba28109a5fa4a.png

【实 操】

▶ 1.请DeepSeek生成脚本

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

c9a9736c5cd58345f9a39ddbc4f8665f.png

一顿思考后,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 生成的基础脚本后,接下来就需要我们对其进行优化和完善,以确保工具能够精准地满足实际业务需求。在这个过程中,我们需要结合具体的项目场景和数据特点,对脚本的逻辑结构、参数设置、异常处理等方面进行细致的调整和优化。例如,针对土地转移矩阵的制作,我们需要考虑如何准确地识别土地类型的变更情况,如何合理地统计各类土地的转移数量和比例,以及如何将结果以清晰易懂的方式呈现出来等。通过对这些细节的精心打磨,使工具在功能上更加完善、稳定和实用,能够真正为用户解决实际问题,提高工作效率和质量。

b83a2e714dd360ada849f1121ffad510.png

▶ 3.使用工具

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

930c0fc5ae6d1094f097f10aba03964c.png

5e3febeb6b43da9794f2916ecd9f401b.png

【结 语】

没什么好总结的,直接上福利吧,后台回复【GIS工具箱】获取所有脚本,工具脚本会持续更新,在探索和实践的过程中,小编会不断挖掘DeepSeek的潜力,结合ArcGIS的强大功能,为广大小白用户打造一系列实用的自动化工具。这些工具不仅能够帮助大家提高工作效率,还能让 GIS 技术的应用变得更加简单、便捷。

都看到这里了,希望您能多多支持小编,你的每一个点赞、分享和互动,都是我不断前进的动力,感谢大家,后台给大家伙磕一个!


往期精彩推荐:

ArcGIS调用在线影像底图

【干货】只需一步,调用ArcGIS online底图!

【干货】ArcGIS调用天地图资源实现高效地图可视化

【干货】GIS常见的空间分析方法

【干货】常见的几种GIS数据类型及区别

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐