Python+OGR库学习(四):重投影shp文件并另存,属性表保持不变

代码关键点

1、首先要定义好转换参数
2、主要操作对象是要素,需要提前创建好输出文件,然后遍历所有要素,对每一个几何对象进行坐标转换
3、输出文件的字段属性定义需要从输入文件读取

代码思路

1、导入相关包,切换路径,注册驱动
2、定义转换关系
3、打开输入文件,读取到图层,创建输出文件,定义字段属性
4、遍历要素,循环读取要素、转换投影、创建对应新要素写入几何,并添加要素到图层
5、定义空间参考文件.prj

代码

#! usr/bin/env python3
# -*- coding:utf-8 -*-
#导入相关包
import ogr,os,osr
#定义投影转换关系
inosr = osr.SpatialReference()
inosr.ImportFromEPSG(4269)

outosr = osr.SpatialReference()
outosr.ImportFromEPSG(26912)

trans = osr.CoordinateTransformation(inosr,outosr)
#读取矢量文件,获取图层
os.chdir(r'F:\Python+gdal\7weeks数据\7weeks数据\ospy_data2\ospy_data2')
driver 
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
你可以使用GDAL中的Python绑定来进行shp文件投影转换。首先,确保你已经安装了GDAL。然后,按照以下步骤进行操作: 1. 导入必要的: ```python from osgeo import ogr, osr ``` 2. 打开原始的shp文件: ```python source = ogr.Open('path/to/source.shp') layer = source.GetLayer() ``` 3. 创建一个新的shp文件作为输出: ```python driver = ogr.GetDriverByName('ESRI Shapefile') output = driver.CreateDataSource('path/to/output.shp') outLayer = output.CreateLayer('output', geom_type=ogr.wkbPolygon) ``` 4. 定义原始坐标系和目标坐标系: ```python sourceSR = layer.GetSpatialRef() targetSR = osr.SpatialReference() targetSR.ImportFromEPSG(targetEPSG) # 替换targetEPSG为你想要的目标EPSG代码 ``` 5. 创建一个坐标转换器: ```python transform = osr.CoordinateTransformation(sourceSR, targetSR) ``` 6. 遍历原始图层中的要素,并进行投影转换: ```python 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 ``` 这样,你就可以将原始shp文件中的几何体投影到目标坐标系,并保存为新的shp文件。 注意:在代码中,将`path/to/source.shp`和`path/to/output.shp`替换为你实际的文件路径,将`targetEPSG`替换为你想要的目标EPSG代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值