墨卡托

墨卡托投影

  • 正轴等角切/割圆柱投影
  • 高斯克吕格的圆柱面竖起来

高斯克吕格投影/横轴墨卡托投影

Gauss-Kruger投影是等角横切椭圆柱投影,投影后中央经线保持不变,中央经线上长度比为1。

分带
  • 六度带
    • 自0度开始,自西向东每6度分为一个投影带。
  • 三度带
    • 自1度30分开始,自西向东每3度分为一个投影带。


      image.png
投影
  • 坐标系
    在Gauss-Kruger投影上,规定以中央经线为X轴,赤道为Y轴,两轴的交点为坐标原点. x值在北半球为正,南半球为负,y值在中央经线以东为正,中央经线以西为负。
    投影带的坐标都是对本带坐标原点的相对值,所以各带的坐标完全相同,为了区别某一坐标系统属于哪一带,在横轴坐标前加上带号。
  • 伪偏移量
    在每条中央经线左侧3度的范围内,y坐标都为负值。为了避免y值出现负值,规定各投影带的坐标纵轴均西移500km,中央经线上原横坐标值由0变为500km,也就是我们经常遇见的东伪偏移量false easting。


    image.png

用横轴墨卡托投影(UTM投影)

UTM是横向Mercator投影的一个特殊子集,是一种等角横轴割圆柱投影,圆柱割地球于南纬80度,北纬84度两条等高圈。投影后两条割线上没有长度变形,中央经线上长度比为0.9996,以保证离中央经线约330Km处有两条不失真的标准经线,以减少投影边缘地区的长度变形。

分带
  • 经线
    UTM经度采用6度分带,从东经180度(或西经180度)开始,自西向东算起,全球在南纬80度北纬84度之间被划分为60个区域。每一个区域都有各自位移的中心经线。
    1带的中央经线为-177,0度经线为30带和31带的分界,这两个分带的中央经线分别是-3和3度。
  • 纬线
    纬度采用8度分带,从80S到84N共20个纬度带(X带多4度),分别用C到X的字母来表示。为了避免和数字混淆,I和O没有采用。


    image.png
投影
  • 坐标系
    UTM按分带方法各自进行投影,故每个带内坐标成独立系统。
    以中央经线投影为纵横X,赤道投影为横轴Y,两轴交点即为各带的坐标原点。
  • 伪偏移量
    为避免横坐标Y出现负值,UTM北半球投影中规定将坐标纵横X西移(false easting)500公里当做起始轴;
    在南半球,Y轴南移(false northing)10000km.

二者换算关系

二者其实没有相互换算的必要,一般都是在经纬度&UTM之间,或者经纬度&高斯-克吕格之间换算,GMT的mapproject模块能方便的完成,但在此不多叙述。
如果一定要在这两个坐标系之间换算,引用网上一段如下:

两者主要差别在比例系数上,Gauss-Kruger投影中央经线上的比例系数为1,UTM投影的为0.9996。
两个投影之间可近似的采用:
X(UTM)=0.9996(高斯)
y(UTM)=0.9996
(高斯)。

如果坐标纵轴Y值西移了500公里,转换时必顺将Y值减去500公里乘上比例系数后再加500公里进行转换,为了保证精度可采用控制点上的比例因子K来代替0.9996。
此时,
X(utm) = 0.9996 * X(gauss)
y(utm) = 0.9996 * [ y(gauss) - 500000 ] + 500000
同样,
X(gauss)= X(utm)/ 0.9996
y(gauss) = [ y(utm) - 500000 ] / 0.9996 + 500000


image.png
import pyproj
lat = (29.227813 ,30.288779 ,51.2) # 纬度组成的元组
lon = (119.884068,121.227286,5) #经度组成的元组

p1 = pyproj.Proj(init="epsg:4326") # 定义数据地理坐标系 WGS84
p2 = pyproj.Proj(proj="utm",zone=51,datum='WGS84') # 定义转换投影坐标系
x, y = pyproj.transform(p1, p2, lon, lat) # lon 和lat 可以是元组

# 反向转换的两种方式,值应该相同,但与原来的lat、lon应该有些误差
lons1, lats1 = pyproj.transform(p2, p1, x, y)
lons2, lats2 = p2(x,y,inverse=True)
'''
WGS84的经纬度 转 UTM的x,y
'''
from pyproj import Transformer
# 参数1:WGS84地理坐标系统 对应 4326 
# 参数2:坐标系WKID 广州市 WGS_1984_UTM_Zone_49N 对应 32649
transformer = Transformer.from_crs("epsg:4326", "epsg:32649") 
 
lat = 22.744435950
lon = 113.595417400
x, y = transformer.transform(lat, lon)
print("x:", x, "y:", y)
import utm
# 不加force_zone_number会默认按6度带范围选最近的
utm.from_latlon(29.227813,119.884068,force_zone_number=51)
# 反算直接说明是南北半球比较方便
utm.to_latlon(197097.62063006684, 3237250.0054861703, 51, northern = True)

Web墨卡托(WebMercator投影)

属于墨卡托投影

你可能感兴趣的:(墨卡托)