fix(check-srs): check srs mismatch using srs code value
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)