计算所在utm区域
116/6 = 19.333333333333332
19+31 = 50
from pyproj import Transformer
transformer = Transformer.from_crs("epsg:4326", "epsg:32650")
lat = 40.0691643333333
lon = 116.242161333333
x3, y3 = transformer.transform(lat, lon)
transformer.transform(lat, lon)
(435376.10572293965, 4435708.949468517)
如果对自己需要进行转换的坐标系的WKID不了解,可以从以下两个网站进行查询:
地理坐标系WKID:https://developers.arcgis.com/javascript/3/jshelp/gcs.htm
投影坐标系WKID:https://developers.arcgis.com/javascript/3/jshelp/pcs.htm
32648 | WGS_1984_UTM_Zone_48N |
PROJCS["WGS_1984_UTM_Zone_48N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",105.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]] | |
32649 | WGS_1984_UTM_Zone_49N |
PROJCS["WGS_1984_UTM_Zone_49N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",111.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]] | |
32650 | WGS_1984_UTM_Zone_50N |
PROJCS["WGS_1984_UTM_Zone_50N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",117.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]] |
32651 | WGS_1984_UTM_Zone_51N |
PROJCS["WGS_1984_UTM_Zone_51N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",123.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]] | |
32652 | WGS_1984_UTM_Zone_52N |
PROJCS["WGS_1984_UTM_Zone_52N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",129.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]] |
UTM 投影(Universal Transverse Mercator,通用横轴墨卡托投影)是由美国军方在1947提出的,美国本土采用Clarke 1866椭球体以外,UTM在世界其他地方都采用WGS 1984。
UTM 投影是一种等角横轴割圆柱投影,圆柱割地球于南纬80度、北纬84度两条等高圈,被许多国家用作地形图的数学基础,如中国采用的高斯-克吕格投影就是UTM投影的一种变形,很多遥感数据,如Landsat和Aster数据都应用UTM投影发布的。
UTM投影将北纬84度和南纬80度之间的地球表面积按经度6度划分为南北纵带(投影带)。从180度经线开始向东将这些投影带编号,从1编至60(北京处于第50带) ,因此1带的中央经线为-177(-180 -(-6)),而0度经线为30带和31带的分界,这两带的分界分别是-3和3度。
每个带再划分为纬差8度的四边形,从80S到84N共20个纬度带(X带多4度),分别用C到X的字母来表示。为了避免和数字混淆,I和O没有采用。两条标准纬线距中央经线为180KM左右,中央经线比例系数为0.9996。 UTM北半球投影北伪偏移为零,南半球则为10000公里。
中国UTM投影带号中国国境所跨UTM带号为43-534。UTM投影带号计算
如WGS_1984_UTM_Zone_49N,这个49的计算方法: 49:从180度经度向东,每6度为一投影带,第49个投影带 49=(114+180)/6,这个114为49投影带的最大经线。如图所示:
北半球地区,选择最后字母为“N”的带,
带数=(经度整数位/6)的整数部分+31
如:广州市经度范围112.95-113.98,带数=113/6+31=49,选49N,即WGS 1984 UTM ZONE 49N
利用Python中的的pyproj库实现地理坐标向投影坐标转换 https://blog.csdn.net/hqs_09/article/details/100624829
pyproj库使用简介
1.Python中安装pyproj库
直接pip安装就好
pip install pyproj
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 ]))
'''