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

本文介绍了如何使用Python结合OGR库进行shp文件的重投影操作,详细阐述了代码关键点,包括转换参数设定、几何对象坐标转换、属性表保持不变的方法。通过定义转换关系,打开输入文件,读取图层并创建输出文件,遍历并转换每个要素,最终保存结果。此外,还补充了在处理过程中应注意的细节,如字段属性的读取和空间参考文件的创建。
摘要由CSDN通过智能技术生成

代码关键点

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'
在GIS中,使用Python变Shapefile(shp)文件投影坐标,通常会用到GDAL/OGR。GDAL是一个用于读取和写入栅格地理数据格式的,而OGR则专注于矢量数据。下面是一个使用Python脚本通过GDAL/OGR变Shapefile文件投影坐标的简单示例: 1. 首先,需要安装GDAL/OGR。可以使用pip安装pygdal: ``` pip install pygdal ``` 2. 接下来,使用以下Python代码来变Shapefile的投影坐标: ```python from osgeo import ogr, osr # 输入和输出的Shapefile文件路径 in_shp = 'path_to_input_shapefile.shp' out_shp = 'path_to_output_shapefile.shp' # 打开输入的Shapefile ds = ogr.Open(in_shp) if ds is None: print('输入的Shapefile无法打开。') exit() # 获取输入Shapefile的图层 layer = ds.GetLayer() layer_defn = layer.GetLayerDefn() # 创建输出Shapefile driver = ogr.GetDriverByName('ESRI Shapefile') if os.path.exists(out_shp): driver.DeleteDataSource(out_shp) out_ds = driver.CreateDataSource(out_shp) # 定义新的坐标系统(这里需要定义为实际的目标投影) # 例如,将坐标系转换为WGS 84 (EPSG:4326) out_srs = osr.SpatialReference() out_srs.ImportFromEPSG(4326) # 创建输出图层,并定义新的坐标系统 out_layer = out_ds.CreateLayer(out_shp, geom_type=layer_defn.GetGeomType(), srs=out_srs) # 复制字段定义 for i in range(layer_defn.GetFieldCount()): field_defn = layer_defn.GetFieldDefn(i) out_layer.CreateField(field_defn) # 遍历要素,并复制它们到输出Shapefile feature = layer.GetNextFeature() while feature: out_layer.CreateFeature(feature) feature = layer.GetNextFeature() # 清理 out_ds = None ds = None ``` 在使用上述代码之前,请确保将`path_to_input_shapefile.shp`和`path_to_output_shapefile.shp`替换为实际的文件路径,并且将新的坐标系统设置为期望的EPSG代码或者自己定义的坐标系统。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值