diff --git a/data/sql/customizations.sql b/data/sql/customizations.sql index 0aeb3dae5a..4383f4a028 100644 --- a/data/sql/customizations.sql +++ b/data/sql/customizations.sql @@ -184,73 +184,6 @@ INSERT INTO "axis" VALUES('PROJ','1','Easting','E','east','PROJ','ENh',1,'EPSG', INSERT INTO "axis" VALUES('PROJ','2','Northing','N','north','PROJ','ENh',2,'EPSG','9001'); INSERT INTO "axis" VALUES('PROJ','3','Ellipsoidal height','h','up','PROJ','ENh',2,'EPSG','9001'); --- Consider all WGS84 related CRS are equivalent with an accuracy of 2m -INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G730','WGS 84 to WGS 84 (G730)','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9053',2.0,0,0,0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); -INSERT INTO "usage" VALUES( - 'PROJ', - 'WGS84_TO_WGS84_G730_USAGE', - 'helmert_transformation', - 'PROJ', - 'WGS84_TO_WGS84_G730', - 'EPSG','1262', -- extent - 'EPSG','1024' -- unknown -); - -INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G873','WGS 84 to WGS 84 (G873)','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9054',2.0,0,0,0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); -INSERT INTO "usage" VALUES( - 'PROJ', - 'WGS84_TO_WGS84_G873_USAGE', - 'helmert_transformation', - 'PROJ', - 'WGS84_TO_WGS84_G873', - 'EPSG','1262', -- extent - 'EPSG','1024' -- unknown -); - -INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G1150','WGS 84 to WGS 84 (G1150)','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9055',2.0,0,0,0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); -INSERT INTO "usage" VALUES( - 'PROJ', - 'WGS84_TO_WGS84_G1150_USAGE', - 'helmert_transformation', - 'PROJ', - 'WGS84_TO_WGS84_G1150', - 'EPSG','1262', -- extent - 'EPSG','1024' -- unknown -); - -INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G1674','WGS 84 to WGS 84 (G1674)','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9056',2.0,0,0,0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); -INSERT INTO "usage" VALUES( - 'PROJ', - 'WGS84_TO_WGS84_G1674_USAGE', - 'helmert_transformation', - 'PROJ', - 'WGS84_TO_WGS84_G1674', - 'EPSG','1262', -- extent - 'EPSG','1024' -- unknown -); - -INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G1762','WGS 84 to WGS 84 (G1762)','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9057',2.0,0,0,0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); -INSERT INTO "usage" VALUES( - 'PROJ', - 'WGS84_TO_WGS84_G1762_USAGE', - 'helmert_transformation', - 'PROJ', - 'WGS84_TO_WGS84_G1762', - 'EPSG','1262', -- extent - 'EPSG','1024' -- unknown -); - -INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_TRANSIT','WGS 84 to WGS 84 (Transit)','Accuracy 2m','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','8888',2.0,0,0,0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); -INSERT INTO "usage" VALUES( - 'PROJ', - 'WGS84_TO_WGS84_TRANSIT_USAGE', - 'helmert_transformation', - 'PROJ', - 'WGS84_TO_WGS84_TRANSIT', - 'EPSG','1262', -- extent - 'EPSG','1024' -- unknown -); - ---- Geoid models ----- INSERT INTO "geoid_model" SELECT 'GEOID99', auth_name, code FROM grid_transformation WHERE auth_name = 'EPSG' AND grid_name LIKE 'g1999%' AND deprecated = 0; diff --git a/data/sql/helmert_transformation.sql b/data/sql/helmert_transformation.sql index d89728b944..c39e3ee583 100644 --- a/data/sql/helmert_transformation.sql +++ b/data/sql/helmert_transformation.sql @@ -1,5 +1,41 @@ --- This file has been generated by scripts/build_db.py. DO NOT EDIT ! +INSERT INTO "helmert_transformation" VALUES('PROJ','ETRS89_TO_ETRF89','ETRS89 to ETRF89','Accuracy 0.1 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4258','EPSG','9059',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','ETRS89_TO_ETRF89_USAGE','helmert_transformation','PROJ','ETRS89_TO_ETRF89','EPSG','1298','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','ETRS89_TO_ETRF90','ETRS89 to ETRF90','Accuracy 0.1 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4258','EPSG','9060',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','ETRS89_TO_ETRF90_USAGE','helmert_transformation','PROJ','ETRS89_TO_ETRF90','EPSG','1298','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','ETRS89_TO_ETRF91','ETRS89 to ETRF91','Accuracy 0.1 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4258','EPSG','9061',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','ETRS89_TO_ETRF91_USAGE','helmert_transformation','PROJ','ETRS89_TO_ETRF91','EPSG','1298','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','ETRS89_TO_ETRF92','ETRS89 to ETRF92','Accuracy 0.1 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4258','EPSG','9062',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','ETRS89_TO_ETRF92_USAGE','helmert_transformation','PROJ','ETRS89_TO_ETRF92','EPSG','1298','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','ETRS89_TO_ETRF93','ETRS89 to ETRF93','Accuracy 0.1 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4258','EPSG','9063',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','ETRS89_TO_ETRF93_USAGE','helmert_transformation','PROJ','ETRS89_TO_ETRF93','EPSG','1298','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','ETRS89_TO_ETRF94','ETRS89 to ETRF94','Accuracy 0.1 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4258','EPSG','9064',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','ETRS89_TO_ETRF94_USAGE','helmert_transformation','PROJ','ETRS89_TO_ETRF94','EPSG','1298','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','ETRS89_TO_ETRF96','ETRS89 to ETRF96','Accuracy 0.1 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4258','EPSG','9065',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','ETRS89_TO_ETRF96_USAGE','helmert_transformation','PROJ','ETRS89_TO_ETRF96','EPSG','1298','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','ETRS89_TO_ETRF97','ETRS89 to ETRF97','Accuracy 0.1 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4258','EPSG','9066',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','ETRS89_TO_ETRF97_USAGE','helmert_transformation','PROJ','ETRS89_TO_ETRF97','EPSG','1298','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','ETRS89_TO_ETRF2000','ETRS89 to ETRF2000','Accuracy 0.1 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4258','EPSG','9067',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','ETRS89_TO_ETRF2000_USAGE','helmert_transformation','PROJ','ETRS89_TO_ETRF2000','EPSG','1298','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','ETRS89_TO_ETRF2005','ETRS89 to ETRF2005','Accuracy 0.1 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4258','EPSG','9068',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','ETRS89_TO_ETRF2005_USAGE','helmert_transformation','PROJ','ETRS89_TO_ETRF2005','EPSG','1298','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','ETRS89_TO_ETRF2014','ETRS89 to ETRF2014','Accuracy 0.1 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4258','EPSG','9069',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','ETRS89_TO_ETRF2014_USAGE','helmert_transformation','PROJ','ETRS89_TO_ETRF2014','EPSG','1298','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_TRANSIT','WGS 84 to WGS 84 (Transit)','Accuracy 2.0 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','8888',2.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','WGS84_TO_WGS84_TRANSIT_USAGE','helmert_transformation','PROJ','WGS84_TO_WGS84_TRANSIT','EPSG','1262','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G730','WGS 84 to WGS 84 (G730)','Accuracy 2.0 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9053',2.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','WGS84_TO_WGS84_G730_USAGE','helmert_transformation','PROJ','WGS84_TO_WGS84_G730','EPSG','1262','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G873','WGS 84 to WGS 84 (G873)','Accuracy 2.0 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9054',2.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','WGS84_TO_WGS84_G873_USAGE','helmert_transformation','PROJ','WGS84_TO_WGS84_G873','EPSG','1262','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G1150','WGS 84 to WGS 84 (G1150)','Accuracy 2.0 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9055',2.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','WGS84_TO_WGS84_G1150_USAGE','helmert_transformation','PROJ','WGS84_TO_WGS84_G1150','EPSG','1262','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G1674','WGS 84 to WGS 84 (G1674)','Accuracy 2.0 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9056',2.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','WGS84_TO_WGS84_G1674_USAGE','helmert_transformation','PROJ','WGS84_TO_WGS84_G1674','EPSG','1262','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G1762','WGS 84 to WGS 84 (G1762)','Accuracy 2.0 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9057',2.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','WGS84_TO_WGS84_G1762_USAGE','helmert_transformation','PROJ','WGS84_TO_WGS84_G1762','EPSG','1262','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G2139','WGS 84 to WGS 84 (G2139)','Accuracy 2.0 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9755',2.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','WGS84_TO_WGS84_G2139_USAGE','helmert_transformation','PROJ','WGS84_TO_WGS84_G2139','EPSG','1262','EPSG','1024'); INSERT INTO "helmert_transformation" VALUES('EPSG','1024','MGI to ETRS89 (4)','Parameter values from MGI to WGS 84 (8) (tfm code 1194). Assumes ETRS89 and WGS 84 can be considered the same to within the accuracy of the transformation. Information source gives scale as -2.388739 ppm.','EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4312','EPSG','4258',1.0,601.705,84.263,485.227,'EPSG','9001',-4.7354,-1.3145,-5.393,'EPSG','9104',-2.3887,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'LBD-Aut Sty',0); INSERT INTO "usage" VALUES('EPSG','7945','helmert_transformation','EPSG','1024','EPSG','1543','EPSG','1252'); INSERT INTO "helmert_transformation" VALUES('EPSG','1055','Ain el Abd to WGS 84 (3)','Derived at station K1.','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4204','EPSG','4326',1.0,-145.7,-249.1,1.5,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'WGC-Kwt',0); diff --git a/data/sql/other_transformation.sql b/data/sql/other_transformation.sql index ab4723dea0..585a742e8c 100644 --- a/data/sql/other_transformation.sql +++ b/data/sql/other_transformation.sql @@ -1,5 +1,23 @@ --- This file has been generated by scripts/build_db.py. DO NOT EDIT ! +INSERT INTO "other_transformation" VALUES('PROJ','BI_HEIGHT_TO_MALIN_HEAD_HEIGHT','BI height to Malin Head height','Accuracy 0.4 m, from datum ensemble definition','EPSG','9616','Vertical Offset','EPSG','9451','EPSG','5731',0.4,'EPSG','8603','Vertical Offset',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','BI_HEIGHT_TO_MALIN_HEAD_HEIGHT_USAGE','other_transformation','PROJ','BI_HEIGHT_TO_MALIN_HEAD_HEIGHT','EPSG','1305','EPSG','1024'); +INSERT INTO "other_transformation" VALUES('PROJ','BI_HEIGHT_TO_BELFAST_HEIGHT','BI height to Belfast height','Accuracy 0.4 m, from datum ensemble definition','EPSG','9616','Vertical Offset','EPSG','9451','EPSG','5732',0.4,'EPSG','8603','Vertical Offset',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','BI_HEIGHT_TO_BELFAST_HEIGHT_USAGE','other_transformation','PROJ','BI_HEIGHT_TO_BELFAST_HEIGHT','EPSG','2530','EPSG','1024'); +INSERT INTO "other_transformation" VALUES('PROJ','BI_HEIGHT_TO_ODN_HEIGHT','BI height to ODN height','Accuracy 0.4 m, from datum ensemble definition','EPSG','9616','Vertical Offset','EPSG','9451','EPSG','5701',0.4,'EPSG','8603','Vertical Offset',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','BI_HEIGHT_TO_ODN_HEIGHT_USAGE','other_transformation','PROJ','BI_HEIGHT_TO_ODN_HEIGHT','EPSG','2792','EPSG','1024'); +INSERT INTO "other_transformation" VALUES('PROJ','BI_HEIGHT_TO_ODN_OFFSHORE_HEIGHT','BI height to ODN (Offshore) height','Accuracy 0.4 m, from datum ensemble definition','EPSG','9616','Vertical Offset','EPSG','9451','EPSG','7707',0.4,'EPSG','8603','Vertical Offset',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','BI_HEIGHT_TO_ODN_OFFSHORE_HEIGHT_USAGE','other_transformation','PROJ','BI_HEIGHT_TO_ODN_OFFSHORE_HEIGHT','EPSG','4391','EPSG','1024'); +INSERT INTO "other_transformation" VALUES('PROJ','BI_HEIGHT_TO_ODN_ORKNEY_HEIGHT','BI height to ODN Orkney height','Accuracy 0.4 m, from datum ensemble definition','EPSG','9616','Vertical Offset','EPSG','9451','EPSG','5740',0.4,'EPSG','8603','Vertical Offset',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','BI_HEIGHT_TO_ODN_ORKNEY_HEIGHT_USAGE','other_transformation','PROJ','BI_HEIGHT_TO_ODN_ORKNEY_HEIGHT','EPSG','2793','EPSG','1024'); +INSERT INTO "other_transformation" VALUES('PROJ','BI_HEIGHT_TO_LERWICK_HEIGHT','BI height to Lerwick height','Accuracy 0.4 m, from datum ensemble definition','EPSG','9616','Vertical Offset','EPSG','9451','EPSG','5742',0.4,'EPSG','8603','Vertical Offset',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','BI_HEIGHT_TO_LERWICK_HEIGHT_USAGE','other_transformation','PROJ','BI_HEIGHT_TO_LERWICK_HEIGHT','EPSG','2795','EPSG','1024'); +INSERT INTO "other_transformation" VALUES('PROJ','BI_HEIGHT_TO_STORNOWAY_HEIGHT','BI height to Stornoway height','Accuracy 0.4 m, from datum ensemble definition','EPSG','9616','Vertical Offset','EPSG','9451','EPSG','5746',0.4,'EPSG','8603','Vertical Offset',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','BI_HEIGHT_TO_STORNOWAY_HEIGHT_USAGE','other_transformation','PROJ','BI_HEIGHT_TO_STORNOWAY_HEIGHT','EPSG','2799','EPSG','1024'); +INSERT INTO "other_transformation" VALUES('PROJ','BI_HEIGHT_TO_DOUGLAS_HEIGHT','BI height to Douglas height','Accuracy 0.4 m, from datum ensemble definition','EPSG','9616','Vertical Offset','EPSG','9451','EPSG','5750',0.4,'EPSG','8603','Vertical Offset',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','BI_HEIGHT_TO_DOUGLAS_HEIGHT_USAGE','other_transformation','PROJ','BI_HEIGHT_TO_DOUGLAS_HEIGHT','EPSG','2803','EPSG','1024'); +INSERT INTO "other_transformation" VALUES('PROJ','BI_HEIGHT_TO_ST_MARYS_HEIGHT','BI height to St. Marys height','Accuracy 0.4 m, from datum ensemble definition','EPSG','9616','Vertical Offset','EPSG','9451','EPSG','5749',0.4,'EPSG','8603','Vertical Offset',0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','BI_HEIGHT_TO_ST_MARYS_HEIGHT_USAGE','other_transformation','PROJ','BI_HEIGHT_TO_ST_MARYS_HEIGHT','EPSG','2802','EPSG','1024'); INSERT INTO "other_transformation" VALUES('EPSG','1258','Bogota 1975 (Bogota) to Bogota 1975 (Greenwich)','','EPSG','9601','Longitude rotation','EPSG','4802','EPSG','4218',NULL,'EPSG','8602','Longitude offset',-74.04513,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGAC-Col',1); INSERT INTO "usage" VALUES('EPSG','8179','other_transformation','EPSG','1258','EPSG','1070','EPSG','1100'); INSERT INTO "other_transformation" VALUES('EPSG','1259','Lisbon (Lisbon) to Lisbon (Greenwich)','','EPSG','9601','Longitude rotation','EPSG','4803','EPSG','4207',NULL,'EPSG','8602','Longitude offset',-9.0754862,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'IGC-Prt',1); diff --git a/scripts/build_db.py b/scripts/build_db.py index 0a76089944..305cad8020 100755 --- a/scripts/build_db.py +++ b/scripts/build_db.py @@ -242,6 +242,148 @@ def fill_datumensemble(proj_db_cursor): proj_db_cursor.execute( "INSERT INTO " + datum_ensemble_member_table + " (ensemble_auth_name, ensemble_code, member_auth_name, member_code, sequence) VALUES (?, ?, ?, ?, ?)", (EPSG_AUTHORITY, datum_code, EPSG_AUTHORITY, member_code, sequence)) + +def find_crs_code_name_extent_from_geodetic_datum_code(proj_db_cursor, datum_code): + proj_db_cursor.execute("SELECT coord_ref_sys_code, coord_ref_sys_name FROM epsg.epsg_coordinatereferencesystem WHERE coord_ref_sys_kind = 'geographic 2D' AND deprecated = 0 AND datum_code = ?", (datum_code,)) + subrows = proj_db_cursor.fetchall() + assert len(subrows) == 1, (subrows, datum_code) + crs_code = subrows[0][0] + crs_name = subrows[0][1] + proj_db_cursor.execute("SELECT extent_code FROM epsg.epsg_usage WHERE object_table_name = 'epsg_coordinatereferencesystem' AND object_code = ?", (crs_code,)) + subrows = proj_db_cursor.fetchall() + assert len(subrows) == 1, (subrows, datum_code) + crs_extent = subrows[0][0] + return crs_code, crs_name, crs_extent + + +def find_crs_code_name_extent_from_vertical_datum_code(proj_db_cursor, datum_code): + proj_db_cursor.execute("SELECT coord_ref_sys_code, coord_ref_sys_name FROM epsg.epsg_coordinatereferencesystem WHERE coord_ref_sys_kind = 'vertical' AND deprecated = 0 AND datum_code = ?", (datum_code,)) + subrows = proj_db_cursor.fetchall() + assert len(subrows) == 1, (subrows, datum_code) + crs_code = subrows[0][0] + crs_name = subrows[0][1] + proj_db_cursor.execute("SELECT extent_code FROM epsg.epsg_usage WHERE object_table_name = 'epsg_coordinatereferencesystem' AND object_code = ?", (crs_code,)) + subrows = proj_db_cursor.fetchall() + assert len(subrows) == 1, (subrows, datum_code) + crs_extent = subrows[0][0] + return crs_code, crs_name, crs_extent + + +def create_datumensemble_transformations(proj_db_cursor): + + proj_db_cursor.execute("SELECT datum_code, datum_name, ensemble_accuracy, deprecated FROM epsg.epsg_datum JOIN epsg.epsg_datumensemble ON datum_code = datum_ensemble_code WHERE datum_type = 'ensemble'") + rows = proj_db_cursor.fetchall() + for (datum_code, datum_name, ensemble_accuracy, deprecated) in rows: + assert ensemble_accuracy is not None + proj_db_cursor.execute("SELECT DISTINCT datum_type, ellipsoid_code, prime_meridian_code FROM epsg.epsg_datum WHERE datum_code IN (SELECT datum_code FROM epsg.epsg_datumensemblemember WHERE datum_ensemble_code = ?)", (datum_code,)) + subrows = proj_db_cursor.fetchall() + assert len(subrows) == 1, datum_code + datum_type = subrows[0][0] + if datum_type == 'vertical': + datum_ensemble_member_table = 'vertical_datum_ensemble_member' + ensemble_crs_code, ensemble_crs_name, ensemble_crs_extent = find_crs_code_name_extent_from_vertical_datum_code(proj_db_cursor, datum_code) + else: + datum_ensemble_member_table = 'geodetic_datum_ensemble_member' + assert datum_type in ('dynamic geodetic', 'geodetic'), datum_code + ensemble_crs_code, ensemble_crs_name, ensemble_crs_extent = find_crs_code_name_extent_from_geodetic_datum_code(proj_db_cursor, datum_code) + + proj_db_cursor.execute("SELECT datum_code, datum_sequence FROM epsg.epsg_datumensemblemember WHERE datum_ensemble_code = ? ORDER by datum_sequence", (datum_code,)) + for member_code, sequence in proj_db_cursor.fetchall(): + + if datum_ensemble_member_table == 'geodetic_datum_ensemble_member': + # Insert a null transformation between the representative CRS of the datum ensemble + # and each representative CRS of its members. + crs_code, crs_name, crs_extent = find_crs_code_name_extent_from_geodetic_datum_code(proj_db_cursor, member_code) + assert crs_extent == ensemble_crs_extent, (ensemble_crs_code, ensemble_crs_name, ensemble_crs_extent, crs_code, crs_name, crs_extent) + + code = '%s_TO_%s' % (ensemble_crs_name, crs_name) + code = code.replace(' ', '') + code = code.replace('(', '_') + code = code.replace(')', '') + code = code.upper() + name = '%s to %s' % (ensemble_crs_name, crs_name) + remarks = 'Accuracy %s m, from datum ensemble definition' % ensemble_accuracy + method_code = '9603' + method_name = 'Geocentric translations (geog2D domain)' + source_crs_code = ensemble_crs_code + target_crs_code = crs_code + coord_op_accuracy = ensemble_accuracy + arg = ('PROJ', code, name, + remarks, + EPSG_AUTHORITY, method_code, method_name, + EPSG_AUTHORITY, source_crs_code, + EPSG_AUTHORITY, target_crs_code, + coord_op_accuracy, + 0,0,0,EPSG_AUTHORITY,'9001', + None,None,None,None,None, + None,None,None, + None,None,None,None,None, + None,None,None,None,None, + None,None,None, + None,None,None, + None,None,None,None,None, + '',0) + + proj_db_cursor.execute('INSERT INTO helmert_transformation VALUES (' + + '?,?,?, ?, ?,?,?, ?,?, ?,?, ?, ?,?,?,?,?, ?,?,?,?,?, ?,?,?, ?,?,?,?,?, ?,?,?,?,?, ?,?,?, ?,?,?, ?,?,?,?,?, ?,?)', arg) + + proj_db_cursor.execute('INSERT INTO usage VALUES (?,?,?,?,?,?,?,?,?)', + ('PROJ', + code + '_USAGE', + 'helmert_transformation', + 'PROJ', + code, + EPSG_AUTHORITY, crs_extent, + EPSG_AUTHORITY,'1024')) # unknown scope + else: + # Insert a null transformation between the representative CRS of the datum ensemble + # and each representative CRS of its members. + crs_code, crs_name, crs_extent = find_crs_code_name_extent_from_vertical_datum_code(proj_db_cursor, member_code) + + code = '%s_TO_%s' % (ensemble_crs_name, crs_name) + code = code.replace(' ', '_') + code = code.replace('St.', 'St') + code = code.replace('(', '_') + code = code.replace(')', '') + code = code.replace('__', '_') + code = code.upper() + name = '%s to %s' % (ensemble_crs_name, crs_name) + remarks = 'Accuracy %s m, from datum ensemble definition' % ensemble_accuracy + method_code = '9616' + method_name = 'Vertical Offset' + source_crs_code = ensemble_crs_code + target_crs_code = crs_code + coord_op_accuracy = ensemble_accuracy + + arg = ('PROJ', code, name, + remarks, + EPSG_AUTHORITY, method_code, method_name, + EPSG_AUTHORITY, source_crs_code, + EPSG_AUTHORITY, target_crs_code, + coord_op_accuracy, + 'EPSG','8603','Vertical Offset',0,'EPSG','9001', + None,None,None,None,None,None, + None,None,None,None,None,None, + None,None,None,None,None,None, + None,None,None,None,None,None, + None,None,None,None,None,None, + None,None,None,None,None,None, + None,None, + '',0) + + proj_db_cursor.execute('INSERT INTO other_transformation VALUES (' + + '?,?,?, ?, ?,?,?, ?,?, ?,?, ?, ?,?,?,?,?,?, ?,?,?,?,?,?, ?,?,?,?,?,?, ' + + '?,?,?,?,?,?, ?,?,?,?,?,?, ?,?,?,?,?,?, ?,?,?,?,?,?, ?,?, ?,?)', arg) + + proj_db_cursor.execute('INSERT INTO usage VALUES (?,?,?,?,?,?,?,?,?)', + ('PROJ', + code + '_USAGE', + 'other_transformation', + 'PROJ', + code, + EPSG_AUTHORITY, crs_extent, + EPSG_AUTHORITY,'1024')) # unknown scope + handled_coord_sys_type = "('Cartesian', 'vertical', 'ellipsoidal', 'spherical', 'ordinal')" def fill_coordinate_system(proj_db_cursor): @@ -657,7 +799,7 @@ def fill_grid_transformation(proj_db_cursor): try: proj_db_cursor.execute('INSERT INTO grid_transformation VALUES (' + '?,?,?, ?, ?,?,?, ?,?, ?,?, ?, ?,?,?,?, ?,?,?,?, ?,?, ?,?)', arg) - except sqlite3.IntegrityError as e: + except sqlite3.IntegrityError: print(arg) raise @@ -1078,6 +1220,7 @@ def report_non_imported_operations(proj_db_cursor): fill_axis(proj_db_cursor) fill_geodetic_crs(proj_db_cursor) fill_vertical_crs(proj_db_cursor) +create_datumensemble_transformations(proj_db_cursor) fill_conversion(proj_db_cursor) fill_projected_crs(proj_db_cursor) fill_compound_crs(proj_db_cursor) @@ -1109,8 +1252,12 @@ def report_non_imported_operations(proj_db_cursor): if table_name == 'usage': _, code, object_table_name, _, object_code, _, _, _, _ = line.split(',') object_table_name = object_table_name[1:-1] - code = int(code[1:-1]) - object_code = int(object_code[1:-1]) + code = code[1:-1] + if code[0] >= '0' and code[0] <= '9': + code = int(code) + object_code = object_code[1:-1] + if object_code[0] >= '0' and object_code[0] <= '9': + object_code = int(object_code) assert object_table_name in tables_with_usage, line key = (object_table_name, object_code) if key not in usages_map: @@ -1133,11 +1280,17 @@ def report_non_imported_operations(proj_db_cursor): f.write((line + '\n').encode('UTF-8')) if table_name in tables_with_usage: - pos = line.find("'EPSG','") - assert pos > 0 - pos += len("'EPSG','") - pos_end = line.find("'", pos) - code = int(line[pos:pos_end]) + pos = line.find("'PROJ','") + if pos > 0: + pos += len("'EPSG','") + pos_end = line.find("'", pos) + code = line[pos:pos_end] + else: + pos = line.find("'EPSG','") + assert pos > 0 + pos += len("'EPSG','") + pos_end = line.find("'", pos) + code = int(line[pos:pos_end]) usages = sorted(usages_map[(table_name, code)]) for _, l in usages: f.write((l + '\n').encode('UTF-8'))