'''本程序用于将grd文件转换成tif文件并进行裁剪、校准'''
import pandas as pd
import numpy as np
from osgeo import gdal, gdalconst, osr, ogr
import matplotlib.pyplot as plt
import xarray as xr
import rioxarray as rio
import geopandas as gpd
#from shapely.geometry import mapping
#创建读取grd文件的函数
def read_grd(filepath):with open(filepath) as infile:ncols = int(infile.readline().split()[1])nrows = int(infile.readline().split()[1])xllcorner = float(infile.readline().split()[1])yllcorner = float(infile.readline().split()[1])cellsize = float(infile.readline().split()[1])nodata_value = float(infile.readline().split()[1])value = np.loadtxt(filepath, skiprows=6)return value, ncols, nrows, cellsize #调用函数
for yy in [2028,2029,2030,2031,2032,2048,2049,2050,2051,2052,2068,2069,2070,2071,2072,2096,2097,2098,2099,2100]:    filepath = 'F:/pre'+str(yy)+'.grd'inter_array, cols1, rows1, cellsize  = read_grd(filepath)  #读取grd文件filepath2 = 'F:/pre'+str(yy)+'_cov.grd'cov,_,_,_  = read_grd(filepath2)inter_array[np.where(cov>=100)] = inter_array[np.where(cov>=100)] - cov[np.where(cov>=100)]     #用误差数据进行校正inter_array[np.where(inter_array>=800)] = inter_array[np.where(inter_array>=800)] - cov[np.where(inter_array>=800)]inter_array1 = inter_array.reshape(rows1,cols1)inter_array1[np.where(inter_array1<-0.0)] = np.naninputfilePath ="F:/shp_xj.tif"inputrasfile = gdal.Open(inputfilePath) #projection = inputrasfile.GetProjection()  # 获取投影geotrans2 = inputrasfile.GetGeoTransform()  # 几何信息#写出tifouttifpath = 'F:/pre'+str(yy)+'.tif'driver = gdal.GetDriverByName("GTiff")dataset = driver.Create(outtifpath, cols1, rows1, 1, gdal.GDT_Float64)dataset.SetGeoTransform(geotrans2)dataset.SetProjection(projection)dataset.GetRasterBand(1).WriteArray(inter_array1)outtifpath = 'F:/pre'+str(yy)+'.tif'driver = gdal.GetDriverByName("GTiff")dataset = driver.Create(outtifpath, cols1, rows1, 1, gdal.GDT_Float64)dataset.SetGeoTransform(geotrans2)dataset.SetProjection(projection)dataset.GetRasterBand(1).WriteArray(inter_array1)#用矢量数据裁剪栅格    shp_dir = 'F:/xj_wgs8445.shp'xj_shp = gpd.read_file(shp_dir)xj_shp_crs = xj_shp.crsfile_name = 'F:/pre'+str(yy)+'.tif'tif = rio.open_rasterio(file_name)[0]tif_crs = tif.rio.crsif xj_shp_crs==tif_crs:#xj_tif = tif.rio.clip(xj_shp.geometry.apply(mapping), xj_shp.crs)xj_tif = tif.rio.clip(xj_shp.geometry)xj_tif.rio.to_raster('F:/pre'+str(yy)+'_1.tif')print(yy)plt.imshow(xj_tif)cb = plt.colorbar(label='color bar settings')plt.show()

基于python将grd文件转成tif,并进行裁剪相关推荐

  1. 基于Python的DICOM文件转换教程,使用pydicom将图片存为DICOM文件。

    基于Python的DICOM文件转换教程,使用pydicom将图片存为DICOM文件. DICOM是医学图像和信息的数字化标准,可用于将医学影像数据.诊断报告等信息在医疗领域进行传输.分享和分析.而常 ...

  2. python分行_基于python实现对文件进行切分行

    针对配置文件进行切分,重组,每隔30行为一段,进行重新生成功能. 代码如下 #!/usr/local/python/bin/python # coding=utf-8 import sys impor ...

  3. python上传文件到onedrive_基于Python的onedrive文件本地化浏览系统–PyOne

    基于Python的onedrive文件本地化浏览系统–PyOne PyOne是一款基于Python-Flask的onedrive文件本地化浏览系统,使用MongoDB储存文件列表,使用redis缓存数 ...

  4. Python 将 HTML 文件转成指定的编码

    Python 将 HTML 文件转成指定的编码 import sys import chilkat charset = chilkat.CkCharset() #  Any string argume ...

  5. python 人像素描_基于python实现把图片转换成素描

    这篇文章主要介绍了基于python实现把图片转换成素描,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 导语: 你是否还在为当时年少时没有选择自己的梦 ...

  6. 使用matlab将nc文件转成tif文件

    使用matlab将nc文件转换成tif文件 文章目录 使用matlab将nc文件转换成tif文件 一.nc文件是什么? 二.tif文件是什么? 2.直接上代码 一.nc文件是什么? NetCDF全称为 ...

  7. python画素描画_基于python实现把图片转换成素描

    这篇文章主要介绍了基于python实现把图片转换成素描,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 导语: 你是否还在为当时年少时没有选择自己的梦 ...

  8. Python中将字节流文件转换成图片文件

    Python中将字节流文件转换成图片文件 import urllib3 import os #PIL图像处理标准库 from PIL import Image from io import Bytes ...

  9. 用Python将word文件转换成html(转)

    用Python将word文件转换成html 序 最近公司一个客户大大购买了一堆医疗健康方面的科普文章,希望能放到我们正在开发的健康档案管理软件上.客户大大说,要智能推送!要掌握节奏!要深度学习!要让用 ...

最新文章

  1. [转]XCode中修改缺省公司名称/开发人员名称
  2. Linux 网络及IP概述
  3. java 云 代码_云端如何编写Java代码
  4. java 6 update 3_Java(TM) 6 Update(java运行环境) V 6.0.450.6 官方版
  5. ThinkPHP6项目基操(11.实战部分 部署后台静态页面模板及后台登录页面)
  6. python print format_Python中的format格式化输出
  7. scala可变长度参数(一)
  8. 每日三道前端面试题--vue 第一弹
  9. vue-router的简单理解
  10. 百度文库免费下载最新攻略,全新的百度文库下载方式
  11. 用户故事与敏捷方法-阅读总结
  12. JMeter接口测试工具基础 — Badboy工具
  13. 基于深度学习的行人检测技术
  14. 图解:冒泡排序及其优化
  15. 数据分析最有用的25个Matplotlib图表
  16. Linux - 增加用户、添加用户组
  17. 一个牛人的经历---北京八年——从极度贫困到财务自由
  18. 论文翻译:Associative Embedding:End-to-End Learning for Joint Detection and Grouping
  19. “开源和商业化不能形成对立!”
  20. js实现微信禁止h5网页下拉,禁止微信h5页面默认下拉

热门文章

  1. SQS (Simple Queue Service)简介
  2. linux分区如何4k对齐,Linux如何进行无损修复4K对齐?
  3. 修改windows操作系统的远程桌面默认端口号
  4. 阿里技术Leader:我是如何打造优秀技术团队的?8页ppt一次讲透技术管理
  5. 金蝶K3 14.0 泛微OA10.0 注册机 学习沟通
  6. batocera_PC模拟器前端系统'batocera'视频演示 BIOS文件下载 | 充满游戏
  7. 百度网盘不限速使用方法
  8. python中回归分析的算法_Python实现的简单线性回归算法实例分析
  9. css实现倾斜条纹(斑马线),可用于进度条等
  10. win10系统删不掉文件弹出0x80071129 在重分析点缓冲区中的标记无效该如何处理