使用Python将Shapefile转换为Geoti

2024-10-03 23:27:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个.shp文件,我想把它转换成GEOTIFF。我的形状文件由一个大多边形组成,里面有许多多边形。我使用以下代码,但是输出TIF只包含大多边形。在

from osgeo import ogr, gdal
import subprocess

InputVector = Shapefile
OutputImage = OutputfileName

gdalformat = 'GTiff'
datatype = gdal.GDT_Byte
burnVal = 1 
Shapefile = ogr.Open(InputVector)
Shapefile_layer = Shapefile.GetLayer()


Output = gdal.GetDriverByName(gdalformat).Create(OutputImage, RasterXSize, RasterYSize, 1, datatype, options=['COMPRESS=DEFLATE'])
Output.SetProjection(Projection)
Output.SetGeoTransform(GeoTransform) 

Band = Output.GetRasterBand(1)
Band.SetNoDataValue(0)
gdal.RasterizeLayer(Output, [1], Shapefile_layer, burn_values=[burnVal])

subprocess.call("gdaladdo --config COMPRESS_OVERVIEW DEFLATE "+OutputImage+" 2 4 8 16 32 64", shell=True)

我不确定我做错了什么。在

谢谢


Tags: 文件importlayeroutput多边形compresssubprocessshapefile
1条回答
网友
1楼 · 发布于 2024-10-03 23:27:11

我的第一个猜测是确保较大的多边形在较小的多边形出现的地方有“洞”。我试着用一个来自ArcMap的擦除工具的例子来解释清楚。你想让你的大多边形看起来像蓝色的记号(带有明显的擦除功能),我认为你的大多边形现在看起来像一个带有红色记号的多边形,这将导致你的光栅只由大多边形组成。很抱歉,如果我完全错了,我们会找到另一个解决办法。在

enter image description here

如果是这种情况(大多边形类似于蓝色勾号),将所有多边形烧录为1也可能会造成混乱。您可以在shapefile中创建一个新字段(例如UID),并给它一个唯一的数字ID(它必须是数字的)。可以基于新字段栅格化,例如:

gdal.RasterizeLayer(Output, [1], Shapefile_layer, options = ['ATTRIBUTE=UID'])

相关问题 更多 >