NC文件不规则裁剪(利用shp文件裁剪)(三)

文章目录

  • 前言
  • 实例数据
  • 代码部分
    • 需要的库
    • 加载文件
    • 写入地理信息
    • 裁剪NC
    • 结果
  • 完整代码奉上

前言

Hello大家好呀,最近正好需要用到多个SHP去裁剪NC,按照我以前的两种办法(办法1和办法2)操作的话,我自己都会破防,在偶然的情况下发现了rioxarray这个库。这个库可以将坐标信息直接写入到NC之中,从而直接使用shp裁剪,比原先的方法更为简单明了。

实例数据

本次测试数据采用2m气温数据,下载链接:点我直接下载;
NC数据打开后如下图所示,该数据为逐月的三维数据。
在这里插入图片描述

SHP数据我就直接采用NOAA公开的海岸线数据吧,主要是涉及到中国的SHP极大可能性会被平台封文章。下载链接:点我直接下载。数据如下图所示,我用的文件是GSHHS_i_L1.shp

在这里插入图片描述

代码部分

需要的库

本次我们需要用到以下四个库,这几个库都可以直接用pip安装比较方便。

import xarray as xr
import rioxarray
import geopandas as gpd
from shapely.geometry import mapping

加载文件

ds = xr.open_dataset(r'C:\Users\Administrator\Downloads/air.2m.mon.mean.nc') # 加载NC文件
# ds['lon'] = ds['lon'] -180
shp = gpd.read_file(r"D:\BaiduNetdiskDownload\gshhg-shp-2.3.7\GSHHS_shp\i/GSHHS_i_L1.shp") # 加载shp文件

写入地理信息

ds.rio.write_crs("epsg:4326", inplace=True) # 向NC文件中写入WGS84坐标系信息
ds.rio.set_spatial_dims(x_dim="lon", y_dim="lat", inplace=True) # 指定NC文件的xy识别名称

裁剪NC

ds = ds.rio.clip(shp.geometry.apply(mapping),shp.crs,drop=False)

结果

在这里插入图片描述

结果是出来了,但是我们会发现,数据只有0-180度之间的,而-180-0之间的数据没有了,造成这个问题的原因就是NCEP数据的lon是从0-360的,而这个库识别不出来。因此在裁剪之前我们需要仔细的观察一下数据的lon是否是从-180开始的。如果是从-180开始的就不用管了,如果是从0开始的就需要将加载文件那一步中的ds[‘lon’] = ds[‘lon’] -180取消注释。

经过lon处理后的结果就是正常的啦!!
在这里插入图片描述

完整代码奉上

import xarray as xr
import rioxarray
import geopandas as gpd
from shapely.geometry import mappingds = xr.open_dataset(r'C:\Users\Administrator\Downloads/air.2m.mon.mean.nc')
# ds['lon'] = ds['lon'] - 180 # 根据实际NC文件的经度范围确定是否开启这一行
shp = gpd.read_file(r"D:\BaiduNetdiskDownload\gshhg-shp-2.3.7\GSHHS_shp\i/GSHHS_i_L1.shp")ds.rio.write_crs("epsg:4326", inplace=True)
ds.rio.set_spatial_dims(x_dim="lon", y_dim="lat", inplace=True)ds = ds.rio.clip(shp.geometry.apply(mapping),shp.crs,drop=False)ds.to_netcdf(r'D:\CSDN/air.2m.mon.mean_clip.nc') # 保存NC文件

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Halcon中打开摄像机

(带货广告:需要该套测试设备或者工业相机的及其相关产品的,请私聊我) 1、相机说明 使用Basler相机, 2、打开Halcon助手 3、检测相机 4、连接摄像机和采集画面 5、自动生成代码 生成代码后,保存工程到本…

用java整理所有磁盘上的图片/文档到我们指定的磁盘下文件里面,并删除原来的路径下的图片

