微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-点EPSG 4326(WSG 84)到(EPSG 28992)的PROJ pyproj转换

给定一个(lon,lat)点(5.068913,52.067567)我想使用pyproj从epsg 4326转换为epsg 28992.

pyproj中的Proj和transform函数似乎都适合这样的任务:

> https://pyproj4.github.io/pyproj/dev/api/proj.html?highlight=proj#pyproj-proj
> https://pyproj4.github.io/pyproj/dev/api/transformer.html?highlight=transform#pyproj-transform

当我使用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')

points

解决方法:

间的转换

epsg:4326

epsg:28992

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

…但还执行了基准转换,wgs84到Amersfoort基准.这只能通过转换功能来实现.请注意,变换会执行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]

…意味着需要执行原点转换…这是无法通过Projfunction完成的,而只能通过transform完成.

结论:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