Pages: 1
- Sujet précédent - Geotools/JTS : erreur conversion Lambert 2 étendu => WGS 84 - Sujet suivant
#1 Mon 13 September 2010 23:11
- bitbox
- Juste Inscrit !
- Date d'inscription: 13 Sep 2010
- Messages: 1
Geotools/JTS : erreur conversion Lambert 2 étendu => WGS 84
Bonsoir,
Encore une n-ième question sur les erreurs de conversion... désolé mais j'ai cherché en long et en travers et je ne trouve pas de solution à mon problème.
Je cherche à reprojeter un shapefile de Lambert 2 étendu à WGS 84 et je souhaite le faire, à la main, avec GeoTools (basé sur JTS).
J'ai donc créé un CRS à partir du WKT de l'ESPG 27572 et un CRS WGS84 par défaut et réalisé la transformation... malheureusement les données WGS 84 sont complètement décalées d'environ 15km vers l'ouest... avec mon code et paraissent correcte avec un test dans Circé.
Quelqu'un peut-il m'expliquer pourquoi ?
Merci
Exemple.
Lambert 2 étendu : 91335.27206383813 2395328.0762775955
Geotools : -4.767895072738009 48.35663003473353
Circé : -4.53416321 48.35663201
Code:
CRSFactory crsFactory = ReferencingFactoryFinder.getCRSFactory(null); String wkt = "PROJCS[\"NTF (Paris) / Lambert zone II\"," +"GEOGCS[\"NTF (Paris)\"," +"DATUM[\"Nouvelle_Triangulation_Francaise_Paris\"," +"SPHEROID[\"Clarke 1880 (IGN)\"," +"6378249.2,293.4660212936269," +"AUTHORITY[\"EPSG\",\"7011\"]]," +"TOWGS84[-168,-60,320,0,0,0,0]," +"AUTHORITY[\"EPSG\",\"6807\"]]," +"PRIMEM[\"Paris\"," +"2.33722917,AUTHORITY[\"EPSG\",\"8903\"]]," +"UNIT[\"grad\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]]," +"AUTHORITY[\"EPSG\",\"4807\"]],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]," +"PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",52],PARAMETER[\"central_meridian\",0]," +"PARAMETER[\"scale_factor\",0.99987742],PARAMETER[\"false_easting\",600000],PARAMETER[\"false_northing\",2200000]," +"AUTHORITY[\"EPSG\",\"27572\"],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]]"; String wkt2= "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]]," +"AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]]," +"UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]"; CoordinateReferenceSystem inCcrs = crsFactory.createFromWKT(wkt); CoordinateReferenceSystem outCcrs = crsFactory.createFromWKT(wkt2); MathTransform transform = CRS.findMathTransform(inCcrs, outCcrs, false ); Geometry geometry = (Geometry) feature.getDefaultGeometry(); if (geometry.isValid()) { Geometry geometry2 = JTS.transform(geometry, transform); System.out.println("Transformation de \n"+geometry+"\n//envelope="+geometry.getEnvelope()+"\nen\n"+geometry2+"\nenvelope="+geometry2.getEnvelope()); }
Hors ligne
#2 Fri 06 September 2013 15:10
- farrault
- Juste Inscrit !
- Date d'inscription: 6 Sep 2013
- Messages: 1
Re: Geotools/JTS : erreur conversion Lambert 2 étendu => WGS 84
Je suis tombé sur le même problème et nous avons trouvé la solution :
Le problème vient du paramètre PRIMEM qui indique un angle en degré alors que geotools l'interprète en grad
Voici le WKT que j'utilise :
PROJCS["NTF (Paris) / Lambert zone II",
GEOGCS["NTF (Paris)",
DATUM["Nouvelle_Triangulation_Francaise_Paris",
SPHEROID["Clarke 1880 (IGN)",6378249.2,293.4660212936269,
AUTHORITY["EPSG","7011"]],
TOWGS84[-168,-60,320,0,0,0,0],
AUTHORITY["EPSG","6807"]],
PRIMEM["Paris",2.5969213,
AUTHORITY["EPSG","8903"]],
UNIT["grad",0.01570796326794897,
AUTHORITY["EPSG","9105"]],
AUTHORITY["EPSG","4807"]],
PROJECTION["Lambert_Conformal_Conic_1SP"],
PARAMETER["central_meridian",0],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]],
PARAMETER["latitude_of_origin",52],
PARAMETER["scale_factor",0.99987742],
PARAMETER["false_easting",600000],
PARAMETER["false_northing",2200000],
AUTHORITY["EPSG","27572"],
AXIS["X",EAST],
AXIS["Y",NORTH]]
A noter :
- cela fonctionne bien si on utilise les codes EPSG et le module gt-epsg-hsql
- cela fonctionne presque si on utilise les codes EPSG et le module gt-epsg-wkt (les méta-données sont incomplètes pour le Lambert II, il manque la directive TOWGS84[-168,-60,320,0,0,0,0] dans ce module ce qui entraine un écart de 300m)
Hors ligne
Pages: 1
- Sujet précédent - Geotools/JTS : erreur conversion Lambert 2 étendu => WGS 84 - Sujet suivant