基于python 给出tiff二值化图像转出与另一张tiff图像带有相同空间参考信息(坐标信息)的shp文件代码
时间: 2023-12-20 08:04:43 浏览: 162
以下是基于Python的tiff二值化图像转出与另一张tiff图像带有相同空间参考信息的shp文件代码示例:
```python
import gdal
import ogr
import osr
# 输入tiff文件路径和输出shp文件路径
input_tiff_path = "input.tif"
reference_tiff_path = "reference.tif"
output_shp_path = "output.shp"
# 打开tiff文件和参考tiff文件
tiff_ds = gdal.Open(input_tiff_path)
reference_ds = gdal.Open(reference_tiff_path)
# 获取图像宽度和高度
width = tiff_ds.RasterXSize
height = tiff_ds.RasterYSize
# 获取图像的地理参考信息
geotransform = reference_ds.GetGeoTransform()
projection = reference_ds.GetProjection()
# 创建shp文件和图层
driver = ogr.GetDriverByName("ESRI Shapefile")
shp_ds = driver.CreateDataSource(output_shp_path)
spatial_ref = osr.SpatialReference(wkt=projection)
layer = shp_ds.CreateLayer("polygon", srs=spatial_ref, geom_type=ogr.wkbPolygon)
# 创建字段
field_defn = ogr.FieldDefn("id", ogr.OFTInteger)
layer.CreateField(field_defn)
# 获取栅格值
band = tiff_ds.GetRasterBand(1)
data = band.ReadAsArray()
# 将二值化图像转换为多边形
gdal.Polygonize(band, None, layer, 0, [], callback=None)
# 保存shp文件
shp_ds = None
```
注:上述代码使用了GDAL库和OGR库,需要先安装这两个库。其中,参考tiff文件的地理参考信息被用于创建shp文件和图层,确保输出的shp文件与参考tiff文件具有相同的空间参考信息。
阅读全文