安装GDAL
首先需要成功安装conda
,最好新建一个虚拟环境以防和其他包产生冲突
conda install -c conda-forge gdal
输入命令行后如果成功安装可以通过以下代码成功导入gdal
from osgeo import gdal
使用GDAL命令行转化坐标系
假设原始SHP文件名为input.shp
,目标文件为output.shp
,可通过以下命令进行转换:
ogr2ogr -t_srs "EPSG:4326" output.shp input.shp
如果出现报错:
Warning 1: One or several characters couldn’t be converted correctly from UTF-8 to ISO-8859-1. This warning will not be emitted anymore.
这个警告通常是因为SHP文件的属性表中包含无法直接转换为ISO-8859-1
字符集的字符。GDAL默认使用ISO-8859-1编码处理SHP文件的属性表,这会导致含有UTF-8
字符(如中文、特殊符号等)无法正确显示或转换。为了解决这个问题,可以在转换时明确指定输入和输出文件的字符集编码,在ogr2ogr
命令中添加-lco ENCODING=UTF-8
参数以指定输出文件的编码为UTF-8:
ogr2ogr -t_srs "EPSG:4326" -lco ENCODING=UTF-8 output.shp input.shp
这样可以确保字符集的正确转换,避免ISO-8859-1的字符集限制引发的警告。
使用GDAL命令行裁剪tif
可以使用GDAL的gdalwarp
工具通过SHP文件来裁剪TIF文件。假设你的TIF文件名为input.tif,SHP文件名为clip.shp,裁剪后的输出TIF文件为output.tif,可以使用以下命令:
gdalwarp -cutline clip.shp -crop_to_cutline -dstalpha input.tif output.tif
如果裁剪后需要调整像素大小或重采样,可以在命令中添加-tr(设置分辨率)
或-r(指定重采样方法)
参数,例如:
gdalwarp -cutline clip.shp -crop_to_cutline -dstalpha -tr 30 30 -r bilinear input.tif output.tif
如果出现报错:
Warning 1: Self-intersection at or near point 113.9725053093111 22.379899682280694
ERROR 1: Cutline polygon is invalid.
这个错误是由于用于裁剪的SHP文件(output.shp)中存在无效的多边形,比如自相交、多重环或拓扑错误。要解决这个问题,需要在使用gdalwarp进行裁剪之前修复SHP文件。以下是具体使用ogr2ogr
修复SHP文件的步骤:
ogr2ogr -f "ESRI Shapefile" fixed_output.shp output.shp -makevalid
如果出现报错:
Warning 1: One or several characters couldn’t be converted correctly from UTF-8 to ISO-8859-1. This warning will not be emitted anymore.
这个警告是由于SHP文件属性表中的字符编码问题,默认的SHP文件格式使用ISO-8859-1
字符集,而文件中可能包含UTF-8
编码的字符。要解决这个问题,可以通过指定编码来确保正确处理字符集。以下是在ogr2ogr
命令中使用-lco ENCODING=UTF-8
参数,确保输出文件使用UTF-8编码的详细步骤:
ogr2ogr -f "ESRI Shapefile" -lco ENCODING=UTF-8 fixed_output.shp output.shp -makevalid