用python写代码,用shapfile文件裁剪遥感影像,得到样本。
时间: 2024-11-27 08:17:07 浏览: 6
在Python中,你可以使用`rasterio`库处理地理空间数据(如栅格影像),结合`shapely`库进行几何操作来裁剪影像。首先确保已经安装了这两个库,可以使用pip安装:
```bash
pip install rasterio shapely geopandas
```
下面是一个简单的示例,展示如何使用shpfile文件裁剪遥感影像(假设我们已经有了一个名为"image.tif"的影像文件和一个shapefile文件"my_shape.shp"):
```python
import rasterio
from rasterio.mask import mask
import geopandas as gpd
# 读取遥感影像
with rasterio.open("image.tif") as src:
data = src.read()
transform = src.transform
crs = src.crs
# 加载shapefile
gdf = gpd.read_file("my_shape.shp")
# 创建一个临时 GeoDataFrame 用于裁剪
geometry = gdf.geometry
geometries = (transform * geometry).tolist()
# 使用mask函数裁剪影像
裁剪_data,裁剪_transform = mask(src, geometries, crop=True)
# 现在裁剪_data包含了在shapefile范围内对应影像的数据,裁剪_transform是新的坐标变换
```
在这个例子中,`gdf`是根据shapefile创建的一个GeoDataFrame,其geometry列包含了shapefile的几何信息。`mask`函数会返回一个新的数组,其中只包含指定几何体覆盖的部分。
裁剪后的结果存储在`裁剪_data`变量中,如果你需要保存这个结果,可以用`rasterio`的`save()`方法将它写入一个新的tif文件。
阅读全文