【问题标题】:PROJ pyproj conversion of point EPSG 4326 (WSG 84) to (EPSG 28992)PROJ pyproj 点 EPSG 4326 (WSG 84) 到 (EPSG 28992) 的转换
【发布时间】:2019-06-10 14:42:01
【问题描述】:

给定一个 (lon, lat) 点 (5.068913, 52.067567),我想使用 pyproj 将 EPSG 4326 转换为 EPSG 28992。

pyproj 中的 Projtransform 函数似乎都适合这样的任务:

当我使用Proj 函数时,我得到的结果与使用transform 不同,为什么?

例如

from shapely.geometry import Point
from pyproj import Proj, transform

from matplotlib import pyplot as plt

x1, y1 = 5.068913, 52.067567

in_proj = Proj(init='epsg:4326') 
out_proj = Proj(init='epsg:28992')

point1 = Point(out_proj(x1, y1))
point2 = Point(transform(in_proj, out_proj, x1 ,y1))

print(point1 == point2)

fig, ax = plt.subplots()
x, y = point1.xy
ax.plot(x, y, 'ro')
x, y = point2.xy
ax.plot(x, y, 'ro')

【问题讨论】:

    标签: python gis coordinate-systems pyproj


    【解决方案1】:

    之间的转换

    EPSG:4326

    EPSG:28992

    在这种情况下,不仅需要使用 Oblique_Stereographic 投影来投影输入坐标。这可以通过Proj 函数来实现...

    ...但也执行基准面转换,WGS84 到阿默斯福特基准面。这只能通过transform 函数来完成。请注意,transform 完成了 Proj 所做的一切以及基准转换。无需两步转换。

    说明已经说过的内容,我们为EPSG:28992 提供以下WKT

    PROJCS["Amersfoort / RD New",
        GEOGCS["Amersfoort",
            DATUM["Amersfoort",
                SPHEROID["Bessel 1841",6377397.155,299.1528128,
                    AUTHORITY["EPSG","7004"]],
                TOWGS84[565.417,50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725],
                AUTHORITY["EPSG","6289"]],
            PRIMEM["Greenwich",0,
                AUTHORITY["EPSG","8901"]],
            UNIT["degree",0.0174532925199433,
                AUTHORITY["EPSG","9122"]],
            AUTHORITY["EPSG","4289"]],
        PROJECTION["Oblique_Stereographic"],
        PARAMETER["latitude_of_origin",52.15616055555555],
        PARAMETER["central_meridian",5.38763888888889],
        PARAMETER["scale_factor",0.9999079],
        PARAMETER["false_easting",155000],
        PARAMETER["false_northing",463000],
        UNIT["metre",1,
            AUTHORITY["EPSG","9001"]],
        AXIS["X",EAST],
        AXIS["Y",NORTH],
        AUTHORITY["EPSG","28992"]]
    

    字符串

    TOWGS84[565.417,50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725]

    ...意味着需要执行数据转换...这不能用Proj函数完成,只能用transform

    结论:

    假设您正在使用的pyproj 安装配置了正确的TOWGS84 字符串(并非总是如此),那么transform 结果应该被认为是正确的。

    【讨论】:

    • 如何检查我正在使用的 pyproj 安装是否配置了正确的 TOWGS84 字符串?
    • 您必须在/usr/share/proj/epsg/ 文件中检查相应的+towgs84 字符串。
    猜你喜欢
    • 2017-07-12
    • 2020-06-08
    • 2021-08-28
    • 2014-04-27
    • 2021-11-10
    • 2021-02-07
    • 2017-10-14
    • 2021-08-09
    • 1970-01-01
    相关资源
    最近更新 更多