rasterio介绍以及代码

简介

官网链接:https://rasterio.readthedocs.io/en/latest/intro.html

1、原理

与地理空间抽象数据库(GDAL)绑定的,用于访问不同类型栅格数据的包同时为C语言服务,而C语言存在指针问题,不精通C语言的人在使用与gdal绑定的包访问栅格数据时,很容易发生指针悬空问题。
Rasterio的目标是为python量身打造地理空间抽象数据库,——即使用更少的非惯用扩展类和更多的惯用python类型来表达gdal数据模型,同时提高python代码的效率。高性能,较低的认知负担,更清晰,更透明的代码。这就是Rasterio的目的

2、安装

windows安装输入以下代码即可(二选一)

conda install rasterio
pip install rasterio

3、代码示例

用rasterio打开并显示栅格数据,结果如下

import os 
import gdal
import rasterio
import matplotlib.pyplot as plt

path = r'G:\裁剪\GZQ_clip\20190312.tif'     #文件路径
dataset = rasterio.open(path)               #打开文件
fig = plt.figure(figsize=(16,9))            #画布大小vmax=1,vmin=0,
show((dataset,1),cmap='RdYlBu')

在这里插入图片描述

相对于imread而言,rasterio可取读取空间数据,而imread只能读取非空间数据。另附imread读取图形代码

import matplotlib.pyplot as plt
from matplotlib.pyplot import imread
img = imread(r'E:\picture\0G2A0425.jpg')
plt.imshow(img)
plt.show

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是使用Rasterio进行栅格数据分析的示例代码: ```python import rasterio import numpy as np import matplotlib.pyplot as plt # 打开栅格数据 with rasterio.open('path/to/raster.tif') as src: # 读取数据和元数据 data = src.read() meta = src.meta # 查看数据的维度、数据类型和范围 print('Data shape:', data.shape) print('Data type:', data.dtype) print('Data range:', np.min(data), np.max(data)) # 可视化数据 plt.imshow(data[0], cmap='gray') plt.show() # 重投影数据 from rasterio.warp import calculate_default_transform, reproject, Resampling dst_crs = 'EPSG:4326' transform, width, height = calculate_default_transform(meta['crs'], dst_crs, meta['width'], meta['height'], *meta['bounds']) meta.update({'crs': dst_crs, 'transform': transform, 'width': width, 'height': height}) with rasterio.open('path/to/reprojected.tif', 'w', **meta) as dst: reproject( source=rasterio.band(data, 1), destination=rasterio.band(dst, 1), src_transform=meta['transform'], src_crs=meta['crs'], dst_transform=transform, dst_crs=dst_crs, resampling=Resampling.nearest ) # 剪切数据 from rasterio.mask import mask # 定义裁剪区域 geometry = {'type': 'Polygon', 'coordinates': [[(x1, y1), (x2, y2), (x3, y3), (x4, y4)]]} # 根据裁剪区域获取掩膜 mask = rasterio.features.geometry_mask([geometry], out_shape=data.shape, transform=meta['transform'], invert=True) # 剪切数据 clipped_data = data[:, mask] # 可视化剪切后的数据 plt.imshow(clipped_data[0], cmap='gray') plt.show() ``` 这段代码首先使用`rasterio.open()`函数打开一个栅格数据,然后读取数据和元数据。接着,我们查看了数据的维度、数据类型和范围,并可视化了数据。然后,我们使用`rasterio.warp.reproject()`函数将数据重投影到一个新的坐标系,并保存为一个新的栅格数据。最后,我们使用`rasterio.mask.mask()`函数根据一个裁剪区域获取掩膜,并用掩膜剪切了数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值