首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从RD到WGS84转换时,Oracle WGS84移动坐标

从RD到WGS84转换时,Oracle WGS84移动坐标
EN

Stack Overflow用户
提问于 2017-04-21 07:06:22
回答 2查看 2.1K关注 0票数 0

我有一个带有空间数据的Oracle数据库,其中坐标以RD格式存储(srid 28992)。要将它们放在地图上(带有openstreetmap的传单),我需要WGS84 (Srid4326)格式的坐标。

我应该可以用SDO_CS.TRANSFORM得到那个格式的坐标,当我这样做的时候,所有的坐标似乎都向东移动了大约6米。

为了验证存储在表中的数据没有问题,我创建了一个查询,该查询采用RD坐标155000,463000并将其转换为WGS84。从这个查询中我得到: 52,1551639130507,38735225721137

如果对op http://www.gpscoordinaten.nl/converteer-gps-coordinaten.php进行相同的转换,则得到52.15517,5.38721 (这是正确的坐标)。

所使用的查询是:

代码语言:javascript
复制
SELECT
  t.X,
  t.Y
FROM
  (
    SELECT
      SDO_CS.TRANSFORM( MDSYS.SDO_GEOMETRY( 2001, 28992, MDSYS.SDO_POINT_TYPE(
      155000, 463000, NULL ), NULL, NULL ), 4326 ) AS geometry
    FROM
      dual
  )
  geo,
  TABLE( SDO_UTIL.GETVERTICES( geo.geometry ) ) t;

知道为什么Oracle中的转换会改变坐标吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-21 08:05:48

看看这个http://epsg.io/28992

代码语言:javascript
复制
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"]]

但是对于甲骨文select wktext3d from cs_srs where srid = 28992;来说

代码语言:javascript
复制
PROJCS[ "Amersfoort / RD New", 
    GEOGCS["Amersfoort", 
        DATUM["Amersfoort", 
        SPHEROID[ "Bessel 1841", 6377397.155, 299.1528128, 
            AUTHORITY["EPSG", "7004"]], 
        TOWGS84[593.16, 26.15, 478.54, -1.304398008226, -0.103297414969, -1.144501530423, 4.0775], 
            AUTHORITY["EPSG", "6289"]], 
        PRIMEM["Greenwich", 0.000000, 
            AUTHORITY["EPSG","8901"]], 
        UNIT["degree (supplier to define representation)", 0.0174532925199433, 
            AUTHORITY["EPSG", "9122"]], 
        AXIS["Lat", NORTH], 
        AXIS["Long", EAST], 
        AUTHORITY["EPSG", "4289"]], 
    PROJECTION ["Oblique Stereographic"], 
    PARAMETER ["Latitude_Of_Origin", 52.1561605555555556], 
    PARAMETER ["Central_Meridian", 5.3876388888888889], 
    PARAMETER ["Scale_Factor", 0.9999079], 
    PARAMETER ["False_Easting", 155000.0], 
    PARAMETER ["False_Northing", 463000.0], 
    UNIT["metre", 1.0, 
        AUTHORITY["EPSG", "9001"]], 
    AXIS["X", EAST], 
    AXIS["Y", NORTH], 
    AUTHORITY["EPSG", "28992"]]

您可以看到TOWGS84参数是不同的。

也许您应该在https://gis.stackexchange.com/上讨论这个问题,或者如果他们在引用中输入了错误的数据,应该请求Oracle。

加载项

检查http://www.epsg-registry.org/的官方EPSG数据

当你搜索

  • CoordinateTransformation -单曲
  • Arae =荷兰

你会得到一堆变换。我觉得你得做些更深入的调查。

票数 1
EN

Stack Overflow用户

发布于 2021-06-08 05:52:58

对于那些有着类似问题的登陆者。

正如所接受的答案中所指出的,转换参数有不同的值。若要更改Oracle 28992中的转换参数,必须执行以下操作:

代码语言:javascript
复制
update mdsys.sdo_datums set
  shift_x = 565.2369,
  shift_y = 50.0087,
  shift_z = 465.658,
  rotate_x = -0.406857330322398,
  rotate_y = 0.350732676542563,
  rotate_z =  -1.8703473836068 ,
  scale_adjust = 4.0812
where datum_id = 6289;

commit;

begin SDO_CS.UPDATE_WKTS_FOR_EPSG_DATUM(6289);
end;

commit;

我花了一些时间才发现Oracle缓存了这些值。为了使这些更改生效,您必须注销并启动一个新会话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43536080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档