Advertisement

python坐标系转换库_利用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地理坐标系的轴向信息是(纬度,经度),在后面输入经纬度坐标的时候切记是先纬度,后经度的顺序,不然整个坐标系统就完全乱了,转换出来的坐标可能会出现无穷大的错误值。

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 ]))

'''

全部评论 (0)

还没有任何评论哟~