用python写一段矢量转栅格的代码
时间: 2024-02-18 13:09:29 浏览: 148
好的,下面是一段用Python实现矢量转栅格的代码,基于GDAL库:
```python
import gdal
import numpy as np
# 打开矢量文件
src_ds = gdal.Open('vector.shp')
# 获取矢量文件范围、分辨率和投影
xmin, xres, xskew, ymax, yskew, yres = src_ds.GetGeoTransform()
xsize = src_ds.RasterXSize
ysize = src_ds.RasterYSize
proj = src_ds.GetProjection()
# 创建栅格数据集
dst_ds = gdal.GetDriverByName('GTiff').Create('raster.tif', xsize, ysize, 1, gdal.GDT_Byte)
# 设置栅格数据集的范围、分辨率和投影
dst_ds.SetGeoTransform((xmin, xres, xskew, ymax, yskew, yres))
dst_ds.SetProjection(proj)
# 将矢量文件转换为栅格数据
gdal.RasterizeLayer(dst_ds, [1], src_ds.GetLayer(), burn_values=[255])
# 读取栅格数据
data = dst_ds.GetRasterBand(1).ReadAsArray()
# 将栅格数据转换为二进制数组
binary_data = np.where(data == 255, 1, 0)
# 保存二进制数组为文本文件
np.savetxt('binary.txt', binary_data, fmt='%d')
```
假设我们要将一个名为“vector.shp”的矢量文件转换为栅格数据,代码将创建一个名为“raster.tif”的栅格数据集,并将其保存为二进制数组“binary.txt”。注意,这段代码仅将矢量文件中的一个图层转换为栅格数据,如果要转换多个图层,则需要对每个图层分别进行操作。
阅读全文