专栏名称: 锐多宝
遥感技术教程、资讯与前沿论文
目录
相关文章推荐
羊城晚报金羊网  ·  废弃年花年桔别乱扔!广州市713个临时收集点 ... ·  20 小时前  
手艺门  ·  你的收纳小能手,让家不再凌乱~ ·  昨天  
手艺门  ·  你的收纳小能手,让家不再凌乱~ ·  昨天  
51好读  ›  专栏  ›  锐多宝

借助AI在3分钟内完成一个ArcGIS自定义工具,你可以做到

锐多宝  · 公众号  ·  · 2024-08-01 22:26

正文


今天给读者大人分享小荟最近借助 AI,也就是 ChatGPT,在它的帮助下,库库的写代码,几分钟就可以完成一个ArcGIS自定义工具箱,比如输入一些要求,就可以给你实现

  • 我有一个矢量图层,里面有很多字段,我希望可以选择多个不同字段,每个字段做一次IDW反距离权重插值,输出图层的名称应当是字段名称, 等值线的间距需要自动设置,设置的大小应当是栅格数据的(最大值减去最小值)*3%

  • 在 ArcGIS Pro 中,我有一个矢量图层,图层中有多个字段,且多个字段存在空值,我想让这些空值自动填充上,填充的内容就是该字段中其他非空的值,如果通过 ArcPY 实现呢?并且还需要封装成自定义工具箱

  • ……

1.定制身份

让 AI 成为你的私人 agent,我们可以给他定义一个“身份”。

比如我需要一位 GIS 领域的翻译助手,可以直接告诉 ChatGPT 它扮演的身份。

我们可以通过这种方式,让 ChatGPT 的后续回复偏向某一特定方向,甚至可以指定性格和语气等。

2.让 AI 写代码

其实这里没有太多的秘密,我们要做的就是 输入逻辑清晰、要求合理的自然语言

当然问题和要求描述的越详细越好,甚至输出数据的后缀也最好说清楚,这可以避免很多问题,小荟在后缀上也吃了一个小亏。

3.视频讲解

由于涉及的内容挺多且杂,图文展示不太方法,所以直接录制视频,配有字幕哦。

如果这个视频对读者大人有用,望给小荟 点个赞 ,小荟就心满意足了!


4.代码

这里也把视频中的代码贴出来,需要的朋友自取哦。


"""
Description:   arcpy

我有一个矢量图层,里面有很多字段,我希望可以选择多个不同字段,
每个字段做一次IDW反距离权重插值,输出图层的名称应当是字段名称,
并保存到特定的文件夹中,如何通过arcpy实现,且封装成自定义工具箱

等值线的间距需要自动设置,设置的大小应当是栅格数据的(最大值减去最小值)*3%

Usage:    arcgis pro 可用
"""
# -------------------------------------------



import arcpy
import os

def idw_interpolation_to_contours(input_layer, fields, output_folder, cell_size=10):
    arcpy.env.workspace = output_folder
    arcpy.env.overwriteOutput = True
    
    for field in fields:
        # 创建输出栅格路径
        output_raster = os.path.join(output_folder, field + ".tif")
        
        # 执行IDW插值
        idw_result = arcpy.sa.Idw(in_point_features=input_layer, z_field=field, cell_size=cell_size)
        idw_result.save(output_raster)
        arcpy.AddMessage("Interpolated field: {} and saved as raster: {}".format(field, output_raster))
        
        # 计算等值线间距
        min_value = arcpy.GetRasterProperties_management(idw_result, "MINIMUM").getOutput(0)
        max_value = arcpy.GetRasterProperties_management(idw_result, "MAXIMUM").getOutput(0)
        min_value = float(min_value)
        max_value = float(max_value)
        contour_interval = (max_value - min_value) * 0.03
        contour_interval = round(contour_interval, 2)
        arcpy.AddMessage("Calculated contour interval: {}".format(contour_interval))
        
        # 创建输出等值线路径
        output_contour = os.path.join(output_folder, field






请到「今天看啥」查看全文