首页 > 其他分享 >GIS之arcgis系列09:arcpy实现克里金差值

GIS之arcgis系列09:arcpy实现克里金差值

时间:2024-06-11 16:28:45浏览次数:14  
标签:shp GIS input os 09 arcgis path output arcpy

矢量点数据经过克里金差值后可以转换成栅格数据,那么就需要了解一下什么是克里金差值。

什么是克里金法?

  IDW(反距离加权法)和样条函数法插值工具被称为确定性插值方法,因为这些方法直接基于周围的测量值或确定生成表面的平滑度的指定数学公式。第二类插值方法由地统计方法(如克里金法)组成,该方法基于包含自相关(即,测量点之间的统计关系)的统计模型。因此,地统计方法不仅具有产生预测表面的功能,而且能够对预测的确定性或准确性提供某种度量。

  克里金法假定采样点之间的距离或方向可以反映可用于说明表面变化的空间相关性。克里金法工具可将数学函数与指定数量的点或指定半径内的所有点进行拟合以确定每个位置的输出值。克里金法是一个多步过程;它包括数据的探索性统计分析、变异函数建模和创建表面,还包括研究方差表面。当您了解数据中存在空间相关距离或方向偏差后,便会认为克里金法是最适合的方法。该方法通常用在土壤科学和地质中。


完整版代码如下:

代码均已经过测试,可直接微调后再工具箱内启动。

import arcpy
import os
import numpy as np

input_folder = arcpy.GetParameterAsText(0)
field_name = arcpy.GetParameterAsText(1)
pixel_size = arcpy.GetParameterAsText(2)
output_folder = arcpy.GetParameterAsText(3)
name = field_name

if not os.path.exists(output_folder):
    os.makedirs(output_folder)

def check_all_zero(input_shp, field_name):
    with arcpy.da.SearchCursor(input_shp, [field_name]) as cursor:
        for row in cursor:
            if row[0] != 0:
                return False
    return True

for root, dirs, files in os.walk(input_folder):
    for file in files:
        if file.endswith(".shp"):
            input_shp = os.path.join(root, file)

            if arcpy.Exists(input_shp):
                projected_shp = os.path.join(output_folder, "projected.shp")
                arcpy.Delete_management(projected_shp)
                arcpy.Project_management(input_shp, projected_shp, arcpy.SpatialReference(32651))

                relative_path = os.path.relpath(root, input_folder)
                output_subfolder = os.path.join(output_folder, relative_path)
                if not os.path.exists(output_subfolder):
                    os.makedirs(output_subfolder)

                output_raster = os.path.join(output_subfolder, os.path.splitext(file)[0] + "_{}.tif".format(name))

                if check_all_zero(input_shp, field_name):
                    desc = arcpy.Describe(projected_shp)
                    extent = desc.extent
                    sr = arcpy.SpatialReference(32651)
                    array = np.zeros((int((extent.YMax - extent.YMin) / int(pixel_size)),
                                      int((extent.XMax - extent.XMin) / int(pixel_size))), dtype=np.float32)
                    raster = arcpy.NumPyArrayToRaster(array, extent.lowerLeft, int(pixel_size), int(pixel_size), -9999)
                    raster.save(output_raster)


                    arcpy.DefineProjection_management(output_raster, sr)
                else:
                    arcpy.CheckOutExtension("Spatial")
                    Output_variance_of_prediction_raster = ""
                    arcpy.gp.Kriging_sa(projected_shp,field_name, output_raster, "Spherical 2548.447994", pixel_size,
                                        "VARIABLE 12",Output_variance_of_prediction_raster)
                    arcpy.CheckInExtension("Spatial")

                arcpy.Delete_management(projected_shp)

标签:shp,GIS,input,os,09,arcgis,path,output,arcpy
From: https://blog.csdn.net/weixin_55429615/article/details/139602348