图片 package com.lpc.utils;import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.List;public class ImageFinder {public static void main(String[] a…

FreeRtos任务调度

一.创建任务函数 xTaskCreate( (TaskFunction_t )start_task, /*要执行的函数,开始任务*/(const char* )"start_task", /*任务名字,建议个函数名一样*/(uint16_t )START_STK_SIZE, (void* …

【PX4-AutoPilot教程-TIPS】PX4控制无人机在Gazebo中飞行时由于视角跟随无人机在画面中心导致视角乱晃的解决方法

PX4控制无人机在Gazebo中飞行时由于视角跟随无人机在画面中心导致视角乱晃的解决方法 问题描述解决方法 问题描述 无人机在Gazebo中飞行时,无人机始终处于画面中央,会带着视角乱晃,在Gazebo中进行任何操作视角都无法固定。 观察Gazebo左侧Wo…

最全软件测试面试问题和回答,全文背熟不拿下offer算我输!

求职,类似于打仗,是一场挑战自己的战斗,也是一场跟用人单位的博弈,更是一场千人过独木桥的厮杀、混战。《孙子谋攻篇》中早就说了:"知己知彼,百战不殆;不知彼而知己,一胜一负&a…

Mac M2芯片配置PHP环境

Mac M2芯片配置PHP环境 1. XAMPP2. PHPBrew(PHP版本管理)安装php7.4.33版本 3. 直接使用homebrew 安装php环境参考 1. XAMPP 官网地址 https://www.apachefriends.org/ 安装 安装完成 web server打开后,在打开localhost 成功! 2. PHPBrew(PHP版本管…

Web基础①HTTP协议

一.HTTP协议的定义 HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。 1.HTTP协议版本 (1)HTTP/0.9:已过时。只接…

C语言实现位数组(BitArray)

简介 所谓的位数组,主要是为了有效地利用内存空间而设计的一种存储数据的方式。在这种结构中一个整数在内存中用一位(1 bit)表示。这里所谓的表示就是如果整数存在,相应的二进制位就为1,否则为0。 在嵌入式裸机开发中,ram资源是…

单片机01天_stm32f407zg_创建新工程

创建“寄存器版工程” 1、创建工程文件夹 创建工程文件夹“Project”,内部包含文件夹“CMSIS”&&“USER”。 CMSIS:Cortex系列内核接口驱动文件。 USER:存放用户编写的程序文件。 “USER”文件夹内包含“Inc”&&“Src”…

陶陶摘苹果C++

题目&#xff1a; 代码&#xff1a; #include<iostream> using namespace std; int main(){//一、分析问题//已知&#xff1a;10 个苹果到地面的高度a[10],陶陶把手伸直的时候能够达到的最大高度height//未知&#xff1a;陶陶能够摘到的苹果的数目sum。//关系&#xff…

Google:Gemini 1.5跨数百万上下文令牌解锁多模态理解技术报告(中文)

1、概述 在本报告中,我们展示了 Gemini 系列的最新模型 Gemini 1.5 Pro,这是一个计算效率极高的多模态专家混合模型,能够从数百万个上下文标记中回忆和推理细粒度信息,包括多个长文档和数小时的视频和音频。Gemini 1.5Pro 在跨模态的长上下文检索任务上实现了近乎完美的召回…

《Solidity 简易速速上手小册》第2章:搭建 Solidity 开发环境(2024 最新版)

文章目录 2.1 安装和配置 Solidity2.1.1 基础知识解析安装 Solidity 编译器配置开发环境熟悉命令行工具 2.1.2 重点案例&#xff1a;配置本地开发环境案例 Demo&#xff1a;配置本地 Solidity 环境案例代码&#xff1a;HelloWorld.sol 2.1.3 拓展案例 1&#xff1a;设置 Remix …

【MySQL】Navicat/SQLyog连接Ubuntu中的数据库(MySQL)

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 前言一、安装…

Burp常见问题

前言 本文举例了几个常见的软件工具使用问题&#xff0c;文末会提供一些我自己整理和使用的工具资料 。 "在追逐零 Bug 的路上&#xff0c;我们不断学习、改进&#xff0c;更加坚定自己的技术信念。让我们相信&#xff0c;每一个 Bug 都是我们成长的机会。" 一、VM…

2 F. Greetings(离散化+树状数组)

题目链接 F. Greetings 题意 题解 由于两个人的速度是一样的&#xff0c;所以到达终点之前两个人是不会相遇的&#xff0c;考虑一下什么情况两个人会相遇&#xff0c;其中一个人到达终点时&#xff0c;另一个人&#xff0c;终点所在地的前面&#xff0c;并且它的终点在更右边…

模式匹配这么好,Java语法里有吗?

这篇文章我们借助新版Java来理解模式匹配&#xff0c;Rust版的模式匹配稍后就端上来&#xff0c;各位先尝尝Java这杯老咖啡还香不香&#x1f604;。 什么是模式匹配&#xff1f; 下图直观的表达了模式匹配的概念。 所谓模式类似上图中木盒的各种形状的洞洞&#xff0c;我们…

Unable to make field private JavacProcessingEnvironment$DiscoveredPro报错解决办法

maven项目打包报错 报错信息 Unable to make field private com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors com.sun.tools.javac.processing.JavacProcessingEnvironment.discoveredProcs accessible: module jdk.compiler does not &q…

proxysql

这里是引用 mysql 安装 mysql-3307 mysql -P 3307 -u root -proot -h 10.211.55.8create database db1; CREATE TABLE db1.tab_20240102 (id INT PRIMARY KEY,name VARCHAR(50),email VARCHAR(50),age INT ); CREATE TABLE db1.tab_20240103 (id INT PRIMARY KEY,name V…

2.20总结

根据这周的学习任务在学习KMP算法和哈希算法,这两种算法主要都用于字符串&#xff0c;而且学习起来都有一定的难度&#xff0c;刚开始的时候一个视频要看好几遍才能弄懂&#xff0c;但是经过这两天的学习也有了一定的收KMP 我通过一小段简单的代码来强化我对于KMP算法的理解&a…

postgis sde表在geoserver中服务发布

文章目录 简要说明maven依赖样例代码 简要说明 利用开源工具geoserver-manager&#xff0c;对postgresql的空间表进行地图服务发布 maven依赖 <dependency><groupId>com.github.dov-vlaanderen</groupId><artifactId>geoserver-manager</artifact…