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)