Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

 

Pied de page des forums

Powered by FluxBB