diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 752d5a81dc..2aa4416306 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -31,7 +31,7 @@ set(ALL_SQL_IN "${CMAKE_CURRENT_BINARY_DIR}/all.sql.in") set(PROJ_DB "${CMAKE_CURRENT_BINARY_DIR}/proj.db") include(sql_filelist.cmake) -set(PROJ_DB_SQL_EXPECTED_MD5 "770eaeb370526e8a2b4bd5e5b56c1dd6") +set(PROJ_DB_SQL_EXPECTED_MD5 "56b3283d1be4ef0ae80eb270582daeff") add_custom_command( OUTPUT ${PROJ_DB} diff --git a/data/sql/conversion.sql b/data/sql/conversion.sql index dd2385c303..2742ebbd78 100644 --- a/data/sql/conversion.sql +++ b/data/sql/conversion.sql @@ -2231,6 +2231,8 @@ INSERT INTO "conversion" VALUES('EPSG','11358','Montana Phillips 83 (meter)','Se INSERT INTO "usage" VALUES('EPSG','25297','conversion','EPSG','11358','EPSG','4848','EPSG','1029'); INSERT INTO "conversion" VALUES('EPSG','11359','Montana Phillips 83 (international foot)','For authoritative metric definition see code 11358. Working unit is International feet (note: not US Survey feet).','EPSG','9807','Transverse Mercator','EPSG','8801','Latitude of natural origin',46.45,'EPSG','9110','EPSG','8802','Longitude of natural origin',-107.39,'EPSG','9110','EPSG','8805','Scale factor at natural origin',1.00011,'EPSG','9201','EPSG','8806','False easting',574146.9816,'EPSG','9002','EPSG','8807','False northing',0.0,'EPSG','9002',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "usage" VALUES('EPSG','25298','conversion','EPSG','11359','EPSG','4848','EPSG','1029'); +INSERT INTO "conversion" VALUES('EPSG','11389','Heathrow Airport GIS Grid 2026','Approximation of Heathrow Airport Grid. ''Azimuth at projection centre'' parameter given by information source as 0°17''56.64382"W.','EPSG','1130','Local Orthographic','EPSG','8811','Latitude of projection centre',51.2812396806,'EPSG','9110','EPSG','8812','Longitude of projection centre',-0.2705963708,'EPSG','9110','EPSG','8813','Azimuth at projection centre',359.420335618,'EPSG','9110','EPSG','8815','Scale factor at projection centre',1.000002816,'EPSG','9201','EPSG','8816','Easting at projection centre',7334.818,'EPSG','9001','EPSG','8817','Northing at projection centre',5637.421,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "usage" VALUES('EPSG','25448','conversion','EPSG','11389','EPSG','4796','EPSG','1189'); INSERT INTO "conversion" VALUES('EPSG','11401','Iowa CS27 North zone','','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',41.3,'EPSG','9110','EPSG','8822','Longitude of false origin',-93.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',43.16,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',42.04,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "usage" VALUES('EPSG','11165','conversion','EPSG','11401','EPSG','2198','EPSG','1142'); INSERT INTO "conversion" VALUES('EPSG','11402','Iowa CS27 South zone','','EPSG','9802','Lambert Conic Conformal (2SP)','EPSG','8821','Latitude of false origin',40.0,'EPSG','9110','EPSG','8822','Longitude of false origin',-93.3,'EPSG','9110','EPSG','8823','Latitude of 1st standard parallel',41.47,'EPSG','9110','EPSG','8824','Latitude of 2nd standard parallel',40.37,'EPSG','9110','EPSG','8826','Easting at false origin',2000000.0,'EPSG','9003','EPSG','8827','Northing at false origin',0.0,'EPSG','9003',NULL,NULL,NULL,NULL,NULL,NULL,0); diff --git a/data/sql/engineering_crs.sql b/data/sql/engineering_crs.sql index 710acc819d..8ae6e01761 100644 --- a/data/sql/engineering_crs.sql +++ b/data/sql/engineering_crs.sql @@ -30,3 +30,5 @@ INSERT INTO "engineering_crs" VALUES('EPSG','5817','Tombak LNG plant',NULL,'EPSG INSERT INTO "usage" VALUES('EPSG','4260','engineering_crs','EPSG','5817','EPSG','2362','EPSG','1029'); INSERT INTO "engineering_crs" VALUES('EPSG','6715','Christmas Island Grid 1985',NULL,'EPSG','4400','EPSG','1134',0); INSERT INTO "usage" VALUES('EPSG','4925','engineering_crs','EPSG','6715','EPSG','4169','EPSG','1056'); +INSERT INTO "engineering_crs" VALUES('EPSG','11378','Heathrow Airport Grid',NULL,'EPSG','4400','EPSG','1452',0); +INSERT INTO "usage" VALUES('EPSG','25471','engineering_crs','EPSG','11378','EPSG','4796','EPSG','1142'); diff --git a/data/sql/engineering_datum.sql b/data/sql/engineering_datum.sql index 0fd47acbbc..10b5105843 100644 --- a/data/sql/engineering_datum.sql +++ b/data/sql/engineering_datum.sql @@ -2,6 +2,8 @@ INSERT INTO "engineering_datum" VALUES('EPSG','1134','Christmas Island Datum 1985','1985-01-01',NULL,NULL,0); INSERT INTO "usage" VALUES('EPSG','13186','engineering_datum','EPSG','1134','EPSG','4169','EPSG','1056'); +INSERT INTO "engineering_datum" VALUES('EPSG','1452','Heathrow Airport Grid',NULL,NULL,NULL,0); +INSERT INTO "usage" VALUES('EPSG','25470','engineering_datum','EPSG','1452','EPSG','4796','EPSG','1142'); INSERT INTO "engineering_datum" VALUES('EPSG','9300','Astra Minas',NULL,NULL,NULL,0); INSERT INTO "usage" VALUES('EPSG','13850','engineering_datum','EPSG','9300','EPSG','1265','EPSG','1216'); INSERT INTO "engineering_datum" VALUES('EPSG','9301','Barcelona',NULL,NULL,NULL,0); diff --git a/data/sql/extent.sql b/data/sql/extent.sql index dae6121890..b425e134d5 100644 --- a/data/sql/extent.sql +++ b/data/sql/extent.sql @@ -3773,6 +3773,7 @@ INSERT INTO "extent" VALUES('EPSG','4792','Uganda - south of equator and west of INSERT INTO "extent" VALUES('EPSG','4793','Liberia - east of 12°W','Liberia - onshore, and offshore east of 12°W.',1.02,8.52,-12.0,-7.36,0); INSERT INTO "extent" VALUES('EPSG','4794','Liberia - west of 12°W','Liberia - offshore west of 12°W.',3.12,6.4,-13.59,-12.0,0); INSERT INTO "extent" VALUES('EPSG','4795','Europe - Nordic and Baltic countries','Denmark, Estonia, Finland, Latvia, Lithuania, and Sweden - onshore and offshore; Norway - onshore, nearshore, and offshore southeast of a line joining Haugesund and the western limit of the Norway-Denmark maritime boundary.',53.89,71.39,3.24,31.77,0); +INSERT INTO "extent" VALUES('EPSG','4796','UK - Heathrow','UK - Heathrow airport and surrounding area.',51.42,51.52,-0.56,-0.37,0); INSERT INTO "extent" VALUES('EPSG','4797','Georgia - west of 42°E','Georgia - west of 42°E - onshore and offshore.',41.43,43.59,38.97,42.0,0); INSERT INTO "extent" VALUES('EPSG','4798','Georgia - east of 42°E','Georgia - east of 42°E - onshore and offshore.',41.04,43.24,41.99,46.72,0); INSERT INTO "extent" VALUES('EPSG','4799','UK - Oxford to Cambridge','United Kingdom (UK) - on or related to the East West Rail (Phases 2 and 3) route from Oxford to Cambridge via Bicester, Bletchley and Bedford, including the route from Claydon Junction to Aylesbury and Princes Risborough.',51.7,52.33,-1.43,0.27,0); diff --git a/data/sql/geodetic_datum_ensemble_member.sql b/data/sql/geodetic_datum_ensemble_member.sql index 2814a8f8eb..51b6a76566 100644 --- a/data/sql/geodetic_datum_ensemble_member.sql +++ b/data/sql/geodetic_datum_ensemble_member.sql @@ -60,6 +60,7 @@ INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6258','EPSG','6765', INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6258','EPSG','6619',56); INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6258','EPSG','1449',57); INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6258','EPSG','1453',58); +INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6258','EPSG','1403',59); INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6326','EPSG','1166',1); INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6326','EPSG','1152',2); INSERT INTO "geodetic_datum_ensemble_member" VALUES('EPSG','6326','EPSG','1153',3); diff --git a/data/sql/helmert_transformation.sql b/data/sql/helmert_transformation.sql index 1352f4a664..e4464af148 100644 --- a/data/sql/helmert_transformation.sql +++ b/data/sql/helmert_transformation.sql @@ -120,6 +120,8 @@ INSERT INTO "helmert_transformation" VALUES('PROJ','ETRS89_TO_ETRS89-CHE[CHTRF95 INSERT INTO "usage" VALUES('PROJ','ETRS89_TO_ETRS89-CHE[CHTRF95]_USAGE','helmert_transformation','PROJ','ETRS89_TO_ETRS89-CHE[CHTRF95]','EPSG','1286','EPSG','1024'); INSERT INTO "helmert_transformation" VALUES('PROJ','ETRS89_TO_ETRS89-LUX[ETRF2000]','ETRS89 to ETRS89-LUX [ETRF2000]','Accuracy 0.1 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4258','EPSG','11393',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); INSERT INTO "usage" VALUES('PROJ','ETRS89_TO_ETRS89-LUX[ETRF2000]_USAGE','helmert_transformation','PROJ','ETRS89_TO_ETRS89-LUX[ETRF2000]','EPSG','1146','EPSG','1024'); +INSERT INTO "helmert_transformation" VALUES('PROJ','ETRS89_TO_NKG_ETRF14','ETRS89 to NKG_ETRF14','Accuracy 0.1 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4258','EPSG','10807',0.1,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); +INSERT INTO "usage" VALUES('PROJ','ETRS89_TO_NKG_ETRF14_USAGE','helmert_transformation','PROJ','ETRS89_TO_NKG_ETRF14','EPSG','4795','EPSG','1024'); INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_TRANSIT','WGS 84 to WGS 84 (Transit)','Accuracy 2.0 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','8888',2.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); INSERT INTO "usage" VALUES('PROJ','WGS84_TO_WGS84_TRANSIT_USAGE','helmert_transformation','PROJ','WGS84_TO_WGS84_TRANSIT','EPSG','1262','EPSG','1024'); INSERT INTO "helmert_transformation" VALUES('PROJ','WGS84_TO_WGS84_G730','WGS 84 to WGS 84 (G730)','Accuracy 2.0 m, from datum ensemble definition','EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4326','EPSG','9053',2.0,0.0,0.0,0.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'',0); diff --git a/data/sql/metadata.sql b/data/sql/metadata.sql index 2d8e428f62..00a6daaf2a 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', 6); -INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v12.051'); -INSERT INTO "metadata" VALUES('EPSG.DATE', '2026-02-28'); +INSERT INTO "metadata" VALUES('EPSG.VERSION', 'v12.053'); +INSERT INTO "metadata" VALUES('EPSG.DATE', '2026-03-06'); -- The value of ${PROJ_VERSION} is substituted at build time by the actual -- value. diff --git a/data/sql/other_transformation.sql b/data/sql/other_transformation.sql index 6de4d95de9..15ad718ed2 100644 --- a/data/sql/other_transformation.sql +++ b/data/sql/other_transformation.sql @@ -866,6 +866,8 @@ INSERT INTO "other_transformation" VALUES('EPSG','11313','NKG_ETRF14 to ETRS89-L INSERT INTO "usage" VALUES('EPSG','25099','other_transformation','EPSG','11313','EPSG','1139','EPSG','1027'); INSERT INTO "other_transformation" VALUES('EPSG','11316','NKG_ETRF14 to ETRS89-LVA [LKS-2020] (2)','Nordic Geodetic Commission (NKG) 2020 transformation. Replaces NKG2008 transformation. Because the difference in coordinates between NKG_ETRF14 and LKS-2020 is small (under a decimetre), although the interpolation CRS is given as NKG_ETRF14, any realization of ETRS89 (including ETRF2014 and LKS-2020) may be used as the interpolation CRS. Scale difference in ppb where 1/billion = 1E-9.','EPSG','1143','Position Vector (geocen) & Geocen translations NEU velocities (gtg)','EPSG','10805','EPSG','10303',0.002,'EPSG','8605','X-axis translation',-0.03958,'EPSG','9001','EPSG','8606','Y-axis translation',-0.05079,'EPSG','9001','EPSG','8607','Z-axis translation',0.05751,'EPSG','9001','EPSG','8608','X-axis rotation',-1.70334,'EPSG','1031','EPSG','8609','Y-axis rotation',1.7302,'EPSG','1031','EPSG','8610','Z-axis rotation',1.3038,'EPSG','1031','EPSG','8611','Scale difference',-2.789,'EPSG','1028','EPSG','1068','Source epoch',2000.0,'EPSG','1029','EPSG','1069','Target epoch',2020.28,'EPSG','1029','EPSG','1050','Point motion velocity grid file','NKG_RF17vel.tif','EPSG','10807','NKG2020',0); INSERT INTO "usage" VALUES('EPSG','25135','other_transformation','EPSG','11316','EPSG','1139','EPSG','1027'); +INSERT INTO "other_transformation" VALUES('EPSG','11388','OSGB36 / British National Grid to Heathrow Airport Grid (1)','Defines Heathrow Airport Grid absolute position and orientation, so considered error-free.','EPSG','9621','Similarity transformation','EPSG','27700','EPSG','11378',0.0,'EPSG','8621','Ordinate 1 of evaluation point in target CRS',-504786.4675,'EPSG','9001','EPSG','8622','Ordinate 2 of evaluation point in target CRS',-156728.1037,'EPSG','9001','EPSG','1061','Scale factor for source CRS axes',1.000259617024,'EPSG','9201','EPSG','8614','Rotation angle of source CRS axes',0.026361909134441,'EPSG','9101',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'HAL-Gbr LHR',0); +INSERT INTO "usage" VALUES('EPSG','25468','other_transformation','EPSG','11388','EPSG','4796','EPSG','1142'); INSERT INTO "other_transformation" VALUES('EPSG','15487','TWD67 / TM2 zone 121 to TWD97 / TM2 zone 121 (1)','Derived at Hu Tzu Shan (23°59''N, 120°58''E). Residuals increase to maximum of 6.4m as distance increases from this point.','EPSG','9656','Cartesian Grid Offsets','EPSG','3828','EPSG','3826',7.0,'EPSG','8728','Easting offset',828.589,'EPSG','9001','EPSG','8729','Northing offset',-206.915,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'asafi-Twn',0); INSERT INTO "usage" VALUES('EPSG','11498','other_transformation','EPSG','15487','EPSG','3982','EPSG','1045'); INSERT INTO "other_transformation" VALUES('EPSG','15596','Tokyo + JSLD height to WGS 84 (7)','','EPSG','9618','Geographic2D with Height Offsets','EPSG','7414','EPSG','4979',1.0,'EPSG','8601','Latitude offset',7.94,'EPSG','9104','EPSG','8602','Longitude offset',-13.97,'EPSG','9104','EPSG','8604','Geoid height',26.9,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'GSI-Jpn 452142',0); diff --git a/data/sql/projected_crs.sql b/data/sql/projected_crs.sql index 4db7695b1d..e4d076bdb4 100644 --- a/data/sql/projected_crs.sql +++ b/data/sql/projected_crs.sql @@ -7850,6 +7850,8 @@ INSERT INTO "projected_crs" VALUES('EPSG','11376','NAD83(2011) / RMTCRS Phillips INSERT INTO "usage" VALUES('EPSG','25315','projected_crs','EPSG','11376','EPSG','4848','EPSG','1029'); INSERT INTO "projected_crs" VALUES('EPSG','11377','NAD83(2011) / RMTCRS Phillips 83 (ft)',NULL,'EPSG','4495','EPSG','6318','EPSG','11359',NULL,0); INSERT INTO "usage" VALUES('EPSG','25316','projected_crs','EPSG','11377','EPSG','4848','EPSG','1029'); +INSERT INTO "projected_crs" VALUES('EPSG','11390','OSGB36 / Heathrow Airport GIS Grid 2026',NULL,'EPSG','4400','EPSG','4277','EPSG','11389',NULL,0); +INSERT INTO "usage" VALUES('EPSG','25473','projected_crs','EPSG','11390','EPSG','4796','EPSG','1189'); INSERT INTO "projected_crs" VALUES('EPSG','20002','MWC18 Grid',NULL,'EPSG','4400','EPSG','20033','EPSG','10127',NULL,0); INSERT INTO "usage" VALUES('EPSG','18336','projected_crs','EPSG','20002','EPSG','4666','EPSG','1141'); INSERT INTO "projected_crs" VALUES('EPSG','20004','Pulkovo 1995 / Gauss-Kruger zone 4',NULL,'EPSG','4530','EPSG','4200','EPSG','16204',NULL,0); diff --git a/scripts/build_db.py b/scripts/build_db.py index 49b45ddc97..eed47f69f8 100755 --- a/scripts/build_db.py +++ b/scripts/build_db.py @@ -323,7 +323,7 @@ def create_datumensemble_transformations(proj_db_cursor): # Insert a null transformation between the representative CRS of the datum ensemble # and each representative CRS of its members. crs_code, crs_name, crs_extent = find_crs_code_name_extent_from_geodetic_datum_code(proj_db_cursor, member_code) - assert crs_extent == ensemble_crs_extent or (crs_extent in (2830, 1262) and ensemble_crs_extent in (2830, 1262)) or (ensemble_crs_code == 4258 and ensemble_crs_extent == 4755 and crs_extent in (1298, 1162, 4543, 1096, 1305, 1090, 1225, 1139, 1145, 3343, 1076, 1212, 1056, 4542, 1192, 1103, 1050, 1095, 1182, 1264, 1172, 1037, 1044, 1079, 1211, 1093, 1106, 1148, 4832, 1197, 4833, 1119, 1286, 1080, 1025, 1146)), (ensemble_crs_code, ensemble_crs_name, ensemble_crs_extent, crs_code, crs_name, crs_extent) + assert crs_extent == ensemble_crs_extent or (crs_extent in (2830, 1262) and ensemble_crs_extent in (2830, 1262)) or (ensemble_crs_code == 4258 and ensemble_crs_extent == 4755 and crs_extent in (1298, 1162, 4543, 1096, 1305, 1090, 1225, 1139, 1145, 3343, 1076, 1212, 1056, 4542, 1192, 1103, 1050, 1095, 1182, 1264, 1172, 1037, 1044, 1079, 1211, 1093, 1106, 1148, 4832, 1197, 4833, 1119, 1286, 1080, 1025, 1146, 4795)), (ensemble_crs_code, ensemble_crs_name, ensemble_crs_extent, crs_code, crs_name, crs_extent) # Check if there's already any transformation registered between # the member crs and the ensemble crs