微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何用更大的缓冲区切割我们的光栅?

如何解决如何用更大的缓冲区切割我们的光栅?

我想从具有更大缓冲区的光栅文件中切出屋顶。

我可以切出屋顶,但我更喜欢用更大的缓冲区切出屋顶。

代码

import Rasterio
import Rasterio.mask
import geopandas as gpd


# Read roofs
gdf = gpd.read_file('/home/gis/warstwadotestow.shp')  # Your roofs
roof = gdf.iloc[4]

# Open input raster and write masked (clipped) output raster
with Rasterio.open('/home/gis/73642_915777_N-33-72-B-b-2-1.tif') as src:
    out_image,out_transform = Rasterio.mask.mask(src,[roof['geometry']],crop=True)
    out_Meta = src.Meta
    out_Meta.update(
        {
            "driver": "GTiff","height": out_image.shape[1],"width": out_image.shape[2],"transform": out_transform,}
    )
    with Rasterio.open('/home/gis/output_raster2.tif',"w",**out_Meta) as dest:
        dest.write(out_image)

我会得到:

enter image description here

如何切出更大的缓冲区?

解决方法

您可以缓冲几何体。 这是假设您的 shapefile(以及几何图形)位于投影坐标系中,以获得以米为单位的最准确缓冲区。

#Buffer of 20m
out_image,out_transform = rasterio.mask.mask(src,[roof['geometry'].buffer(20)],crop=True)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。