diff --git a/data/sql/customizations.sql b/data/sql/customizations.sql index 77426a1ca3..858a4b774c 100644 --- a/data/sql/customizations.sql +++ b/data/sql/customizations.sql @@ -188,17 +188,234 @@ INSERT INTO usage SELECT scope_code FROM usage WHERE object_table_name = 'grid_transformation' AND object_auth_name = 'EPSG' AND object_code = '9123'; --- Duplicate EPSG:10115, 10116, 10117 with NAD83(CSRS)v7 as interpolation CRS -INSERT INTO "grid_transformation" VALUES -('PROJ','EPSG_10115_WITH_NAD83CSRSV7_INTERPOLATION','CGVD28 height to CGVD2013a(2010) height (1)','Equivalent to HT2_2010v70 hybrid geoid model minus CGG2013a geoid model (i.e. CT code 9986 minus CT 9247 = CT 9987 minus CT 10109). Specifies NAD83(CSRS)v7 (code 8255) as interpolation CRS.','EPSG','1112','Vertical Offset by Grid Interpolation (NRCan byn)','EPSG','5713','EPSG','9245',0.05,'EPSG','8732','Vertical offset file','HT2_2010v70_CGG2013a.byn',NULL,NULL,NULL,NULL,'EPSG','8255','NR-Can HT2 2010',0); +-- Canadian transformations: duplicate EPSG:10518, 10519, 10520, 10116, 10117, 10118 with NAD83(CSRS)v7 as interpolation CRS +INSERT INTO grid_transformation SELECT + 'PROJ' AS auth_name, + 'EPSG_10518_WITH_NAD83CSRSV7_INTERPOLATION' AS code, + name, + description || ' Specifies NAD83(CSRS)v7 (code 8255) as interpolation CRS.' AS description, + method_auth_name, + method_code, + method_name, + source_crs_auth_name, + source_crs_code, + target_crs_auth_name, + target_crs_code, + accuracy, + grid_param_auth_name, + grid_param_code, + grid_param_name, + grid_name, + grid2_param_auth_name, + grid2_param_code, + grid2_param_name, + grid2_name, + 'EPSG' AS interpolation_crs_auth_name, + 8255 AS interpolation_crs_code, + operation_version, + 0 AS deprecated + FROM grid_transformation WHERE auth_name = 'EPSG' AND code = '10518'; +INSERT INTO usage SELECT + 'PROJ' AS auth_name, + 'USAGE_PROJ_EPSG_1058_WITH_NAD83CSRSV7_INTERPOLATION' AS code, + object_table_name, + 'PROJ' AS object_auth_name, + 'EPSG_10518_WITH_NAD83CSRSV7_INTERPOLATION' AS object_code, + extent_auth_name, + extent_code, + scope_auth_name, + scope_code + FROM usage WHERE object_table_name = 'grid_transformation' AND object_auth_name = 'EPSG' AND object_code = '10518'; + +INSERT INTO grid_transformation SELECT + 'PROJ' AS auth_name, + 'EPSG_10519_WITH_NAD83CSRSV7_INTERPOLATION' AS code, + name, + description || ' Specifies NAD83(CSRS)v7 (code 8255) as interpolation CRS.' AS description, + method_auth_name, + method_code, + method_name, + source_crs_auth_name, + source_crs_code, + target_crs_auth_name, + target_crs_code, + accuracy, + grid_param_auth_name, + grid_param_code, + grid_param_name, + grid_name, + grid2_param_auth_name, + grid2_param_code, + grid2_param_name, + grid2_name, + 'EPSG' AS interpolation_crs_auth_name, + 8255 AS interpolation_crs_code, + operation_version, + 0 AS deprecated + FROM grid_transformation WHERE auth_name = 'EPSG' AND code = '10519'; +INSERT INTO usage SELECT + 'PROJ' AS auth_name, + 'USAGE_PROJ_EPSG_10519_WITH_NAD83CSRSV7_INTERPOLATION' AS code, + object_table_name, + 'PROJ' AS object_auth_name, + 'EPSG_10519_WITH_NAD83CSRSV7_INTERPOLATION' AS object_code, + extent_auth_name, + extent_code, + scope_auth_name, + scope_code + FROM usage WHERE object_table_name = 'grid_transformation' AND object_auth_name = 'EPSG' AND object_code = '10519'; + +INSERT INTO grid_transformation SELECT + 'PROJ' AS auth_name, + 'EPSG_10520_WITH_NAD83CSRSV7_INTERPOLATION' AS code, + name, + description || ' Specifies NAD83(CSRS)v7 (code 8255) as interpolation CRS.' AS description, + method_auth_name, + method_code, + method_name, + source_crs_auth_name, + source_crs_code, + target_crs_auth_name, + target_crs_code, + accuracy, + grid_param_auth_name, + grid_param_code, + grid_param_name, + grid_name, + grid2_param_auth_name, + grid2_param_code, + grid2_param_name, + grid2_name, + 'EPSG' AS interpolation_crs_auth_name, + 8255 AS interpolation_crs_code, + operation_version, + 0 AS deprecated + FROM grid_transformation WHERE auth_name = 'EPSG' AND code = '10520'; +INSERT INTO usage SELECT + 'PROJ' AS auth_name, + 'USAGE_PROJ_EPSG_10520_WITH_NAD83CSRSV7_INTERPOLATION' AS code, + object_table_name, + 'PROJ' AS object_auth_name, + 'EPSG_10520_WITH_NAD83CSRSV7_INTERPOLATION' AS object_code, + extent_auth_name, + extent_code, + scope_auth_name, + scope_code + FROM usage WHERE object_table_name = 'grid_transformation' AND object_auth_name = 'EPSG' AND object_code = '10520'; -INSERT INTO "usage" VALUES('PROJ','USAGE_EPSG_10115_WITH_NAD83CSRSV7_INTERPOLATION','grid_transformation','PROJ','EPSG_10115_WITH_NAD83CSRSV7_INTERPOLATION','EPSG','1061','EPSG','1133'); +INSERT INTO grid_transformation SELECT + 'PROJ' AS auth_name, + 'EPSG_10116_WITH_NAD83CSRSV7_INTERPOLATION' AS code, + name, + description || ' Specifies NAD83(CSRS)v7 (code 8255) as interpolation CRS.' AS description, + method_auth_name, + method_code, + method_name, + source_crs_auth_name, + source_crs_code, + target_crs_auth_name, + target_crs_code, + accuracy, + grid_param_auth_name, + grid_param_code, + grid_param_name, + grid_name, + grid2_param_auth_name, + grid2_param_code, + grid2_param_name, + grid2_name, + 'EPSG' AS interpolation_crs_auth_name, + 8255 AS interpolation_crs_code, + operation_version, + 0 AS deprecated + FROM grid_transformation WHERE auth_name = 'EPSG' AND code = '10116'; +INSERT INTO usage SELECT + 'PROJ' AS auth_name, + 'USAGE_PROJ_EPSG_10116_WITH_NAD83CSRSV7_INTERPOLATION' AS code, + object_table_name, + 'PROJ' AS object_auth_name, + 'EPSG_10116_WITH_NAD83CSRSV7_INTERPOLATION' AS object_code, + extent_auth_name, + extent_code, + scope_auth_name, + scope_code + FROM usage WHERE object_table_name = 'grid_transformation' AND object_auth_name = 'EPSG' AND object_code = '10116'; -INSERT INTO "grid_transformation" VALUES('PROJ','EPSG_10116_WITH_NAD83CSRSV7_INTERPOLATION','CGVD2013a(2010) height to CGVD2013a(2002) height (1)',' Specifies NAD83(CSRS)v7 (code 8255) as interpolation CRS. Equivalent to CGVD28 to CGVD2013a(2002) minus CGVD28 to CGVD2013a(2010) (i.e. CT code 10114 minus CT 10115).','EPSG','1113','Vertical Offset by velocity grid (NRCan byn)','EPSG','9245','EPSG','20034',0.05,'EPSG','1050','Point motion velocity grid file','NAD83v70VG.gvb',NULL,NULL,NULL,NULL,'EPSG','8255','EPSG-Can',0); -INSERT INTO "usage" VALUES('PROJ','USAGE_EPSG_10116_WITH_NAD83CSRSV7_INTERPOLATION','grid_transformation','PROJ','EPSG_10116_WITH_NAD83CSRSV7_INTERPOLATION','EPSG','1061','EPSG','1026'); +INSERT INTO grid_transformation SELECT + 'PROJ' AS auth_name, + 'EPSG_10117_WITH_NAD83CSRSV7_INTERPOLATION' AS code, + name, + description || ' Specifies NAD83(CSRS)v7 (code 8255) as interpolation CRS.' AS description, + method_auth_name, + method_code, + method_name, + source_crs_auth_name, + source_crs_code, + target_crs_auth_name, + target_crs_code, + accuracy, + grid_param_auth_name, + grid_param_code, + grid_param_name, + grid_name, + grid2_param_auth_name, + grid2_param_code, + grid2_param_name, + grid2_name, + 'EPSG' AS interpolation_crs_auth_name, + 8255 AS interpolation_crs_code, + operation_version, + 0 AS deprecated + FROM grid_transformation WHERE auth_name = 'EPSG' AND code = '10117'; +INSERT INTO usage SELECT + 'PROJ' AS auth_name, + 'USAGE_PROJ_EPSG_10117_WITH_NAD83CSRSV7_INTERPOLATION' AS code, + object_table_name, + 'PROJ' AS object_auth_name, + 'EPSG_10117_WITH_NAD83CSRSV7_INTERPOLATION' AS object_code, + extent_auth_name, + extent_code, + scope_auth_name, + scope_code + FROM usage WHERE object_table_name = 'grid_transformation' AND object_auth_name = 'EPSG' AND object_code = '10117'; -INSERT INTO "grid_transformation" VALUES('PROJ','EPSG_10117_WITH_NAD83CSRSV7_INTERPOLATION','CGVD2013a(2010) height to CGVD2013a(1997) height (1)','Specifies NAD83(CSRS)v7 (code 8255) as interpolation CRS. Equivalent to CGVD28 to CGVD2013a(1997) minus CGVD28 to CGVD2013a(2010) (i.e. CT code 10113 minus CT 10115).','EPSG','1113','Vertical Offset by velocity grid (NRCan byn)','EPSG','9245','EPSG','20035',0.05,'EPSG','1050','Point motion velocity grid file','NAD83v70VG.gvb',NULL,NULL,NULL,NULL,'EPSG','8255','EPSG-Can',0); -INSERT INTO "usage" VALUES('PROJ','USAGE_EPSG_10117_WITH_NAD83CSRSV7_INTERPOLATION','grid_transformation','PROJ','EPSG_10117_WITH_NAD83CSRSV7_INTERPOLATION','EPSG','1061','EPSG','1026'); +INSERT INTO grid_transformation SELECT + 'PROJ' AS auth_name, + 'EPSG_10118_WITH_NAD83CSRSV7_INTERPOLATION' AS code, + name, + description || ' Specifies NAD83(CSRS)v7 (code 8255) as interpolation CRS.' AS description, + method_auth_name, + method_code, + method_name, + source_crs_auth_name, + source_crs_code, + target_crs_auth_name, + target_crs_code, + accuracy, + grid_param_auth_name, + grid_param_code, + grid_param_name, + grid_name, + grid2_param_auth_name, + grid2_param_code, + grid2_param_name, + grid2_name, + 'EPSG' AS interpolation_crs_auth_name, + 8255 AS interpolation_crs_code, + operation_version, + 0 AS deprecated + FROM grid_transformation WHERE auth_name = 'EPSG' AND code = '10118'; +INSERT INTO usage SELECT + 'PROJ' AS auth_name, + 'USAGE_PROJ_EPSG_10118_WITH_NAD83CSRSV7_INTERPOLATION' AS code, + object_table_name, + 'PROJ' AS object_auth_name, + 'EPSG_10118_WITH_NAD83CSRSV7_INTERPOLATION' AS object_code, + extent_auth_name, + extent_code, + scope_auth_name, + scope_code + FROM usage WHERE object_table_name = 'grid_transformation' AND object_auth_name = 'EPSG' AND object_code = '10118'; -- Define the allowed authorities, and their precedence, when researching a diff --git a/data/sql/extent.sql b/data/sql/extent.sql index 7e9a081b3d..834bf8c25a 100644 --- a/data/sql/extent.sql +++ b/data/sql/extent.sql @@ -610,7 +610,7 @@ INSERT INTO "extent" VALUES('EPSG','1630','Netherlands - offshore','Netherlands INSERT INTO "extent" VALUES('EPSG','1631','Europe - 18°W to 12°W and ED50 by country','Europe - between 18°W and 12°W - Ireland offshore.',48.43,56.57,-16.1,-12.0,0); INSERT INTO "extent" VALUES('EPSG','1632','Europe - 12°W to 6°W and ED50 by country','Europe - between 12°W and 6°W - Faroe Islands - onshore; Spain - mainland onshore; Ireland offshore.',36.13,62.41,-12.0,-6.0,0); INSERT INTO "extent" VALUES('EPSG','1633','Europe - 6°W to 0°W and ED50 by country','Europe - between 6°W and 0°W - Channel Islands (Jersey, Guernsey); France offshore; Gibraltar; Ireland offshore; Norway including Svalbard - offshore; Spain - onshore; United Kingdom - UKCS offshore.',35.26,80.49,-6.0,0.01,0); -INSERT INTO "extent" VALUES('EPSG','1634','Europe - 0°E to 6°E and ED50 by country','Europe - between 0°E and 6°E - Andorra; Denmark (North Sea); Germany offshore; Netherlands offshore; Norway including Svalbard - onshore and offshore; Spain - onshore (mainland and Balearic Islands); United Kingdom (UKCS) offshore.',38.56,82.45,0.0,6.01,0); +INSERT INTO "extent" VALUES('EPSG','1634','Europe - 0°E to 6°E and ED50 by country','Europe - between 0°E and 6°E - Andorra; Denmark (North Sea); France - offshore; Germany - offshore; Netherlands - offshore; Norway including Svalbard - onshore and offshore; Spain - onshore (mainland and Balearic Islands); United Kingdom - offshore UKCS.',38.56,82.45,0.0,6.01,0); INSERT INTO "extent" VALUES('EPSG','1635','Europe - 6°E to 12°E and ED50 by country','Europe - between 6°E and 12°E - Denmark - onshore and offshore; France - offshore; Germany offshore; Italy - onshore and offshore; Netherlands offshore; Norway including Svalbard - onshore and offshore.',36.53,84.33,5.99,12.01,0); INSERT INTO "extent" VALUES('EPSG','1636','Europe - 12°E to 18°E and ED50 by country','Europe - between 12°E and 18°E onshore and offshore - Denmark (including Bornholm); Italy including San Marino and Vatican City State; Malta; Norway including Svalbard.',34.49,84.42,12.0,18.01,0); INSERT INTO "extent" VALUES('EPSG','1637','Europe - 18°E to 24°E and ED50 by country','Europe - between 18°E and 24°E - Greece - offshore; Italy - onshore and offshore; Norway including Svalbard - onshore and offshore.',33.59,84.54,17.99,24.01,0); diff --git a/data/sql/grid_transformation.sql b/data/sql/grid_transformation.sql index 678e9c2768..27ba20f800 100644 --- a/data/sql/grid_transformation.sql +++ b/data/sql/grid_transformation.sql @@ -1434,12 +1434,18 @@ INSERT INTO "grid_transformation" VALUES('EPSG','10111','NAD83(CSRS)v3 to CGVD20 INSERT INTO "usage" VALUES('EPSG','18281','grid_transformation','EPSG','10111','EPSG','1061','EPSG','1133'); INSERT INTO "grid_transformation" VALUES('EPSG','10112','NAD83(CSRS)v2 to CGVD2013a(1997) height (1)','Applies same geoid model as NAD83(CSRS)v3 to CGVD2013a(1997) height (1), code 10111.','EPSG','1060','Geographic3D to GravityRelatedHeight (NRCan byn)','EPSG','8235','EPSG','20035',0.05,'EPSG','8666','Geoid (height correction) model file','CGG2013an83.byn',NULL,NULL,NULL,NULL,NULL,NULL,'NR-Can CGG2013a',0); INSERT INTO "usage" VALUES('EPSG','18318','grid_transformation','EPSG','10112','EPSG','1061','EPSG','1133'); -INSERT INTO "grid_transformation" VALUES('EPSG','10113','CGVD28 height to CGVD2013a(1997) height (1)','Equivalent to HT2_1997 hybrid geoid model minus CGG2013a geoid model (i.e. CT code 9983 minus CT 10111 = CT 9984 minus CT 10112). Specifies NAD83(CSRS)v3 as interpolation CRS, but NAD83(CSRS)v2 (code 8237) may equally be used.','EPSG','1112','Vertical Offset by Grid Interpolation (NRCan byn)','EPSG','5713','EPSG','20035',0.05,'EPSG','8732','Vertical offset file','HT2_1997_CGG2013a.byn',NULL,NULL,NULL,NULL,'EPSG','8240','NR-Can HT2 1997',0); +INSERT INTO "grid_transformation" VALUES('EPSG','10113','CGVD28 height to CGVD2013a(1997) height (1)','Equivalent to HT2_1997 hybrid geoid model minus CGG2013a geoid model (i.e. CT code 9983 minus CT 10111 = CT 9984 minus CT 10112). Specifies NAD83(CSRS)v3 as interpolation CRS, but NAD83(CSRS)v2 (code 8237) may equally be used.','EPSG','1112','Vertical Offset by Grid Interpolation (NRCan byn)','EPSG','5713','EPSG','20035',0.05,'EPSG','8732','Vertical offset file','HT2_1997_CGG2013a.byn',NULL,NULL,NULL,NULL,'EPSG','8240','NR-Can HT2 1997',1); INSERT INTO "usage" VALUES('EPSG','18324','grid_transformation','EPSG','10113','EPSG','1061','EPSG','1133'); -INSERT INTO "grid_transformation" VALUES('EPSG','10114','CGVD28 height to CGVD2013a(2002) height (1)','Equivalent to HT2_2002v70 hybrid geoid model minus CGG2013a geoid model (i.e. CT code 9985 minus CT 10110).','EPSG','1112','Vertical Offset by Grid Interpolation (NRCan byn)','EPSG','5713','EPSG','20034',0.05,'EPSG','8732','Vertical offset file','HT2_2002v70_CGG2013a.byn',NULL,NULL,NULL,NULL,'EPSG','8246','NR-Can HT2 2002',0); +INSERT INTO "grid_transformation" VALUES('EPSG','10114','CGVD28 height to CGVD2013a(2002) height (1)','Equivalent to HT2_2002v70 hybrid geoid model minus CGG2013a geoid model (i.e. CT code 9985 minus CT 10110).','EPSG','1112','Vertical Offset by Grid Interpolation (NRCan byn)','EPSG','5713','EPSG','20034',0.05,'EPSG','8732','Vertical offset file','HT2_2002v70_CGG2013a.byn',NULL,NULL,NULL,NULL,'EPSG','8246','NR-Can HT2 2002',1); INSERT INTO "usage" VALUES('EPSG','18322','grid_transformation','EPSG','10114','EPSG','1061','EPSG','1133'); -INSERT INTO "grid_transformation" VALUES('EPSG','10115','CGVD28 height to CGVD2013a(2010) height (1)','Equivalent to HT2_2010v70 hybrid geoid model minus CGG2013a geoid model (i.e. CT code 9986 minus CT 9247 = CT 9987 minus CT 10109). Specifies NAD83(CSRS)v6 as interpolation CRS, but NAD83(CSRS)v7 (code 8255) may equally be used.','EPSG','1112','Vertical Offset by Grid Interpolation (NRCan byn)','EPSG','5713','EPSG','9245',0.05,'EPSG','8732','Vertical offset file','HT2_2010v70_CGG2013a.byn',NULL,NULL,NULL,NULL,'EPSG','8252','NR-Can HT2 2010',0); +INSERT INTO "grid_transformation" VALUES('EPSG','10115','CGVD28 height to CGVD2013a(2010) height (1)','Equivalent to HT2_2010v70 hybrid geoid model minus CGG2013a geoid model (i.e. CT code 9986 minus CT 9247 = CT 9987 minus CT 10109). Specifies NAD83(CSRS)v6 as interpolation CRS, but NAD83(CSRS)v7 (code 8255) may equally be used.','EPSG','1112','Vertical Offset by Grid Interpolation (NRCan byn)','EPSG','5713','EPSG','9245',0.05,'EPSG','8732','Vertical offset file','HT2_2010v70_CGG2013a.byn',NULL,NULL,NULL,NULL,'EPSG','8252','NR-Can HT2 2010',1); INSERT INTO "usage" VALUES('EPSG','18323','grid_transformation','EPSG','10115','EPSG','1061','EPSG','1133'); +INSERT INTO "grid_transformation" VALUES('EPSG','10116','CGVD2013a(2010) height to CGVD2013a(2002) height (1)','Interpolation CRS = NAD83(CSRS) 2010, i.e. may be any one of NAD83(CSRS)v6, v7 or v8 (CRS codes 8252, 8255 or 10414). Equivalent to CGVD28 to CGVD2013a(2002) minus CGVD28 to CGVD2013a(2010) (i.e. CT code 10114 minus CT 10115).','EPSG','1113','Vertical Offset by velocity grid (NRCan NTv2_Vel)','EPSG','9245','EPSG','20034',0.05,'EPSG','1050','Point motion velocity grid file','NAD83v70VG.gvb',NULL,NULL,NULL,NULL,'EPSG','8252','EPSG-Can',0); +INSERT INTO "usage" VALUES('EPSG','18325','grid_transformation','EPSG','10116','EPSG','1061','EPSG','1026'); +INSERT INTO "grid_transformation" VALUES('EPSG','10117','CGVD2013a(2010) height to CGVD2013a(1997) height (1)','Interpolation CRS = NAD83(CSRS) 2010, i.e. may be any one of NAD83(CSRS)v6, v7 or v8 (CRS codes 8252, 8255 or 10414). Equivalent to CGVD28 to CGVD2013a(1997) minus CGVD28 to CGVD2013a(2010) (i.e. CT code 10113 minus CT 10115).','EPSG','1113','Vertical Offset by velocity grid (NRCan NTv2_Vel)','EPSG','9245','EPSG','20035',0.05,'EPSG','1050','Point motion velocity grid file','NAD83v70VG.gvb',NULL,NULL,NULL,NULL,'EPSG','8252','EPSG-Can',0); +INSERT INTO "usage" VALUES('EPSG','18352','grid_transformation','EPSG','10117','EPSG','1061','EPSG','1026'); +INSERT INTO "grid_transformation" VALUES('EPSG','10118','CGVD2013a(2002) height to CGVD2013a(1997) height (1)','Equivalent to CGVD28 to CGVD2013a(1997) minus CGVD28 to CGVD2013a(2002) (i.e. CT code 10113 minus CT 10114).','EPSG','1113','Vertical Offset by velocity grid (NRCan NTv2_Vel)','EPSG','20034','EPSG','20035',0.05,'EPSG','1050','Point motion velocity grid file','NAD83v70VG.gvb',NULL,NULL,NULL,NULL,'EPSG','8246','EPSG-Can',0); +INSERT INTO "usage" VALUES('EPSG','18328','grid_transformation','EPSG','10118','EPSG','1061','EPSG','1026'); INSERT INTO "grid_transformation" VALUES('EPSG','10119','NAD83(CSRS)v4 to NAD83(CSRS)v2 (1)','','EPSG','1114','Geographic3D Offset by velocity grid (NRCan byn)','EPSG','8244','EPSG','8235',0.05,'EPSG','1050','Point motion velocity grid file','NAD83v70VG.gvb',NULL,NULL,NULL,NULL,'EPSG','8246','EPSG-Can cvg70',0); INSERT INTO "usage" VALUES('EPSG','18201','grid_transformation','EPSG','10119','EPSG','1061','EPSG','1026'); INSERT INTO "grid_transformation" VALUES('EPSG','10120','NAD83(CSRS)v4 to NAD83(CSRS)v3 (1)','','EPSG','1114','Geographic3D Offset by velocity grid (NRCan byn)','EPSG','8244','EPSG','8239',0.05,'EPSG','1050','Point motion velocity grid file','NAD83v70VG.gvb',NULL,NULL,NULL,NULL,'EPSG','8246','EPSG-Can cvg70',0); @@ -1594,6 +1600,12 @@ INSERT INTO "grid_transformation" VALUES('EPSG','10509','ETRS89 to CD Norway dep INSERT INTO "usage" VALUES('EPSG','20537','grid_transformation','EPSG','10509','EPSG','4656','EPSG','1277'); INSERT INTO "grid_transformation" VALUES('EPSG','10510','ETRS89 to ETRS89 + CD Norway depth (4)','Reversible alternative to ETRS89 to CD Norway depth (4) (code 10509). Accompanying file ...v2023b_standarddeviation.bin contains first estimate of SD of model. Replaces ETRS89 to ETRS89 + CD Norway depth (3) (code 10133).','EPSG','1110','Geog3D to Geog2D+Depth (Gravsoft)','EPSG','4937','EPSG','9883',0.5,'EPSG','8666','Geoid (height correction) model file','ChartDatum_above_Ellipsoid_EUREF89_v2023b.bin',NULL,NULL,NULL,NULL,'EPSG','4258','SK-Nor 2023b',0); INSERT INTO "usage" VALUES('EPSG','20541','grid_transformation','EPSG','10510','EPSG','4656','EPSG','1272'); +INSERT INTO "grid_transformation" VALUES('EPSG','10518','CGVD28 height to CGVD2013a(1997) height (2)','Equivalent to HT2_1997 hybrid geoid model minus CGG2013a geoid model (i.e. CT code 9983 minus CT 10111). NAD83(CSRS)v3 is specified as the interpolation CRS, but for grid interpolation NAD83(CSRS)v2 or any later realization may be used without error.','EPSG','1126','Vertical change by geoid grid difference (NRCan)','EPSG','5713','EPSG','20035',0.05,'EPSG','1063','Geoid model difference file','HT2_1997_CGG2013a.byn',NULL,NULL,NULL,NULL,'EPSG','8240','NR-Can HT2 1997',0); +INSERT INTO "usage" VALUES('EPSG','20892','grid_transformation','EPSG','10518','EPSG','1289','EPSG','1059'); +INSERT INTO "grid_transformation" VALUES('EPSG','10519','CGVD28 height to CGVD2013a(2002) height (2)','Equivalent to HT2_2002v70 hybrid geoid model minus CGG2013a geoid model (i.e. CT code 9985 minus CT 10110). NAD83(CSRS)v4 is specified as the interpolation CRS, but for grid interpolation NAD83(CSRS)v2 or any later realization may be used without error.','EPSG','1126','Vertical change by geoid grid difference (NRCan)','EPSG','5713','EPSG','20034',0.05,'EPSG','1063','Geoid model difference file','HT2_2002v70_CGG2013a.byn',NULL,NULL,NULL,NULL,'EPSG','8246','NR-Can HT2 2002',0); +INSERT INTO "usage" VALUES('EPSG','20893','grid_transformation','EPSG','10519','EPSG','1289','EPSG','1059'); +INSERT INTO "grid_transformation" VALUES('EPSG','10520','CGVD28 height to CGVD2013a(2010) height (2)','Equivalent to HT2_2010v70 hybrid geoid model minus CGG2013a geoid model (i.e. CT code 9986 - CT 9247). NAD83(CSRS)v6 is specified as the interpolation CRS, but for grid interpolation NAD83(CSRS)v2 or any later realization may be used without error.','EPSG','1126','Vertical change by geoid grid difference (NRCan)','EPSG','5713','EPSG','9245',0.05,'EPSG','1063','Geoid model difference file','HT2_2010v70_CGG2013a.byn',NULL,NULL,NULL,NULL,'EPSG','8252','NR-Can HT2 2010',0); +INSERT INTO "usage" VALUES('EPSG','20894','grid_transformation','EPSG','10520','EPSG','1289','EPSG','1059'); INSERT INTO "grid_transformation" VALUES('EPSG','15486','CH1903 to CH1903+ (1)','For improved accuracy (0.01m) use CHENyx06 interpolation programme FINELTRA. File CHENyx06 replaced by CHENyx06a; there is a small area at the border of the data where some more real data has been introduced. swisstopo consider the change insignificant.','EPSG','9615','NTv2','EPSG','4149','EPSG','4150',0.2,'EPSG','8656','Latitude and longitude difference file','CHENyx06a.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'BfL-Che',0); INSERT INTO "usage" VALUES('EPSG','11497','grid_transformation','EPSG','15486','EPSG','1286','EPSG','1085'); INSERT INTO "grid_transformation" VALUES('EPSG','15488','RRAF 1991 to IGN 1988 MG height (1)','May be used for transformations from WGS 84 to IGN 1988 MG. Accuracy at each 0.025 deg x 0.025 degree grid node is given within the geoid model file.','EPSG','9664','Geographic3D to GravityRelatedHeight (IGN1997)','EPSG','4973','EPSG','5617',0.2,'EPSG','8666','Geoid (height correction) model file','ggg00_mg.txt',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Glp MG',1); diff --git a/data/sql/metadata.sql b/data/sql/metadata.sql index 9febb6353e..b117b023a7 100644 --- a/data/sql/metadata.sql +++ b/data/sql/metadata.sql @@ -9,8 +9,8 @@ INSERT INTO "metadata" VALUES('DATABASE.LAYOUT.VERSION.MAJOR', 1); INSERT INTO "metadata" VALUES('DATABASE.LAYOUT.VERSION.MINOR', 3); -INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v11.002'); -INSERT INTO "metadata" VALUES('EPSG.DATE', '2024-01-07'); +INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v11.003'); +INSERT INTO "metadata" VALUES('EPSG.DATE', '2024-01-15'); -- The value of ${PROJ_VERSION} is substituted at build time by the actual -- value. diff --git a/scripts/build_db.py b/scripts/build_db.py index 9f7c9b5e10..c337db985f 100755 --- a/scripts/build_db.py +++ b/scripts/build_db.py @@ -692,7 +692,7 @@ def fill_helmert_transformation(proj_db_cursor): '?,?,?, ?, ?,?,?, ?,?, ?,?, ?, ?,?,?,?,?, ?,?,?,?,?, ?,?,?, ?,?,?,?,?, ?,?,?,?,?, ?,?,?, ?,?,?, ?,?,?,?,?, ?,?)', arg) def fill_grid_transformation(proj_db_cursor): - proj_db_cursor.execute("SELECT coord_op_code, coord_op_name, coord_op_method_code, coord_op_method_name, source_crs_code, target_crs_code, coord_op_accuracy, coord_tfm_version, epsg_coordoperation.deprecated, epsg_coordoperation.remarks FROM epsg.epsg_coordoperation LEFT JOIN epsg.epsg_coordoperationmethod USING (coord_op_method_code) WHERE coord_op_type IN ('transformation', 'point motion operation') AND (coord_op_method_name LIKE 'Geographic3D to%' OR coord_op_method_name LIKE 'Geog3D to%' OR coord_op_method_name LIKE 'Point motion by grid%' OR coord_op_method_name LIKE 'Vertical Offset by Grid Interpolation%' OR coord_op_method_name IN ('NADCON', 'NADCON5 (2D)', 'NADCON5 (3D)', 'NTv1', 'NTv2', 'VERTCON', 'Geocentric translation by Grid Interpolation (IGN)', 'Geographic3D Offset by velocity grid (NRCan byn)', 'Vertical Offset by velocity grid (NRCan byn)'))") + proj_db_cursor.execute("SELECT coord_op_code, coord_op_name, coord_op_method_code, coord_op_method_name, source_crs_code, target_crs_code, coord_op_accuracy, coord_tfm_version, epsg_coordoperation.deprecated, epsg_coordoperation.remarks FROM epsg.epsg_coordoperation LEFT JOIN epsg.epsg_coordoperationmethod USING (coord_op_method_code) WHERE coord_op_type IN ('transformation', 'point motion operation') AND (coord_op_method_name LIKE 'Geographic3D to%' OR coord_op_method_name LIKE 'Geog3D to%' OR coord_op_method_name LIKE 'Point motion by grid%' OR coord_op_method_name LIKE 'Vertical % by %grid%' OR coord_op_method_name IN ('NADCON', 'NADCON5 (2D)', 'NADCON5 (3D)', 'NTv1', 'NTv2', 'VERTCON', 'Geocentric translation by Grid Interpolation (IGN)', 'Geographic3D Offset by velocity grid (NRCan byn)'))") for (code, name, method_code, method_name, source_crs_code, target_crs_code, coord_op_accuracy, coord_tfm_version, deprecated, remarks) in proj_db_cursor.fetchall(): expected_order = 1 max_n_params = 3 if method_name == 'Geocentric translation by Grid Interpolation (IGN)' else 2 @@ -731,7 +731,7 @@ def fill_grid_transformation(proj_db_cursor): expected_order += 1 n_params = expected_order - 1 - assert param_code[0] in (1048, 1050, 8656, 8657, 8666, 8732, 8727), (code, param_code[0]) + assert param_code[0] in (1048, 1050, 1063, 8656, 8657, 8666, 8732, 8727), (code, param_code[0]) grid2_param_auth_name = None grid2_param_code = None @@ -781,9 +781,10 @@ def fill_grid_transformation(proj_db_cursor): # 1118: Geog3D to Geog2D+GravityRelatedHeight (ISG) # 1122: Geog3D to Geog2D+Depth (gtx) # 1124: Geog3D to Geog2D+GravityRelatedHeight (gtg) + # 1126: Vertical change by geoid grid difference (NRCan) # WARNING: update Transformation::isGeographic3DToGravityRelatedHeight() # in src/iso19111/operation/singleoperation.cpp if adding new methods - elif method_code in (1071, 1080, 1081, 1083, 1084, 1085, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1100, 1101, 1103, 1105, 1110, 1112, 1113, 1114, 1115, 1118, 1122, 1124) and n_params == 2: + elif method_code in (1071, 1080, 1081, 1083, 1084, 1085, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1100, 1101, 1103, 1105, 1110, 1112, 1113, 1114, 1115, 1118, 1122, 1124, 1126) and n_params == 2: assert param_code[1] == 1048, (code, method_code, param_code[1]) interpolation_crs_auth_name = EPSG_AUTHORITY interpolation_crs_code = str(int(param_value[1])) # needed to avoid codes like XXXX.0 diff --git a/src/iso19111/operation/parammappings.cpp b/src/iso19111/operation/parammappings.cpp index 233ea6cf00..6f5274cfda 100644 --- a/src/iso19111/operation/parammappings.cpp +++ b/src/iso19111/operation/parammappings.cpp @@ -1061,6 +1061,7 @@ const struct ParamNameCode paramNameCodes[] = { PARAM_NAME_CODE(LATITUDE_LONGITUDE_DIFFERENCE_FILE), PARAM_NAME_CODE(GEOID_CORRECTION_FILENAME), PARAM_NAME_CODE(VERTICAL_OFFSET_FILE), + PARAM_NAME_CODE(GEOID_MODEL_DIFFERENCE_FILE), PARAM_NAME_CODE(LATITUDE_DIFFERENCE_FILE), PARAM_NAME_CODE(LONGITUDE_DIFFERENCE_FILE), PARAM_NAME_CODE(UNIT_CONVERSION_SCALAR), diff --git a/src/iso19111/operation/singleoperation.cpp b/src/iso19111/operation/singleoperation.cpp index 4dbd5b2195..723dee31b6 100644 --- a/src/iso19111/operation/singleoperation.cpp +++ b/src/iso19111/operation/singleoperation.cpp @@ -2080,6 +2080,7 @@ bool Transformation::isGeographic3DToGravityRelatedHeight( "1118", // Geog3D to Geog2D+GravityRelatedHeight (ISG) "1122", // Geog3D to Geog2D+Depth (gtx) "1124", // Geog3D to Geog2D+GravityRelatedHeight (gtg) + "1126", // Vertical change by geoid grid difference (NRCan) "9661", // Geographic3D to GravityRelatedHeight (EGM) "9662", // Geographic3D to GravityRelatedHeight (Ausgeoid98) "9663", // Geographic3D to GravityRelatedHeight (OSGM-GB) @@ -2218,7 +2219,9 @@ createSimilarPropertiesMethod(common::IdentifiedObjectNNPtr obj) { static bool isRegularVerticalGridMethod(int methodEPSGCode, bool &reverseOffsetSign) { - if (methodEPSGCode == EPSG_CODE_METHOD_VERTICALGRID_NRCAN_BYN) { + if (methodEPSGCode == EPSG_CODE_METHOD_VERTICALGRID_NRCAN_BYN || + methodEPSGCode == + EPSG_CODE_METHOD_VERTICALCHANGE_BY_GEOID_GRID_DIFFERENCE_NRCAN) { // NRCAN vertical shift grids use a reverse convention from other // grids: the value in the grid is the value to subtract from the // source vertical CRS to get the target value. @@ -2556,9 +2559,14 @@ TransformationNNPtr SingleOperation::substitutePROJAlternativeGridNames( bool reverseOffsetSign = false; if (methodEPSGCode == EPSG_CODE_METHOD_VERTCON || isRegularVerticalGridMethod(methodEPSGCode, reverseOffsetSign)) { - auto fileParameter = - parameterValue(EPSG_NAME_PARAMETER_VERTICAL_OFFSET_FILE, - EPSG_CODE_PARAMETER_VERTICAL_OFFSET_FILE); + int parameterCode = EPSG_CODE_PARAMETER_VERTICAL_OFFSET_FILE; + auto fileParameter = parameterValue( + EPSG_NAME_PARAMETER_VERTICAL_OFFSET_FILE, parameterCode); + if (!fileParameter) { + parameterCode = EPSG_CODE_PARAMETER_GEOID_MODEL_DIFFERENCE_FILE; + fileParameter = parameterValue( + EPSG_NAME_PARAMETER_GEOID_MODEL_DIFFERENCE_FILE, parameterCode); + } if (fileParameter && fileParameter->type() == ParameterValue::Type::FILENAME) { @@ -2588,8 +2596,7 @@ TransformationNNPtr SingleOperation::substitutePROJAlternativeGridNames( auto l_sourceCRS = NN_NO_CHECK(l_sourceCRSNull); auto l_targetCRS = NN_NO_CHECK(l_targetCRSNull); auto parameters = std::vector{ - createOpParamNameEPSGCode( - EPSG_CODE_PARAMETER_VERTICAL_OFFSET_FILE)}; + createOpParamNameEPSGCode(parameterCode)}; if (inverseDirection) { return Transformation::create( createPropertiesForInverse( @@ -4350,9 +4357,14 @@ bool SingleOperation::exportToPROJStringGeneric( bool reverseOffsetSign = false; if (isRegularVerticalGridMethod(methodEPSGCode, reverseOffsetSign)) { - auto fileParameter = - parameterValue(EPSG_NAME_PARAMETER_VERTICAL_OFFSET_FILE, - EPSG_CODE_PARAMETER_VERTICAL_OFFSET_FILE); + int parameterCode = EPSG_CODE_PARAMETER_VERTICAL_OFFSET_FILE; + auto fileParameter = parameterValue( + EPSG_NAME_PARAMETER_VERTICAL_OFFSET_FILE, parameterCode); + if (!fileParameter) { + parameterCode = EPSG_CODE_PARAMETER_GEOID_MODEL_DIFFERENCE_FILE; + fileParameter = parameterValue( + EPSG_NAME_PARAMETER_GEOID_MODEL_DIFFERENCE_FILE, parameterCode); + } if (fileParameter && fileParameter->type() == ParameterValue::Type::FILENAME) { formatter->addStep("vgridshift"); diff --git a/src/proj_constants.h b/src/proj_constants.h index 824932c011..97102d54cc 100644 --- a/src/proj_constants.h +++ b/src/proj_constants.h @@ -600,7 +600,7 @@ /* ------------------------------------------------------------------------ */ #define EPSG_NAME_METHOD_VERTICAL_OFFSET_BY_VELOCITY_GRID_NRCAN \ - "Vertical Offset by velocity grid (NRCan byn)" + "Vertical Offset by velocity grid (NRCan NTv2_Vel)" #define EPSG_CODE_METHOD_VERTICAL_OFFSET_BY_VELOCITY_GRID_NRCAN 1113 /* ------------------------------------------------------------------------ */ @@ -640,6 +640,8 @@ #define EPSG_NAME_METHOD_VERTICALGRID_PL_TXT \ "Vertical Offset by Grid Interpolation (PL txt)" +/* has been deprecated by + * EPSG_CODE_METHOD_VERTICALCHANGE_BY_GEOID_GRID_DIFFERENCE_NRCAN */ #define EPSG_CODE_METHOD_VERTICALGRID_NRCAN_BYN 1112 #define EPSG_NAME_METHOD_VERTICALGRID_NRCAN_BYN \ "Vertical Offset by Grid Interpolation (NRCan byn)" @@ -647,6 +649,14 @@ #define EPSG_NAME_PARAMETER_VERTICAL_OFFSET_FILE "Vertical offset file" #define EPSG_CODE_PARAMETER_VERTICAL_OFFSET_FILE 8732 +#define EPSG_CODE_METHOD_VERTICALCHANGE_BY_GEOID_GRID_DIFFERENCE_NRCAN 1126 +#define EPSG_NAME_METHOD_VERTICALCHANGE_BY_GEOID_GRID_DIFFERENCE_NRCAN \ + "Vertical change by geoid grid difference (NRCan)" + +#define EPSG_NAME_PARAMETER_GEOID_MODEL_DIFFERENCE_FILE \ + "Geoid model difference file" +#define EPSG_CODE_PARAMETER_GEOID_MODEL_DIFFERENCE_FILE 1063 + /* ------------------------------------------------------------------------ */ #define EPSG_CODE_METHOD_NADCON 9613