gdal python 进行shp文件批量投影转换
时间: 2023-07-24 11:08:03 浏览: 198
若要批量进行shp文件的投影转换,你可以使用Python的os模块来遍历指定目录中的所有shp文件,并对每个文件执行投影转换操作。以下是一个示例代码:
```python
import os
from osgeo import ogr, osr
# 定义原始坐标系和目标坐标系
sourceEPSG = 4326 # 原始坐标系的EPSG代码
targetEPSG = 3857 # 目标坐标系的EPSG代码
# 创建目标坐标系
targetSR = osr.SpatialReference()
targetSR.ImportFromEPSG(targetEPSG)
# 遍历目录中的所有shp文件
source_dir = 'path/to/source_directory' # 源文件目录
output_dir = 'path/to/output_directory' # 输出文件目录
for filename in os.listdir(source_dir):
if filename.endswith('.shp'):
# 打开原始shp文件
source_path = os.path.join(source_dir, filename)
source = ogr.Open(source_path)
layer = source.GetLayer()
# 创建输出的shp文件
output_path = os.path.join(output_dir, filename)
driver = ogr.GetDriverByName('ESRI Shapefile')
output = driver.CreateDataSource(output_path)
outLayer = output.CreateLayer('output', geom_type=ogr.wkbPolygon)
# 获取原始坐标系
sourceSR = layer.GetSpatialRef()
# 创建坐标转换器
transform = osr.CoordinateTransformation(sourceSR, targetSR)
# 遍历原始图层中的要素,并进行投影转换
for feature in layer:
geom = feature.GetGeometryRef()
geom.Transform(transform)
# 创建新要素并将转换后的几何体添加到新图层中
newFeature = ogr.Feature(outLayer.GetLayerDefn())
newFeature.SetGeometry(geom)
outLayer.CreateFeature(newFeature)
newFeature = None
# 关闭文件
source = None
output = None
```
请将代码中的`path/to/source_directory`和`path/to/output_directory`替换为你实际的源文件目录和输出文件目录。代码将遍历源文件目录中的所有shp文件,并将转换后的文件保存到输出文件目录中,文件名和文件结构保持一致。同时,你需要修改`sourceEPSG`和`targetEPSG`变量为你实际的原始和目标坐标系的EPSG代码。
这样,你就可以批量进行shp文件的投影转换。
阅读全文