相关文章

  • 非GIS专业,真的不适合WebGIS开发吗?
    到底是哪些人在新中地特训营学GIS开发?很多同学对GIS开发的认知还停留在GIS专业的学生才能学GIS开发,然而,在新中地教育,非GIS专业的学生几乎占一半。除了GIS专业,还有测绘、遥感等跟GIS差别不大的专业学生选择来学习GIS开发。但是今天我想说的不是3S专业,而是在课业上与GIS专业差......
  • GIS基础制图之地形图
    数据:地理空间数据云(http://www.gscloud.cn/)下一张北京地区DEM(30m),统一用这一张来做。晶格工具运行窗口不贴了,因为参数设置基本上都是默认没有什么要改的1、「3DAnalyst」—「转换」—「由栅格转出」—「栅格转TIN」2、「3DAnalyst」—「转换」—「由TIN转出」—......
  • 英伟达A100、A800、H100、H800、V100以及RTX 4090的详细性能参数对比
    英伟达A100、A800、H100、H800、V100以及RTX4090的详细性能参数对比:英伟达A100架构与制程:架构:Ampere制程:7纳米核心与频率:CUDA核心数:6912个Tensor核心数:432个Boost时钟频率:1.41GHz性能:FP32性能:19.5TFLOPSFP64性能:9.7TFLOPSTensor性能:624.6TFLOPS内存:显存......
  • Qgis添加在线底图
    1寻找在线底图链接在网站OpenWhateverMap::AnOpenAwsumnezMap中,可以找到非常多类型的在线底图,点击其中一个即可查看链接。2.常见在线底图Google_Maps:https://mt1.google.com/vt/lyrs=r&x={x}&y={y}&z={z}Google_Terrain:https://mt1.google.com/vt/lyrs=t&x={x}&y......
  • LeetCode 409 Longest Palindrome All In One
    LeetCode409LongestPalindromeAllInOneLeetCode409最长回文算法题解Solutions//MapfunctionlongestPalindrome(s:string):number{constmap=newMap();letlen=0;for(leti=0;i<s.length;i++){if(map.has(s[i])){//配对,消元......
  • 2024.06.09 与显哥在办公室Mock Interview复盘
    我已刷题3月,现正准备着下周一Weride的电面;今日回办公室与显哥进行mockinterview,一起做题LC30。耗时50分钟而我没有做出,结束后与显哥复盘,发现以下问题:没有充分理解题意没有进行时空复杂度分析,事先确定求解的复杂度没有打草稿后再写代码在对代码进行解释时,不足够high-level;容......
  • idea Webstorm Pycharm2024最新版 永久使用教程 附激活码亲测可用2099年
    IDEA2024的激活与安装(全网最靠谱,最快捷的方式)大家都在为使用IDEA需要收费而烦恼。IDEA,即IntelliJIDEA,是一款强大的集成开发环境,广泛应用于Java开发。但是IDEA是付费的,免费版功能有太少,怎么才能既免费,又能使用上正式版呢!当然还是激活啦(不是正版用不起,而是‘激活’更有性价比)......
  • AD8009ARZ-REEL7高速电流反馈放大器中文资料PDF数据手册引脚图产品参数特性
    AD8009是一款超高速电流反馈放大器,具有惊人的5,500V/μs压摆率,上升时间为545ps,非常适合作为脉冲放大器使用。高转换速率降低了转换速率限制的影响,并导致高分辨率视频图形系统所需的440MHz大信号带宽。信号质量在宽带宽内保持,最坏情况下失真为-40dBc@250MHz(G=+10,1......
  • Leetcode-509
    题目509.斐波那契数难度:简单斐波那契数(通常用F(n)表示)形成的序列称为斐波那契数列。该数列由0和1开始,后面的每一项数字都是前面两项数字的和。也就是:F(0)=0,F(1) =1F(n)=F(n-1)+F(n-2),其中n>1给定n,请计算F(n)。示例1:输入:n=2输出:1解释:F(2......
  • 2024-06-09 英语学习纪要
    remedyv.补救,纠正,改进Thissolutioniseasilyremedied.n.处理方法,改进措施/药品,疗法/(走法律程序的)救济aherbalremedyThereisnosimpleremedyforunemploymentinconvenience可以用作动词这种单词可太牛逼了,gpt4o又告诉了我另一些英语中确实有一些带有典型名......