diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2019-12-21 02:41:28 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2019-12-21 02:41:28 +0100 |
| commit | 5b1346e95c8d9cf07d42a9700df68ff2646699cb (patch) | |
| tree | 13f1652a8c4ff66ff6c500dab292bdaf476f0d1b /data | |
| parent | e7ef9b626ecabfe6bc5ff3793a9565426470a4a3 (diff) | |
| download | PROJ-5b1346e95c8d9cf07d42a9700df68ff2646699cb.tar.gz PROJ-5b1346e95c8d9cf07d42a9700df68ff2646699cb.zip | |
Database: add/fix consistency checks
Diffstat (limited to 'data')
| -rw-r--r-- | data/sql/commit.sql | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/data/sql/commit.sql b/data/sql/commit.sql index d7bc7b4a..73e41d64 100644 --- a/data/sql/commit.sql +++ b/data/sql/commit.sql @@ -39,6 +39,30 @@ FOR EACH ROW BEGIN SELECT RAISE(ABORT, 'Arg! there is now a EPSG:102100 object. Hack in createFromUserInput() will no longer work') WHERE EXISTS(SELECT 1 FROM crs_view WHERE auth_name = 'EPSG' AND code = '102100'); + -- check coordinate_operation_view "foreign keys" + SELECT RAISE(ABORT, 'One coordinate_operation has a broken source_crs link') + WHERE EXISTS (SELECT * FROM coordinate_operation_view cov WHERE + cov.source_crs_auth_name || cov.source_crs_code NOT IN + (SELECT auth_name || code FROM crs_view)); + SELECT RAISE(ABORT, 'One coordinate_operation has a broken target_crs link') + WHERE EXISTS (SELECT * FROM coordinate_operation_view cov WHERE + cov.target_crs_auth_name || cov.target_crs_code NOT IN + (SELECT auth_name || code FROM crs_view)); + + -- check that grids with NTv2 method are properly registered + SELECT RAISE(ABORT, 'One grid_transformation with NTv2 has not its source_crs in geodetic_crs table with type = ''geographic 2D''') + WHERE EXISTS (SELECT * FROM grid_transformation g WHERE + g.method_name = 'NTv2' AND + g.source_crs_auth_name || g.source_crs_code NOT IN + (SELECT auth_name || code FROM geodetic_crs + WHERE type = 'geographic 2D')); + SELECT RAISE(ABORT, 'One grid_transformation with NTv2 has not its target_crs in geodetic_crs table with type = ''geographic 2D''') + WHERE EXISTS (SELECT * FROM grid_transformation g WHERE + g.method_name = 'NTv2' AND + g.target_crs_auth_name || g.target_crs_code NOT IN + (SELECT auth_name || code FROM geodetic_crs + WHERE type = 'geographic 2D')); + -- check that grids with HEIGHT_TO_GEOGRAPHIC3D method are properly registered SELECT RAISE(ABORT, 'One grid_transformation with HEIGHT_TO_GEOGRAPHIC3D has not its source_crs in vertical_crs table') WHERE EXISTS (SELECT * FROM grid_transformation g WHERE @@ -55,12 +79,15 @@ FOR EACH ROW BEGIN -- check that grids with Geographic3D to GravityRelatedHeight method are properly registered SELECT RAISE(ABORT, 'One grid_transformation with Geographic3D to GravityRelatedHeight has not its target_crs in vertical_crs table') WHERE EXISTS (SELECT * FROM grid_transformation g WHERE - g.method_code LIKE 'Geographic3D to GravityRelatedHeight%' AND + g.deprecated = 0 AND + g.method_name LIKE 'Geographic3D to GravityRelatedHeight%' AND g.target_crs_auth_name || g.target_crs_code NOT IN (SELECT auth_name || code FROM vertical_crs)); SELECT RAISE(ABORT, 'One grid_transformation with Geographic3D to GravityRelatedHeight has not its source_crs in geodetic_crs table with type = ''geographic 3D''') WHERE EXISTS (SELECT * FROM grid_transformation g WHERE - g.method_code LIKE 'Geographic3D to GravityRelatedHeight%' AND + g.deprecated = 0 AND + g.method_name LIKE 'Geographic3D to GravityRelatedHeight%' AND + NOT (g.auth_name = 'EPSG' AND g.code IN (7648, 7649, 7650)) AND -- those are wrongly registered as they use a geocentric CRS. Reported to EPSG g.source_crs_auth_name || g.source_crs_code NOT IN (SELECT auth_name || code FROM geodetic_crs WHERE type = 'geographic 3D')); |
