用python gdal裁剪栅格数据提取添加xy经纬度和栅格值
创始人
2024-04-10 19:49:39

用python gdal裁剪栅格数据提取添加xy经纬度和栅格值

问题:把遥感影像转为一张表。

现有一全球经济作物数据alfalfa的产量。

image-20220323213429711

alfalfa是一种亚洲西南部多年生草本植物,是重要的经济作物。在图中也可以看到,主要分布在热带和南美洲。

image-20220323213537189

我们想把影像转表,即经纬度、栅格值(苜蓿产量)

上述功能在ArcGIS中是这样实现的。

image-20220323214020825

对于我上述全球影像来说,栅格转点需要6分钟。添加字段和计算几何都需要花费更多的时间。

采用python的gdal方法,首先进行影像裁剪。直接上代码:

dataset = gdal.Open("D:/work/0318/Suitability Raster files/Suitability Raster files/High input/high_banana_plaintain.tif")
output_raster=r'D:/work/0318/Suitability Raster files/Suitability Raster files/High_mask/high_banana_plaintain_mask.tif' 
input_shape = r'D:/work/0318/shp/Africa.shp'# 开始裁剪
ds = gdal.Warp(output_raster,dataset,format = 'GTiff',cutlineDSName = input_shape,      cutlineWhere="FIELD = 'whatever'",dstNodata = -90)   

这里我设置nodata为负值,是我本来影像的nodata值,可以在GIS查看

image-20220323214422003

然后再进行统计:

import time
from osgeo import gdal
import numpy as np
import pandas as pd
import osdef rasterToPoints(rasterfile, nodata=None, v_name=None):""":param rasterfile: 待执行栅格转点的栅格文件:param nodata:栅格中的无数据值,默认取栅格的最小值:param v_name:导出表格中栅格值所在列的名称,默认为栅格的文件名:return:x、y、value"""# numpy禁用科学计数法,pandas中存储浮点型时只保留四位小数np.set_printoptions(suppress=True)pd.set_option('display.float_format', lambda x: '%.4f' % x)rds = gdal.Open(rasterfile)  # type:gdal.Datasetif rds.RasterCount != 1:print("Warning, RasterCount > 1")cols = rds.RasterXSizerows = rds.RasterYSizeband = rds.GetRasterBand(1)  # type:gdal.Bandtransform = rds.GetGeoTransform()print(transform)x_origin = transform[0]y_origin = transform[3]pixel_width = transform[1]pixel_height = transform[5]if (pixel_height + pixel_width) != 0:print("Warning, pixelWidth != pixelHeight")# 读取栅格values = np.array(band.ReadAsArray())x = np.arange(x_origin + pixel_width * 0.5, x_origin + (cols + 0.5) * pixel_width, pixel_width)y = np.arange(y_origin + pixel_height*0.5, y_origin + (rows+0.5) * pixel_height, pixel_height)px, py = np.meshgrid(x, y)if v_name is None:v_name = os.path.splitext(os.path.split(rasterfile)[1])[0]dataset = {"x": px.ravel(),"y": py.ravel(),v_name: values.ravel()}df_temp = pd.DataFrame(dataset, dtype="float32")# 删除缺失值if nodata is None:nodata = df_temp[v_name].min()df_temp = df_temp[df_temp[v_name] != nodata]else:df_temp = df_temp[df_temp[v_name] != nodata]df_temp.index = range(len(df_temp))return df_tempif __name__ == "__main__":# 禁用科学计数法np.set_printoptions(suppress=True)pd.set_option('display.float_format', lambda x: '%.4f' % x)# 执行栅格转点,并计时s = time.time()# in_tif是输入栅格,刚才裁剪的结果in_tif = r"D:/work/0318/Suitability Raster files/Suitability Raster files/High_mask/high_banana_plaintain_mask.tif" outfile = rasterToPoints(in_tif, v_name="high_banana_plaintain") # v_name是你自己定义的栅格字段列名称outfile.to_csv("high_banana_plaintain.csv") # 导出csv文件e = time.time()print("time used {0}s".format(e-s))

成功了。

看看统计结果

cs = pd.read_csv('high_banana_plaintain.csv')
cs
Unnamed: 0xyhigh_banana_plaintain
009.375037.29170.0000
119.458337.29170.0000
229.541737.29170.0000
339.625037.29170.0000
449.708337.29170.0000
36080736080719.7083-34.79170.0000
36080836080819.7917-34.79170.0000
36080936080919.8750-34.79170.0000
36081036081019.9583-34.79170.0000
36081136081120.0417-34.79170.0000

360812 rows × 4 columns

很完美。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...