aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-10-23 10:28:05 +0200
committerGitHub <noreply@github.com>2020-10-23 10:28:05 +0200
commitaaa159247b5595b84c05f603bebc07201be335f4 (patch)
tree9394fb47beeb183279d30faba6d531035e596f0a
parent4fa0c250c125b8b034e0a17d2d03909dafdb6813 (diff)
parent6351422cc2108072162f7b8cdff12916723ccc20 (diff)
downloadPROJ-aaa159247b5595b84c05f603bebc07201be335f4.tar.gz
PROJ-aaa159247b5595b84c05f603bebc07201be335f4.zip
Merge pull request #2389 from rouault/wkt_parse_implict_compound_crs_esri
WKT1_ESRI: fix import and export of CompoundCRS
-rw-r--r--data/sql/esri.sql857
-rw-r--r--data/sql/proj_db_table_defs.sql2
-rwxr-xr-xscripts/build_db_from_esri.py113
-rw-r--r--src/iso19111/crs.cpp122
-rw-r--r--src/iso19111/factory.cpp19
-rw-r--r--src/iso19111/io.cpp88
-rw-r--r--src/wkt1_generated_parser.c369
-rw-r--r--src/wkt1_grammar.y19
-rwxr-xr-xtest/cli/testprojinfo8
-rw-r--r--test/cli/testprojinfo_out.dist14
-rw-r--r--test/unit/test_io.cpp149
11 files changed, 1328 insertions, 432 deletions
diff --git a/data/sql/esri.sql b/data/sql/esri.sql
index a1f89405..c1795165 100644
--- a/data/sql/esri.sql
+++ b/data/sql/esri.sql
@@ -15264,6 +15264,9 @@ INSERT INTO alias_name VALUES('vertical_datum','EPSG','5212','IGN_1992_LD','ESRI
INSERT INTO alias_name VALUES('vertical_datum','EPSG','5213','IGN_1988_SB','ESRI');
INSERT INTO alias_name VALUES('vertical_datum','EPSG','5214','IGN_1988_SM','ESRI');
INSERT INTO alias_name VALUES('vertical_datum','EPSG','5215','European_Vertical_Reference_Frame_2007','ESRI');
+-- vertical coordinate system for ellipsoidal height. Not really ISO 19111 valid...
+INSERT INTO "coordinate_system" VALUES('ESRI','ELLPS_HEIGHT_METRE','vertical',1);
+INSERT INTO "axis" VALUES('ESRI','ELLPS_HEIGHT_METRE','Ellipsoidal height','h','up','ESRI','ELLPS_HEIGHT_METRE',1,'EPSG','9001');
INSERT INTO alias_name VALUES('vertical_crs','EPSG','3855','EGM2008_Geoid','ESRI');
INSERT INTO alias_name VALUES('vertical_crs','EPSG','3886','Fao_1979','ESRI');
INSERT INTO alias_name VALUES('vertical_crs','EPSG','3900','N2000_height','ESRI');
@@ -15548,113 +15551,428 @@ INSERT INTO "usage" VALUES('ESRI', '105294_USAGE','vertical_datum','ESRI','10529
INSERT INTO "vertical_crs" VALUES('ESRI','105794','Dunedin_Bluff_1960_height',NULL,'EPSG','6499','ESRI','105294',1);
INSERT INTO "usage" VALUES('ESRI', '105794_USAGE','vertical_crs','ESRI','105794','EPSG','3806','EPSG','1024');
INSERT INTO "supersession" VALUES('vertical_crs','ESRI','105794','vertical_crs','EPSG','4458','ESRI',1);
--- Skipping WGS_1984. Should be a CompoundCRS
--- Skipping ETRS_1989. Should be a CompoundCRS
--- Skipping NAD_1983. Should be a CompoundCRS
--- Skipping Australian_Antarctic_1998. Should be a CompoundCRS
--- Skipping Cadastre_1997. Should be a CompoundCRS
--- Skipping China_Geodetic_Coordinate_System_2000. Should be a CompoundCRS
--- Skipping Swiss_TRF_1995. Should be a CompoundCRS
--- Skipping CIGD11. Should be a CompoundCRS
--- Skipping CR05. Should be a CompoundCRS
--- Skipping DB_REF. Should be a CompoundCRS
--- Skipping DGN_1995. Should be a CompoundCRS
--- Skipping DRUKREF_03. Should be a CompoundCRS
--- Skipping Estonia_1997. Should be a CompoundCRS
--- Skipping EUREF_FIN. Should be a CompoundCRS
--- Skipping FEH2010. Should be a CompoundCRS
--- Skipping GDA_1994. Should be a CompoundCRS
--- Skipping GDBD2009. Should be a CompoundCRS
--- Skipping GDM_2000. Should be a CompoundCRS
--- Skipping Greenland_1996. Should be a CompoundCRS
--- Skipping Hartebeesthoek_1994. Should be a CompoundCRS
--- Skipping IGD05. Should be a CompoundCRS
--- Skipping IG05_Intermediate_CRS. Should be a CompoundCRS
--- Skipping IGD05(2012). Should be a CompoundCRS
--- Skipping IG05(2012)_Intermediate_CRS. Should be a CompoundCRS
--- Skipping IGM_1995. Should be a CompoundCRS
--- Skipping IGRS. Should be a CompoundCRS
--- Skipping IRENET95. Should be a CompoundCRS
--- Skipping ISN_1993. Should be a CompoundCRS
--- Skipping ISN_2004. Should be a CompoundCRS
--- Skipping ITRF_1988. Should be a CompoundCRS
--- Skipping ITRF_1989. Should be a CompoundCRS
--- Skipping ITRF_1990. Should be a CompoundCRS
--- Skipping ITRF_1991. Should be a CompoundCRS
--- Skipping ITRF_1992. Should be a CompoundCRS
--- Skipping ITRF_1993. Should be a CompoundCRS
--- Skipping ITRF_1996. Should be a CompoundCRS
--- Skipping ITRF_1997. Should be a CompoundCRS
--- Skipping ITRF_2000. Should be a CompoundCRS
--- Skipping ITRF_2005. Should be a CompoundCRS
--- Skipping JAD_2001. Should be a CompoundCRS
--- Skipping JGD_2000. Should be a CompoundCRS
--- Skipping JGD_2011. Should be a CompoundCRS
--- Skipping Korea_2000. Should be a CompoundCRS
--- Skipping Lao_1997. Should be a CompoundCRS
--- Skipping LGD2006. Should be a CompoundCRS
--- Skipping LKS_1992. Should be a CompoundCRS
--- Skipping LKS_1994. Should be a CompoundCRS
--- Skipping MACAO_2008. Should be a CompoundCRS
--- Skipping MAGNA. Should be a CompoundCRS
--- Skipping MARCARIO_SOLIS. Should be a CompoundCRS
--- Skipping MARGEN. Should be a CompoundCRS
--- Skipping Mexico_ITRF2008. Should be a CompoundCRS
--- Skipping MOLDREF99. Should be a CompoundCRS
--- Skipping MONREF_1997. Should be a CompoundCRS
--- Skipping Moznet. Should be a CompoundCRS
--- Skipping NAD_1983_2011. Should be a CompoundCRS
--- Skipping NAD_1983_CORS96. Should be a CompoundCRS
--- Skipping North_American_1983_CSRS. Should be a CompoundCRS
--- Skipping North_American_1983_HARN. Should be a CompoundCRS
--- Skipping NAD_1983_MA11. Should be a CompoundCRS
--- Skipping NAD_1983_MARP00. Should be a CompoundCRS
--- Skipping NAD_1983_NSRS2007. Should be a CompoundCRS
--- Skipping NAD_1983_PA11. Should be a CompoundCRS
--- Skipping NAD_1983_PACP00. Should be a CompoundCRS
--- Skipping Nepal_Nagarkot. Should be a CompoundCRS
--- Skipping NZGD_2000. Should be a CompoundCRS
--- Skipping Peru96. Should be a CompoundCRS
--- Skipping PNG94. Should be a CompoundCRS
--- Skipping POSGAR. Should be a CompoundCRS
--- Skipping POSGAR_1994. Should be a CompoundCRS
--- Skipping POSGAR_1998. Should be a CompoundCRS
--- Skipping PRS_1992. Should be a CompoundCRS
--- Skipping PTRA08. Should be a CompoundCRS
--- Skipping PZ_1990. Should be a CompoundCRS
--- Skipping RDN2008. Should be a CompoundCRS
--- Skipping REGCAN95. Should be a CompoundCRS
--- Skipping REGVEN. Should be a CompoundCRS
--- Skipping RGAF09. Should be a CompoundCRS
--- Skipping RGF_1993. Should be a CompoundCRS
--- Skipping RGFG_1995. Should be a CompoundCRS
--- Skipping RGM_2004. Should be a CompoundCRS
--- Skipping RGNC_1991. Should be a CompoundCRS
--- Skipping RGNC_1991-93. Should be a CompoundCRS
--- Skipping RGPF. Should be a CompoundCRS
--- Skipping RGR_1992. Should be a CompoundCRS
--- Skipping RGRDC_2005. Should be a CompoundCRS
--- Skipping RGSPM_2006. Should be a CompoundCRS
--- Skipping RRAF_1991. Should be a CompoundCRS
--- Skipping RSRGD2000. Should be a CompoundCRS
--- Skipping SIRGAS_2000. Should be a CompoundCRS
--- Skipping SIRGAS-Chile. Should be a CompoundCRS
--- Skipping SIRGAS_ES2007.8. Should be a CompoundCRS
--- Skipping SIRGAS-ROU98. Should be a CompoundCRS
--- Skipping SLD99. Should be a CompoundCRS
--- Skipping Slovenia_1996. Should be a CompoundCRS
--- Skipping SREF98. Should be a CompoundCRS
--- Skipping S_JTSK/05. Should be a CompoundCRS
--- Skipping S_JTSK/05_Ferro. Should be a CompoundCRS
--- Skipping SWEREF99. Should be a CompoundCRS
--- Skipping TGD2005. Should be a CompoundCRS
--- Skipping TWD_1997. Should be a CompoundCRS
--- Skipping Ukraine_2000. Should be a CompoundCRS
--- Skipping Yemen_NGN_1996. Should be a CompoundCRS
--- Skipping ITRF_2008. Should be a CompoundCRS
--- Skipping TUREF. Should be a CompoundCRS
--- Skipping GDA2020. Should be a CompoundCRS
--- Skipping BGS2005. Should be a CompoundCRS
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6326','D_WGS_1984',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6326_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6326','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115700','WGS_1984',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6326',0);
+INSERT INTO "usage" VALUES('ESRI', '115700_USAGE','vertical_crs','ESRI','115700','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6258','D_ETRS_1989',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6258_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6258','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115701','ETRS_1989',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6258',0);
+INSERT INTO "usage" VALUES('ESRI', '115701_USAGE','vertical_crs','ESRI','115701','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6269','D_North_American_1983',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6269_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6269','EPSG','1350','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115702','NAD_1983',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6269',0);
+INSERT INTO "usage" VALUES('ESRI', '115702_USAGE','vertical_crs','ESRI','115702','EPSG','1350','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6176','D_Australian_Antarctic_1998',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6176_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6176','EPSG','1278','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115703','Australian_Antarctic_1998',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6176',0);
+INSERT INTO "usage" VALUES('ESRI', '115703_USAGE','vertical_crs','ESRI','115703','EPSG','1278','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106999','D_Cadastre_1997',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106999_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106999','EPSG','3340','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115704','Cadastre_1997',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106999',0);
+INSERT INTO "usage" VALUES('ESRI', '115704_USAGE','vertical_crs','ESRI','115704','EPSG','3340','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106980','D_China_2000',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106980_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106980','EPSG','1067','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115705','China_Geodetic_Coordinate_System_2000',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106980',0);
+INSERT INTO "usage" VALUES('ESRI', '115705_USAGE','vertical_crs','ESRI','115705','EPSG','1067','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6151','D_Swiss_TRF_1995',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6151_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6151','EPSG','1286','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115706','Swiss_TRF_1995',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6151',0);
+INSERT INTO "usage" VALUES('ESRI', '115706_USAGE','vertical_crs','ESRI','115706','EPSG','1286','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1100','D_Cayman_Islands_Geodetic_Datum_2011',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1100_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1100','EPSG','1063','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115707','CIGD11',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1100',0);
+INSERT INTO "usage" VALUES('ESRI', '115707_USAGE','vertical_crs','ESRI','115707','EPSG','1063','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106244','D_Costa_Rica_2005',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106244_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106244','EPSG','1074','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115708','CR05',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106244',0);
+INSERT INTO "usage" VALUES('ESRI', '115708_USAGE','vertical_crs','ESRI','115708','EPSG','1074','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1081','D_Deutsche_Bahn_Reference_System',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1081_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1081','EPSG','3339','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115709','DB_REF',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1081',0);
+INSERT INTO "usage" VALUES('ESRI', '115709_USAGE','vertical_crs','ESRI','115709','EPSG','3339','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6755','D_Datum_Geodesi_Nasional_1995',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6755_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6755','EPSG','1122','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115710','DGN_1995',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6755',0);
+INSERT INTO "usage" VALUES('ESRI', '115710_USAGE','vertical_crs','ESRI','115710','EPSG','1122','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1058','D_Bhutan_National_Geodetic_Datum',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1058_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1058','EPSG','1048','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115711','DRUKREF_03',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1058',0);
+INSERT INTO "usage" VALUES('ESRI', '115711_USAGE','vertical_crs','ESRI','115711','EPSG','1048','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6180','D_Estonia_1997',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6180_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6180','EPSG','1090','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115712','Estonia_1997',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6180',0);
+INSERT INTO "usage" VALUES('ESRI', '115712_USAGE','vertical_crs','ESRI','115712','EPSG','1090','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115713','EUREF_FIN',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6258',0);
+INSERT INTO "usage" VALUES('ESRI', '115713_USAGE','vertical_crs','ESRI','115713','EPSG','1095','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1078','D_Fehmarnbelt_Datum_2010',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1078_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1078','EPSG','3889','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115714','FEH2010',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1078',0);
+INSERT INTO "usage" VALUES('ESRI', '115714_USAGE','vertical_crs','ESRI','115714','EPSG','3889','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6283','D_GDA_1994',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6283_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6283','EPSG','4177','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115715','GDA_1994',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6283',0);
+INSERT INTO "usage" VALUES('ESRI', '115715_USAGE','vertical_crs','ESRI','115715','EPSG','4177','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106100','D_GDBD2009',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106100_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106100','EPSG','1055','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115716','GDBD2009',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106100',0);
+INSERT INTO "usage" VALUES('ESRI', '115716_USAGE','vertical_crs','ESRI','115716','EPSG','1055','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6742','D_GDM_2000',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6742_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6742','EPSG','1151','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115717','GDM_2000',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6742',0);
+INSERT INTO "usage" VALUES('ESRI', '115717_USAGE','vertical_crs','ESRI','115717','EPSG','1151','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6747','D_Greenland_1996',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6747_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6747','EPSG','1107','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115718','Greenland_1996',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6747',0);
+INSERT INTO "usage" VALUES('ESRI', '115718_USAGE','vertical_crs','ESRI','115718','EPSG','1107','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6148','D_Hartebeesthoek_1994',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6148_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6148','EPSG','1215','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115719','Hartebeesthoek_1994',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6148',0);
+INSERT INTO "usage" VALUES('ESRI', '115719_USAGE','vertical_crs','ESRI','115719','EPSG','1215','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1114','Israel_Geodetic_Datum_2005',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1114_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1114','EPSG','1126','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115720','IGD05',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1114',0);
+INSERT INTO "usage" VALUES('ESRI', '115720_USAGE','vertical_crs','ESRI','115720','EPSG','1126','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1142','IG05_Intermediate_Datum',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1142_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1142','EPSG','2603','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115721','IG05_Intermediate_CRS',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1142',0);
+INSERT INTO "usage" VALUES('ESRI', '115721_USAGE','vertical_crs','ESRI','115721','EPSG','2603','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1115','Israeli_Geodetic_Datum_2005(2012)',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1115_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1115','EPSG','1126','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115722','IGD05(2012)',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1115',0);
+INSERT INTO "usage" VALUES('ESRI', '115722_USAGE','vertical_crs','ESRI','115722','EPSG','1126','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1144','IG05(2012)_Intermediate_Datum',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1144_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1144','EPSG','2603','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115723','IG05(2012)_Intermediate_CRS',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1144',0);
+INSERT INTO "usage" VALUES('ESRI', '115723_USAGE','vertical_crs','ESRI','115723','EPSG','2603','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6670','D_IGM_1995',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6670_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6670','EPSG','3343','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115724','IGM_1995',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6670',0);
+INSERT INTO "usage" VALUES('ESRI', '115724_USAGE','vertical_crs','ESRI','115724','EPSG','3343','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106991','D_Iraqi_Geospatial_Reference_System',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106991_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106991','EPSG','1124','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115725','IGRS',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106991',0);
+INSERT INTO "usage" VALUES('ESRI', '115725_USAGE','vertical_crs','ESRI','115725','EPSG','1124','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6173','D_IRENET95',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6173_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6173','EPSG','1305','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115726','IRENET95',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6173',0);
+INSERT INTO "usage" VALUES('ESRI', '115726_USAGE','vertical_crs','ESRI','115726','EPSG','1305','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6659','D_Islands_Network_1993',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6659_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6659','EPSG','1120','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115727','ISN_1993',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6659',0);
+INSERT INTO "usage" VALUES('ESRI', '115727_USAGE','vertical_crs','ESRI','115727','EPSG','1120','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106144','D_Islands_Network_2004',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106144_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106144','EPSG','1120','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115728','ISN_2004',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106144',0);
+INSERT INTO "usage" VALUES('ESRI', '115728_USAGE','vertical_crs','ESRI','115728','EPSG','1120','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6647','D_ITRF_1988',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6647_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6647','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115729','ITRF_1988',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6647',0);
+INSERT INTO "usage" VALUES('ESRI', '115729_USAGE','vertical_crs','ESRI','115729','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6648','D_ITRF_1989',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6648_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6648','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115730','ITRF_1989',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6648',0);
+INSERT INTO "usage" VALUES('ESRI', '115730_USAGE','vertical_crs','ESRI','115730','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6649','D_ITRF_1990',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6649_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6649','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115731','ITRF_1990',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6649',0);
+INSERT INTO "usage" VALUES('ESRI', '115731_USAGE','vertical_crs','ESRI','115731','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6650','D_ITRF_1991',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6650_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6650','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115732','ITRF_1991',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6650',0);
+INSERT INTO "usage" VALUES('ESRI', '115732_USAGE','vertical_crs','ESRI','115732','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6651','D_ITRF_1992',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6651_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6651','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115733','ITRF_1992',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6651',0);
+INSERT INTO "usage" VALUES('ESRI', '115733_USAGE','vertical_crs','ESRI','115733','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6652','D_ITRF_1993',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6652_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6652','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115734','ITRF_1993',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6652',0);
+INSERT INTO "usage" VALUES('ESRI', '115734_USAGE','vertical_crs','ESRI','115734','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6654','D_ITRF_1996',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6654_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6654','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115735','ITRF_1996',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6654',0);
+INSERT INTO "usage" VALUES('ESRI', '115735_USAGE','vertical_crs','ESRI','115735','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6655','D_ITRF_1997',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6655_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6655','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115736','ITRF_1997',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6655',0);
+INSERT INTO "usage" VALUES('ESRI', '115736_USAGE','vertical_crs','ESRI','115736','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6656','D_ITRF_2000',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6656_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6656','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115737','ITRF_2000',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6656',0);
+INSERT INTO "usage" VALUES('ESRI', '115737_USAGE','vertical_crs','ESRI','115737','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6896','D_ITRF_2005',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6896_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6896','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115738','ITRF_2005',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6896',0);
+INSERT INTO "usage" VALUES('ESRI', '115738_USAGE','vertical_crs','ESRI','115738','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106280','D_Jamaica_2001',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106280_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106280','EPSG','1128','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115739','JAD_2001',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106280',0);
+INSERT INTO "usage" VALUES('ESRI', '115739_USAGE','vertical_crs','ESRI','115739','EPSG','1128','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106268','D_JGD_2000',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106268_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106268','EPSG','1129','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115740','JGD_2000',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106268',0);
+INSERT INTO "usage" VALUES('ESRI', '115740_USAGE','vertical_crs','ESRI','115740','EPSG','1129','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106020','D_JGD_2011',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106020_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106020','EPSG','1129','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115741','JGD_2011',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106020',0);
+INSERT INTO "usage" VALUES('ESRI', '115741_USAGE','vertical_crs','ESRI','115741','EPSG','1129','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6737','D_Korea_2000',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6737_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6737','EPSG','1135','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115742','Korea_2000',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6737',0);
+INSERT INTO "usage" VALUES('ESRI', '115742_USAGE','vertical_crs','ESRI','115742','EPSG','1135','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6678','D_Lao_National_Datum_1997',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6678_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6678','EPSG','1138','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115743','Lao_1997',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6678',0);
+INSERT INTO "usage" VALUES('ESRI', '115743_USAGE','vertical_crs','ESRI','115743','EPSG','1138','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6754','D_Libyan_Geodetic_Datum_2006',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6754_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6754','EPSG','1143','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115744','LGD2006',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6754',0);
+INSERT INTO "usage" VALUES('ESRI', '115744_USAGE','vertical_crs','ESRI','115744','EPSG','1143','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6661','D_Latvia_1992',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6661_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6661','EPSG','1139','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115745','LKS_1992',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6661',0);
+INSERT INTO "usage" VALUES('ESRI', '115745_USAGE','vertical_crs','ESRI','115745','EPSG','1139','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6126','D_Lithuania_1994',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6126_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6126','EPSG','1145','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115746','LKS_1994',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6126',0);
+INSERT INTO "usage" VALUES('ESRI', '115746_USAGE','vertical_crs','ESRI','115746','EPSG','1145','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106248','D_MACAO_2008',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106248_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106248','EPSG','1147','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115747','MACAO_2008',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106248',0);
+INSERT INTO "usage" VALUES('ESRI', '115747_USAGE','vertical_crs','ESRI','115747','EPSG','1147','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6686','D_MAGNA',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6686_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6686','EPSG','1070','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115748','MAGNA',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6686',0);
+INSERT INTO "usage" VALUES('ESRI', '115748_USAGE','vertical_crs','ESRI','115748','EPSG','1070','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1066','D_SGNP_MARCARIO_SOLIS',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1066_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1066','EPSG','1186','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115749','MARCARIO_SOLIS',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1066',0);
+INSERT INTO "usage" VALUES('ESRI', '115749_USAGE','vertical_crs','ESRI','115749','EPSG','1186','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1063','D_Marco_Geodesico_Nacional',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1063_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1063','EPSG','1049','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115750','MARGEN',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1063',0);
+INSERT INTO "usage" VALUES('ESRI', '115750_USAGE','vertical_crs','ESRI','115750','EPSG','1049','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1120','D_Mexico_ITRF2008',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1120_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1120','EPSG','1160','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115751','Mexico_ITRF2008',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1120',0);
+INSERT INTO "usage" VALUES('ESRI', '115751_USAGE','vertical_crs','ESRI','115751','EPSG','1160','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106993','D_MOLDREF99',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106993_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106993','EPSG','1162','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115752','MOLDREF99',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106993',0);
+INSERT INTO "usage" VALUES('ESRI', '115752_USAGE','vertical_crs','ESRI','115752','EPSG','1162','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115753','MONREF_1997',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6656',0);
+INSERT INTO "usage" VALUES('ESRI', '115753_USAGE','vertical_crs','ESRI','115753','EPSG','1164','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6130','D_Moznet',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6130_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6130','EPSG','1167','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115754','Moznet',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6130',0);
+INSERT INTO "usage" VALUES('ESRI', '115754_USAGE','vertical_crs','ESRI','115754','EPSG','1167','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106285','D_NAD_1983_2011',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106285_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106285','EPSG','1511','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115755','NAD_1983_2011',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106285',0);
+INSERT INTO "usage" VALUES('ESRI', '115755_USAGE','vertical_crs','ESRI','115755','EPSG','1511','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106223','D_NAD_1983_CORS96',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106223_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106223','EPSG','1511','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115756','NAD_1983_CORS96',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106223',0);
+INSERT INTO "usage" VALUES('ESRI', '115756_USAGE','vertical_crs','ESRI','115756','EPSG','1511','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6140','D_North_American_1983_CSRS',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6140_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6140','EPSG','1061','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115757','North_American_1983_CSRS',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6140',0);
+INSERT INTO "usage" VALUES('ESRI', '115757_USAGE','vertical_crs','ESRI','115757','EPSG','1061','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6152','D_North_American_1983_HARN',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6152_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6152','EPSG','1337','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115758','North_American_1983_HARN',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6152',0);
+INSERT INTO "usage" VALUES('ESRI', '115758_USAGE','vertical_crs','ESRI','115758','EPSG','1337','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106286','D_NAD_1983_MA11',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106286_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106286','EPSG','4167','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115759','NAD_1983_MA11',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106286',0);
+INSERT INTO "usage" VALUES('ESRI', '115759_USAGE','vertical_crs','ESRI','115759','EPSG','4167','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106210','D_NAD_1983_MARP00',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106210_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106210','EPSG','4167','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115760','NAD_1983_MARP00',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106210',0);
+INSERT INTO "usage" VALUES('ESRI', '115760_USAGE','vertical_crs','ESRI','115760','EPSG','4167','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6759','D_NAD_1983_NSRS2007',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6759_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6759','EPSG','1511','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115761','NAD_1983_NSRS2007',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6759',0);
+INSERT INTO "usage" VALUES('ESRI', '115761_USAGE','vertical_crs','ESRI','115761','EPSG','1511','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106287','D_NAD_1983_PA11',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106287_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106287','EPSG','4162','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115762','NAD_1983_PA11',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106287',0);
+INSERT INTO "usage" VALUES('ESRI', '115762_USAGE','vertical_crs','ESRI','115762','EPSG','4162','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106209','D_NAD_1983_PACP00',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106209_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106209','EPSG','4162','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115763','NAD_1983_PACP00',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106209',0);
+INSERT INTO "usage" VALUES('ESRI', '115763_USAGE','vertical_crs','ESRI','115763','EPSG','4162','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106256','D_Nepal_Nagarkot',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106256_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106256','EPSG','1171','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115764','Nepal_Nagarkot',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106256',0);
+INSERT INTO "usage" VALUES('ESRI', '115764_USAGE','vertical_crs','ESRI','115764','EPSG','1171','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106265','D_NZGD_2000',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106265_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106265','EPSG','1175','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115765','NZGD_2000',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106265',0);
+INSERT INTO "usage" VALUES('ESRI', '115765_USAGE','vertical_crs','ESRI','115765','EPSG','1175','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1067','D_Peru96',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1067_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1067','EPSG','1189','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115766','Peru96',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1067',0);
+INSERT INTO "usage" VALUES('ESRI', '115766_USAGE','vertical_crs','ESRI','115766','EPSG','1189','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1076','D_Papua_New_Guinea_Geodetic_Datum_1994',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1076_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1076','EPSG','1187','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115767','PNG94',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1076',0);
+INSERT INTO "usage" VALUES('ESRI', '115767_USAGE','vertical_crs','ESRI','115767','EPSG','1187','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6172','D_POSGAR',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6172_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6172','EPSG','1033','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115768','POSGAR',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6172',0);
+INSERT INTO "usage" VALUES('ESRI', '115768_USAGE','vertical_crs','ESRI','115768','EPSG','1033','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6694','D_POSGAR_1994',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6694_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6694','EPSG','1033','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115769','POSGAR_1994',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6694',0);
+INSERT INTO "usage" VALUES('ESRI', '115769_USAGE','vertical_crs','ESRI','115769','EPSG','1033','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6190','D_POSGAR_1998',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6190_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6190','EPSG','1033','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115770','POSGAR_1998',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6190',0);
+INSERT INTO "usage" VALUES('ESRI', '115770_USAGE','vertical_crs','ESRI','115770','EPSG','1033','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6683','D_Philippine_Reference_System_1992',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6683_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6683','EPSG','1190','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115771','PRS_1992',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6683',0);
+INSERT INTO "usage" VALUES('ESRI', '115771_USAGE','vertical_crs','ESRI','115771','EPSG','1190','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106236','D_PTRA08',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106236_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106236','EPSG','3670','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115772','PTRA08',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106236',0);
+INSERT INTO "usage" VALUES('ESRI', '115772_USAGE','vertical_crs','ESRI','115772','EPSG','3670','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6740','D_Parametrop_Zemp_1990',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6740_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6740','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115773','PZ_1990',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6740',0);
+INSERT INTO "usage" VALUES('ESRI', '115773_USAGE','vertical_crs','ESRI','115773','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1132','D_Rete_Dinamica_Nazionale_2008',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1132_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1132','EPSG','3343','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115774','RDN2008',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1132',0);
+INSERT INTO "usage" VALUES('ESRI', '115774_USAGE','vertical_crs','ESRI','115774','EPSG','3343','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106996','D_Red_Geodesica_de_Canarias_1995',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106996_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106996','EPSG','3199','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115775','REGCAN95',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106996',0);
+INSERT INTO "usage" VALUES('ESRI', '115775_USAGE','vertical_crs','ESRI','115775','EPSG','3199','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106267','D_REGVEN',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106267_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106267','EPSG','1251','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115776','REGVEN',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106267',0);
+INSERT INTO "usage" VALUES('ESRI', '115776_USAGE','vertical_crs','ESRI','115776','EPSG','1251','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1073','Reseau_Geodesique_des_Antilles_Francaises_2009',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1073_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1073','EPSG','2824','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115777','RGAF09',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1073',0);
+INSERT INTO "usage" VALUES('ESRI', '115777_USAGE','vertical_crs','ESRI','115777','EPSG','2824','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106264','D_RGF_1993',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106264_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106264','EPSG','1096','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115778','RGF_1993',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106264',0);
+INSERT INTO "usage" VALUES('ESRI', '115778_USAGE','vertical_crs','ESRI','115778','EPSG','1096','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6624','D_RGFG_1995',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6624_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6624','EPSG','1097','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115779','RGFG_1995',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6624',0);
+INSERT INTO "usage" VALUES('ESRI', '115779_USAGE','vertical_crs','ESRI','115779','EPSG','1097','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106998','D_Reseau_Geodesique_de_Mayotte_2004',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106998_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106998','EPSG','1159','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115780','RGM_2004',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106998',0);
+INSERT INTO "usage" VALUES('ESRI', '115780_USAGE','vertical_crs','ESRI','115780','EPSG','1159','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6645','D_RGNC_1991',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6645_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6645','EPSG','1174','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115781','RGNC_1991',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6645',0);
+INSERT INTO "usage" VALUES('ESRI', '115781_USAGE','vertical_crs','ESRI','115781','EPSG','1174','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6749','D_Reseau_Geodesique_de_Nouvelle_Caledonie_1991-93',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6749_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6749','EPSG','1174','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115782','RGNC_1991-93',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6749',0);
+INSERT INTO "usage" VALUES('ESRI', '115782_USAGE','vertical_crs','ESRI','115782','EPSG','1174','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6687','D_Reseau_Geodesique_de_la_Polynesie_Francaise',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6687_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6687','EPSG','1098','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115783','RGPF',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6687',0);
+INSERT INTO "usage" VALUES('ESRI', '115783_USAGE','vertical_crs','ESRI','115783','EPSG','1098','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6627','D_RGR_1992',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6627_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6627','EPSG','1196','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115784','RGR_1992',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6627',0);
+INSERT INTO "usage" VALUES('ESRI', '115784_USAGE','vertical_crs','ESRI','115784','EPSG','1196','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106994','D_Reseau_Geodesique_de_la_RDC_2005',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106994_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106994','EPSG','3613','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115785','RGRDC_2005',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106994',0);
+INSERT INTO "usage" VALUES('ESRI', '115785_USAGE','vertical_crs','ESRI','115785','EPSG','3613','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106997','D_Reseau_Geodesique_de_St_Pierre_et_Miquelon_2006',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106997_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106997','EPSG','1220','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115786','RGSPM_2006',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106997',0);
+INSERT INTO "usage" VALUES('ESRI', '115786_USAGE','vertical_crs','ESRI','115786','EPSG','1220','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1047','D_RRAF_1991',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1047_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1047','EPSG','2824','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115787','RRAF_1991',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1047',0);
+INSERT INTO "usage" VALUES('ESRI', '115787_USAGE','vertical_crs','ESRI','115787','EPSG','2824','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6764','D_Ross_Sea_Region_Geodetic_Datum_2000',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6764_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6764','EPSG','3558','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115788','RSRGD2000',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6764',0);
+INSERT INTO "usage" VALUES('ESRI', '115788_USAGE','vertical_crs','ESRI','115788','EPSG','3558','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6674','D_SIRGAS_2000',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6674_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6674','EPSG','3418','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115789','SIRGAS_2000',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6674',0);
+INSERT INTO "usage" VALUES('ESRI', '115789_USAGE','vertical_crs','ESRI','115789','EPSG','3418','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1064','D_SIRGAS-Chile',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1064_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1064','EPSG','1066','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115790','SIRGAS-Chile',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1064',0);
+INSERT INTO "usage" VALUES('ESRI', '115790_USAGE','vertical_crs','ESRI','115790','EPSG','1066','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1069','D_SIRGAS_ES2007.8',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1069_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1069','EPSG','1087','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115791','SIRGAS_ES2007.8',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1069',0);
+INSERT INTO "usage" VALUES('ESRI', '115791_USAGE','vertical_crs','ESRI','115791','EPSG','1087','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1068','D_SIRGAS-ROU98',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1068_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1068','EPSG','1247','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115792','SIRGAS-ROU98',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1068',0);
+INSERT INTO "usage" VALUES('ESRI', '115792_USAGE','vertical_crs','ESRI','115792','EPSG','1247','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1053','D_Sri_Lanka_Datum_1999',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1053_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1053','EPSG','3310','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115793','SLD99',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1053',0);
+INSERT INTO "usage" VALUES('ESRI', '115793_USAGE','vertical_crs','ESRI','115793','EPSG','3310','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6765','D_Slovenia_Geodetic_Datum_1996',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6765_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6765','EPSG','1212','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115794','Slovenia_1996',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6765',0);
+INSERT INTO "usage" VALUES('ESRI', '115794_USAGE','vertical_crs','ESRI','115794','EPSG','1212','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106995','D_Serbian_Reference_Network_1998',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106995_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106995','EPSG','3534','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115795','SREF98',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106995',0);
+INSERT INTO "usage" VALUES('ESRI', '115795_USAGE','vertical_crs','ESRI','115795','EPSG','3534','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1052','D_S_JTSK_05',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1052_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1052','EPSG','1079','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115796','S_JTSK/05',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1052',0);
+INSERT INTO "usage" VALUES('ESRI', '115796_USAGE','vertical_crs','ESRI','115796','EPSG','1079','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115797','S_JTSK/05_Ferro',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1052',0);
+INSERT INTO "usage" VALUES('ESRI', '115797_USAGE','vertical_crs','ESRI','115797','EPSG','1079','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6619','D_SWEREF99',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6619_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6619','EPSG','1225','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115798','SWEREF99',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6619',0);
+INSERT INTO "usage" VALUES('ESRI', '115798_USAGE','vertical_crs','ESRI','115798','EPSG','1225','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1095','D_Tonga_Geodetic_Datum_2005',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1095_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1095','EPSG','1234','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115799','TGD2005',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1095',0);
+INSERT INTO "usage" VALUES('ESRI', '115799_USAGE','vertical_crs','ESRI','115799','EPSG','1234','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106282','D_TWD_1997',NULL,NULL,NULL,NULL,1);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106282_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106282','EPSG','1228','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115800','TWD_1997',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106282',0);
+INSERT INTO "usage" VALUES('ESRI', '115800_USAGE','vertical_crs','ESRI','115800','EPSG','1228','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1077','D_Ukraine_2000',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1077_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1077','EPSG','1242','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115801','Ukraine_2000',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1077',0);
+INSERT INTO "usage" VALUES('ESRI', '115801_USAGE','vertical_crs','ESRI','115801','EPSG','1242','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_6163','D_Yemen_NGN_1996',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_6163_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_6163','EPSG','1257','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115802','Yemen_NGN_1996',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_6163',0);
+INSERT INTO "usage" VALUES('ESRI', '115802_USAGE','vertical_crs','ESRI','115802','EPSG','1257','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1061','D_ITRF_2008',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1061_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1061','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115803','ITRF_2008',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1061',0);
+INSERT INTO "usage" VALUES('ESRI', '115803_USAGE','vertical_crs','ESRI','115803','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1057','D_Turkish_National_Reference_Frame',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1057_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1057','EPSG','1237','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115804','TUREF',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1057',0);
+INSERT INTO "usage" VALUES('ESRI', '115804_USAGE','vertical_crs','ESRI','115804','EPSG','1237','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1168','GDA2020',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1168_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1168','EPSG','4177','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115805','GDA2020',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1168',0);
+INSERT INTO "usage" VALUES('ESRI', '115805_USAGE','vertical_crs','ESRI','115805','EPSG','4177','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1167','Bulgaria_Geodetic_System_2005',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1167_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1167','EPSG','1056','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115806','BGS2005',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1167',0);
+INSERT INTO "usage" VALUES('ESRI', '115806_USAGE','vertical_crs','ESRI','115806','EPSG','1056','EPSG','1024');
INSERT INTO "vertical_datum" VALUES('ESRI','105110','Unknown_height_system_(meters)',NULL,NULL,NULL,NULL,0);
INSERT INTO "usage" VALUES('ESRI', '105110_USAGE','vertical_datum','ESRI','105110','EPSG','1262','EPSG','1024');
INSERT INTO "vertical_crs" VALUES('ESRI','115807','Unknown_height_system_(meters)',NULL,'EPSG','6499','ESRI','105110',0);
@@ -15667,71 +15985,266 @@ INSERT INTO "vertical_datum" VALUES('ESRI','105112','Unknown_height_system_(Intl
INSERT INTO "usage" VALUES('ESRI', '105112_USAGE','vertical_datum','ESRI','105112','EPSG','1262','EPSG','1024');
INSERT INTO "vertical_crs" VALUES('ESRI','115809','Unknown_height_system_(Intl_Feet)',NULL,'EPSG','1030','ESRI','105112',0);
INSERT INTO "usage" VALUES('ESRI', '115809_USAGE','vertical_crs','ESRI','115809','EPSG','1262','EPSG','1024');
--- Skipping ITRF2014. Should be a CompoundCRS
--- Skipping SHGD2015. Should be a CompoundCRS
--- Skipping St_Helena_Tritan. Should be a CompoundCRS
--- Skipping GSK-2011. Should be a CompoundCRS
--- Skipping PZ-90.11. Should be a CompoundCRS
--- Skipping PZ-90.02. Should be a CompoundCRS
--- Skipping WGS_1984_(Transit). Should be a CompoundCRS
--- Skipping WGS_1984_(G1762). Should be a CompoundCRS
--- Skipping WGS_1984_(G1674). Should be a CompoundCRS
--- Skipping WGS_1984_(G1150). Should be a CompoundCRS
--- Skipping WGS_1984_(G873). Should be a CompoundCRS
--- Skipping WGS_1984_(G730). Should be a CompoundCRS
--- Skipping ETRF90. Should be a CompoundCRS
--- Skipping ETRF91. Should be a CompoundCRS
--- Skipping ETRF92. Should be a CompoundCRS
--- Skipping ETRF93. Should be a CompoundCRS
--- Skipping ETRF94. Should be a CompoundCRS
--- Skipping ETRF96. Should be a CompoundCRS
--- Skipping ETRF97. Should be a CompoundCRS
--- Skipping ETRF2000. Should be a CompoundCRS
--- Skipping NAD83(CSRS96). Should be a CompoundCRS
--- Skipping NAD83(CSRS)V2. Should be a CompoundCRS
--- Skipping NAD83(CSRS)V3. Should be a CompoundCRS
--- Skipping NAD83(CSRS)V4. Should be a CompoundCRS
--- Skipping NAD83(CSRS)V5. Should be a CompoundCRS
--- Skipping NAD83(CSRS)V6. Should be a CompoundCRS
--- Skipping NAD83(CSRS)V7. Should be a CompoundCRS
--- Skipping IGS14. Should be a CompoundCRS
--- Skipping ISN2016. Should be a CompoundCRS
--- Skipping Hong_Kong_Geodetic_CS. Should be a CompoundCRS
--- Skipping NAD_1983_(FBN). Should be a CompoundCRS
--- Skipping NAD_1983_(HARN_Corrected). Should be a CompoundCRS
--- Skipping SRB_ETRS89. Should be a CompoundCRS
--- Skipping MTRF-2000. Should be a CompoundCRS
--- Skipping California_SRS_Epoch_2017.50_(NAD83). Should be a CompoundCRS
--- Skipping GGD. Should be a CompoundCRS
--- Skipping ONGD14. Should be a CompoundCRS
--- Skipping ONGD17. Should be a CompoundCRS
--- Skipping S-JTSK_[JTSK03]. Should be a CompoundCRS
--- Skipping CR-SIRGAS. Should be a CompoundCRS
--- Skipping RGWF96. Should be a CompoundCRS
--- Skipping SIRGAS-CON_DGF00P01. Should be a CompoundCRS
--- Skipping SIRGAS-CON_DGF01P01. Should be a CompoundCRS
--- Skipping SIRGAS-CON_DGF01P02. Should be a CompoundCRS
--- Skipping SIRGAS-CON_DGF02P01. Should be a CompoundCRS
--- Skipping SIRGAS-CON_DGF04P01. Should be a CompoundCRS
--- Skipping SIRGAS-CON_DGF05P01. Should be a CompoundCRS
--- Skipping SIRGAS-CON_DGF06P01. Should be a CompoundCRS
--- Skipping SIRGAS-CON_DGF07P01. Should be a CompoundCRS
--- Skipping SIRGAS-CON_DGF08P01. Should be a CompoundCRS
--- Skipping SIRGAS-CON_SIR09P01. Should be a CompoundCRS
--- Skipping SIRGAS-CON_SIR10P01. Should be a CompoundCRS
--- Skipping SIRGAS-CON_SIR11P01. Should be a CompoundCRS
--- Skipping SIRGAS-CON_SIR13P01. Should be a CompoundCRS
--- Skipping SIRGAS-CON_SIR14P01. Should be a CompoundCRS
--- Skipping SIRGAS-CON_SIR15P01. Should be a CompoundCRS
--- Skipping SIRGAS-CON_SIR17P01. Should be a CompoundCRS
--- Skipping IGS97. Should be a CompoundCRS
--- Skipping IGS00. Should be a CompoundCRS
--- Skipping IGb00. Should be a CompoundCRS
--- Skipping IGS05. Should be a CompoundCRS
--- Skipping IGb08. Should be a CompoundCRS
--- Skipping KOSOVAREF01. Should be a CompoundCRS
--- Skipping ETRF2005. Should be a CompoundCRS
--- Skipping ETRF2014. Should be a CompoundCRS
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1165','International_Terrestrial_Reference_Frame_2014',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1165_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1165','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115810','ITRF2014',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1165',0);
+INSERT INTO "usage" VALUES('ESRI', '115810_USAGE','vertical_crs','ESRI','115810','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1174','St_Helena_Geodetic_Datum_2015',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1174_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1174','EPSG','3183','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115811','SHGD2015',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1174',0);
+INSERT INTO "usage" VALUES('ESRI', '115811_USAGE','vertical_crs','ESRI','115811','EPSG','3183','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1173','St_Helena_Tritan',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1173_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1173','EPSG','3183','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115812','St_Helena_Tritan',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1173',0);
+INSERT INTO "usage" VALUES('ESRI', '115812_USAGE','vertical_crs','ESRI','115812','EPSG','3183','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1159','Geodezicheskaya_Sistema_Koordinat_2011',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1159_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1159','EPSG','1198','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115813','GSK-2011',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1159',0);
+INSERT INTO "usage" VALUES('ESRI', '115813_USAGE','vertical_crs','ESRI','115813','EPSG','1198','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1158','Parametry_Zemli_1990.11',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1158_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1158','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115814','PZ-90.11',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1158',0);
+INSERT INTO "usage" VALUES('ESRI', '115814_USAGE','vertical_crs','ESRI','115814','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1157','Parametry_Zemli_1990.02',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1157_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1157','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115815','PZ-90.02',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1157',0);
+INSERT INTO "usage" VALUES('ESRI', '115815_USAGE','vertical_crs','ESRI','115815','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1166','World_Geodetic_System_1984_(Transit)',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1166_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1166','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115816','WGS_1984_(Transit)',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1166',0);
+INSERT INTO "usage" VALUES('ESRI', '115816_USAGE','vertical_crs','ESRI','115816','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1156','World_Geodetic_System_1984_(G1762)',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1156_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1156','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115817','WGS_1984_(G1762)',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1156',0);
+INSERT INTO "usage" VALUES('ESRI', '115817_USAGE','vertical_crs','ESRI','115817','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1155','World_Geodetic_System_1984_(G1674)',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1155_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1155','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115818','WGS_1984_(G1674)',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1155',0);
+INSERT INTO "usage" VALUES('ESRI', '115818_USAGE','vertical_crs','ESRI','115818','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1154','World_Geodetic_System_1984_(G1150)',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1154_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1154','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115819','WGS_1984_(G1150)',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1154',0);
+INSERT INTO "usage" VALUES('ESRI', '115819_USAGE','vertical_crs','ESRI','115819','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1153','World_Geodetic_System_1984_(G873)',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1153_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1153','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115820','WGS_1984_(G873)',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1153',0);
+INSERT INTO "usage" VALUES('ESRI', '115820_USAGE','vertical_crs','ESRI','115820','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1152','World_Geodetic_System_1984_(G730)',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1152_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1152','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115821','WGS_1984_(G730)',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1152',0);
+INSERT INTO "usage" VALUES('ESRI', '115821_USAGE','vertical_crs','ESRI','115821','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1179','European_Terrestrial_Reference_Frame_1990',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1179_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1179','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115822','ETRF90',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1179',0);
+INSERT INTO "usage" VALUES('ESRI', '115822_USAGE','vertical_crs','ESRI','115822','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1180','European_Terrestrial_Reference_Frame_1991',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1180_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1180','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115823','ETRF91',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1180',0);
+INSERT INTO "usage" VALUES('ESRI', '115823_USAGE','vertical_crs','ESRI','115823','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1181','European_Terrestrial_Reference_Frame_1992',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1181_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1181','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115824','ETRF92',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1181',0);
+INSERT INTO "usage" VALUES('ESRI', '115824_USAGE','vertical_crs','ESRI','115824','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1182','European_Terrestrial_Reference_Frame_1993',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1182_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1182','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115825','ETRF93',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1182',0);
+INSERT INTO "usage" VALUES('ESRI', '115825_USAGE','vertical_crs','ESRI','115825','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1183','European_Terrestrial_Reference_Frame_1994',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1183_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1183','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115826','ETRF94',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1183',0);
+INSERT INTO "usage" VALUES('ESRI', '115826_USAGE','vertical_crs','ESRI','115826','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1184','European_Terrestrial_Reference_Frame_1996',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1184_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1184','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115827','ETRF96',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1184',0);
+INSERT INTO "usage" VALUES('ESRI', '115827_USAGE','vertical_crs','ESRI','115827','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1185','European_Terrestrial_Reference_Frame_1997',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1185_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1185','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115828','ETRF97',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1185',0);
+INSERT INTO "usage" VALUES('ESRI', '115828_USAGE','vertical_crs','ESRI','115828','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1186','European_Terrestrial_Reference_Frame_2000',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1186_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1186','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115829','ETRF2000',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1186',0);
+INSERT INTO "usage" VALUES('ESRI', '115829_USAGE','vertical_crs','ESRI','115829','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1192','North_American_Datum_of_1983_(CSRS96)',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1192_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1192','EPSG','1061','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115830','NAD83(CSRS96)',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1192',0);
+INSERT INTO "usage" VALUES('ESRI', '115830_USAGE','vertical_crs','ESRI','115830','EPSG','1061','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1193','North_American_Datum_of_1983_(CSRS)_version_2',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1193_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1193','EPSG','1061','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115831','NAD83(CSRS)V2',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1193',0);
+INSERT INTO "usage" VALUES('ESRI', '115831_USAGE','vertical_crs','ESRI','115831','EPSG','1061','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1194','North_American_Datum_of_1983_(CSRS)_version_3',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1194_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1194','EPSG','1061','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115832','NAD83(CSRS)V3',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1194',0);
+INSERT INTO "usage" VALUES('ESRI', '115832_USAGE','vertical_crs','ESRI','115832','EPSG','1061','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1195','North_American_Datum_of_1983_(CSRS)_version_4',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1195_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1195','EPSG','1061','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115833','NAD83(CSRS)V4',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1195',0);
+INSERT INTO "usage" VALUES('ESRI', '115833_USAGE','vertical_crs','ESRI','115833','EPSG','1061','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1196','North_American_Datum_of_1983_(CSRS)_version_5',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1196_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1196','EPSG','1061','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115834','NAD83(CSRS)V5',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1196',0);
+INSERT INTO "usage" VALUES('ESRI', '115834_USAGE','vertical_crs','ESRI','115834','EPSG','1061','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1197','North_American_Datum_of_1983_(CSRS)_version_6',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1197_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1197','EPSG','1061','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115835','NAD83(CSRS)V6',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1197',0);
+INSERT INTO "usage" VALUES('ESRI', '115835_USAGE','vertical_crs','ESRI','115835','EPSG','1061','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1198','North_American_Datum_of_1983_(CSRS)_version_7',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1198_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1198','EPSG','1061','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115836','NAD83(CSRS)V7',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1198',0);
+INSERT INTO "usage" VALUES('ESRI', '115836_USAGE','vertical_crs','ESRI','115836','EPSG','1061','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1191','IGS14',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1191_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1191','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115837','IGS14',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1191',0);
+INSERT INTO "usage" VALUES('ESRI', '115837_USAGE','vertical_crs','ESRI','115837','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1187','Islands_Net_2016',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1187_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1187','EPSG','1120','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115838','ISN2016',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1187',0);
+INSERT INTO "usage" VALUES('ESRI', '115838_USAGE','vertical_crs','ESRI','115838','EPSG','1120','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1209','Hong_Kong_Geodetic',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1209_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1209','EPSG','1118','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115839','Hong_Kong_Geodetic_CS',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1209',0);
+INSERT INTO "usage" VALUES('ESRI', '115839_USAGE','vertical_crs','ESRI','115839','EPSG','1118','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1211','NAD_1983_(Federal_Base_Network)',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1211_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1211','EPSG','4515','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115840','NAD_1983_(FBN)',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1211',0);
+INSERT INTO "usage" VALUES('ESRI', '115840_USAGE','vertical_crs','ESRI','115840','EPSG','4515','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1212','NAD_1983_(High_Accuracy_Reference_Network-Corrected)',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1212_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1212','EPSG','3634','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115841','NAD_1983_(HARN_Corrected)',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1212',0);
+INSERT INTO "usage" VALUES('ESRI', '115841_USAGE','vertical_crs','ESRI','115841','EPSG','3634','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1214','Serbian_Spatial_Reference_System_2000',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1214_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1214','EPSG','3534','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115842','SRB_ETRS89',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1214',0);
+INSERT INTO "usage" VALUES('ESRI', '115842_USAGE','vertical_crs','ESRI','115842','EPSG','3534','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1218','MOMRA_Terrestrial_Reference_Frame_2000',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1218_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1218','EPSG','1206','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115843','MTRF-2000',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1218',0);
+INSERT INTO "usage" VALUES('ESRI', '115843_USAGE','vertical_crs','ESRI','115843','EPSG','1206','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106012','California_SRS_Epoch_2017.50_(NAD83)',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106012_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106012','ESRI','1','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115844','California_SRS_Epoch_2017.50_(NAD83)',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106012',0);
+INSERT INTO "usage" VALUES('ESRI', '115844_USAGE','vertical_crs','ESRI','115844','ESRI','1','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106010','Georgia_Geodetic_Datum',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106010_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106010','EPSG','3251','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115845','GGD',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106010',0);
+INSERT INTO "usage" VALUES('ESRI', '115845_USAGE','vertical_crs','ESRI','115845','EPSG','3251','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1147','Oman_National_Geodetic_Datum_2014',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1147_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1147','EPSG','1183','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115846','ONGD14',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1147',0);
+INSERT INTO "usage" VALUES('ESRI', '115846_USAGE','vertical_crs','ESRI','115846','EPSG','1183','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_ESRI_106027','Oman_National_Geodetic_Datum_2017',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_ESRI_106027_USAGE','vertical_datum','ESRI','from_geogdatum_ESRI_106027','EPSG','1183','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115847','ONGD17',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_ESRI_106027',0);
+INSERT INTO "usage" VALUES('ESRI', '115847_USAGE','vertical_crs','ESRI','115847','EPSG','1183','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1201','S-JTSK_[JTSK03]',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1201_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1201','EPSG','1211','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115848','S-JTSK_[JTSK03]',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1201',0);
+INSERT INTO "usage" VALUES('ESRI', '115848_USAGE','vertical_crs','ESRI','115848','EPSG','1211','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1225','CR-SIRGAS',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1225_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1225','EPSG','1074','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115849','CR-SIRGAS',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1225',0);
+INSERT INTO "usage" VALUES('ESRI', '115849_USAGE','vertical_crs','ESRI','115849','EPSG','1074','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1223','Reseau_Geodesique_de_Wallis_et_Futuna_1996',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1223_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1223','EPSG','1255','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115850','RGWF96',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1223',0);
+INSERT INTO "usage" VALUES('ESRI', '115850_USAGE','vertical_crs','ESRI','115850','EPSG','1255','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1227','SIRGAS_Continuously_Operating_Network_DGF00P01',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1227_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1227','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115851','SIRGAS-CON_DGF00P01',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1227',0);
+INSERT INTO "usage" VALUES('ESRI', '115851_USAGE','vertical_crs','ESRI','115851','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1228','SIRGAS_Continuously_Operating_Network_DGF01P01',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1228_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1228','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115852','SIRGAS-CON_DGF01P01',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1228',0);
+INSERT INTO "usage" VALUES('ESRI', '115852_USAGE','vertical_crs','ESRI','115852','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1229','SIRGAS_Continuously_Operating_Network_DGF01P02',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1229_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1229','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115853','SIRGAS-CON_DGF01P02',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1229',0);
+INSERT INTO "usage" VALUES('ESRI', '115853_USAGE','vertical_crs','ESRI','115853','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1230','SIRGAS_Continuously_Operating_Network_DGF02P01',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1230_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1230','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115854','SIRGAS-CON_DGF02P01',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1230',0);
+INSERT INTO "usage" VALUES('ESRI', '115854_USAGE','vertical_crs','ESRI','115854','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1231','SIRGAS_Continuously_Operating_Network_DGF04P01',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1231_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1231','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115855','SIRGAS-CON_DGF04P01',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1231',0);
+INSERT INTO "usage" VALUES('ESRI', '115855_USAGE','vertical_crs','ESRI','115855','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1232','SIRGAS_Continuously_Operating_Network_DGF05P01',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1232_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1232','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115856','SIRGAS-CON_DGF05P01',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1232',0);
+INSERT INTO "usage" VALUES('ESRI', '115856_USAGE','vertical_crs','ESRI','115856','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1233','SIRGAS_Continuously_Operating_Network_DGF06P01',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1233_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1233','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115857','SIRGAS-CON_DGF06P01',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1233',0);
+INSERT INTO "usage" VALUES('ESRI', '115857_USAGE','vertical_crs','ESRI','115857','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1234','SIRGAS_Continuously_Operating_Network_DGF07P01',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1234_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1234','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115858','SIRGAS-CON_DGF07P01',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1234',0);
+INSERT INTO "usage" VALUES('ESRI', '115858_USAGE','vertical_crs','ESRI','115858','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1235','SIRGAS_Continuously_Operating_Network_DGF08P01',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1235_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1235','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115859','SIRGAS-CON_DGF08P01',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1235',0);
+INSERT INTO "usage" VALUES('ESRI', '115859_USAGE','vertical_crs','ESRI','115859','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1236','SIRGAS_Continuously_Operating_Network_SIR09P01',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1236_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1236','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115860','SIRGAS-CON_SIR09P01',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1236',0);
+INSERT INTO "usage" VALUES('ESRI', '115860_USAGE','vertical_crs','ESRI','115860','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1237','SIRGAS_Continuously_Operating_Network_SIR10P01',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1237_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1237','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115861','SIRGAS-CON_SIR10P01',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1237',0);
+INSERT INTO "usage" VALUES('ESRI', '115861_USAGE','vertical_crs','ESRI','115861','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1238','SIRGAS_Continuously_Operating_Network_SIR11P01',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1238_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1238','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115862','SIRGAS-CON_SIR11P01',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1238',0);
+INSERT INTO "usage" VALUES('ESRI', '115862_USAGE','vertical_crs','ESRI','115862','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1239','SIRGAS_Continuously_Operating_Network_SIR13P01',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1239_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1239','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115863','SIRGAS-CON_SIR13P01',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1239',0);
+INSERT INTO "usage" VALUES('ESRI', '115863_USAGE','vertical_crs','ESRI','115863','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1240','SIRGAS_Continuously_Operating_Network_SIR14P01',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1240_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1240','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115864','SIRGAS-CON_SIR14P01',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1240',0);
+INSERT INTO "usage" VALUES('ESRI', '115864_USAGE','vertical_crs','ESRI','115864','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1241','SIRGAS_Continuously_Operating_Network_SIR15P01',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1241_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1241','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115865','SIRGAS-CON_SIR15P01',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1241',0);
+INSERT INTO "usage" VALUES('ESRI', '115865_USAGE','vertical_crs','ESRI','115865','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1242','SIRGAS_Continuously_Operating_Network_SIR17P01',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1242_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1242','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115866','SIRGAS-CON_SIR17P01',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1242',0);
+INSERT INTO "usage" VALUES('ESRI', '115866_USAGE','vertical_crs','ESRI','115866','EPSG','4530','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1244','IGS97',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1244_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1244','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115867','IGS97',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1244',0);
+INSERT INTO "usage" VALUES('ESRI', '115867_USAGE','vertical_crs','ESRI','115867','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1245','IGS00',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1245_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1245','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115868','IGS00',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1245',0);
+INSERT INTO "usage" VALUES('ESRI', '115868_USAGE','vertical_crs','ESRI','115868','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1246','IGb00',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1246_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1246','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115869','IGb00',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1246',0);
+INSERT INTO "usage" VALUES('ESRI', '115869_USAGE','vertical_crs','ESRI','115869','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1247','IGS05',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1247_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1247','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115870','IGS05',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1247',0);
+INSERT INTO "usage" VALUES('ESRI', '115870_USAGE','vertical_crs','ESRI','115870','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1248','IGb08',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1248_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1248','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115871','IGb08',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1248',0);
+INSERT INTO "usage" VALUES('ESRI', '115871_USAGE','vertical_crs','ESRI','115871','EPSG','1262','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1251','Kosovo_Reference_System_2001',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1251_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1251','EPSG','4542','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115872','KOSOVAREF01',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1251',0);
+INSERT INTO "usage" VALUES('ESRI', '115872_USAGE','vertical_crs','ESRI','115872','EPSG','4542','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1204','European_Terrestrial_Reference_Frame_2005',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1204_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1204','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115873','ETRF2005',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1204',0);
+INSERT INTO "usage" VALUES('ESRI', '115873_USAGE','vertical_crs','ESRI','115873','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_datum" VALUES('ESRI','from_geogdatum_EPSG_1206','European_Terrestrial_Reference_Frame_2014',NULL,NULL,NULL,NULL,0);
+INSERT INTO "usage" VALUES('ESRI', 'from_geogdatum_EPSG_1206_USAGE','vertical_datum','ESRI','from_geogdatum_EPSG_1206','EPSG','1298','EPSG','1024');
+INSERT INTO "vertical_crs" VALUES('ESRI','115874','ETRF2014',NULL,'ESRI','ELLPS_HEIGHT_METRE','ESRI','from_geogdatum_EPSG_1206',0);
+INSERT INTO "usage" VALUES('ESRI', '115874_USAGE','vertical_crs','ESRI','115874','EPSG','1298','EPSG','1024');
INSERT INTO alias_name VALUES('compound_crs','EPSG','5318','HVC_ETRS_1989_Faroe_TM_and_FVR09_height','ESRI');
INSERT INTO alias_name VALUES('compound_crs','EPSG','5498','HVC_NAD_1983_and_NAVD88_height','ESRI');
INSERT INTO alias_name VALUES('compound_crs','EPSG','5499','HVC_NAD_1983_HARN_and_NAVD88_height','ESRI');
diff --git a/data/sql/proj_db_table_defs.sql b/data/sql/proj_db_table_defs.sql
index 60a12209..ad3686d9 100644
--- a/data/sql/proj_db_table_defs.sql
+++ b/data/sql/proj_db_table_defs.sql
@@ -106,7 +106,7 @@ FOR EACH ROW BEGIN
SELECT RAISE(ABORT, 'insert on usage violates constraint: extent must not be deprecated when object is not deprecated')
WHERE EXISTS (
SELECT 1 FROM extent JOIN object_view o WHERE
- NOT (o.table_name IN ('projected_crs', 'conversion') AND o.auth_name = 'ESRI') AND
+ NOT (o.table_name IN ('projected_crs', 'vertical_crs', 'vertical_datum', 'conversion') AND o.auth_name = 'ESRI') AND
o.table_name = NEW.object_table_name AND
o.auth_name = NEW.object_auth_name AND
o.code = NEW.object_code AND
diff --git a/scripts/build_db_from_esri.py b/scripts/build_db_from_esri.py
index 2c1c5883..e1143b6c 100755
--- a/scripts/build_db_from_esri.py
+++ b/scripts/build_db_from_esri.py
@@ -436,6 +436,16 @@ def import_datum():
sql = """INSERT INTO alias_name VALUES('geodetic_datum','EPSG','%s','%s','ESRI');""" % (
code, escape_literal(esri_name))
all_sql.append(sql)
+
+ description = row[idx_description]
+ deprecated = 1 if row[idx_deprecated] == 'yes' else 0
+
+ map_datum_esri_to_parameters[code] = {
+ 'esri_name': esri_name,
+ 'description': description,
+ 'deprecated': deprecated
+ }
+
else:
assert authority.upper() == 'ESRI', row
@@ -1187,7 +1197,14 @@ def import_vertcs():
idx_rlon = header.index('rlon')
assert idx_rlon >= 0
- datum_written = set()
+ vdatum_written = set()
+
+ sql = """-- vertical coordinate system for ellipsoidal height. Not really ISO 19111 valid..."""
+ all_sql.append(sql)
+ sql = """INSERT INTO "coordinate_system" VALUES('ESRI','ELLPS_HEIGHT_METRE','vertical',1);"""
+ all_sql.append(sql)
+ sql = """INSERT INTO "axis" VALUES('ESRI','ELLPS_HEIGHT_METRE','Ellipsoidal height','h','up','ESRI','ELLPS_HEIGHT_METRE',1,'EPSG','9001');"""
+ all_sql.append(sql)
while True:
try:
@@ -1221,51 +1238,81 @@ def import_vertcs():
wkt = row[idx_wkt]
- if ',DATUM[' in wkt:
- # FIXME ??
- print('Skipping %s. Should be a CompoundCRS' % (esri_name))
- sql = """-- Skipping %s. Should be a CompoundCRS""" % (
- esri_name)
- all_sql.append(sql)
- continue
-
pos = wkt.find('VDATUM["')
- assert pos >= 0
- pos += len('VDATUM["')
- end_pos = wkt[pos:].find('"')
- assert end_pos >= 0
- end_pos += pos
- datum_name = wkt[pos:end_pos]
+ is_vdatum = True
+ if pos > 0:
+ pos += len('VDATUM["')
+ end_pos = wkt[pos:].find('"')
+ assert end_pos >= 0
+ end_pos += pos
+ datum_name = wkt[pos:end_pos]
+ if datum_name not in map_vdatum_esri_name_to_auth_code:
+ print('Skipping vertcs %s. Cannot find vertical datum %s' % (
+ str(row), datum_name))
+ sql = """-- Skipping vertcs %s. Cannot find vertical datum %s""" % (
+ esri_name, datum_name)
+ all_sql.append(sql)
+ continue
+ datum_auth_name, datum_code = map_vdatum_esri_name_to_auth_code[datum_name]
+ else:
+ pos = wkt.find(',DATUM[')
+ assert pos > 0
+ pos += len(',DATUM["')
+ is_vdatum = False
+ end_pos = wkt[pos:].find('"')
+ assert end_pos >= 0
+ end_pos += pos
+ datum_name = wkt[pos:end_pos]
+ if datum_name not in map_datum_esri_name_to_auth_code:
+ print('Skipping vertcs %s. Cannot find geodetic datum %s' % (
+ str(row), datum_name))
+ sql = """-- Skipping vertcs %s. Cannot find geodetic datum %s""" % (
+ esri_name, datum_name)
+ all_sql.append(sql)
+ continue
+ datum_auth_name, datum_code = map_datum_esri_name_to_auth_code[datum_name]
assert 'PARAMETER["Vertical_Shift",0.0]' in wkt, row
- if datum_name not in map_vdatum_esri_name_to_auth_code:
- print('Skipping vertcs %s. it expresses an ellipsoidal height regarding a horizontal datum' % (
- str(row)))
- sql = """-- Skipping vertcs %s. it expresses an ellipsoidal height regarding a horizontal datum""" % (
- esri_name, datum_name)
- all_sql.append(sql)
- continue
-
- datum_auth_name, datum_code = map_vdatum_esri_name_to_auth_code[datum_name]
-
deprecated = 1 if row[idx_deprecated] == 'yes' else 0
extent_auth_name, extent_code = find_extent(
row[idx_areaname], row[idx_slat], row[idx_nlat], row[idx_llon], row[idx_rlon])
- if datum_auth_name == 'ESRI':
- if datum_code not in datum_written:
- datum_written.add(datum_code)
+ if not is_vdatum:
+ new_datum_code = 'from_geogdatum_' + datum_auth_name + '_' + datum_code
+ if new_datum_code not in vdatum_written:
+ vdatum_written.add(new_datum_code)
+
+ p = map_datum_esri_to_parameters[datum_code]
+
+ datum_code = new_datum_code
- p = map_vdatum_esri_to_parameters[datum_code]
sql = """INSERT INTO "vertical_datum" VALUES('ESRI','%s','%s',NULL,NULL,NULL,NULL,%d);""" % (
datum_code, p['esri_name'], p['deprecated'])
all_sql.append(sql)
sql = """INSERT INTO "usage" VALUES('ESRI', '%s_USAGE','vertical_datum','ESRI','%s','%s','%s','%s','%s');""" % (datum_code, datum_code, extent_auth_name, extent_code, 'EPSG', '1024')
all_sql.append(sql)
+ else:
+ datum_code = new_datum_code
+
+ datum_auth_name = 'ESRI'
+
+ elif datum_auth_name == 'ESRI':
+ assert datum_code not in vdatum_written
+
+ vdatum_written.add(datum_code)
+
+ p = map_vdatum_esri_to_parameters[datum_code]
+ sql = """INSERT INTO "vertical_datum" VALUES('ESRI','%s','%s',NULL,NULL,NULL,NULL,%d);""" % (
+ datum_code, p['esri_name'], p['deprecated'])
+ all_sql.append(sql)
+ sql = """INSERT INTO "usage" VALUES('ESRI', '%s_USAGE','vertical_datum','ESRI','%s','%s','%s','%s','%s');""" % (datum_code, datum_code, extent_auth_name, extent_code, 'EPSG', '1024')
+ all_sql.append(sql)
+
map_vertcs_esri_name_to_auth_code[esri_name] = ['ESRI', code]
+ cs_auth = 'EPSG'
if 'PARAMETER["Direction",1.0]' in wkt and 'UNIT["Meter"' in wkt:
cs_code = 6499
elif 'PARAMETER["Direction",1.0]' in wkt and 'UNIT["Foot"' in wkt:
@@ -1275,9 +1322,13 @@ def import_vertcs():
else:
assert False, ('unknown coordinate system for %s' %
str(row))
+ if not is_vdatum:
+ assert cs_code == 6499
+ cs_auth = 'ESRI'
+ cs_code = 'ELLPS_HEIGHT_METRE'
- sql = """INSERT INTO "vertical_crs" VALUES('ESRI','%s','%s',NULL,'EPSG','%s','%s','%s',%d);""" % (
- code, esri_name, cs_code, datum_auth_name, datum_code, deprecated)
+ sql = """INSERT INTO "vertical_crs" VALUES('ESRI','%s','%s',NULL,'%s','%s','%s','%s',%d);""" % (
+ code, esri_name, cs_auth, cs_code, datum_auth_name, datum_code, deprecated)
all_sql.append(sql)
sql = """INSERT INTO "usage" VALUES('ESRI', '%s_USAGE','vertical_crs','ESRI','%s','%s','%s','%s','%s');""" % (code, code, extent_auth_name, extent_code, 'EPSG', '1024')
all_sql.append(sql)
diff --git a/src/iso19111/crs.cpp b/src/iso19111/crs.cpp
index 52b10119..edc8a71f 100644
--- a/src/iso19111/crs.cpp
+++ b/src/iso19111/crs.cpp
@@ -1578,6 +1578,49 @@ GeodeticCRS::create(const util::PropertyMap &properties,
// ---------------------------------------------------------------------------
//! @cond Doxygen_Suppress
+
+// Try to format a Geographic/ProjectedCRS 3D CRS as a
+// GEOGCS[]/PROJCS[],VERTCS[...,DATUM[],...] if we find corresponding objects
+static bool exportAsESRIWktCompoundCRSWithEllipsoidalHeight(
+ const CRS *self, const GeodeticCRS *geodCRS, io::WKTFormatter *formatter) {
+ const auto &dbContext = formatter->databaseContext();
+ if (!dbContext) {
+ return false;
+ }
+ const auto l_datum = geodCRS->datumNonNull(formatter->databaseContext());
+ auto l_alias = dbContext->getAliasFromOfficialName(
+ l_datum->nameStr(), "geodetic_datum", "ESRI");
+ if (l_alias.empty()) {
+ return false;
+ }
+ auto authFactory =
+ io::AuthorityFactory::create(NN_NO_CHECK(dbContext), std::string());
+ auto list = authFactory->createObjectsFromName(
+ l_alias, {io::AuthorityFactory::ObjectType::GEODETIC_REFERENCE_FRAME},
+ false /* approximate=false*/);
+ if (list.empty()) {
+ return false;
+ }
+ auto gdatum = util::nn_dynamic_pointer_cast<datum::Datum>(list.front());
+ if (gdatum == nullptr || gdatum->identifiers().empty()) {
+ return false;
+ }
+ const auto &gdatum_ids = gdatum->identifiers();
+ auto vertCRSList = authFactory->createVerticalCRSFromDatum(
+ "ESRI", "from_geogdatum_" + *gdatum_ids[0]->codeSpace() + '_' +
+ gdatum_ids[0]->code());
+ if (vertCRSList.size() != 1) {
+ return false;
+ }
+ self->demoteTo2D(std::string(), dbContext)->_exportToWKT(formatter);
+ vertCRSList.front()->_exportToWKT(formatter);
+ return true;
+}
+//! @endcond
+
+// ---------------------------------------------------------------------------
+
+//! @cond Doxygen_Suppress
void GeodeticCRS::_exportToWKT(io::WKTFormatter *formatter) const {
const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2;
const bool isGeographic =
@@ -1589,11 +1632,21 @@ void GeodeticCRS::_exportToWKT(io::WKTFormatter *formatter) const {
auto l_name = nameStr();
const auto &dbContext = formatter->databaseContext();
- if (formatter->useESRIDialect()) {
- if (axisList.size() != 2) {
+ if (!isWKT2 && formatter->useESRIDialect() && axisList.size() == 3) {
+ if (!isGeographic) {
io::FormattingException::Throw(
- "Only export of Geographic 2D CRS is supported in WKT1_ESRI");
+ "Geocentric CRS not supported in WKT1_ESRI");
+ }
+ // Try to format the Geographic 3D CRS as a GEOGCS[],VERTCS[...,DATUM[]]
+ // if we find corresponding objects
+ if (dbContext) {
+ if (exportAsESRIWktCompoundCRSWithEllipsoidalHeight(this, this,
+ formatter)) {
+ return;
+ }
}
+ io::FormattingException::Throw(
+ "Cannot export this Geographic 3D CRS in WKT1_ESRI");
}
if (!isWKT2 && formatter->isStrict() && isGeographic &&
@@ -2853,9 +2906,9 @@ void VerticalCRS::_exportToWKT(io::WKTFormatter *formatter) const {
!identifiers().empty());
auto l_name = nameStr();
+ const auto &dbContext = formatter->databaseContext();
if (formatter->useESRIDialect()) {
bool aliasFound = false;
- const auto &dbContext = formatter->databaseContext();
if (dbContext) {
auto l_alias = dbContext->getAliasFromOfficialName(
l_name, "vertical_crs", "ESRI");
@@ -2870,7 +2923,34 @@ void VerticalCRS::_exportToWKT(io::WKTFormatter *formatter) const {
}
formatter->addQuotedString(l_name);
- exportDatumOrDatumEnsembleToWkt(formatter);
+
+ const auto l_datum = datum();
+ if (formatter->useESRIDialect() && l_datum &&
+ l_datum->getWKT1DatumType() == "2002") {
+ bool foundMatch = false;
+ if (dbContext) {
+ auto authFactory = io::AuthorityFactory::create(
+ NN_NO_CHECK(dbContext), std::string());
+ auto list = authFactory->createObjectsFromName(
+ l_datum->nameStr(),
+ {io::AuthorityFactory::ObjectType::GEODETIC_REFERENCE_FRAME},
+ false /* approximate=false*/);
+ if (!list.empty()) {
+ auto gdatum =
+ util::nn_dynamic_pointer_cast<datum::Datum>(list.front());
+ if (gdatum) {
+ gdatum->_exportToWKT(formatter);
+ foundMatch = true;
+ }
+ }
+ }
+ if (!foundMatch) {
+ // We should export a geodetic datum, but we cannot really do better
+ l_datum->_exportToWKT(formatter);
+ }
+ } else {
+ exportDatumOrDatumEnsembleToWkt(formatter);
+ }
const auto &cs = SingleCRS::getPrivate()->coordinateSystem;
const auto &axisList = cs->axisList();
@@ -3497,6 +3577,16 @@ void ProjectedCRS::_exportToWKT(io::WKTFormatter *formatter) const {
}
}
+ if (formatter->useESRIDialect() && dbContext) {
+ // Try to format the ProjecteD 3D CRS as a
+ // PROJCS[],VERTCS[...,DATUM[]]
+ // if we find corresponding objects
+ if (exportAsESRIWktCompoundCRSWithEllipsoidalHeight(
+ this, baseCRS().as_nullable().get(), formatter)) {
+ return;
+ }
+ }
+
if (!formatter->useESRIDialect() &&
CRS::getPrivate()->allowNonConformantWKT1Export_) {
formatter->startNode(io::WKTConstants::COMPD_CS, false);
@@ -4528,15 +4618,21 @@ CRSNNPtr CompoundCRS::createLax(const util::PropertyMap &properties,
//! @cond Doxygen_Suppress
void CompoundCRS::_exportToWKT(io::WKTFormatter *formatter) const {
const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2;
- formatter->startNode(isWKT2 ? io::WKTConstants::COMPOUNDCRS
- : io::WKTConstants::COMPD_CS,
- !identifiers().empty());
- formatter->addQuotedString(nameStr());
- for (const auto &crs : componentReferenceSystems()) {
- crs->_exportToWKT(formatter);
+ const auto &l_components = componentReferenceSystems();
+ if (!isWKT2 && formatter->useESRIDialect() && l_components.size() == 2) {
+ l_components[0]->_exportToWKT(formatter);
+ l_components[1]->_exportToWKT(formatter);
+ } else {
+ formatter->startNode(isWKT2 ? io::WKTConstants::COMPOUNDCRS
+ : io::WKTConstants::COMPD_CS,
+ !identifiers().empty());
+ formatter->addQuotedString(nameStr());
+ for (const auto &crs : l_components) {
+ crs->_exportToWKT(formatter);
+ }
+ ObjectUsage::baseExportToWKT(formatter);
+ formatter->endNode();
}
- ObjectUsage::baseExportToWKT(formatter);
- formatter->endNode();
}
//! @endcond
diff --git a/src/iso19111/factory.cpp b/src/iso19111/factory.cpp
index ef5c6e02..211eb586 100644
--- a/src/iso19111/factory.cpp
+++ b/src/iso19111/factory.cpp
@@ -2100,6 +2100,9 @@ AuthorityFactory::createVerticalDatum(const std::string &code) const {
if (!publication_date.empty()) {
props.set("PUBLICATION_DATE", publication_date);
}
+ if (d->authority() == "ESRI" && starts_with(code, "from_geogdatum_")) {
+ props.set("VERT_DATUM_TYPE", "2002");
+ }
auto anchor = util::optional<std::string>();
if (frame_reference_epoch.empty()) {
return datum::VerticalReferenceFrame::create(props, anchor);
@@ -5719,9 +5722,12 @@ AuthorityFactory::createObjectsFromNameEx(
"SELECT table_name, auth_name, code, name, deprecated, is_alias "
"FROM (");
- const auto getTableAndTypeConstraints = [&allowedObjectTypes]() {
+ const auto getTableAndTypeConstraints = [&allowedObjectTypes,
+ &searchedName]() {
typedef std::pair<std::string, std::string> TableType;
std::list<TableType> res;
+ // Hide ESRI D_ vertical datums
+ const bool startsWithDUnderscore = starts_with(searchedName, "D_");
if (allowedObjectTypes.empty()) {
for (const auto &tableName :
{"prime_meridian", "ellipsoid", "geodetic_datum",
@@ -5729,7 +5735,10 @@ AuthorityFactory::createObjectsFromNameEx(
"vertical_crs", "compound_crs", "conversion",
"helmert_transformation", "grid_transformation",
"other_transformation", "concatenated_operation"}) {
- res.emplace_back(TableType(tableName, std::string()));
+ if (!(startsWithDUnderscore &&
+ strcmp(tableName, "vertical_datum") == 0)) {
+ res.emplace_back(TableType(tableName, std::string()));
+ }
}
} else {
for (const auto type : allowedObjectTypes) {
@@ -5744,8 +5753,10 @@ AuthorityFactory::createObjectsFromNameEx(
case ObjectType::DATUM:
res.emplace_back(
TableType("geodetic_datum", std::string()));
- res.emplace_back(
- TableType("vertical_datum", std::string()));
+ if (!startsWithDUnderscore) {
+ res.emplace_back(
+ TableType("vertical_datum", std::string()));
+ }
break;
case ObjectType::GEODETIC_REFERENCE_FRAME:
res.emplace_back(
diff --git a/src/iso19111/io.cpp b/src/iso19111/io.cpp
index 0f4ffba0..b8e835d7 100644
--- a/src/iso19111/io.cpp
+++ b/src/iso19111/io.cpp
@@ -4145,11 +4145,19 @@ createBoundCRSSourceTransformationCRS(const crs::CRSPtr &sourceCRS,
CRSNNPtr WKTParser::Private::buildVerticalCRS(const WKTNodeNNPtr &node) {
const auto *nodeP = node->GP();
- auto &datumNode =
+ const auto &nodeValue = nodeP->value();
+ auto &vdatumNode =
nodeP->lookForChild(WKTConstants::VDATUM, WKTConstants::VERT_DATUM,
WKTConstants::VERTICALDATUM, WKTConstants::VRF);
auto &ensembleNode = nodeP->lookForChild(WKTConstants::ENSEMBLE);
- if (isNull(datumNode) && isNull(ensembleNode)) {
+ // like in ESRI VERTCS["WGS_1984",DATUM["D_WGS_1984",
+ // SPHEROID["WGS_1984",6378137.0,298.257223563]],
+ // PARAMETER["Vertical_Shift",0.0],
+ // PARAMETER["Direction",1.0],UNIT["Meter",1.0]
+ auto &geogDatumNode = ci_equal(nodeValue, WKTConstants::VERTCS)
+ ? nodeP->lookForChild(WKTConstants::DATUM)
+ : null_node;
+ if (isNull(vdatumNode) && isNull(geogDatumNode) && isNull(ensembleNode)) {
throw ParsingException("Missing VDATUM or ENSEMBLE node");
}
@@ -4164,28 +4172,50 @@ CRSNNPtr WKTParser::Private::buildVerticalCRS(const WKTNodeNNPtr &node) {
}
auto &dynamicNode = nodeP->lookForChild(WKTConstants::DYNAMIC);
- auto datum =
- !isNull(datumNode)
- ? buildVerticalReferenceFrame(datumNode, dynamicNode).as_nullable()
- : nullptr;
+ auto vdatum =
+ !isNull(geogDatumNode)
+ ? VerticalReferenceFrame::create(
+ PropertyMap()
+ .set(IdentifiedObject::NAME_KEY,
+ buildGeodeticReferenceFrame(geogDatumNode,
+ PrimeMeridian::GREENWICH,
+ null_node)
+ ->nameStr())
+ .set("VERT_DATUM_TYPE", "2002"))
+ .as_nullable()
+ : !isNull(vdatumNode)
+ ? buildVerticalReferenceFrame(vdatumNode, dynamicNode)
+ .as_nullable()
+ : nullptr;
auto datumEnsemble =
!isNull(ensembleNode)
? buildDatumEnsemble(ensembleNode, nullptr, false).as_nullable()
: nullptr;
auto &csNode = nodeP->lookForChild(WKTConstants::CS_);
- const auto &nodeValue = nodeP->value();
if (isNull(csNode) && !ci_equal(nodeValue, WKTConstants::VERT_CS) &&
!ci_equal(nodeValue, WKTConstants::VERTCS) &&
!ci_equal(nodeValue, WKTConstants::BASEVERTCRS)) {
ThrowMissing(WKTConstants::CS_);
}
- auto cs = buildCS(csNode, node, UnitOfMeasure::NONE);
- auto verticalCS = nn_dynamic_pointer_cast<VerticalCS>(cs);
+ auto verticalCS = nn_dynamic_pointer_cast<VerticalCS>(
+ buildCS(csNode, node, UnitOfMeasure::NONE));
if (!verticalCS) {
ThrowNotExpectedCSType("vertical");
}
+ if (vdatum && vdatum->getWKT1DatumType() == "2002" &&
+ &(verticalCS->axisList()[0]->direction()) == &(AxisDirection::UP)) {
+ verticalCS =
+ VerticalCS::create(
+ util::PropertyMap(),
+ CoordinateSystemAxis::create(
+ util::PropertyMap().set(IdentifiedObject::NAME_KEY,
+ "ellipsoidal height"),
+ "h", AxisDirection::UP, verticalCS->axisList()[0]->unit()))
+ .as_nullable();
+ }
+
auto &props = buildProperties(node);
if (esriStyle_ && dbContext_) {
@@ -4246,10 +4276,10 @@ CRSNNPtr WKTParser::Private::buildVerticalCRS(const WKTNodeNNPtr &node) {
"North American Vertical Datum 1988");
propsDatum.set(Identifier::CODE_KEY, 5103);
propsDatum.set(Identifier::CODESPACE_KEY, Identifier::EPSG);
- datum =
+ vdatum =
VerticalReferenceFrame::create(propsDatum).as_nullable();
const auto dummyCRS =
- VerticalCRS::create(PropertyMap(), datum, datumEnsemble,
+ VerticalCRS::create(PropertyMap(), vdatum, datumEnsemble,
NN_NO_CHECK(verticalCS));
const auto model(Transformation::create(
propsModel, dummyCRS, dummyCRS, nullptr,
@@ -4265,7 +4295,7 @@ CRSNNPtr WKTParser::Private::buildVerticalCRS(const WKTNodeNNPtr &node) {
if (!isNull(geoidModelNode)) {
auto &propsModel = buildProperties(geoidModelNode);
const auto dummyCRS = VerticalCRS::create(
- PropertyMap(), datum, datumEnsemble, NN_NO_CHECK(verticalCS));
+ PropertyMap(), vdatum, datumEnsemble, NN_NO_CHECK(verticalCS));
const auto model(Transformation::create(
propsModel, dummyCRS, dummyCRS, nullptr,
OperationMethod::create(PropertyMap(),
@@ -4275,10 +4305,10 @@ CRSNNPtr WKTParser::Private::buildVerticalCRS(const WKTNodeNNPtr &node) {
}
auto crs = nn_static_pointer_cast<CRS>(VerticalCRS::create(
- props, datum, datumEnsemble, NN_NO_CHECK(verticalCS)));
+ props, vdatum, datumEnsemble, NN_NO_CHECK(verticalCS)));
- if (!isNull(datumNode)) {
- auto &extensionNode = datumNode->lookForChild(WKTConstants::EXTENSION);
+ if (!isNull(vdatumNode)) {
+ auto &extensionNode = vdatumNode->lookForChild(WKTConstants::EXTENSION);
const auto &extensionChildren = extensionNode->GP()->children();
if (extensionChildren.size() == 2) {
if (ci_equal(stripQuotes(extensionChildren[0]), "PROJ4_GRIDS")) {
@@ -6507,6 +6537,34 @@ BaseObjectNNPtr WKTParser::createFromWKT(const std::string &wkt) {
}
return d->buildGeodeticReferenceFrame(root, primeMeridian,
null_node);
+ } else if (ci_equal(name, WKTConstants::GEOGCS) ||
+ ci_equal(name, WKTConstants::PROJCS)) {
+ // Parse implicit compoundCRS from ESRI that is
+ // "PROJCS[...],VERTCS[...]" or "GEOGCS[...],VERTCS[...]"
+ if (indexEnd < wkt.size()) {
+ indexEnd = skipSpace(wkt, indexEnd);
+ if (indexEnd < wkt.size() && wkt[indexEnd] == ',') {
+ ++indexEnd;
+ indexEnd = skipSpace(wkt, indexEnd);
+ if (indexEnd < wkt.size() &&
+ ci_starts_with(wkt.c_str() + indexEnd,
+ WKTConstants::VERTCS.c_str())) {
+ auto horizCRS = d->buildCRS(root);
+ if (horizCRS) {
+ auto vertCRS =
+ d->buildVerticalCRS(WKTNode::createFrom(
+ wkt, indexEnd, 0, indexEnd));
+ return CompoundCRS::createLax(
+ util::PropertyMap().set(
+ IdentifiedObject::NAME_KEY,
+ horizCRS->nameStr() + " + " +
+ vertCRS->nameStr()),
+ {NN_NO_CHECK(horizCRS), vertCRS},
+ d->dbContext_);
+ }
+ }
+ }
+ }
}
return d->build(root);
};
diff --git a/src/wkt1_generated_parser.c b/src/wkt1_generated_parser.c
index 2785ec9f..0bcffe31 100644
--- a/src/wkt1_generated_parser.c
+++ b/src/wkt1_generated_parser.c
@@ -422,18 +422,18 @@ union yyalloc
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 30
+#define YYFINAL 32
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 222
+#define YYLAST 230
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 36
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 67
+#define YYNNTS 70
/* YYNRULES -- Number of rules. */
-#define YYNRULES 101
+#define YYNRULES 107
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 267
+#define YYNSTATES 274
/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
by yylex, with out-of-bounds checking. */
@@ -484,15 +484,15 @@ static const yytype_uint16 yyrline[] =
{
0, 80, 80, 92, 92, 95, 98, 98, 101, 101,
101, 101, 104, 107, 109, 110, 113, 115, 116, 119,
- 122, 126, 131, 131, 131, 131, 131, 131, 134, 134,
- 138, 142, 143, 146, 147, 149, 150, 151, 152, 154,
- 155, 158, 161, 164, 168, 170, 171, 172, 173, 176,
- 180, 183, 186, 189, 192, 195, 198, 201, 204, 207,
- 208, 209, 210, 213, 216, 219, 220, 222, 223, 224,
- 227, 230, 232, 233, 234, 237, 240, 243, 246, 248,
- 251, 256, 259, 261, 264, 267, 270, 273, 276, 279,
- 282, 285, 288, 291, 294, 297, 300, 302, 304, 305,
- 306, 309
+ 122, 126, 131, 131, 131, 131, 131, 131, 134, 135,
+ 138, 138, 142, 146, 147, 150, 151, 153, 154, 155,
+ 156, 158, 159, 162, 165, 168, 172, 174, 175, 176,
+ 177, 180, 184, 187, 190, 193, 196, 199, 202, 205,
+ 208, 211, 212, 213, 214, 217, 220, 223, 224, 227,
+ 229, 230, 231, 234, 236, 236, 239, 241, 242, 243,
+ 246, 249, 252, 257, 257, 259, 262, 267, 270, 272,
+ 275, 278, 281, 284, 287, 290, 293, 296, 299, 302,
+ 305, 308, 311, 313, 315, 316, 317, 320
};
#endif
@@ -512,20 +512,20 @@ static const char *const yytname[] =
"begin_node", "begin_node_name", "end_node", "math_transform",
"param_mt", "parameter", "opt_parameter_list", "concat_mt",
"opt_math_transform_list", "inv_mt", "passthrough_mt", "integer",
- "coordinate_system", "horz_cs", "projected_cs",
- "opt_parameter_list_linear_unit", "parameter_list_linear_unit",
- "opt_twin_axis_extension_authority", "opt_authority", "extension",
- "projection", "geographic_cs", "datum",
+ "coordinate_system", "horz_cs_with_opt_esri_vertcs", "horz_cs",
+ "projected_cs", "opt_parameter_list_linear_unit",
+ "parameter_list_linear_unit", "opt_twin_axis_extension_authority",
+ "opt_authority", "extension", "projection", "geographic_cs", "datum",
"opt_towgs84_authority_extension", "spheroid", "semi_major_axis",
"inverse_flattening", "prime_meridian", "longitude", "angular_unit",
"linear_unit", "unit", "conversion_factor", "geocentric_cs",
"opt_three_axis_extension_authority", "three_axis", "authority",
- "vert_cs", "opt_axis_authority", "vert_datum", "vdatum",
- "opt_extension_authority", "datum_type", "compd_cs", "head_cs",
- "tail_cs", "twin_axis", "axis", "towgs84", "towgs84_parameters",
- "three_parameters", "seven_parameters", "dx", "dy", "dz", "ex", "ey",
- "ez", "ppm", "fitted_cs", "to_base", "base_cs", "local_cs",
- "opt_axis_list_authority", "local_datum", YY_NULLPTR
+ "vert_cs", "esri_vert_cs", "opt_axis_authority", "vert_datum",
+ "vdatum_or_datum", "vdatum", "opt_extension_authority", "datum_type",
+ "compd_cs", "head_cs", "tail_cs", "twin_axis", "axis", "towgs84",
+ "towgs84_parameters", "three_parameters", "seven_parameters", "dx", "dy",
+ "dz", "ex", "ey", "ez", "ppm", "fitted_cs", "to_base", "base_cs",
+ "local_cs", "opt_axis_list_authority", "local_datum", YY_NULLPTR
};
#endif
@@ -541,10 +541,10 @@ static const yytype_uint16 yytoknum[] =
};
# endif
-#define YYPACT_NINF -127
+#define YYPACT_NINF -141
#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-127)))
+ (!!((Yystate) == (-141)))
#define YYTABLE_NINF -1
@@ -555,33 +555,34 @@ static const yytype_uint16 yytoknum[] =
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 125, 1, 1, 1, 1, 1, 1, 1, 1, 25,
- -127, -127, -127, -127, -127, -127, -127, -127, -127, -127,
- -127, 8, 9, 18, 28, 37, 46, 50, 51, 43,
- -127, -127, 61, 77, 77, 71, 74, 125, 132, -127,
- -127, 65, -127, 60, 1, 64, 66, 1, 67, 1,
- 69, -127, 70, 1, 1, 1, 1, -127, -127, -127,
- -127, -127, 72, 1, 76, 88, 83, 97, 97, 85,
- 99, 33, -7, 125, 86, 132, 132, 95, 125, 90,
- 99, 1, 91, 118, 1, 96, 108, 101, 1, 109,
- -127, -127, 1, 112, 33, -127, -127, -127, 115, 126,
- 33, 116, 33, -127, 119, -127, 33, 101, 120, 121,
- -7, 1, 122, 123, 99, 99, -127, 115, 124, -3,
- 33, 130, -7, -127, 0, 33, 86, -127, 132, 33,
- -127, 132, -127, 121, 139, 146, 33, 131, 133, -1,
- 33, 138, 131, -127, 134, 33, 141, 1, 1, -127,
- 121, -127, 142, -127, -127, 1, 121, -127, -127, -127,
- 116, -127, 33, 33, 137, -127, -127, 7, 33, 144,
- 1, 121, -127, 115, -127, -127, 121, 33, 7, 33,
- -127, -127, 121, 143, 145, -127, 33, 149, -127, -127,
- -127, -127, -3, 33, 121, -127, 115, 150, -127, -127,
- 151, 147, -127, -127, 33, -127, 121, 115, -127, 152,
- -127, 33, 153, 158, -127, 161, -127, 137, -127, -127,
- -127, 139, 148, -127, 33, -127, -127, 156, -127, -127,
- -127, 139, -127, 33, 33, 33, -127, -127, -127, 121,
- -127, 163, 159, -127, -127, -127, 33, -127, 160, 139,
- -127, 164, -127, -127, 162, 167, -127, 165, 169, -127,
- 166, 170, -127, 168, 173, -127, -127
+ 119, 41, 41, 41, 41, 41, 41, 41, 41, 31,
+ -141, -141, 6, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, 16, 32, 34, 42, 55, 68, 69,
+ 70, 23, -141, 37, -141, 99, 101, 101, 95, 19,
+ 4, 141, -141, -141, 89, -141, -141, 80, 41, 82,
+ 85, 41, 86, 41, -141, 87, -141, -141, 90, 41,
+ 41, 41, 41, -141, -141, -141, -141, -141, 92, 41,
+ 94, 123, 97, 125, 125, 103, 127, 63, -4, 30,
+ 113, 141, 141, 120, 119, 115, 127, 41, 116, 142,
+ 41, 117, 121, 126, 41, 124, -141, -141, 41, 133,
+ 63, -141, -141, -141, -141, 134, 132, 63, 135, 63,
+ -141, 136, -141, 63, 126, 137, 138, -4, 41, 140,
+ 143, 127, 127, -141, 134, 144, 28, 63, 145, -4,
+ -141, -3, 63, 113, -141, 141, 63, -141, 141, -141,
+ 138, 139, 146, 63, 147, 148, 13, 63, 152, 147,
+ -141, 149, 63, 156, 41, 41, -141, 138, -141, 157,
+ -141, -141, 41, 138, -141, -141, -141, 135, -141, 63,
+ 63, 153, -141, -141, 61, 63, 158, 41, 138, -141,
+ 134, -141, -141, 138, 63, 61, 63, -141, -141, 138,
+ 154, 155, -141, 63, 159, -141, -141, -141, -141, 28,
+ 63, 138, -141, 134, 160, -141, -141, 161, 162, -141,
+ -141, 63, -141, 138, 134, -141, 163, -141, 63, 164,
+ 167, -141, 165, -141, 153, -141, -141, -141, 139, 170,
+ -141, 63, -141, -141, 166, -141, -141, -141, 139, -141,
+ 63, 63, 63, -141, -141, -141, 138, -141, 171, 168,
+ -141, -141, -141, 63, -141, 169, 139, -141, 173, -141,
+ -141, 172, 176, -141, 174, 177, -141, 175, 179, -141,
+ 178, 182, -141, -141
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -590,56 +591,57 @@ static const yytype_int16 yypact[] =
static const yytype_uint8 yydefact[] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2, 22, 29, 28, 23, 24, 25, 26, 27, 3,
- 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 5, 0, 0, 0, 0, 0, 0, 0, 6,
- 7, 0, 97, 0, 0, 0, 0, 0, 0, 0,
- 0, 77, 0, 0, 0, 0, 0, 94, 8, 9,
- 10, 11, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 14, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
- 55, 71, 0, 0, 0, 32, 31, 78, 72, 0,
- 0, 17, 0, 21, 0, 95, 0, 0, 0, 39,
- 0, 0, 45, 0, 0, 0, 75, 72, 0, 0,
- 0, 0, 0, 66, 0, 0, 14, 12, 0, 0,
- 19, 0, 93, 39, 0, 0, 0, 35, 0, 0,
- 0, 0, 35, 54, 59, 0, 0, 0, 0, 69,
- 39, 65, 0, 33, 34, 0, 39, 74, 76, 15,
- 17, 16, 0, 0, 98, 40, 42, 0, 0, 0,
- 0, 39, 48, 72, 44, 53, 39, 0, 0, 0,
- 70, 57, 39, 0, 0, 68, 0, 0, 73, 18,
- 20, 101, 0, 0, 39, 38, 72, 0, 30, 50,
- 0, 0, 47, 46, 0, 43, 39, 72, 62, 0,
- 58, 0, 0, 0, 13, 0, 99, 98, 96, 37,
- 36, 0, 0, 86, 0, 83, 82, 0, 52, 61,
- 60, 0, 56, 0, 0, 0, 100, 79, 51, 39,
- 81, 0, 0, 64, 80, 41, 0, 87, 0, 0,
- 49, 0, 63, 88, 84, 0, 89, 0, 0, 90,
- 0, 0, 91, 0, 0, 92, 85
+ 2, 22, 28, 31, 30, 23, 24, 68, 25, 26,
+ 27, 3, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 0, 5, 0, 0, 0, 0, 0,
+ 0, 0, 6, 7, 0, 103, 29, 0, 0, 0,
+ 0, 0, 0, 0, 75, 0, 74, 82, 0, 0,
+ 0, 0, 0, 100, 8, 9, 10, 11, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 70, 57, 76, 0, 0,
+ 0, 34, 33, 83, 84, 77, 0, 0, 17, 0,
+ 21, 0, 101, 0, 0, 0, 41, 0, 0, 47,
+ 0, 0, 0, 80, 77, 0, 0, 0, 0, 0,
+ 69, 0, 0, 14, 12, 0, 0, 19, 0, 99,
+ 41, 0, 0, 0, 37, 0, 0, 0, 0, 37,
+ 56, 61, 0, 0, 0, 0, 72, 41, 67, 0,
+ 35, 36, 0, 41, 79, 81, 15, 17, 16, 0,
+ 0, 104, 42, 44, 0, 0, 0, 0, 41, 50,
+ 77, 46, 55, 41, 0, 0, 0, 73, 59, 41,
+ 0, 0, 71, 0, 0, 78, 18, 20, 107, 0,
+ 0, 41, 40, 77, 0, 32, 52, 0, 0, 49,
+ 48, 0, 45, 41, 77, 64, 0, 60, 0, 0,
+ 0, 13, 0, 105, 104, 102, 39, 38, 0, 0,
+ 92, 0, 89, 88, 0, 54, 63, 62, 0, 58,
+ 0, 0, 0, 106, 85, 53, 41, 87, 0, 0,
+ 66, 86, 43, 0, 93, 0, 0, 51, 0, 65,
+ 94, 90, 0, 95, 0, 0, 96, 0, 0, 97,
+ 0, 0, 98, 91
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -127, -127, -53, 35, -71, -67, -127, 75, 53, -127,
- 44, -127, -127, -127, -26, -127, -127, 98, 84, 63,
- -126, -64, -127, 175, 176, -127, -127, -127, -127, 154,
- -127, -127, -60, -63, -127, -127, -127, -127, -119, -127,
- -127, -127, -127, -113, 102, -127, -127, -127, -127, -121,
- -127, -127, -127, -127, -127, -127, -127, -127, -127, -127,
- -127, -127, -127, -127, -127, -6, -127
+ -141, -141, -59, 12, -77, -55, -141, 56, 44, -141,
+ 45, -141, -141, -141, 130, -141, 180, -141, 98, 88,
+ 67, -89, -140, -141, -27, 48, -141, -141, -141, -141,
+ 150, -141, -141, -43, -79, -141, -141, -141, -141, -121,
+ 151, 185, -141, -141, -141, -141, -119, 105, -141, -141,
+ -141, -141, -137, -141, -141, -141, -141, -141, -141, -141,
+ -141, -141, -141, -141, -141, -141, -141, -141, -2, -141
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 9, 21, 22, 42, 57, 58, 93, 100, 59,
- 129, 60, 61, 104, 10, 11, 12, 94, 95, 168,
- 136, 156, 82, 13, 45, 140, 112, 200, 239, 85,
- 176, 142, 96, 90, 182, 14, 179, 207, 149, 15,
- 120, 48, 50, 125, 117, 16, 52, 98, 196, 150,
- 173, 224, 225, 226, 227, 248, 254, 257, 260, 263,
- 266, 17, 62, 106, 18, 193, 64
+ -1, 9, 23, 24, 45, 63, 64, 99, 107, 65,
+ 136, 66, 67, 111, 10, 11, 12, 13, 100, 101,
+ 175, 143, 163, 88, 14, 49, 147, 119, 207, 246,
+ 91, 183, 149, 102, 96, 189, 15, 186, 214, 156,
+ 16, 17, 127, 52, 55, 56, 132, 124, 18, 58,
+ 105, 203, 157, 180, 231, 232, 233, 234, 255, 261,
+ 264, 267, 270, 273, 19, 68, 113, 20, 200, 70
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -647,56 +649,58 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_uint16 yytable[] =
{
- 91, 75, 76, 77, 145, 157, 88, 163, 101, 102,
- 89, 51, 147, 164, 147, 147, 165, 108, 148, 92,
- 172, 170, 147, 123, 185, 30, 155, 155, 148, 127,
- 188, 130, 19, 20, 155, 132, 31, 23, 24, 25,
- 26, 27, 28, 29, 32, 202, 197, 97, 195, 151,
- 204, 143, 105, 33, 158, 144, 211, 209, 161, 208,
- 203, 160, 154, 34, 162, 166, 39, 40, 219, 174,
- 2, 217, 35, 216, 180, 171, 39, 40, 41, 66,
- 229, 36, 69, 220, 71, 37, 38, 44, 74, 47,
- 63, 190, 191, 49, 230, 65, 81, 198, 79, 67,
- 237, 68, 70, 194, 72, 73, 205, 78, 210, 84,
- 242, 80, 88, 246, 206, 214, 109, 201, 83, 113,
- 87, 99, 218, 118, 103, 107, 110, 121, 252, 111,
- 116, 114, 1, 228, 2, 53, 54, 55, 56, 3,
- 232, 4, 5, 115, 119, 6, 138, 122, 7, 8,
- 124, 128, 92, 240, 131, 134, 135, 139, 141, 146,
- 148, 147, 243, 244, 245, 152, 167, 175, 169, 178,
- 181, 186, 192, 199, 126, 250, 223, 238, 212, 159,
- 213, 233, 183, 184, 215, 221, 222, 231, 234, 235,
- 187, 241, 247, 253, 249, 251, 256, 255, 259, 262,
- 258, 261, 265, 264, 189, 177, 153, 43, 137, 133,
- 46, 236, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 86
+ 97, 81, 82, 83, 171, 152, 178, 115, 47, 94,
+ 164, 1, 154, 2, 25, 26, 27, 28, 29, 30,
+ 31, 172, 98, 130, 162, 179, 108, 109, 154, 48,
+ 134, 32, 137, 95, 201, 177, 139, 204, 53, 2,
+ 162, 33, 150, 154, 34, 213, 4, 5, 216, 155,
+ 158, 170, 103, 202, 5, 165, 42, 43, 44, 168,
+ 72, 210, 224, 75, 215, 77, 173, 35, 192, 36,
+ 181, 80, 21, 22, 195, 187, 154, 37, 223, 151,
+ 167, 85, 155, 169, 227, 50, 161, 54, 162, 209,
+ 38, 244, 197, 198, 211, 237, 42, 43, 205, 116,
+ 218, 249, 120, 39, 40, 41, 125, 212, 2, 217,
+ 128, 48, 226, 51, 69, 71, 221, 73, 208, 259,
+ 74, 76, 78, 225, 236, 79, 1, 84, 2, 86,
+ 145, 87, 89, 3, 235, 4, 5, 90, 93, 6,
+ 94, 239, 7, 8, 59, 60, 61, 62, 106, 110,
+ 114, 117, 121, 118, 247, 123, 122, 253, 98, 126,
+ 155, 154, 133, 250, 251, 252, 190, 191, 129, 131,
+ 135, 138, 141, 142, 194, 146, 257, 166, 148, 153,
+ 159, 182, 174, 176, 185, 188, 193, 206, 199, 219,
+ 220, 230, 240, 242, 222, 228, 229, 241, 238, 245,
+ 254, 248, 260, 256, 258, 263, 266, 262, 269, 265,
+ 268, 272, 196, 271, 112, 144, 184, 160, 46, 140,
+ 57, 0, 243, 0, 92, 0, 0, 0, 0, 0,
+ 104
};
static const yytype_int16 yycheck[] =
{
- 71, 54, 55, 56, 117, 124, 13, 133, 75, 76,
- 70, 37, 15, 134, 15, 15, 135, 80, 21, 26,
- 139, 22, 15, 94, 150, 0, 27, 27, 21, 100,
- 156, 102, 31, 32, 27, 106, 28, 2, 3, 4,
- 5, 6, 7, 8, 35, 171, 167, 73, 167, 120,
- 176, 114, 78, 35, 125, 115, 182, 178, 129, 178,
- 173, 128, 122, 35, 131, 136, 33, 34, 194, 140,
- 9, 192, 35, 192, 145, 139, 33, 34, 35, 44,
- 206, 35, 47, 196, 49, 35, 35, 10, 53, 18,
- 25, 162, 163, 19, 207, 35, 8, 168, 63, 35,
- 221, 35, 35, 167, 35, 35, 177, 35, 179, 12,
- 231, 35, 13, 239, 178, 186, 81, 170, 35, 84,
- 35, 35, 193, 88, 29, 35, 35, 92, 249, 11,
- 29, 35, 7, 204, 9, 3, 4, 5, 6, 14,
- 211, 16, 17, 35, 35, 20, 111, 35, 23, 24,
- 35, 35, 26, 224, 35, 35, 35, 35, 35, 35,
- 21, 15, 233, 234, 235, 35, 35, 29, 35, 35,
- 29, 29, 35, 29, 99, 246, 29, 29, 35, 126,
- 35, 28, 147, 148, 35, 35, 35, 35, 30, 28,
- 155, 35, 29, 29, 35, 35, 29, 35, 29, 29,
- 35, 35, 29, 35, 160, 142, 122, 32, 110, 107,
- 34, 217, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 68
+ 77, 60, 61, 62, 141, 124, 146, 86, 35, 13,
+ 131, 7, 15, 9, 2, 3, 4, 5, 6, 7,
+ 8, 142, 26, 100, 27, 146, 81, 82, 15, 10,
+ 107, 0, 109, 76, 174, 22, 113, 174, 19, 9,
+ 27, 35, 121, 15, 28, 185, 16, 17, 185, 21,
+ 127, 140, 79, 174, 17, 132, 33, 34, 35, 136,
+ 48, 180, 199, 51, 185, 53, 143, 35, 157, 35,
+ 147, 59, 31, 32, 163, 152, 15, 35, 199, 122,
+ 135, 69, 21, 138, 203, 37, 129, 39, 27, 178,
+ 35, 228, 169, 170, 183, 214, 33, 34, 175, 87,
+ 189, 238, 90, 35, 35, 35, 94, 184, 9, 186,
+ 98, 10, 201, 18, 25, 35, 193, 35, 177, 256,
+ 35, 35, 35, 200, 213, 35, 7, 35, 9, 35,
+ 118, 8, 35, 14, 211, 16, 17, 12, 35, 20,
+ 13, 218, 23, 24, 3, 4, 5, 6, 35, 29,
+ 35, 35, 35, 11, 231, 29, 35, 246, 26, 35,
+ 21, 15, 106, 240, 241, 242, 154, 155, 35, 35,
+ 35, 35, 35, 35, 162, 35, 253, 133, 35, 35,
+ 35, 29, 35, 35, 35, 29, 29, 29, 35, 35,
+ 35, 29, 28, 28, 35, 35, 35, 30, 35, 29,
+ 29, 35, 29, 35, 35, 29, 29, 35, 29, 35,
+ 35, 29, 167, 35, 84, 117, 149, 129, 33, 114,
+ 40, -1, 224, -1, 74, -1, -1, -1, -1, -1,
+ 79
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -704,32 +708,33 @@ static const yytype_int16 yycheck[] =
static const yytype_uint8 yystos[] =
{
0, 7, 9, 14, 16, 17, 20, 23, 24, 37,
- 50, 51, 52, 59, 71, 75, 81, 97, 100, 31,
- 32, 38, 39, 39, 39, 39, 39, 39, 39, 39,
- 0, 28, 35, 35, 35, 35, 35, 35, 35, 33,
- 34, 35, 40, 59, 10, 60, 60, 18, 77, 19,
- 78, 50, 82, 3, 4, 5, 6, 41, 42, 45,
- 47, 48, 98, 25, 102, 35, 39, 35, 35, 39,
- 35, 39, 35, 35, 39, 38, 38, 38, 35, 39,
- 35, 8, 58, 35, 12, 65, 65, 35, 13, 68,
- 69, 40, 26, 43, 53, 54, 68, 50, 83, 35,
- 44, 41, 41, 29, 49, 50, 99, 35, 69, 39,
- 35, 11, 62, 39, 35, 35, 29, 80, 39, 35,
- 76, 39, 35, 40, 35, 79, 43, 40, 35, 46,
- 40, 35, 40, 80, 35, 35, 56, 53, 39, 35,
- 61, 35, 67, 69, 68, 79, 35, 15, 21, 74,
- 85, 40, 35, 54, 68, 27, 57, 74, 40, 44,
- 41, 40, 41, 56, 85, 74, 40, 35, 55, 35,
- 22, 57, 74, 86, 40, 29, 66, 55, 35, 72,
- 40, 29, 70, 39, 39, 56, 29, 39, 56, 46,
- 40, 40, 35, 101, 57, 74, 84, 85, 40, 29,
- 63, 38, 56, 79, 56, 40, 57, 73, 74, 85,
- 40, 56, 35, 35, 40, 35, 74, 85, 40, 56,
- 79, 35, 35, 29, 87, 88, 89, 90, 40, 56,
- 79, 35, 40, 28, 30, 28, 101, 85, 29, 64,
- 40, 35, 85, 40, 40, 40, 56, 29, 91, 35,
- 40, 35, 85, 29, 92, 35, 29, 93, 35, 29,
- 94, 35, 29, 95, 35, 29, 96
+ 50, 51, 52, 53, 60, 72, 76, 77, 84, 100,
+ 103, 31, 32, 38, 39, 39, 39, 39, 39, 39,
+ 39, 39, 0, 35, 28, 35, 35, 35, 35, 35,
+ 35, 35, 33, 34, 35, 40, 77, 60, 10, 61,
+ 61, 18, 79, 19, 61, 80, 81, 52, 85, 3,
+ 4, 5, 6, 41, 42, 45, 47, 48, 101, 25,
+ 105, 35, 39, 35, 35, 39, 35, 39, 35, 35,
+ 39, 38, 38, 38, 35, 39, 35, 8, 59, 35,
+ 12, 66, 66, 35, 13, 69, 70, 40, 26, 43,
+ 54, 55, 69, 60, 76, 86, 35, 44, 41, 41,
+ 29, 49, 50, 102, 35, 70, 39, 35, 11, 63,
+ 39, 35, 35, 29, 83, 39, 35, 78, 39, 35,
+ 40, 35, 82, 43, 40, 35, 46, 40, 35, 40,
+ 83, 35, 35, 57, 54, 39, 35, 62, 35, 68,
+ 70, 69, 82, 35, 15, 21, 75, 88, 40, 35,
+ 55, 69, 27, 58, 75, 40, 44, 41, 40, 41,
+ 57, 88, 75, 40, 35, 56, 35, 22, 58, 75,
+ 89, 40, 29, 67, 56, 35, 73, 40, 29, 71,
+ 39, 39, 57, 29, 39, 57, 46, 40, 40, 35,
+ 104, 58, 75, 87, 88, 40, 29, 64, 38, 57,
+ 82, 57, 40, 58, 74, 75, 88, 40, 57, 35,
+ 35, 40, 35, 75, 88, 40, 57, 82, 35, 35,
+ 29, 90, 91, 92, 93, 40, 57, 82, 35, 40,
+ 28, 30, 28, 104, 88, 29, 65, 40, 35, 88,
+ 40, 40, 40, 57, 29, 94, 35, 40, 35, 88,
+ 29, 95, 35, 29, 96, 35, 29, 97, 35, 29,
+ 98, 35, 29, 99
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
@@ -738,14 +743,14 @@ static const yytype_uint8 yyr1[] =
0, 36, 37, 38, 38, 39, 40, 40, 41, 41,
41, 41, 42, 43, 44, 44, 45, 46, 46, 47,
48, 49, 50, 50, 50, 50, 50, 50, 51, 51,
- 52, 53, 53, 54, 54, 55, 55, 55, 55, 56,
- 56, 57, 58, 59, 60, 61, 61, 61, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 72, 72, 72, 73, 74, 75, 75, 76, 76, 76,
- 77, 78, 79, 79, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 100, 101, 101,
- 101, 102
+ 52, 52, 53, 54, 54, 55, 55, 56, 56, 56,
+ 56, 57, 57, 58, 59, 60, 61, 62, 62, 62,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 73, 73, 73, 74, 75, 76, 76, 77,
+ 78, 78, 78, 79, 80, 80, 81, 82, 82, 82,
+ 83, 84, 85, 86, 86, 87, 88, 89, 90, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 103, 104, 104, 104, 105
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
@@ -753,15 +758,15 @@ static const yytype_uint8 yyr2[] =
{
0, 2, 1, 1, 1, 2, 1, 1, 1, 1,
1, 1, 4, 5, 0, 3, 5, 0, 3, 4,
- 6, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 10, 1, 1, 3, 3, 0, 3, 3, 2, 0,
- 2, 5, 4, 10, 6, 0, 3, 3, 2, 8,
- 1, 1, 6, 1, 1, 1, 6, 1, 10, 0,
- 3, 3, 2, 5, 5, 8, 7, 0, 3, 2,
- 6, 3, 0, 3, 2, 1, 8, 1, 1, 3,
- 5, 4, 1, 1, 5, 13, 1, 1, 1, 1,
- 1, 1, 1, 7, 1, 1, 10, 3, 0, 2,
- 3, 6
+ 6, 1, 1, 1, 1, 1, 1, 1, 1, 3,
+ 1, 1, 10, 1, 1, 3, 3, 0, 3, 3,
+ 2, 0, 2, 5, 4, 10, 6, 0, 3, 3,
+ 2, 8, 1, 1, 6, 1, 1, 1, 6, 1,
+ 10, 0, 3, 3, 2, 5, 5, 8, 1, 7,
+ 0, 3, 2, 6, 1, 1, 3, 0, 3, 2,
+ 1, 8, 1, 1, 1, 3, 5, 4, 1, 1,
+ 5, 13, 1, 1, 1, 1, 1, 1, 1, 7,
+ 1, 1, 10, 3, 0, 2, 3, 6
};
diff --git a/src/wkt1_grammar.y b/src/wkt1_grammar.y
index e17135c6..b5f27e61 100644
--- a/src/wkt1_grammar.y
+++ b/src/wkt1_grammar.y
@@ -128,7 +128,11 @@ integer:
/* 7.2 Coordinate System WKT */
coordinate_system:
- horz_cs | geocentric_cs | vert_cs | compd_cs | fitted_cs | local_cs
+ horz_cs_with_opt_esri_vertcs | geocentric_cs | vert_cs | compd_cs | fitted_cs | local_cs
+
+horz_cs_with_opt_esri_vertcs:
+ horz_cs
+ | horz_cs ',' esri_vert_cs
horz_cs:
geographic_cs | projected_cs
@@ -217,7 +221,10 @@ authority:
vert_cs:
T_VERT_CS begin_node_name ',' vert_datum ',' linear_unit opt_axis_authority end_node
- | T_VERTCS begin_node_name ',' vdatum ',' opt_parameter_list_linear_unit end_node
+ | esri_vert_cs
+
+esri_vert_cs:
+ T_VERTCS begin_node_name ',' vdatum_or_datum ',' opt_parameter_list_linear_unit end_node
opt_axis_authority:
| ',' axis opt_authority
@@ -226,6 +233,8 @@ opt_axis_authority:
vert_datum:
T_VERT_DATUM begin_node_name ',' datum_type opt_extension_authority end_node
+vdatum_or_datum: vdatum | datum
+
vdatum:
T_VDATUM begin_node_name end_node
@@ -240,10 +249,12 @@ compd_cs:
T_COMPD_CS begin_node_name ',' head_cs ',' tail_cs opt_extension_authority end_node
head_cs:
- coordinate_system
+ horz_cs
+// Accepting a geographic CRS as part of the second CRS of a COMPD_CS is horrible
+// but found in LAS WKT
tail_cs:
- coordinate_system
+ geographic_cs | vert_cs
twin_axis: axis ',' axis
diff --git a/test/cli/testprojinfo b/test/cli/testprojinfo
index 19d96735..043e5724 100755
--- a/test/cli/testprojinfo
+++ b/test/cli/testprojinfo
@@ -175,6 +175,14 @@ echo 'Testing -k operation EPSG:8457 -o PROJ -q' >> ${OUT}
$EXE -k operation EPSG:8457 -o PROJ -q >>${OUT} 2>&1
echo "" >>${OUT}
+echo 'Testing D_WGS_1984' >> ${OUT}
+$EXE D_WGS_1984 >>${OUT} 2>&1
+echo "" >>${OUT}
+
+echo 'Testing -k datum D_WGS_1984' >> ${OUT}
+$EXE -k datum D_WGS_1984 >>${OUT} 2>&1
+echo "" >>${OUT}
+
# Testing --searchpaths
if ! $EXE --searchpaths > testprojinfo_out_searchpaths.txt; then
echo "--searchpaths failed"
diff --git a/test/cli/testprojinfo_out.dist b/test/cli/testprojinfo_out.dist
index b4d19002..3025295b 100644
--- a/test/cli/testprojinfo_out.dist
+++ b/test/cli/testprojinfo_out.dist
@@ -1191,6 +1191,20 @@ Testing -k operation EPSG:8457 -o PROJ -q
+step +proj=unitconvert +xy_in=rad +xy_out=deg
+step +proj=axisswap +order=2,1
+Testing D_WGS_1984
+WKT2:2019 string:
+DATUM["World Geodetic System 1984",
+ ELLIPSOID["WGS 84",6378137,298.257223563,
+ LENGTHUNIT["metre",1]],
+ ID["EPSG",6326]]
+
+Testing -k datum D_WGS_1984
+WKT2:2019 string:
+DATUM["World Geodetic System 1984",
+ ELLIPSOID["WGS 84",6378137,298.257223563,
+ LENGTHUNIT["metre",1]],
+ ID["EPSG",6326]]
+
Testing -s NZGD2000 -t ITRF96 -o PROJ -q
+proj=pipeline
+step +proj=unitconvert +xy_in=deg +xy_out=rad
diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp
index 055b1e1d..555d1159 100644
--- a/test/unit/test_io.cpp
+++ b/test/unit/test_io.cpp
@@ -2597,11 +2597,12 @@ TEST(wkt_parse,
EXPECT_EQ(baseCRS->nameStr(), "NAD83");
EXPECT_EQ(baseCRS->coordinateSystem()->axisList().size(), 3U);
- EXPECT_EQ(
- crs->exportToWKT(
- WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL, dbContext)
- .get()),
- wkt);
+ EXPECT_EQ(replaceAll(crs->exportToWKT(
+ WKTFormatter::create(
+ WKTFormatter::Convention::WKT1_GDAL, dbContext)
+ .get()),
+ "ellipsoidal height", "Up"),
+ wkt);
}
// ---------------------------------------------------------------------------
@@ -2645,11 +2646,12 @@ TEST(wkt_parse,
EXPECT_EQ(crs->nameStr(), "WGS 84 / UTM zone 31N");
EXPECT_EQ(crs->coordinateSystem()->axisList().size(), 3U);
- EXPECT_EQ(
- crs->exportToWKT(
- WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL, dbContext)
- .get()),
- wkt);
+ EXPECT_EQ(replaceAll(crs->exportToWKT(
+ WKTFormatter::create(
+ WKTFormatter::Convention::WKT1_GDAL, dbContext)
+ .get()),
+ "ellipsoidal height", "Up"),
+ wkt);
}
// ---------------------------------------------------------------------------
@@ -2683,10 +2685,137 @@ TEST(wkt_parse,
EXPECT_NEAR(crs->coordinateSystem()->axisList()[2]->unit().conversionToSI(),
0.304800609601219, 1e-15);
+ EXPECT_EQ(replaceAll(crs->exportToWKT(
+ WKTFormatter::create(
+ WKTFormatter::Convention::WKT1_GDAL, dbContext)
+ .get()),
+ "ellipsoidal height", "Up"),
+ wkt);
+}
+
+// ---------------------------------------------------------------------------
+
+TEST(wkt_parse, implicit_compound_CRS_ESRI) {
+ // See https://lists.osgeo.org/pipermail/gdal-dev/2020-October/052843.html
+ // and https://pro.arcgis.com/en/pro-app/arcpy/classes/spatialreference.htm
+ const char *wkt =
+ "PROJCS[\"NAD_1983_2011_StatePlane_Colorado_Central_FIPS_0502_Ft_US\","
+ "GEOGCS[\"GCS_NAD_1983_2011\",DATUM[\"D_NAD_1983_2011\","
+ "SPHEROID[\"GRS_1980\",6378137.0,298.257222101]],"
+ "PRIMEM[\"Greenwich\",0.0],"
+ "UNIT[\"Degree\",0.0174532925199433]],"
+ "PROJECTION[\"Lambert_Conformal_Conic\"],"
+ "PARAMETER[\"False_Easting\",3000000.00031608],"
+ "PARAMETER[\"False_Northing\",999999.999996],"
+ "PARAMETER[\"Central_Meridian\",-105.5],"
+ "PARAMETER[\"Standard_Parallel_1\",38.45],"
+ "PARAMETER[\"Standard_Parallel_2\",39.75],"
+ "PARAMETER[\"Latitude_Of_Origin\",37.8333333333333],"
+ "UNIT[\"US survey foot\",0.304800609601219]],"
+ "VERTCS[\"CGVD2013_height\","
+ "VDATUM[\"Canadian_Geodetic_Vertical_Datum_of_2013\"],"
+ "PARAMETER[\"Vertical_Shift\",0.0],"
+ "PARAMETER[\"Direction\",1.0],"
+ "UNIT[\"Meter\",1.0]]";
+ auto dbContext = DatabaseContext::create();
+ auto obj = WKTParser().attachDatabaseContext(dbContext).createFromWKT(wkt);
+ auto crs = nn_dynamic_pointer_cast<CompoundCRS>(obj);
+ ASSERT_TRUE(crs != nullptr);
+ EXPECT_EQ(crs->nameStr(), "NAD83(2011) / Colorado Central (ftUS) + "
+ "CGVD2013(CGG2013) height");
+
+ EXPECT_EQ(
+ crs->exportToWKT(
+ WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, dbContext)
+ .get()),
+ wkt);
+}
+
+// ---------------------------------------------------------------------------
+
+TEST(wkt_parse, VERTCS_with_ellipsoidal_height_ESRI) {
+ const char *wkt = "VERTCS[\"WGS_1984\",DATUM[\"D_WGS_1984\","
+ "SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],"
+ "PARAMETER[\"Vertical_Shift\",0.0],"
+ "PARAMETER[\"Direction\",1.0],UNIT[\"Meter\",1.0]]";
+ auto dbContext = DatabaseContext::create();
+ auto obj = WKTParser().attachDatabaseContext(dbContext).createFromWKT(wkt);
+ auto crs = nn_dynamic_pointer_cast<VerticalCRS>(obj);
+ ASSERT_TRUE(crs != nullptr);
+
+ EXPECT_EQ(
+ crs->exportToWKT(
+ WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, dbContext)
+ .get()),
+ wkt);
+
+ const char *expected_wkt1 =
+ "VERT_CS[\"WGS_1984\",\n"
+ " VERT_DATUM[\"World Geodetic System 1984\",2002],\n"
+ " UNIT[\"metre\",1,\n"
+ " AUTHORITY[\"EPSG\",\"9001\"]],\n"
+ " AXIS[\"ellipsoidal height\",UP]]";
EXPECT_EQ(
crs->exportToWKT(
WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL, dbContext)
.get()),
+ expected_wkt1);
+}
+
+// ---------------------------------------------------------------------------
+
+TEST(wkt_parse, implicit_compound_CRS_geographic_with_ellipsoidal_height_ESRI) {
+ const char *wkt =
+ "GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\","
+ "SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],"
+ "PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],"
+ "VERTCS[\"WGS_1984\",DATUM[\"D_WGS_1984\","
+ "SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],"
+ "PARAMETER[\"Vertical_Shift\",0.0],"
+ "PARAMETER[\"Direction\",1.0],UNIT[\"Meter\",1.0]]";
+ auto dbContext = DatabaseContext::create();
+ auto obj = WKTParser().attachDatabaseContext(dbContext).createFromWKT(wkt);
+ auto crs = nn_dynamic_pointer_cast<GeographicCRS>(obj);
+ ASSERT_TRUE(crs != nullptr);
+ EXPECT_EQ(crs->coordinateSystem()->axisList().size(), 3U);
+
+ EXPECT_EQ(
+ crs->exportToWKT(
+ WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, dbContext)
+ .get()),
+ wkt);
+}
+
+// ---------------------------------------------------------------------------
+
+TEST(wkt_parse, implicit_compound_CRS_projected_with_ellipsoidal_height_ESRI) {
+ const char *wkt =
+ "PROJCS[\"WGS_1984_UTM_Zone_31N\",GEOGCS[\"GCS_WGS_1984\","
+ "DATUM[\"D_WGS_1984\","
+ "SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],"
+ "PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]],"
+ "PROJECTION[\"Transverse_Mercator\"],"
+ "PARAMETER[\"False_Easting\",500000.0],"
+ "PARAMETER[\"False_Northing\",0.0],"
+ "PARAMETER[\"Central_Meridian\",3.0],"
+ "PARAMETER[\"Scale_Factor\",0.9996],"
+ "PARAMETER[\"Latitude_Of_Origin\",0.0],"
+ "UNIT[\"Meter\",1.0]],"
+ "VERTCS[\"WGS_1984\","
+ "DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],"
+ "PARAMETER[\"Vertical_Shift\",0.0],"
+ "PARAMETER[\"Direction\",1.0],"
+ "UNIT[\"Meter\",1.0]]";
+ auto dbContext = DatabaseContext::create();
+ auto obj = WKTParser().attachDatabaseContext(dbContext).createFromWKT(wkt);
+ auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
+ ASSERT_TRUE(crs != nullptr);
+ EXPECT_EQ(crs->coordinateSystem()->axisList().size(), 3U);
+
+ EXPECT_EQ(
+ crs->exportToWKT(
+ WKTFormatter::create(WKTFormatter::Convention::WKT1_ESRI, dbContext)
+ .get()),
wkt);
}