2017-04-21 2 views
0

J'ai une base de données Oracle avec des données spatiales dans lesquelles les coordonnées sont stockées au format RD (srid 28992). Pour les placer sur une carte (leaflet avec openstreetmap) j'ai besoin des coordonnées au format WGS84 (srid 4326).Oracle SDO_CS.TRANSFORM déplace les coordonnées lors de la conversion de RD en WGS84

Je devrais pouvoir obtenir les coordonnées dans ce format en utilisant SDO_CS.TRANSFORM. Quand je fais cela, toutes les coordonnées semblent être décalées vers l'est d'environ 6m.

La vérification qu'il n'y avait pas de problème avec les données stockées dans la table, j'ai créé une requête qui prend RD coordonnées 155000, 463000 et le convertit en WGS84. A partir de cette requête que je reçois: 52,1551639130507 5,38735225721137

Si je fais la même transformation sur op http://www.gpscoordinaten.nl/converteer-gps-coordinaten.php que je reçois 52,15517, 5,38721 (qui est la coordonnée droite)

La requête utilisée est celle-ci:

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; 

Une idée de la raison pour laquelle la conversion dans Oracle déplace les coordonnées?

+0

Jetez un oeil à valus dans ces tableaux: [Structures de données de systèmes de coordonnées] (http://docs.oracle.com/database/121/SPATL/coordinate-systems-data-structures.htm#SPATL635), peut-être contient de fausses valeurs. Comparer avec les valeurs correctes [Projection: 28992] (http://spatialreference.org/ref/epsg/28992/html/) –

Répondre

1

Jetez un oeil à ce http://epsg.io/28992

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"]] 

Mais pour Oracle select wktext3d from cs_srs where srid = 28992; vous obtenez

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"]] 

Vous voyez les TOWGS84 paramètres sont différents. Peut-être devriez-vous discuter du problème au https://gis.stackexchange.com/ ou demander au support Oracle s'ils ont mal placé les données dans leur référence.

Add-on

contrôle officiel des données EPSG à http://www.epsg-registry.org/

Lorsque vous recherchez

  • Tpye = CoordinateTransformation - Single
  • Araé = Netherland

Vous obtenez un tas de transformations. Je pense que vous devez faire des recherches plus approfondies.