【问题标题】:Basemap and proj get different projection resultBasemap 和 proj 得到不同的投影结果
【发布时间】:2019-04-11 02:39:51
【问题描述】:

我正在努力理解使用 pyproj 的预测。

现在我的问题是了解投影操作的结果

我在 x,y 上投影了以下坐标:

from mpl_toolkits.basemap import Basemap
import pyproj

lon  = [3.383789, 5.822754]
lat = [48.920575, 53.72185]

# with Basemap
M = Basemap(projection='merc',ellps = 'WGS84')
q1, q2 = M(lon, lat)
for a,b in zip([x for x in q1], [x for x in q2]):
    print(a,b)
# with pyproj
from pyproj import Proj
p = Proj(proj='merc', ellps='WGS84',errcheck = True)
p1 = Proj(proj='latlong', datum='WGS84',errcheck = True)
print(p(3.383789, 48.920575), p(5.822754, 53.72185))
print(p1(3.383789, 48.920575), p1(5.822754, 53.72185))

20414190.011221122 65799915.8523339 20685694.35308374 66653928.94763097 (376681.6684318804, 6229168.979819128) (648186.0102944968, 7083182.075116195) (0.0590582592427664, 0.8538251057188​​251) (0.10162622883366988, 0.9376231627625158)

为什么我使用相同的投影参数时结果不同 作为地理空间数据处理的新手,我提前为一个可能微不足道的问题道歉

【问题讨论】:

    标签: matplotlib-basemap proj


    【解决方案1】:

    对于墨卡托投影,底图使用位于可计算值左下方范围的格网坐标系原点。使用您的代码,这些值可以计算为

    M(0, 0, inverse=True)
    # output: (-180.0, -89.98999999999992)
    

    如果您计算 (long=0, lat=0) 的投影坐标并将值分配给 (x0, y0)。您会得到坐标 (x0, y0) 的变化,使其投影坐标不同于标准值(地图中心的 0,0)。

    lon0, lat0 = 0, 0
    x0, y0 = M(lon0, lat0)
    # x0=20015077.371242613, y0=59546805.8807
    

    对于 (long=3.383789, lat=48.920575) 的测试点,

    lon1 = 3.383789
    lat1 = 48.920575
    x1, y1 = M(lon1, lat1)
    

    应用坐标偏移后,结果为

    print(x1-x0, y1-y0)
    # output: (376259.9924608879, 6254386.049398325)
    

    当与来自pyproj的值进行比较时

    p0 = Proj(proj='merc', ellps='WGS84', errcheck = True)
    print(p0(lon1, lat1))
    # output (376681.6684318804, 6229168.979819128)
    

    他们非常同意,但并不接近。对于小比例地图绘制,您看不到地图上的差异。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-13
      • 1970-01-01
      • 2020-02-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      相关资源
      最近更新 更多