Voici la documentation : https://geoplateforme.pages.gpf-tech.ign.fr/documentation

Skip to content

fix(check-srs): check srs mismatch using srs code value

Quy Thy Truong a demandé de fusionner fix/check-srs-mismatch vers main

Initialement, la vérification de la cohérence entre le SRS de la donnée raster et le SRS annoncé dans le fichier de config (parameters.json) se faisait à partir d'un test d'égalité entre des objets de type osgeo.osr.SpatialReference

Dans le cas d'une image en JPEG2000 dans le système Lambert-93, et annoncée comme tel dans le fichier de config, le test d'égalité échouait car:

imgfile = Path("/home/qtt/IGN-Lot2A/gpf_check_raster/tests/dev/SC1000_0040_6950_L93_E100.jp2")

dataset = gdal.Open(str(imgfile))
print(dataset.GetSpatialRef())

affiche :

PROJCS["RGF93 v1 / Lambert-93",
    GEOGCS["RGF93 v1",
        DATUM["Reseau_Geodesique_Francais_1993_v1",
            SPHEROID["GRS 1980",6378137,298.257222101004,
                AUTHORITY["EPSG","7019"]],
            AUTHORITY["EPSG","6171"]],
        PRIMEM["Greenwich",0],
        UNIT["degree",0.0174532925199433,
            AUTHORITY["EPSG","9122"]],
        AUTHORITY["EPSG","4171"]],
    PROJECTION["Lambert_Conformal_Conic_2SP"],
    PARAMETER["latitude_of_origin",46.5],
    PARAMETER["central_meridian",3],
    PARAMETER["standard_parallel_1",49],
    PARAMETER["standard_parallel_2",44],
    PARAMETER["false_easting",700000],
    PARAMETER["false_northing",6600000],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]],
    AXIS["Easting",EAST],
    AXIS["Northing",NORTH],
    AUTHORITY["EPSG","2154"]]

Tandis que si l'on importe un objet osgeo.osr.SpatialReference en l'initialisant avec le même système de projection EPSG:2154 :

upload_srs = osr.SpatialReference()
upload_srs.SetFromUserInput("EPSG:2154")
print(upload_srs)

On n'obtient pas exactement le même résultat :

PROJCS["RGF93 v1 / Lambert-93",
    GEOGCS["RGF93 v1",
        DATUM["Reseau_Geodesique_Francais_1993_v1",
            SPHEROID["GRS 1980",6378137,298.257222101,
                AUTHORITY["EPSG","7019"]],
            AUTHORITY["EPSG","6171"]],
        PRIMEM["Greenwich",0,
            AUTHORITY["EPSG","8901"]],
        UNIT["degree",0.0174532925199433,
            AUTHORITY["EPSG","9122"]],
        AUTHORITY["EPSG","4171"]],
    PROJECTION["Lambert_Conformal_Conic_2SP"],
    PARAMETER["latitude_of_origin",46.5],
    PARAMETER["central_meridian",3],
    PARAMETER["standard_parallel_1",49],
    PARAMETER["standard_parallel_2",44],
    PARAMETER["false_easting",700000],
    PARAMETER["false_northing",6600000],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]],
    AXIS["Easting",EAST],
    AXIS["Northing",NORTH],
    AUTHORITY["EPSG","2154"]]

La solution apportée ici est de ne tester que les codes des SRS. Dans le cas de EPSG:2154, on teste que le code vaut 2154 dans la donnée et dans le fichier de config.

closes #3 (closed)

Modification effectuée par Quy Thy Truong

Rapports de requête de fusion

Chargement en cours