利用Python中的的pyproj库实现地理坐标向投影坐标转换

前言

在进行坐标转换之前,先简单的介绍下几个专业概念:
地理坐标系:地理坐标是用纬度、经度表示地面点位置的球面坐标
投影坐标系:简单点来讲就是通过投影的方式把地球地理坐标系这种三维空间坐标展开成平面坐标。
关于坐标系统这块的详细介绍可以参阅地图学相关书籍:
空间坐标与地图投影
国内常用坐标系统介绍

pyproj库使用简介

1.Python中安装pyproj库

直接pip安装就好

pip install pyproj

2.初始化坐标参考系统(CRS)

pyproj库提供了四种初始化参考坐标的方式,括号里面的数字是地图坐标系统在epsg中的代号,每一种地图坐标系统在epsg中都有一个唯一的数值与之对应,例如,4326对应的就是WGS84地理坐标系统,对应代码坐标系统的详细信息可以在https://epsg.io/查询。

from  pyproj  import  CRS
crs=CRS.from_epsg(4326)
crs = CRS.from_string("epsg:4326")
crs = CRS.from_proj4("+proj=latlon")
crs = CRS.from_user_input(4326)

3.检查坐标参考系统信息

直接输入刚才构造的crs对象,即可查看当前坐标系统的详细信息,在进行坐标转换之前,首先要检查坐标转换的范围和轴向信息,比如这里的wgs84地理坐标系的轴向信息是(纬度,经度),在后面输入经纬度坐标的时候切记是先纬度,后经度的顺序,不然整个坐标系统就完全乱了,转换出来的坐标可能会出现无穷大的错误值。
利用Python中的的pyproj库实现地理坐标向投影坐标转换_第1张图片
利用Python中的的pyproj库实现地理坐标向投影坐标转换_第2张图片

4.转换坐标

在转换坐标前,首先构造一个转换对象,确定是从哪个地理坐标向哪个投影坐标进行转换

transformer = Transformer.from_crs(crs,crs_cs)
# crs是wgs84坐标参考系统
# crs_cs是湖南省长沙市所在地区UTM投影坐标系(这里代号为49带)

读入需要转换的经纬度数据
import   pandas   as  pd
data=pd.read_csv('ex.csv')
'''测试数据
          lon        lat
0  112.901623  27.984723
1  112.891346  27.999936
2  112.902052  28.001706
3  112.907937  28.006145
4  112.911574  28.006142
5  112.911833  28.007062
'''
lon=data.lon.values
lat =data.lat.values

坐标转换

切记经纬度的输入顺序,输出的即是UTM坐标系统的xy系统坐标

transformer.transform(lat,lon)
'''
(array([687018.1260865 , 685980.99577337, 687030.93355121, 687602.0694474 ,
        687959.70480738, 687983.63799872]),
 array([3096966.74417735, 3098636.7189627 , 3098849.23596314,
        3099350.09742483, 3099355.45537758, 3099457.7973657 ]))
'''

你可能感兴趣的:(GIS)