热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

转载:python库Pyproj进行坐标转换

原文链接:https:www.baidu.com利用Pyproj进行坐标转换作者:郜科科两个坐标系统的参考椭球不同,实地一个点的不同坐标系的值是不同的,不同的部门采用的坐标系统经常


原文链接:https://www.baidu.com

利用Pyproj进行坐标转换

作者:郜科科

两个坐标系统的参考椭球不同,实地一个点的不同坐标系的值是不同的,不同的部门采用的坐标系统经常是不一致,所以要转换后才能相互利用。例如目前使用的北京市观测站点位置根据GPS的定位而来,GPS使用的地理坐标系为GCS_WGS_1984,所以其坐标的地理坐标系也为GCS_WGS_1984,而假如需要将这些点显示在Web端的地图上,Web端的投影坐标系WGS_1984_Web_Mercator_Auxiliary_Sphere,就需要进行地理坐标系转换为投影坐标系的操作。

关于地理坐标系投影坐标系的关系这里不再赘述,这里介绍一下WKID。WKID的英文全称是Well Known ID,即众所周知的编号。这个编号是大家坐下来一起讨论、约定和认同的,具体有唯一性。众多的坐标系统有了自己的WKID,就像每个人都有自己的身份证号一样,从出生就定了,即使是名字改了,还是可 能通过身份证号确定,这为空间数据的使用、转换、共享等起到关键作用。

例如下表为GCS_WGS_1984的WKID格式及某点的投影文件的具体实例:








WKID


4326


名称


GCS_WGS_1984


参数


GEOGCS["GCS_WGS_1984",DATUM

["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],

PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]


       需要转换为的投影坐标同样有其WKID,例如下边为WGS_1984_Web_Mercator_Auxiliary_Sphere的具体实例:








WKID


3857


名称


WGS_1984_Web_Mercator_Auxiliary_Sphere


参数


PROJCS["WGS_1984_Web_Mercator_Auxiliary_Sphere",GEOGCS

["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],

PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Mercator_Auxiliary_Sphere"],

PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],

PARAMETER["Standard_Parallel_1",0.0],PARAMETER["Auxiliary_Sphere_Type",0.0],UNIT["Meter",1.0]]


如果对自己需要进行转换的坐标系的WKID不了解,可以从以下两个网站进行查询:

地理坐标系WKID:https://developers.arcgis.com/Javascript/3/jshelp/gcs.htm

投影坐标系WKID:https://developers.arcgis.com/Javascript/3/jshelp/pcs.htm

下面列举一些我国常用的地理坐标系的WKID:

















坐标系


WKID


备注


地理坐标


4214 


GCS_Beijing_1954 


地理坐标


4326 


GCS_WGS_1984 


地理坐标


4490 


GCS_China_Geodetic_Coordinate_System_2000 


地理坐标


4610 


GCS_Xian_1980


       进行坐标系的转换有很多工具,其中比较常用的又Proj.4相关库,如果我们使用Python进坐标转换的话,有高级的Pyproj第三方库可以使用。其文档地址如下:

http://jswhit.github.io/pyproj/

这个库非常简单,我们只需要掌握其中的一个主要函数就可以了:

transform(p1, p2, x, y, z=None, radians=False)

示例:x2, y2, z2 =transform(p1, p2, x1, y1, z1, radians=False)

这个函数表示在p1坐标系和p2坐标系之间进行坐标转换,x1,y1,z1是由p1坐标系定义的坐标,z为高度单位是米。X2,y2,z3是由p2坐标系定义的坐标,它是经过转换过后返回的,默认z1=none。Radians参数表示是否用弧度返回值。

       下面我们进行一下北京市观测站点的坐标转换,如下所示为转换的代码:



# 投影变换

def proj_trans():

    # 读取经纬度

    data = pd.read_excel(u"D:/Visualization/python/file/location.xlsx")

    lon = data.lon.values

    lat = data.lat.values

    print lon, lat

    p1 = pyproj.Proj(init="epsg:4326")  # 定义数据地理坐标系

    p2 = pyproj.Proj(init="epsg:3857")  # 定义转换投影坐标系

    x1, y1 = p1(lon, lat)

    x2, y2 = pyproj.transform(p1, p2, x1, y1, radians=True)

        print x2, y2


在上述代码中需要注意需要在转换前首先定义数据的地理坐标系和转换后的投影坐标系,这样才能进行有目的性的转换。

转换前后的结果如下所示:

 



































































name


lon


lat


x


y


万寿西宫


116.366


39.8673


12953803.87


4846677.374


定陵


116.17


40.2865


12931985.25


4907663.441


东四


116.434


39.9522


12961373.59


4858998.543


天坛


116.434


39.8745


12961373.59


4847721.686


农展馆


116.473


39.9716


12965715.05


4861816.127


官园


116.361


39.9425


12953247.27


4857590.051


万柳


116.315


39.9934


12948126.57


4864983.232


顺义


116.72


40.1438


12993210.97


4886860.96


怀柔


116.644


40.3937


12984750.68


4923319.714


昌平


116.23


40.1952


12938664.41


4894348.889


奥体中心


116.407


40.0031


12958367.96


4866392.773


古城


116.225


39.9279


12938107.82


4855470.429


下面我们使用ArcMap中的Project工具进行实验,并对照一下实验结果,如下所示为在ArcMap中进行投影转换后的结果,与上述结果基本相同。



推荐阅读
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文整理了Java中org.apache.solr.common.SolrDocument.setField()方法的一些代码示例,展示了SolrDocum ... [详细]
author-avatar
佩君晓萍4
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有