当前位置: 首页 > news >正文

矢量文件坐标转换:2000坐标系转换为wgs84坐标系,具体代码实现

最近在处理矢量样本的时候,遇到一些shp文件的坐标系为2000坐标,需要统一地把非WGS84坐标系的矢量转换为WGS84坐标系。

本文记录一下如何进行2000坐标系转化为wgs84坐标系的过程。

在处理矢量数据转换的过程中,有几个关键步骤确保了数据的有效性和可用性。

首先,在转换之前,通过检查并创建目标保存目录,保证了正确的目录结构,这对于避免转换失败或产生错误输出至关重要。

接着,通过osr.SpatialReference对象定义目标坐标系,并使用ImportFromEPSG()方法设置EPSG代码,确保了转换后的数据能够在地理信息系统中正确显示。

此外,通过selectFields参数可以选择性地保留某些字段,而geometryType参数则定义了输出文件中的几何类型,这些选项使用户可以根据具体需求定制输出文件。

重投影选项reproject=True指示GDAL/OGR进行坐标系转换,这对于整合不同坐标系下的数据至关重要。

最后,通过dim参数可以控制输出数据的维度,例如仅保留X和Y坐标,这对于某些特定应用场景是必要的。这些步骤共同构成了一个完整的矢量数据转换流程,确保了数据的准确性和实用性。

具体代码如下:

from osgeo import ogr, gdal
from osgeo import osr
import os
def VectorTranslate(shapeFilePath,saveFolderPath,format="GeoJSON",accessMode=None,dstSrsESPG=4326,selectFields=None,geometryType="POLYGON",dim="XY",
):"""转换矢量文件,包括坐标系,名称,格式,字段,类型,纬度等。:param shapeFilePath: 要转换的矢量文件:param saveFolderPath: 生成矢量文件保存目录:param format: 矢量文件格式:param accessMode:None代表creation,'update','append','overwrite':param dstSrsESPG: 目标坐标系EPSG代码,4326是wgs84地理坐标系:param selectFields: 需要保留的字段列表如果都保留,则为None:param geometryType: 几何类型,"POLYGON","POINT"。。。:param dim: 新矢量文件坐标纬度,建议查阅官方API。:return:"""if os.path.exists(saveFolderPath) ==0:os.makedirs(saveFolderPath)ogr.RegisterAll()gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")data = ogr.Open(shapeFilePath)layer = data.GetLayer()spatial = layer.GetSpatialRef()layerName = layer.GetName()data.Destroy()dstSRS = osr.SpatialReference()dstSRS.ImportFromEPSG(int(dstSrsESPG))if format == "GeoJSON":destDataName = layerName + ".geojson"destDataPath = os.path.join(saveFolderPath, destDataName)elif format == "ESRI Shapefile":destDataName = os.path.join(saveFolderPath, layerName)flag = os.path.exists(destDataName)os.makedirs(destDataName) if not flag else NonedestDataPath = os.path.join(destDataName, layerName + ".shp")else:print("不支持该格式!")returnoptions = gdal.VectorTranslateOptions(format=format,accessMode=accessMode,srcSRS=spatial,dstSRS=dstSRS,reproject=True,selectFields=selectFields,layerName=layerName,geometryType=geometryType,dim=dim)gdal.VectorTranslate(destDataPath,srcDS=shapeFilePath,options=options)return destDataPath
if __name__ == '__main__':shapeFilePath = r'G:\\vector.shp'saveFolderPath = r'G:\\84'VectorTranslate(shapeFilePath,saveFolderPath,format="ESRI Shapefile",accessMode=None,dstSrsESPG=4326,selectFields=None,geometryType="POLYGON",dim="XY",)

在上述代码的主程序部分,我们指定了一个Shapefile文件路径和保存目录,并调用了 VectorTranslate 函数将其转换为ESRI Shapefile格式,并重新投影到WGS84坐标系。

在实际应用中,这段代码可以被用来批量处理大量的矢量数据文件,从而简化数据准备过程。例如,当需要将来自不同来源的Shapefile文件统一到一个标准坐标系中时,这样的脚本可以极大地提高工作效率。

http://www.lryc.cn/news/417329.html

相关文章:

  • MySQL-InnoDB引擎
  • 【Material-UI】复杂按钮 (Complex Button) 自定义详解
  • IT服务质量管理攻略(至简)
  • MySQL事务隔离级别、InnoDB使用MVCC+各种锁实现了RC和RR事务隔离级别、具体案例
  • 你的Java项目还在等待吗?快来学会线程池,解放你的性能!
  • 深入解析:Amazon Bedrock 上 Claude 3 Haiku 的微调测试报告
  • 2023年庐阳区青少年信息学科普日真题- 马拉松(marathon)
  • Python笔记:socket.gaierror: [Errno -3] Temporary failure in name resolution
  • HexView 刷写文件脚本处理工具-基本功能介绍(三)-导出S19/HEX
  • 代码随想录算法训练营第四天(二)|面试题 02.07. 链表相交 142.环形链表II
  • 学习记录第二十一天
  • 江协科技51单片机学习- p31 LCD1602液晶屏驱动
  • Android SurfaceFlinger——渲染完成帧显示(四十八)
  • ABAP+json格式数据转换时参数为空没传值
  • Flink中上游DataStream到下游DataStream的内置分区策略及自定义分区策略
  • 谁来做引领企业精益变革的舵手最合适?
  • 数据结构(java实现)——优先级队列,堆
  • 一部分优化算法
  • 图论(强联通分量)
  • LLaMA- Adapter V2: Parameter-Efficient Visual Instruction Model
  • 【爬虫实战】利用代理爬取Temu电商数据
  • 【MATLAB源码-第244期】基于MATLAB的BP神经网络语音特征信号分类,输出原信号与预测信号对比图以及预测误差和正确率。
  • HarmonyOS 习题(二)
  • 如何搭建一个圈子社区系统?开源社交陪玩交友圈子论坛帖子系统保姆级搭建教程!
  • Delphi5实现身份证检验(DLL版)
  • linux下的C++程序
  • selfAttention 中的dk到底是什么
  • 安装MongoDB UI客户端工具:mongodb-compass-1.40.2-win32-x64.msi
  • 一行命令搞定内网穿透
  • C语言——扫雷游戏