Python: 如何使用带坐标的栅格保存 geotiff 文件?
Python: how to save a geotiff file using rasterio with coordinates?
我使用 shapefile 屏蔽了 geotiff 栅格,如下所述
import rasterio
from rasterio.plot import show
import geopandas as gpd
population = rasterio.open('myData.tif')
gdf = gpd.read_file('myFile.shp')
clipped_array, clipped_transform =
rasterio.mask.mask(population, [mapping(ps.iloc[0].geometry)], crop=True)
f,ax=plt.subplots(figsize=(10,10))
gdf.boundary.plot(ax=ax, lw=3, color='red')
show(clipped_array, transform=clipped_transform, ax=ax)
ax.set_xlim([1.82, 2.74])
ax.set_ylim([48.51, 49.14])
现在我想将新数据保存为包含坐标和信息的 .tif
文件。
您可以使用它写入新的 .tif。由于 rasterio 需要一些元数据来编写,因此通常使用输入栅格,例如在本例中使用调整后的属性。
import rasterio
import os
import fiona
from rasterio import mask
with fiona.open('myFile.shp', "r") as shapefile:
shapes = [feature["geometry"] for feature in shapefile]
with rasterio.open('myData.tif') as src:
out_meta = src.meta
out_image, out_transform = rasterio.mask.mask(src, shapes=shapes, crop=True)
profile = src.profile
profile["height"] = out_image.shape[1]
profile["width"] = out_image.shape[2]
profile["transform"] = out_transform
out_meta.update({"driver": "GTiff",
"height": out_image.shape[1],
"width": out_image.shape[2],
"transform": out_transform})
with rasterio.open("masked.tif", "w", **out_meta) as dest:
dest.write(out_image)
我使用 shapefile 屏蔽了 geotiff 栅格,如下所述
import rasterio
from rasterio.plot import show
import geopandas as gpd
population = rasterio.open('myData.tif')
gdf = gpd.read_file('myFile.shp')
clipped_array, clipped_transform =
rasterio.mask.mask(population, [mapping(ps.iloc[0].geometry)], crop=True)
f,ax=plt.subplots(figsize=(10,10))
gdf.boundary.plot(ax=ax, lw=3, color='red')
show(clipped_array, transform=clipped_transform, ax=ax)
ax.set_xlim([1.82, 2.74])
ax.set_ylim([48.51, 49.14])
现在我想将新数据保存为包含坐标和信息的 .tif
文件。
您可以使用它写入新的 .tif。由于 rasterio 需要一些元数据来编写,因此通常使用输入栅格,例如在本例中使用调整后的属性。
import rasterio
import os
import fiona
from rasterio import mask
with fiona.open('myFile.shp', "r") as shapefile:
shapes = [feature["geometry"] for feature in shapefile]
with rasterio.open('myData.tif') as src:
out_meta = src.meta
out_image, out_transform = rasterio.mask.mask(src, shapes=shapes, crop=True)
profile = src.profile
profile["height"] = out_image.shape[1]
profile["width"] = out_image.shape[2]
profile["transform"] = out_transform
out_meta.update({"driver": "GTiff",
"height": out_image.shape[1],
"width": out_image.shape[2],
"transform": out_transform})
with rasterio.open("masked.tif", "w", **out_meta) as dest:
dest.write(out_image)