Python栅格数据克里金插值

目录

  • 结果
  • 输入文件
  • 核心代码

结果

在这里插入图片描述

输入文件

1、需要有经纬度信息以及对应的单点值
在这里插入图片描述
2、还要用到一个研究区的矢量文件,当然上面点的经纬度信息要在该矢量文件以内

核心代码

file_path = workspace1
    # Attempt to read the Excel file
    df = readDataFile(file_path)
    date = str("Value")
    df_cleaned = df.dropna(subset=[date])
    shp_file_path = workspace2
    region_shp = gpd.read_file(shp_file_path)
    bounds = region_shp.bounds
    data = pd.read_excel(file_path)
    coordinates = data[['POINT_X', 'POINT_Y']].values
    values = data[date].values
    longitude = data['POINT_X'].values
    latitude = data['POINT_Y'].values
    OK = OrdinaryKriging(longitude, latitude, values, variogram_model='spherical', verbose=False, enable_plotting=False)
    grid_x, grid_y = np.mgrid[bounds.minx.min():bounds.maxx.max():400j, bounds.miny.min():bounds.maxy.max():400j]
    grid_z, ss = OK.execute('grid', grid_x[:, 0], grid_y[0, :])
    transform = rasterio.transform.from_origin(grid_x.min(), grid_y.max(), (grid_x.max() - grid_x.min()) / 400,
                                               (grid_y.max() - grid_y.min()) / 400)
    out_shape = (grid_z.shape[0], grid_z.shape[1])
    mask = geometry_mask(region_shp.geometry, invert=True, transform=transform, out_shape=out_shape)
    grid_z_masked = np.where(mask, grid_z, np.nan)
    transform = from_origin(grid_x.min(), grid_y.max(), (grid_x.max() - grid_x.min()) / 400,
                            (grid_y.max() - grid_y.min()) / 400)
    with rasterio.open(workspace3, 'w', driver='GTiff',
                       height=grid_z.shape[0], width=grid_z.shape[1],
                       count=1, dtype=str(grid_z.dtype),
                       crs='+proj=latlong', transform=transform) as dst:
        dst.write(grid_z_masked, 1)
    del dst

    filename = workspace3
    with rasterio.open(filename) as src:
        # 读取第一个波段的数据
        band_data1 = src.read(1)
        # 归一化处理
        _normalized = np.floor(255 * (band_data1 - np.nanmin(band_data1)) / (np.nanmax(band_data1) - np.nanmin(band_data1)))
        # 应用色彩查找表(LUT)
        lut = np.zeros((256, 3), dtype=np.uint8)
        # [填充LUT,与原代码相同的逻辑]

        for i in range(256):
            if i < 51:
                # 红色到黄色(增加绿色)
                lut[i, 0] = i * 5
                lut[i, 1] = 150+i * 2

            elif i < 102:
                # 黄色到绿色(减少红色)
                lut[i, 0] = 255 - (i - 51) * 5
                lut[i, 1] = 255
            elif i < 153:
                # 绿色到青色(增加蓝色)
                lut[i, 1] = 255
                lut[i, 2] = (i - 102) * 5
            elif i < 204:
                # 青色到蓝色(减少绿色)
                lut[i, 1] = 255 - (i - 153) * 5
                lut[i, 2] = 255
            else:
                # 蓝色到紫色(增加红色)
                lut[i, 0] = (i - 204) * 5
                lut[i, 2] = 255
        # 应用LUT生成伪彩色图像
        colored_image = lut[np.int16(_normalized)]
        for i in range(3):
            colored_image[:, :, i] = np.where(_normalized > 0, colored_image[:, :, i], 0)

        # 创建一个新的TIFF文件来保存伪彩色图像
        with rasterio.open(
                workspace4,
                'w',
                driver='GTiff',
                height=colored_image.shape[0],
                width=colored_image.shape[1],
                count=3,
                dtype=colored_image.dtype,
                crs=src.crs,
                transform=src.transform,
        ) as dst:
            for i in range(3):
                dst.write(colored_image[:, :, i], i + 1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/445973.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vxe-table配合Export2Excel导出object类型数据{type,count}。表格数据呈现是利用插槽,导出只要count该怎么做

先贴一张数据来&#xff1a; 一、然后是vxe-grid的columns配置&#xff1a; 然后就正常用封装好的Export2Excel就行。 碰到一次在控制台报错&#xff1a; 没复现出来&#xff0c;大概就说是count咋样咋样。 以后碰到的话再说&#xff0c;各位要用的话也注意看看 二、或者 用js…

适配器模式已经在SpringMVC中的源码实现

介绍&#xff1a; 1、适配器模式将某个类的接口转换成客户端期望的另一种接口表示 2、目的&#xff1a;兼容性&#xff0c;让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为&#xff1a;包装器。 3、属于&#xff1a;结构型模式 4、分3类&#xff1a;1&#xff0…

ESP8266开发板 + DHT11+远程开关+ThingsCloud+APP+QQ邮件推送告警

ESP32 是乐鑫公司推出的 WiFi 芯片&#xff0c;它不仅支持 WiFi 和 BLE&#xff0c;还可以作为可编程的 MCU&#xff0c;通过 Espressif IDF、Arduino 等框架编写固件&#xff0c;用于非常广泛的物联网场景。 这个教程我们分享如何在 Arduino IDE 中使用 ThingsCloud ESP SDK&…

ElasticSearch之排序,fielddata和docvalue

写在前面 es搜索返回结果的排序默认是按照得分的高低来排的&#xff0c;本文来看下如何按照字段来排序&#xff0c;实现类似于MySQL的order by xxx的效果。 1&#xff1a;什么是fileddata和doc_value 参考ElasticSearch之零碎知识点 和一文带你彻底弄懂ES中的doc_values和fi…

Igraph入门指南 5

2、graph_from系列&#xff0c;将其他R数据结构转换成图 2-1 邻接矩阵转图&#xff1a;graph_from_adjacency_matrix 可以接受Matrix包创建的稀疏矩阵作为参数 邻接矩阵中行的顺序被保留&#xff0c;并作为图中顶点的顺序。 本函数几个重要的参数&#xff1a; weighted&am…

【组合递归】【StringBuilder】Leetcode 17. 电话号码的字母组合

【组合递归】【StringBuilde】Leetcode 17. 电话号码的字母组合 StringBulider常用方法&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;17. 电…

Java宝典-抽象类和接口

目录 1. 抽象类1.1 抽象类的概念1.2 抽象类的语法1.3 抽象类的特点 2. 接口2.1 接口的概念2.2 接口的语法2.3 接口的特点2.4 实现多个接口2.5 接口的继承 3. 接口使用案例 铁汁们好,今天我们学习抽象类和接口~ 1. 抽象类 1.1 抽象类的概念 什么是抽象类?在面向对象中,如果一…

【Leetcode】top 100 双指针

283 移动零 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 分析&#xff1a;双指针初始为0&#xff1b;left指针找零值&#xff0c;right指针找非零值&#xff1b;由于需要保持非零元素的相对顺序&#xff0c…

02-组件化编程与Vu额 Click脚手架

1.Vue组件化编程(只有1个数字是一级标题) 1.1 模块与组件、模块化与组件化(两个数字组成是二级标题) 1.1.1模块(三个数字是三级标题 依次类推) 理解&#xff1a;向外提供特定功能的 js 程序&#xff0c;一般就是一个 js 文件为什么&#xff1a;js 文件很多很复杂作用&#xf…

【性能测试】性能测试各知识第1篇:性能测试大纲【附代码文档】

性能测试完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;性能测试大纲。。。。。。。。。。。。。。 全套笔记资料代码移步&#xff1a; 前往gitee仓库查看 感兴趣的小伙伴可以自取哦&#xff0c;欢迎大家点赞转发~ 性能测试大纲 |序号|阶段|概述| |--…

【C++】三大特性之继承

1 继承的概念及定义 1.1 继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展、增加功能&#xff0c;这样产生新的类&#xff0c;称派生类&#xff08;或子类&#xff09;。而被继承的…

【NR 定位】3GPP NR Positioning 5G定位标准解读(九)-增强的小区ID定位

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

云服务器python版本冲突解决(awd平台搭建)

文章目录 yum和apt-getdockerpython环境问题 大家在使用python时&#xff0c;难免会使用他人的代码&#xff0c;自己是python3&#xff0c;而别人的是python2.我们直接运行会报错(比如print函数括号的问题)。但是去修改代码又很麻烦。这里给大家推荐conda。我以我搭建awd平台为…

toB开发范式

前言 B端开发&#xff0c;也被称为后台开发或者企业级开发&#xff0c;是针对企业或者组织的业务需求进行的软件开发。在 B 端开发中&#xff0c;我们通常关注的是系统的功能性、稳定性、可扩展性以及安全性&#xff0c;从面向过程编程 -> 面向对象编程 组合式编程 以下是…

【谈一谈】并发_Synchronized

Synchronized 又到周末了,最近的话(有点子小日子不好过,哈哈哈!~)但是,我还是报之以歌哈哈哈 本次写关于并发_Synchronized的优化以及底层实现原理 说说心里话~其实是非常的累,原因应该怎么说呢?我发现自己在如今的这家公司,我处于一种活多钱少以及关键现在给的或自己不想干,因…

新版Android Studio火烈鸟 在新建项目工程时 无法选java的语言模板解决方法

前言 最近下载最新版androidstudio时 发现不能勾选java语言模板了 如果快速点击下一步 新建项目 默认是kotlin语言模板 这可能和google主推kt语言有关 勾选1 如图所示 如果勾选 No Activity 这个模板 是可以选java语言模板的 但是里面没有默认的Activity 勾选2 和以前的用法…

关于安卓ZXing条码识别(一)引入源码

背景 从0-1引入安卓zxing&#xff0c;实现条码识别 环境 win10 as4 jdk8 引入 首先&#xff0c;官方网站&#xff0c;就是源码。链接 选择你要引入的分支&#xff0c;这里博主选择的是最近更新的分支&#xff0c;如下图&#xff1a; 上图中&#xff0c;1和2都需要引入&am…

车载诊断协议DoIP系列 —— 诊断报文和诊断报文应答传输层安全(TLS)

车载诊断协议DoIP系列 —— 诊断报文和诊断报文应答&传输层安全(TLS) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎…

2021年江苏省职业院校技能大赛高职组 “信息安全管理与评估”赛项任务书

2021年江苏省职业院校技能大赛高职组 “信息安全管理与评估”赛项任务书 一、赛项时间&#xff1a;二、赛项信息三、竞赛内容&#xff1a;第一阶段任务书&#xff08;300分&#xff09;任务1&#xff1a;网络平台搭建&#xff08;60分&#xff09;任务2&#xff1a;网络安全设备…

23 经典卷积神经网络 LeNet【李沐动手学深度学习v2课程笔记】 (备注:提到如何把代码从CPU改到在GPU上使用)

目录 1. LeNet 2. 实现代码 3. 模型训练 4. 小结 本节将介绍LeNet&#xff0c;它是最早发布的卷积神经网络之一&#xff0c;因其在计算机视觉任务中的高效性能而受到广泛关注。 这个模型是由AT&T贝尔实验室的研究员Yann LeCun在1989年提出的&#xff08;并以其命名&…