diff options
23 files changed, 1067 insertions, 2793 deletions
diff --git a/data/Makefile.am b/data/Makefile.am index 0f880aef..564bbeed 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -34,7 +34,7 @@ SQL_ORDERED_LIST = sql/begin.sql \ sql/esri.sql \ sql/ignf.sql \ sql/grid_alternatives.sql \ - sql/grid_alternatives_generated.sql \ + sql/grid_alternatives_generated_noaa.sql \ sql/customizations.sql \ sql/commit.sql diff --git a/data/sql/commit.sql b/data/sql/commit.sql index b2bdc046..a3028586 100644 --- a/data/sql/commit.sql +++ b/data/sql/commit.sql @@ -133,9 +133,9 @@ FOR EACH ROW BEGIN SELECT RAISE(ABORT, 'missing GEOID18 in geoid_model') WHERE NOT EXISTS(SELECT 1 FROM geoid_model WHERE name = 'GEOID18'); - -- check presence of NZ height shift grids - SELECT RAISE(ABORT, 'missing NZ height shift grids') - WHERE NOT EXISTS(SELECT 1 FROM grid_alternatives WHERE original_grid_name = 'auckht1946-nzvd2016.gtx'); + -- check presence of au_ga_AUSGeoid98.tif + SELECT RAISE(ABORT, 'missing au_ga_AUSGeoid98.tif') + WHERE NOT EXISTS(SELECT 1 FROM grid_alternatives WHERE proj_grid_name = 'au_ga_AUSGeoid98.tif'); END; INSERT INTO dummy DEFAULT VALUES; diff --git a/data/sql/customizations.sql b/data/sql/customizations.sql index 503a1fe0..82328f3c 100644 --- a/data/sql/customizations.sql +++ b/data/sql/customizations.sql @@ -1,5 +1,26 @@ -- This file is hand generated. +-- grid_alternatives entries created from existing ones + +INSERT INTO grid_alternatives(original_grid_name, + proj_grid_name, + old_proj_grid_name, + proj_grid_format, + proj_method, + inverse_direction, + package_name, + url, direct_download, open_license, directory) + SELECT grid_name, + 'au_ga_AUSGeoid98.tif', + 'AUSGeoid98.gtx', + 'GTiff', + 'geoid_like', + 0, + NULL, + 'https://cdn.proj.org/au_ga_AUSGeoid98.tif', 1, 1, NULL FROM grid_transformation WHERE + grid_name LIKE '%DAT.htm' AND name LIKE 'GDA94 to AHD height%'; + + INSERT INTO "geodetic_crs" VALUES('OGC','CRS84','WGS 84 (CRS84)',NULL,NULL,'geographic 2D','EPSG','6424','EPSG','6326','EPSG','1262',NULL,0); INSERT INTO "other_transformation" VALUES('PROJ','CRS84_TO_EPSG_4326','OGC:CRS84 to WGS 84',NULL,NULL,'EPSG','9843','Axis Order Reversal (2D)','OGC','CRS84','EPSG','4326','EPSG','1262',0.0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,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/esri.sql b/data/sql/esri.sql index fd03cf22..b793e60f 100644 --- a/data/sql/esri.sql +++ b/data/sql/esri.sql @@ -12069,14 +12069,15 @@ INSERT INTO "helmert_transformation" VALUES('ESRI','108088','Saint_Pierre_et_Miq INSERT INTO "helmert_transformation" VALUES('ESRI','108089','OSGB_1936_To_WGS_1984_8_BAD_DX',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4277','EPSG','4326','EPSG','3893',5.0,370.396,-108.938,435.682,'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,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108094','MGI_Ferro_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4805','EPSG','4326','EPSG','2370',5.0,682.0,-203.0,480.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108095','MGI_To_WGS_1984_2',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4312','EPSG','4326','EPSG','1037',1.5,577.326,90.129,463.919,'EPSG','9001',5.1365988,1.4742,5.2970436,'EPSG','9104',2.4232,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108096','Chos_Malal_1914_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4160','EPSG','4326','EPSG','2325',10.5,5.5,176.7,141.4,'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,0); +INSERT INTO "area" VALUES('ESRI','147','Argentina - Neuquen province Chos Malal area','Argentina - Neuquen province Chos Malal area',-37.5,-36.14,-70.5,-70.03,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108096','Chos_Malal_1914_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4160','EPSG','4326','ESRI','147',10.5,5.5,176.7,141.4,'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,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108097','Indian_1960_To_WGS_1984_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4131','EPSG','4326','EPSG','1495',27.0,199.0,931.0,318.9,'EPSG','9001',0.0,0.0,0.814,'EPSG','9104',-0.38,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108099','Palestine_1923_To_WGS_1984_2',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4281','EPSG','4326','EPSG','2603',3.5,-229.0,-67.0,277.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108102','NTF_Paris_To_RGF_1993_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4807','EPSG','4171','EPSG','3694',2.0,-168.0,-60.0,320.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108106','Tokyo_To_WGS_1984_2001',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4301','EPSG','4326','EPSG','3957',4.0,-147.54,507.26,680.47,'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,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108107','JGD_2000_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4612','EPSG','4326','EPSG','1135',4.0,-1.126,-0.077,-0.037,'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,0); -INSERT INTO "area" VALUES('ESRI','147','Japan - NTv2','Japan - NTv2',20.0,47.0,121.0,154.0,0); -INSERT INTO "grid_transformation" VALUES('ESRI','108109','Tokyo_To_WGS_1984_NTv2',NULL,NULL,'EPSG','9615','NTv2','EPSG','4301','EPSG','4326','ESRI','147',1.0,'EPSG','8656','Latitude and longitude difference file','japan/tky2jgd',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','148','Japan - NTv2','Japan - NTv2',20.0,47.0,121.0,154.0,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108109','Tokyo_To_WGS_1984_NTv2',NULL,NULL,'EPSG','9615','NTv2','EPSG','4301','EPSG','4326','ESRI','148',1.0,'EPSG','8656','Latitude and longitude difference file','japan/tky2jgd',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108110','Datum_73_To_WGS_1984_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4274','EPSG','4326','EPSG','1294',5.0,-223.237,110.193,36.649,'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,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108111','ED_1950_To_WGS_1984_PT3',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4230','EPSG','4326','EPSG','1294',999.0,-86.277,-108.879,-120.181,'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,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108112','Graciosa_Base_SW_1948_To_WGS_1984_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37241','EPSG','4326','EPSG','1301',5.0,-106.226,166.366,-37.893,'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,0); @@ -12099,12 +12100,12 @@ INSERT INTO "helmert_transformation" VALUES('ESRI','108128','CGRS_1993_To_ETRS_1 INSERT INTO "helmert_transformation" VALUES('ESRI','108129','CGRS_1993_To_WGS_1984',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','6311','EPSG','4326','EPSG','3236',1.0,8.846,-4.394,-1.122,'EPSG','9001',-0.00237,-0.146528,0.130428,'EPSG','9104',0.783926,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108130','NTF_To_RGF_1993_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4275','EPSG','4171','EPSG','3694',2.0,-168.0,-60.0,320.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "grid_transformation" VALUES('ESRI','108136','ED_1950_To_WGS_1984_NTv2_Peninsula',NULL,NULL,'EPSG','9615','NTv2','EPSG','4230','EPSG','4326','ESRI','145',1.0,'EPSG','8656','Latitude and longitude difference file','spain/peninsula',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); -INSERT INTO "area" VALUES('ESRI','148','Northern Marianas - Rota','Northern Marianas - Rota',14.0,14.75,145.0,146.0,0); -INSERT INTO "helmert_transformation" VALUES('ESRI','108137','Guam_1963_To_HARN_Marianas_Rota',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4675','EPSG','4152','ESRI','148',999.0,-96.234,-252.601,258.222,'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,0); -INSERT INTO "area" VALUES('ESRI','149','Northern Marianas - Saipan','Northern Marianas - Saipan',14.75,15.5,145.0,146.0,0); -INSERT INTO "helmert_transformation" VALUES('ESRI','108138','Guam_1963_To_HARN_Marianas_Saipan',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4675','EPSG','4152','ESRI','149',999.0,-91.766,-255.817,255.702,'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,0); -INSERT INTO "area" VALUES('ESRI','150','Northern Marianas - Tinian and Aguijan','Northern Marianas - Tinian and Aguijan',14.75,15.13333333333333,145.5,145.75,0); -INSERT INTO "helmert_transformation" VALUES('ESRI','108139','Guam_1963_To_HARN_Marianas_Tinian_Aguijan',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4675','EPSG','4152','ESRI','150',999.0,-93.062,-255.309,256.696,'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,0); +INSERT INTO "area" VALUES('ESRI','149','Northern Marianas - Rota','Northern Marianas - Rota',14.0,14.75,145.0,146.0,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108137','Guam_1963_To_HARN_Marianas_Rota',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4675','EPSG','4152','ESRI','149',999.0,-96.234,-252.601,258.222,'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,0); +INSERT INTO "area" VALUES('ESRI','150','Northern Marianas - Saipan','Northern Marianas - Saipan',14.75,15.5,145.0,146.0,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108138','Guam_1963_To_HARN_Marianas_Saipan',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4675','EPSG','4152','ESRI','150',999.0,-91.766,-255.817,255.702,'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,0); +INSERT INTO "area" VALUES('ESRI','151','Northern Marianas - Tinian and Aguijan','Northern Marianas - Tinian and Aguijan',14.75,15.13333333333333,145.5,145.75,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108139','Guam_1963_To_HARN_Marianas_Tinian_Aguijan',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4675','EPSG','4152','ESRI','151',999.0,-93.062,-255.309,256.696,'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,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108145','NGO_1948_Oslo_To_WGS_1984',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4817','EPSG','4326','EPSG','1352',5.0,319.08,37.81,463.57,'EPSG','9001',-6.2970588,1.2903926,5.712916338,'EPSG','9104',10.819,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108146','NGO_1948_Oslo_To_ETRS_1989_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4817','EPSG','4258','EPSG','1352',3.0,278.3,93.0,474.5,'EPSG','9001',7.889,0.05,-6.61,'EPSG','9104',6.21,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108147','NGO_1948_Oslo_To_WGS_1984_1',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','EPSG','4817','EPSG','4326','EPSG','1352',3.0,278.3,93.0,474.5,'EPSG','9001',7.889,0.05,-6.61,'EPSG','9104',6.21,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); @@ -12132,17 +12133,17 @@ INSERT INTO "helmert_transformation" VALUES('ESRI','108170','Porto_Santo_1936_To INSERT INTO "helmert_transformation" VALUES('ESRI','108171','Porto_Santo_1936_To_WGS_1984_3_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4615','EPSG','4326','EPSG','3680',0.3,-503.3,-247.574,313.025,'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,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108172','Sao_Braz_To_PTRA08_1_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37249','EPSG','5013','EPSG','1345',0.025,-269.089,186.247,155.667,'EPSG','9001',2.005,3.606,-0.366,'EPSG','9104',0.097,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108173','Sao_Braz_To_PTRA08_2_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37249','EPSG','5013','EPSG','2871',0.03,-249.507,179.302,119.92,'EPSG','9001',1.406,2.423,-0.479,'EPSG','9104',0.952,'EPSG','9202',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 "area" VALUES('ESRI','151','Azores - Santa Maria Island','Azores - Santa Maria Island',36.9,37.1,-25.25,-24.95,0); -INSERT INTO "helmert_transformation" VALUES('ESRI','108174','Sao_Braz_To_PTRA08_3_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37249','EPSG','5013','ESRI','151',0.01,-440.296,58.548,296.265,'EPSG','9001',1.128,10.202,4.559,'EPSG','9104',-0.438,'EPSG','9202',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 "area" VALUES('ESRI','152','Azores - Santa Maria Island','Azores - Santa Maria Island',36.9,37.1,-25.25,-24.95,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108174','Sao_Braz_To_PTRA08_3_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37249','EPSG','5013','ESRI','152',0.01,-440.296,58.548,296.265,'EPSG','9001',1.128,10.202,4.559,'EPSG','9104',-0.438,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108175','Sao_Braz_To_PTRA08_1_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37249','EPSG','5013','EPSG','1345',0.8,-204.926,140.353,55.063,'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,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108176','Sao_Braz_To_PTRA08_2_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37249','EPSG','5013','EPSG','2871',0.8,-204.519,140.159,55.404,'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,0); -INSERT INTO "helmert_transformation" VALUES('ESRI','108177','Sao_Braz_To_PTRA08_3_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37249','EPSG','5013','ESRI','151',0.8,-205.808,140.771,54.326,'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,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108177','Sao_Braz_To_PTRA08_3_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37249','EPSG','5013','ESRI','152',0.8,-205.808,140.771,54.326,'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,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108178','Sao_Braz_To_WGS_1984_1_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37249','EPSG','4326','EPSG','1345',0.035,-269.089,186.247,155.667,'EPSG','9001',2.005,3.606,-0.366,'EPSG','9104',0.097,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108179','Sao_Braz_To_WGS_1984_2_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37249','EPSG','4326','EPSG','2871',0.04,-249.507,179.302,119.92,'EPSG','9001',1.406,2.423,-0.479,'EPSG','9104',0.952,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108180','Sao_Braz_To_WGS_1984_3_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37249','EPSG','4326','ESRI','151',0.03,-440.296,58.548,296.265,'EPSG','9001',1.128,10.202,4.559,'EPSG','9104',-0.438,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108180','Sao_Braz_To_WGS_1984_3_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37249','EPSG','4326','ESRI','152',0.03,-440.296,58.548,296.265,'EPSG','9001',1.128,10.202,4.559,'EPSG','9104',-0.438,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108181','Sao_Braz_To_WGS_1984_1_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37249','EPSG','4326','EPSG','1345',0.9,-204.926,140.353,55.063,'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,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108182','Sao_Braz_To_WGS_1984_2_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37249','EPSG','4326','EPSG','2871',0.9,-204.519,140.159,55.404,'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,0); -INSERT INTO "helmert_transformation" VALUES('ESRI','108183','Sao_Braz_To_WGS_1984_3_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37249','EPSG','4326','ESRI','151',0.9,-205.808,140.771,54.326,'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,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108183','Sao_Braz_To_WGS_1984_3_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37249','EPSG','4326','ESRI','152',0.9,-205.808,140.771,54.326,'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,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108184','Graciosa_1948_To_PTRA08_1_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37241','EPSG','5013','EPSG','1301',0.18,-185.391,122.266,35.989,'EPSG','9001',0.12,3.18,2.046,'EPSG','9104',-1.053,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108185','Graciosa_1948_To_PTRA08_2_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37241','EPSG','5013','EPSG','2873',0.005,-76.822,257.457,-12.817,'EPSG','9001',2.136,-0.033,-2.392,'EPSG','9104',-0.031,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108186','Graciosa_1948_To_PTRA08_3_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37241','EPSG','5013','EPSG','3681',0.004,-210.371,49.768,0.808,'EPSG','9001',-2.036,3.046,3.709,'EPSG','9104',0.934,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); @@ -12168,9 +12169,9 @@ INSERT INTO "helmert_transformation" VALUES('ESRI','108210','DHDN_To_WGS_1984_7x INSERT INTO "helmert_transformation" VALUES('ESRI','108211','WGS_1984_To_Observatorio_Meteorologico_1965_1',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4326','ESRI','104126','EPSG','1147',999.0,148.635396,339.470115,157.265381,'EPSG','9001',32.87685,-76.963371,-32.622853,'EPSG','9104',-8.204889,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108212','SWEREF99_To_RT90',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4619','EPSG','4124','EPSG','1225',999.0,-414.1055246174168,-41.3265500041888,-603.0582474221075,'EPSG','9001',-0.8551163376151379,2.141317405481035,-7.022729828586432,'EPSG','9104',0.0,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108213','WGS_1984_To_RT90',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4326','EPSG','4124','EPSG','1225',999.0,-414.0978567149,-41.3381489658,-603.0627177516,'EPSG','9001',-0.8550434314,2.1413465185,-7.0227209516,'EPSG','9104',0.0,'EPSG','9202',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 "area" VALUES('ESRI','152','Iceland - NADCON','Iceland - NADCON',63.2700005,66.6600003,-24.6499996,-13.2499999,0); -INSERT INTO "grid_transformation" VALUES('ESRI','108214','ISN_1993_To_ISN_2004',NULL,NULL,'EPSG','9615','NTv2','EPSG','4659','EPSG','5324','ESRI','152',0.05,'EPSG','8656','Latitude and longitude difference file','icegrid2004',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); -INSERT INTO "grid_transformation" VALUES('ESRI','108216','ISN_2004_To_ISN_1993',NULL,NULL,'EPSG','9615','NTv2','EPSG','5324','EPSG','4659','ESRI','152',0.05,'EPSG','8656','Latitude and longitude difference file','ICEGRID93',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "area" VALUES('ESRI','153','Iceland - NADCON','Iceland - NADCON',63.2700005,66.6600003,-24.6499996,-13.2499999,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108214','ISN_1993_To_ISN_2004',NULL,NULL,'EPSG','9615','NTv2','EPSG','4659','EPSG','5324','ESRI','153',0.05,'EPSG','8656','Latitude and longitude difference file','icegrid2004',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108216','ISN_2004_To_ISN_1993',NULL,NULL,'EPSG','9615','NTv2','EPSG','5324','EPSG','4659','ESRI','153',0.05,'EPSG','8656','Latitude and longitude difference file','ICEGRID93',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108217','La_Canoa_To_SIRGAS',NULL,NULL,'EPSG','9636','Molodensky-Badekas (CF geog2D domain)','EPSG','4247','EPSG','4170','EPSG','3327',15.0,-270.933,115.599,-360.226,'EPSG','9001',-5.266,-1.238,2.381,'EPSG','9104',-5.109,'EPSG','9202',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2464351.594,-5783466.613,974809.808,'EPSG','9001',NULL,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108220','Palestine_1923_To_WGS_1984_1X',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4281','EPSG','4326','EPSG','1126',1.5,-181.0,-122.0,225.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108222','Datum_Lisboa_Hayford_To_Datum_73_1',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104106','EPSG','4274','EPSG','1294',5.0,-80.809,-170.77,66.991,'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,0); @@ -12224,19 +12225,19 @@ INSERT INTO "helmert_transformation" VALUES('ESRI','108294','Graciosa_1948_To_WG INSERT INTO "helmert_transformation" VALUES('ESRI','108295','Graciosa_1948_To_WGS_1984_4_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37241','EPSG','4326','EPSG','2874',0.3,-105.531,166.39,-37.326,'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,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108296','Graciosa_1948_To_WGS_1984_5_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37241','EPSG','4326','EPSG','2875',0.9,-105.756,165.972,-37.313,'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,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108297','Graciosa_1948_To_WGS_1984_6_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37241','EPSG','4326','EPSG','2872',0.2,-106.235,166.236,-37.768,'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,0); -INSERT INTO "area" VALUES('ESRI','153','USA - Idaho and Montana','USA - Idaho and Montana',41.0,49.38,-119.0,-104.0,0); -INSERT INTO "grid_transformation" VALUES('ESRI','108298','NAD_1983_To_HARN_Montana_Idaho',NULL,NULL,'EPSG','9615','NTv2','EPSG','4269','EPSG','4152','ESRI','153',0.05,'EPSG','8656','Latitude and longitude difference file','imhpgn',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); -INSERT INTO "helmert_transformation" VALUES('ESRI','108299','Guam_1963_To_WGS_1984_Saipan',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4675','EPSG','4326','ESRI','149',999.0,59.935,118.4,-10.871,'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,0); -INSERT INTO "helmert_transformation" VALUES('ESRI','108300','NAD_1983_HARN_To_WGS_1984_Saipan',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4152','EPSG','4326','ESRI','149',999.0,1.2,0.4,0.55,'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,0); +INSERT INTO "area" VALUES('ESRI','154','USA - Idaho and Montana','USA - Idaho and Montana',41.0,49.38,-119.0,-104.0,0); +INSERT INTO "grid_transformation" VALUES('ESRI','108298','NAD_1983_To_HARN_Montana_Idaho',NULL,NULL,'EPSG','9615','NTv2','EPSG','4269','EPSG','4152','ESRI','154',0.05,'EPSG','8656','Latitude and longitude difference file','imhpgn',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108299','Guam_1963_To_WGS_1984_Saipan',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4675','EPSG','4326','ESRI','150',999.0,59.935,118.4,-10.871,'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,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108300','NAD_1983_HARN_To_WGS_1984_Saipan',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','EPSG','4152','EPSG','4326','ESRI','150',999.0,1.2,0.4,0.55,'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,0); INSERT INTO "grid_transformation" VALUES('ESRI','108302','ATS_1977_To_NAD_1983_CSRS_NTv2_Maritimes',NULL,NULL,'EPSG','9615','NTv2','EPSG','4122','EPSG','4617','EPSG','1283',999.0,'EPSG','8656','Latitude and longitude difference file','canada/GS7783',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108303','Pohnpei_To_WGS_1984',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104109','EPSG','4326','EPSG','1161',999.0,-89.121,-348.182,260.871,'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,0); -INSERT INTO "grid_transformation" VALUES('ESRI','108304','Guam_1963_To_NAD_1983_HARN_Saipan',NULL,NULL,'EPSG','9615','NTv2','EPSG','4675','EPSG','4152','ESRI','149',999.0,'EPSG','8656','Latitude and longitude difference file','c1hpgn',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); -INSERT INTO grid_alternatives VALUES ('c1hpgn', 'c1hpgn.gsb', 'NTv2', 'hgridshift', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); -INSERT INTO "grid_transformation" VALUES('ESRI','108305','Guam_1963_To_NAD_1983_HARN_Rota',NULL,NULL,'EPSG','9615','NTv2','EPSG','4675','EPSG','4152','ESRI','148',999.0,'EPSG','8656','Latitude and longitude difference file','c2hpgn',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); -INSERT INTO grid_alternatives VALUES ('c2hpgn', 'c2hpgn.gsb', 'NTv2', 'hgridshift', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); +INSERT INTO "grid_transformation" VALUES('ESRI','108304','Guam_1963_To_NAD_1983_HARN_Saipan',NULL,NULL,'EPSG','9615','NTv2','EPSG','4675','EPSG','4152','ESRI','150',999.0,'EPSG','8656','Latitude and longitude difference file','c1hpgn',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO grid_alternatives VALUES ('c1hpgn', 'us_noaa_c1hpgn.tif', 'c1hpgn.gsb', 'GTiff', 'hgridshift', 0, NULL, 'https://cdn.proj.org/us_noaa_c1hpgn.tif', 1, 1, NULL); +INSERT INTO "grid_transformation" VALUES('ESRI','108305','Guam_1963_To_NAD_1983_HARN_Rota',NULL,NULL,'EPSG','9615','NTv2','EPSG','4675','EPSG','4152','ESRI','149',999.0,'EPSG','8656','Latitude and longitude difference file','c2hpgn',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO grid_alternatives VALUES ('c2hpgn', 'us_noaa_c2hpgn.tif', 'c2hpgn.gsb', 'GTiff', 'hgridshift', 0, NULL, 'https://cdn.proj.org/us_noaa_c2hpgn.tif', 1, 1, NULL); INSERT INTO "grid_transformation" VALUES('ESRI','108306','Old_Hawaiian_To_NAD_1983_HARN_Hawaii',NULL,NULL,'EPSG','9615','NTv2','EPSG','4135','EPSG','4152','EPSG','1334',0.05,'EPSG','8656','Latitude and longitude difference file','ohdhihpgn',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); -INSERT INTO "area" VALUES('ESRI','154','Pacific - USA interests Pacific and Mariana plates','Pacific - USA interests Pacific and Mariana plates',-17.56,31.8,129.48,-151.27,0); -INSERT INTO "helmert_transformation" VALUES('ESRI','108307','NAD_1983_HARN_PACP00_MARP00_To_WGS_1984',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4152','EPSG','4326','ESRI','154',999.0,-0.9102,2.0141,0.5602,'EPSG','9001',-0.029039,-0.010065,-0.010101,'EPSG','9104',0.0,'EPSG','9202',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 "area" VALUES('ESRI','155','Pacific - USA interests Pacific and Mariana plates','Pacific - USA interests Pacific and Mariana plates',-17.56,31.8,129.48,-151.27,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108307','NAD_1983_HARN_PACP00_MARP00_To_WGS_1984',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4152','EPSG','4326','ESRI','155',999.0,-0.9102,2.0141,0.5602,'EPSG','9001',-0.029039,-0.010065,-0.010101,'EPSG','9104',0.0,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108330','Old_Hawaiian_Intl_1924_To_WGS_1984_Mean',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104138','EPSG','4326','EPSG','1334',38.0,201.0,-228.0,-346.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108331','Old_Hawaiian_Intl_1924_To_WGS_1984_Hawaii',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104138','EPSG','4326','EPSG','1546',44.0,229.0,-222.0,-348.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108332','Old_Hawaiian_Intl_1924_To_WGS_1984_Kauai',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','104138','EPSG','4326','EPSG','1549',35.0,185.0,-233.0,-337.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); @@ -12246,17 +12247,17 @@ INSERT INTO "helmert_transformation" VALUES('ESRI','108335','ED_1950_To_WGS_1984 INSERT INTO "helmert_transformation" VALUES('ESRI','108336','OSGB_1936_To_WGS_1984_NGA_7PAR',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4277','EPSG','4326','EPSG','1264',21.0,446.0,-99.0,544.0,'EPSG','9001',-0.945,-0.261,-0.435,'EPSG','9104',-20.8927,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108337','Hong_Kong_1980_To_ITRF_1996',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4611','EPSG','8995','EPSG','1118',1.0,-162.619,-276.959,-161.764,'EPSG','9001',-0.067753,2.243648,1.158828,'EPSG','9104',-1.094246,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108341','Observatorio_Meteorologico_1939_To_PTRA08_1_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37245','EPSG','5013','EPSG','1344',0.03,-487.978,-226.275,102.787,'EPSG','9001',-0.743,1.677,2.087,'EPSG','9104',1.485,'EPSG','9202',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 "area" VALUES('ESRI','155','Azores - Flores Island','Azores - Flores Island',39.35,39.5,-31.3,-31.1,0); -INSERT INTO "helmert_transformation" VALUES('ESRI','108342','Observatorio_Meteorologico_1939_To_PTRA08_2_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37245','EPSG','5013','ESRI','155',0.02,-511.151,-181.269,139.609,'EPSG','9001',1.05,2.703,1.798,'EPSG','9104',3.071,'EPSG','9202',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 "area" VALUES('ESRI','156','Azores - Flores Island','Azores - Flores Island',39.35,39.5,-31.3,-31.1,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108342','Observatorio_Meteorologico_1939_To_PTRA08_2_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37245','EPSG','5013','ESRI','156',0.02,-511.151,-181.269,139.609,'EPSG','9001',1.05,2.703,1.798,'EPSG','9104',3.071,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108343','Observatorio_Meteorologico_1939_To_PTRA08_3_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37245','EPSG','5013','EPSG','3685',0.07,-1333.976,-487.235,945.031,'EPSG','9001',6.674,35.963,20.438,'EPSG','9104',-11.187,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108344','Observatorio_Meteorologico_1939_To_PTRA08_1_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37245','EPSG','5013','EPSG','1344',0.06,-423.058,-172.868,83.772,'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,0); -INSERT INTO "helmert_transformation" VALUES('ESRI','108345','Observatorio_Meteorologico_1939_To_PTRA08_2_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37245','EPSG','5013','ESRI','155',0.056,-423.053,-172.871,83.771,'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,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108345','Observatorio_Meteorologico_1939_To_PTRA08_2_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37245','EPSG','5013','ESRI','156',0.056,-423.053,-172.871,83.771,'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,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108346','Observatorio_Meteorologico_1939_To_PTRA08_3_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37245','EPSG','5013','EPSG','3685',0.064,-423.024,-172.923,83.83,'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,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108347','Observatorio_Meteorologico_1939_To_WGS_1984_1_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37245','EPSG','4326','EPSG','1344',0.06,-487.978,-226.275,102.787,'EPSG','9001',-0.743,1.677,2.087,'EPSG','9104',1.485,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108348','Observatorio_Meteorologico_1939_To_WGS_1984_2_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37245','EPSG','4326','ESRI','155',0.05,-511.151,-181.269,139.609,'EPSG','9001',1.05,2.703,1.798,'EPSG','9104',3.071,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108348','Observatorio_Meteorologico_1939_To_WGS_1984_2_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37245','EPSG','4326','ESRI','156',0.05,-511.151,-181.269,139.609,'EPSG','9001',1.05,2.703,1.798,'EPSG','9104',3.071,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108349','Observatorio_Meteorologico_1939_To_WGS_1984_3_7par',NULL,NULL,'EPSG','9606','Position Vector transformation (geog2D domain)','ESRI','37245','EPSG','4326','EPSG','3685',0.1,-1333.976,-487.235,945.031,'EPSG','9001',6.674,35.963,20.438,'EPSG','9104',-11.187,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108350','Observatorio_Meteorologico_1939_To_WGS_1984_1_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37245','EPSG','4326','EPSG','1344',0.1,-423.058,-172.868,83.772,'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,0); -INSERT INTO "helmert_transformation" VALUES('ESRI','108351','Observatorio_Meteorologico_1939_To_WGS_1984_2_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37245','EPSG','4326','ESRI','155',0.08,-423.053,-172.871,83.771,'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,0); +INSERT INTO "helmert_transformation" VALUES('ESRI','108351','Observatorio_Meteorologico_1939_To_WGS_1984_2_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37245','EPSG','4326','ESRI','156',0.08,-423.053,-172.871,83.771,'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,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108352','Observatorio_Meteorologico_1939_To_WGS_1984_3_3par',NULL,NULL,'EPSG','9603','Geocentric translations (geog2D domain)','ESRI','37245','EPSG','4326','EPSG','3685',0.085,-423.024,-172.923,83.83,'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,0); INSERT INTO "helmert_transformation" VALUES('ESRI','108353','ITRF_2000_To_NAD_1983_2011',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','8997','EPSG','6318','EPSG','1511',0.1,0.9956,-1.9013,-0.5215,'EPSG','9001',0.025915,0.009426,0.011599,'EPSG','9104',0.00062,'EPSG','9202',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 "helmert_transformation" VALUES('ESRI','108354','WGS_1984_(ITRF00)_To_NAD_1983_2011',NULL,NULL,'EPSG','9607','Coordinate Frame rotation (geog2D domain)','EPSG','4326','EPSG','6318','EPSG','1511',0.1,0.9956,-1.9013,-0.5215,'EPSG','9001',0.025915,0.009426,0.011599,'EPSG','9104',0.00062,'EPSG','9202',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/grid_alternatives.sql b/data/sql/grid_alternatives.sql index 48801ef9..281a60e6 100644 --- a/data/sql/grid_alternatives.sql +++ b/data/sql/grid_alternatives.sql @@ -1,2145 +1,208 @@ --- This file is hand generated. --- --- NOTE: see also grid_alternatives_generated.sql for automatically generated --- entries. --- - ------------------------------------------------------- --- grid_packages ------------------------------------------------------- - -INSERT INTO grid_packages VALUES ('proj-datumgrid', - 'Package with grids of general interest', - 'https://download.osgeo.org/proj/proj-datumgrid-1.8.zip', - 1, - 1); - -INSERT INTO grid_packages VALUES ('proj-datumgrid-north-america', - 'Package with grids of interest for North-America', - 'https://download.osgeo.org/proj/proj-datumgrid-north-america-1.3.zip', - 1, - 1); - -INSERT INTO grid_packages VALUES ('proj-datumgrid-europe', - 'Package with grids of interest for Europe', - 'https://download.osgeo.org/proj/proj-datumgrid-europe-1.5.zip', - 1, - 1); - -INSERT INTO grid_packages VALUES ('proj-datumgrid-oceania', - 'Package with grids of interest for Oceania', - 'https://download.osgeo.org/proj/proj-datumgrid-oceania-1.1.zip', - 1, - 1); - - -- not released yet at the time of writing -INSERT INTO grid_packages VALUES ('proj-datumgrid-world', - 'Package with grids of global extent (too large to be included in proj-datumgrid)', - 'https://download.osgeo.org/proj/proj-datumgrid-world-1.0.zip', - 1, - 1); - ------------------------------------------------------- --- grid_alternatives ------------------------------------------------------- - INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('null', - 'null', - 'CTable2', - 'hgridshift', - 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('rgf93_ntf.gsb', - 'ntf_r93.gsb', -- the PROJ grid is the reverse way of the EPSG one - 'NTv2', - 'hgridshift', - 1, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('NTv1_0.gsb', - 'ntv1_can.dat', - 'NTv1', - 'hgridshift', - 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('NTv2_0.gsb', - 'ntv2_0.gsb', -- just a case change - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('May76v20.gsb', - 'MAY76V20.gsb', -- just a case change - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('BETA2007.gsb', - 'BETA2007.gsb', -- no change. Just document the package - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('BWTA2017.gsb', - 'BWTA2017.gsb', -- no change. Just document the package - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('SeTa2016.gsb', - 'SeTa2016.gsb', -- no change. Just document the package - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('NTv2_SN.gsb', - 'NTv2_SN.gsb', -- no change. Just document the package - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('AT_GIS_GRID.gsb', - 'AT_GIS_GRID.gsb', -- no change. Just document the package - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('nzgd2kgrid0005.gsb', - 'nzgd2kgrid0005.gsb', -- no change. Just document the package - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('OSTN15_NTv2_OSGBtoETRS.gsb', - 'OSTN15_NTv2_OSGBtoETRS.gsb', -- no change. Just document the package - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - +VALUES +-- the PROJ grid is the reverse way of the EPSG one +('rgf93_ntf.gsb','fr_ign_ntf_r93.tif','ntf_r93.gsb','GTiff','hgridshift',1,NULL,'https://cdn.proj.org/fr_ign_ntf_r93.tif',1,1,NULL), +('NTv1_0.gsb','ca_nrc_ntv1_can.tif','ntv1_can.dat','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_ntv1_can.tif',1,1,NULL), +-- just a case change +('NTv2_0.gsb','ca_nrc_ntv2_0.tif','ntv2_0.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_ntv2_0.tif',1,1,NULL), +-- just a case change +('May76v20.gsb','ca_nrc_MAY76V20.tif','MAY76V20.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_MAY76V20.tif',1,1,NULL), +('BETA2007.gsb','de_adv_BETA2007.tif','BETA2007.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/de_adv_BETA2007.tif',1,1,NULL), +('BWTA2017.gsb','de_lgl_bw_BWTA2017.tif','BWTA2017.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/de_lgl_bw_BWTA2017.tif',1,1,NULL), +('SeTa2016.gsb','de_lgvl_saarland_SeTa2016.tif','SeTa2016.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/de_lgvl_saarland_SeTa2016.tif',1,1,NULL), +('NTv2_SN.gsb','de_geosn_NTv2_SN.tif','NTv2_SN.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/de_geosn_NTv2_SN.tif',1,1,NULL), +('AT_GIS_GRID.gsb','at_bev_AT_GIS_GRID.tif','AT_GIS_GRID.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/at_bev_AT_GIS_GRID.tif',1,1,NULL), +('nzgd2kgrid0005.gsb','nz_linz_nzgd2kgrid0005.tif','nzgd2kgrid0005.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/nz_linz_nzgd2kgrid0005.tif',1,1,NULL), +('OSTN15_NTv2_OSGBtoETRS.gsb','uk_os_OSTN15_NTv2_OSGBtoETRS.tif','OSTN15_NTv2_OSGBtoETRS.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/uk_os_OSTN15_NTv2_OSGBtoETRS.tif',1,1,NULL), -- Continental USA VERTCON: NGVD (19)29 height to NAVD (19)88 height - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('vertconw.94', - 'vertconw.gtx', - 'GTX', - 'vgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('vertconc.94', - 'vertconc.gtx', - 'GTX', - 'vgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('vertcone.94', - 'vertcone.gtx', - 'GTX', - 'vgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - +('vertconw.94','us_noaa_vertconw.tif','vertconw.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/us_noaa_vertconw.tif',1,1,NULL), +('vertconc.94','us_noaa_vertconc.tif','vertconc.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/us_noaa_vertconc.tif',1,1,NULL), +('vertcone.94','us_noaa_vertcone.tif','vertcone.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/us_noaa_vertcone.tif',1,1,NULL), -- EGM models - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('WW15MGH.GRD', - 'egm96_15.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('Und_min2.5x2.5_egm2008_isw=82_WGS84_TideFree.gz', - 'egm08_25.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-world', - NULL, NULL, NULL, NULL); - +('WW15MGH.GRD','us_nga_egm96_15.tif','egm96_15.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_nga_egm96_15.tif',1,1,NULL), +('Und_min2.5x2.5_egm2008_isw=82_WGS84_TideFree.gz','us_nga_egm08_25.tif','egm08_25.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_nga_egm08_25.tif',1,1,NULL), -- Greenland height models - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('gr2000g.gri', - 'gvr2000.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('ggeoid16.gri', - 'gvr2016.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - +('gr2000g.gri','dk_sdfe_gvr2000.tif','gvr2000.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/dk_sdfe_gvr2000.tif',1,1,NULL), +('ggeoid16.gri','dk_sdfe_gvr2016.tif','gvr2016.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/dk_sdfe_gvr2016.tif',1,1,NULL), -- Denmark height models - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('dvr90.gtx', - 'dvr90.gtx', -- no change. Just document the package - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('dnn.gtx', - 'dnn.gtx', -- no change. Just document the package - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - --- Faroe islands height models - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('fvr09.gtx', - 'fvr09.gtx', -- no change. Just document the package - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - +('dvr90.gtx','dk_sdfe_dvr90.tif','dvr90.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/dk_sdfe_dvr90.tif',1,1,NULL), +('dnn.gtx','dk_sdfe_dnn.tif','dnn.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/dk_sdfe_dnn.tif',1,1,NULL), +-- Faroe islands height models +('fvr09.gtx','dk_sdfe_fvr09.tif','fvr09.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/dk_sdfe_fvr09.tif',1,1,NULL), -- Sweden height models - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('SWEN17_RH2000.gtx', - 'SWEN17_RH2000.gtx', -- no change. Just document the package - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - +('SWEN17_RH2000.gtx','se_lantmateriet_SWEN17_RH2000.tif','SWEN17_RH2000.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/se_lantmateriet_SWEN17_RH2000.tif',1,1,NULL), -- Ireland: OSGM15 height, Malin head datum -> ETRS89 ellipsoidal heights - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('OSGM15_Malin.gri', - 'OSGM15_Malin.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - +('OSGM15_Malin.gri','uk_os_OSGM15_Malin.tif','OSGM15_Malin.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/uk_os_OSGM15_Malin.tif',1,1,NULL), -- Northern Ireland: OSGM15 height, Belfast height -> ETRS89 ellipsoidal heights - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('OSGM15_Belfast.gri', - 'OSGM15_Belfast.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - ----------------------------- --- US GEOID99 height models ----------------------------- - -INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('g1999u01.bin', 'g1999u01.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('g1999u02.bin', 'g1999u02.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('g1999u03.bin', 'g1999u03.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('g1999u04.bin', 'g1999u04.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('g1999u05.bin', 'g1999u05.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('g1999u06.bin', 'g1999u06.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('g1999u07.bin', 'g1999u07.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('g1999u08.bin', 'g1999u08.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); - --- Not mapped: --- g1999a01.gtx to g1999a04.gtx : Alaska --- g1999h01.gtx : Hawaii --- g1999p01.gtx : Puerto Rico - ----------------------------- --- US GEOID03 height models ----------------------------- - -INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('geoid03_conus.bin', 'geoid03_conus.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); - --- Not mapped: --- g2003a01.gtx to g2003a04.gtx : Alaska --- g2003h01.gtx : Hawaii ----g2003p01.gtx : Puerto Rico - ----------------------------- +('OSGM15_Belfast.gri','uk_os_OSGM15_Belfast.tif','OSGM15_Belfast.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/uk_os_OSGM15_Belfast.tif',1,1,NULL), +-- US GEOID99 height models. Not mapped: Alaska: g1999a01.gtx to g1999a04.gtx. Hawaii: g1999h01.gtx, Puerto Rico: g1999p01.gtx +('g1999u01.bin','us_noaa_g1999u01.tif','g1999u01.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g1999u01.tif',1,1,NULL), +('g1999u02.bin','us_noaa_g1999u02.tif','g1999u02.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g1999u02.tif',1,1,NULL), +('g1999u03.bin','us_noaa_g1999u03.tif','g1999u03.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g1999u03.tif',1,1,NULL), +('g1999u04.bin','us_noaa_g1999u04.tif','g1999u04.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g1999u04.tif',1,1,NULL), +('g1999u05.bin','us_noaa_g1999u05.tif','g1999u05.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g1999u05.tif',1,1,NULL), +('g1999u06.bin','us_noaa_g1999u06.tif','g1999u06.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g1999u06.tif',1,1,NULL), +('g1999u07.bin','us_noaa_g1999u07.tif','g1999u07.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g1999u07.tif',1,1,NULL), +('g1999u08.bin','us_noaa_g1999u08.tif','g1999u08.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g1999u08.tif',1,1,NULL), +-- US GEOID03 height models. Not mapped: Alaska: g2003a01.gtx to g2003a04.gtx. Hawaii: g2003h01.gtx. Puerto Rico: g2003p01.gtx +('geoid03_conus.bin','us_noaa_geoid03_conus.tif','geoid03_conus.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_geoid03_conus.tif',1,1,NULL), -- US GEOID06 height models ----------------------------- - -INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('geoid06_ak.bin', 'geoid06_ak.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); - ----------------------------- --- US GEOID09 height models ----------------------------- - -INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('geoid09_ak.bin', 'geoid09_ak.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('geoid09_conus.bin', 'geoid09_conus.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('g2009g01.bin', 'g2009g01.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('g2009s01.bin', 'g2009s01.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('g2009p01.bin', 'g2009p01.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); - --- Not mapped: --- g2009h01.gtx : Hawaii - ----------------------------- +('geoid06_ak.bin','us_noaa_geoid06_ak.tif','geoid06_ak.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_geoid06_ak.tif',1,1,NULL), +-- US GEOID09 height models.Not mapped: Hawaii: g2009h01.gtx +('geoid09_ak.bin','us_noaa_geoid09_ak.tif','geoid09_ak.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_geoid09_ak.tif',1,1,NULL), +('geoid09_conus.bin','us_noaa_geoid09_conus.tif','geoid09_conus.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_geoid09_conus.tif',1,1,NULL), +('g2009g01.bin','us_noaa_g2009g01.tif','g2009g01.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g2009g01.tif',1,1,NULL), +('g2009s01.bin','us_noaa_g2009s01.tif','g2009s01.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g2009s01.tif',1,1,NULL), +('g2009p01.bin','us_noaa_g2009p01.tif','g2009p01.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g2009p01.tif',1,1,NULL), -- US GEOID12B height models ----------------------------- - +-- -- CONUS -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('g2012bu0.bin', - 'g2012bu0.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - +('g2012bu0.bin','us_noaa_g2012bu0.tif','g2012bu0.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g2012bu0.tif',1,1,NULL), -- Alaska -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('g2012ba0.bin', - 'g2012ba0.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - +('g2012ba0.bin','us_noaa_g2012ba0.tif','g2012ba0.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g2012ba0.tif',1,1,NULL), -- Puerto Rico -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('g2012bp0.bin', - 'g2012bp0.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - +('g2012bp0.bin','us_noaa_g2012bp0.tif','g2012bp0.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g2012bp0.tif',1,1,NULL), -- Guam -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('g2012bg0.bin', - 'g2012bg0.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - +('g2012bg0.bin','us_noaa_g2012bg0.tif','g2012bg0.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g2012bg0.tif',1,1,NULL), -- American Samoa -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('g2012bs0.bin', - 'g2012bs0.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - ----------------------------- +('g2012bs0.bin','us_noaa_g2012bs0.tif','g2012bs0.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g2012bs0.tif',1,1,NULL), -- US GEOID18 height models ----------------------------- - -INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('g2018u0.bin', 'g2018u0.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) - VALUES ('g2018p0.bin', 'g2018p0.gtx', 'GTX', 'geoid_like', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL); - ----------------------------- +('g2018u0.bin','us_noaa_g2018u0.tif','g2018u0.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g2018u0.tif',1,1,NULL), -- French vertical grids ----------------------------- - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('RAF09.mnt', - 'RAF09.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('RAF18.tac', - 'RAF18.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('RAC09.mnt', - 'RAC09.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('ggm00.txt', - 'ggm00v2.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('ggg00.txt', - 'ggg00v2.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('ggg00_mg.txt', - 'ggg00_mgv2.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('ggg00_sm.txt', - 'ggg00_smv2.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('ggg00_ls.txt', - 'ggg00_lsv2.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('ggg00_ld.txt', - 'RALDW842016.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('RALDW842016.mnt', - 'RALDW842016.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('ggg00_sb.txt', - 'ggg00_sbv2.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('gg10_mart.txt', - 'RAMART2016.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('RAMART2016.mnt', - 'RAMART2016.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('gg10_gtbt.txt', - 'RAGTBT2016.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('RAGTBT2016.mnt', - 'RAGTBT2016.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('gg10_mg.txt', - 'RAMG2016.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('RAMG2016.mnt', - 'RAMG2016.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('gg10_sm.txt', - 'gg10_smv2.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('gg10_smv2.mnt', - 'gg10_smv2.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('gg10_ls.txt', - 'RALS2016.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('RALS2016.mnt', - 'RALS2016.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('gg10_ld.txt', - 'RALD2016.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('RALD2016.mnt', - 'RALD2016.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('gg10_sb.txt', - 'gg10_sbv2.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('gg10_sbv2.mnt', - 'gg10_sbv2.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('ggguy00.txt', - 'ggguy15.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('ggr99.txt', - 'RAR07_bl.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('GGSPM06v1.mnt', - 'ggspm06v1.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('RASPM2018.mnt', - 'RASPM2018.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - ----------------------------- +('g2018p0.bin','us_noaa_g2018p0.tif','g2018p0.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/us_noaa_g2018p0.tif',1,1,NULL), +('RAF09.mnt','fr_ign_RAF09.tif','RAF09.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_RAF09.tif',1,1,NULL), +('RAF18.tac','fr_ign_RAF18.tif','RAF18.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_RAF18.tif',1,1,NULL), +('RAC09.mnt','fr_ign_RAC09.tif','RAC09.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_RAC09.tif',1,1,NULL), +('ggm00.txt','fr_ign_ggm00v2.tif','ggm00v2.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_ggm00v2.tif',1,1,NULL), +('ggg00.txt','fr_ign_ggg00v2.tif','ggg00v2.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_ggg00v2.tif',1,1,NULL), +('ggg00_mg.txt','fr_ign_ggg00_mgv2.tif','ggg00_mgv2.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_ggg00_mgv2.tif',1,1,NULL), +('ggg00_sm.txt','fr_ign_ggg00_smv2.tif','ggg00_smv2.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_ggg00_smv2.tif',1,1,NULL), +('ggg00_ls.txt','fr_ign_ggg00_lsv2.tif','ggg00_lsv2.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_ggg00_lsv2.tif',1,1,NULL), +('ggg00_ld.txt','fr_ign_RALDW842016.tif','RALDW842016.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_RALDW842016.tif',1,1,NULL), +('RALDW842016.mnt','fr_ign_RALDW842016.tif','RALDW842016.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_RALDW842016.tif',1,1,NULL), +('ggg00_sb.txt','fr_ign_ggg00_sbv2.tif','ggg00_sbv2.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_ggg00_sbv2.tif',1,1,NULL), +('gg10_mart.txt','fr_ign_RAMART2016.tif','RAMART2016.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_RAMART2016.tif',1,1,NULL), +('RAMART2016.mnt','fr_ign_RAMART2016.tif','RAMART2016.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_RAMART2016.tif',1,1,NULL), +('gg10_gtbt.txt','fr_ign_RAGTBT2016.tif','RAGTBT2016.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_RAGTBT2016.tif',1,1,NULL), +('RAGTBT2016.mnt','fr_ign_RAGTBT2016.tif','RAGTBT2016.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_RAGTBT2016.tif',1,1,NULL), +('gg10_mg.txt','fr_ign_RAMG2016.tif','RAMG2016.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_RAMG2016.tif',1,1,NULL), +('RAMG2016.mnt','fr_ign_RAMG2016.tif','RAMG2016.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_RAMG2016.tif',1,1,NULL), +('gg10_sm.txt','fr_ign_gg10_smv2.tif','gg10_smv2.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_gg10_smv2.tif',1,1,NULL), +('gg10_smv2.mnt','fr_ign_gg10_smv2.tif','gg10_smv2.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_gg10_smv2.tif',1,1,NULL), +('gg10_ls.txt','fr_ign_RALS2016.tif','RALS2016.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_RALS2016.tif',1,1,NULL), +('RALS2016.mnt','fr_ign_RALS2016.tif','RALS2016.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_RALS2016.tif',1,1,NULL), +('gg10_ld.txt','fr_ign_RALD2016.tif','RALD2016.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_RALD2016.tif',1,1,NULL), +('RALD2016.mnt','fr_ign_RALD2016.tif','RALD2016.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_RALD2016.tif',1,1,NULL), +('gg10_sb.txt','fr_ign_gg10_sbv2.tif','gg10_sbv2.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_gg10_sbv2.tif',1,1,NULL), +('gg10_sbv2.mnt','fr_ign_gg10_sbv2.tif','gg10_sbv2.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_gg10_sbv2.tif',1,1,NULL), +('ggguy00.txt','fr_ign_ggguy15.tif','ggguy15.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_ggguy15.tif',1,1,NULL), +('ggr99.txt','fr_ign_RAR07_bl.tif','RAR07_bl.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_RAR07_bl.tif',1,1,NULL), +('GGSPM06v1.mnt','fr_ign_ggspm06v1.tif','ggspm06v1.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_ggspm06v1.tif',1,1,NULL), +('RASPM2018.mnt','fr_ign_RASPM2018.tif','RASPM2018.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/fr_ign_RASPM2018.tif',1,1,NULL), -- Australian grids ----------------------------- - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('A66 National (13.09.01).gsb', - 'A66_National_13_09_01.gsb', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('National 84 (02.07.01).gsb', - 'National_84_02_07_01.gsb', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('GDA94_GDA2020_conformal.gsb', - 'GDA94_GDA2020_conformal.gsb', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('GDA94_GDA2020_conformal_and_distortion.gsb', - 'GDA94_GDA2020_conformal_and_distortion.gsb', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('GDA94_GDA2020_conformal_christmas_island.gsb', - 'GDA94_GDA2020_conformal_christmas_island.gsb', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('GDA94_GDA2020_conformal_cocos_island.gsb', - 'GDA94_GDA2020_conformal_cocos_island.gsb', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('AUSGeoid09_GDA94_V1.01_DOV_windows.gsb', -- source file contains undulation in first band, and deflection in 2nd and 3d band - 'AUSGeoid09_V1.01.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('AUSGeoid2020_windows_binary.gsb', -- source file contains undulation in first band, and deflection in 2nd and 3d band - 'AUSGeoid2020_20180201.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - SELECT grid_name, - 'AUSGeoid98.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL FROM grid_transformation WHERE - grid_name LIKE '%DAT.htm' AND name LIKE 'GDA94 to AHD height%'; - --- Netherlands / RDNAP (non-free grids) - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('naptrans2008.gtx', - 'naptrans2008.gtx', - 'GTX', - 'geoid_like', - 0, - NULL, -- package name - 'https://salsa.debian.org/debian-gis-team/proj-rdnap/raw/upstream/2008/naptrans2008.gtx', - 1, -- direct download - 0, -- non-freely licensed. See https://salsa.debian.org/debian-gis-team/proj-rdnap/raw/master/debian/copyright - NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('rdtrans2008.gsb', - 'rdtrans2008.gsb', - 'NTv2', - 'hgridshift', - 0, - NULL, -- package name - 'https://salsa.debian.org/debian-gis-team/proj-rdnap/raw/upstream/2008/rdtrans2008.gsb', - 1, -- direct download - 0, -- non-freely licensed. See https://salsa.debian.org/debian-gis-team/proj-rdnap/raw/master/debian/copyright - NULL); - +('A66 National (13.09.01).gsb','au_icsm_A66_National_13_09_01.tif','A66_National_13_09_01.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/au_icsm_A66_National_13_09_01.tif',1,1,NULL), +('National 84 (02.07.01).gsb','au_icsm_National_84_02_07_01.tif','National_84_02_07_01.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/au_icsm_National_84_02_07_01.tif',1,1,NULL), +('GDA94_GDA2020_conformal.gsb','au_icsm_GDA94_GDA2020_conformal.tif','GDA94_GDA2020_conformal.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/au_icsm_GDA94_GDA2020_conformal.tif',1,1,NULL), +('GDA94_GDA2020_conformal_and_distortion.gsb','au_icsm_GDA94_GDA2020_conformal_and_distortion.tif','GDA94_GDA2020_conformal_and_distortion.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/au_icsm_GDA94_GDA2020_conformal_and_distortion.tif',1,1,NULL), +('GDA94_GDA2020_conformal_christmas_island.gsb','au_icsm_GDA94_GDA2020_conformal_christmas_island.tif','GDA94_GDA2020_conformal_christmas_island.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/au_icsm_GDA94_GDA2020_conformal_christmas_island.tif',1,1,NULL), +('GDA94_GDA2020_conformal_cocos_island.gsb','au_icsm_GDA94_GDA2020_conformal_cocos_island.tif','GDA94_GDA2020_conformal_cocos_island.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/au_icsm_GDA94_GDA2020_conformal_cocos_island.tif',1,1,NULL), +-- source file contains undulation in first band, and deflection in 2nd and 3d band +('AUSGeoid09_GDA94_V1.01_DOV_windows.gsb','au_ga_AUSGeoid09_V1.01.tif','AUSGeoid09_V1.01.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/au_ga_AUSGeoid09_V1.01.tif',1,1,NULL), +-- source file contains undulation in first band, and deflection in 2nd and 3d band +('AUSGeoid2020_windows_binary.gsb','au_ga_AUSGeoid2020_20180201.tif','AUSGeoid2020_20180201.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/au_ga_AUSGeoid2020_20180201.tif',1,1,NULL), +-- Netherlands / RDNAP (non-free grids). See https://salsa.debian.org/debian-gis-team/proj-rdnap/raw/master/debian/copyright +('naptrans2008.gtx','','naptrans2008.gtx','GTX','geoid_like',0,NULL,'https://salsa.debian.org/debian-gis-team/proj-rdnap/raw/upstream/2008/naptrans2008.gtx',1,0,NULL), +('rdtrans2008.gsb','','rdtrans2008.gsb','NTv2','hgridshift',0,NULL,'https://salsa.debian.org/debian-gis-team/proj-rdnap/raw/upstream/2008/rdtrans2008.gsb',1,0,NULL), -- Netherlands / RDNAP 2018 - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('nlgeo2018.gtx', - 'nlgeo2018.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('rdtrans2018.gsb', - 'rdtrans2018.gsb', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - - +('nlgeo2018.gtx','nl_nsgi_nlgeo2018.tif','nlgeo2018.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/nl_nsgi_nlgeo2018.tif',1,1,NULL), +('rdtrans2018.gsb','nl_nsgi_rdtrans2018.tif','rdtrans2018.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/nl_nsgi_rdtrans2018.tif',1,1,NULL), -- Belgium - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('bd72lb72_etrs89lb08.gsb', - 'bd72lb72_etrs89lb08.gsb', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - +('bd72lb72_etrs89lb08.gsb','be_ign_bd72lb72_etrs89lb08.tif','bd72lb72_etrs89lb08.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/be_ign_bd72lb72_etrs89lb08.tif',1,1,NULL), -- Switzerland - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('CHENyx06a.gsb', - 'CHENyx06a.gsb', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('CHENyx06_ETRS.gsb', - 'CHENyx06_ETRS.gsb', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - +('CHENyx06a.gsb','ch_swisstopo_CHENyx06a.tif','CHENyx06a.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ch_swisstopo_CHENyx06a.tif',1,1,NULL), +('CHENyx06_ETRS.gsb','ch_swisstopo_CHENyx06_ETRS.tif','CHENyx06_ETRS.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ch_swisstopo_CHENyx06_ETRS.tif',1,1,NULL), -- Spain - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('100800401.gsb', - '100800401.gsb', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - +('100800401.gsb','es_cat_icgc_100800401.tif','100800401.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/es_cat_icgc_100800401.tif',1,1,NULL), -- Portugal - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('DLx_ETRS89_geo.gsb', - 'DLx_ETRS89_geo.gsb', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('D73_ETRS89_geo.gsb', - 'D73_ETRS89_geo.gsb', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - +('DLx_ETRS89_geo.gsb','pt_dgt_DLx_ETRS89_geo.tif','DLx_ETRS89_geo.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/pt_dgt_DLx_ETRS89_geo.tif',1,1,NULL), +('D73_ETRS89_geo.gsb','pt_dgt_D73_ETRS89_geo.tif','D73_ETRS89_geo.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/pt_dgt_D73_ETRS89_geo.tif',1,1,NULL), -- Canada provincial grids - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('AB_CSRS.DAC', - 'ABCSRSV4.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('CRD27_00.GSB', - 'CRD27_00.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('CRD93_00.GSB', - 'CRD93_00.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('NVI93_05.GSB', - 'NVI93_05.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('BC_27_05.GSB', - 'BC_27_05.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('BC_93_05.GSB', - 'BC_93_05.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('NB7783v2.gsb', -- case difference on extension ! - 'NB7783v2.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('NB2783v2.gsb', -- case difference on extension ! - 'NB2783v2.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('GS7783.GSB', - 'GS7783.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('NS778302.gsb', -- case difference on extension ! - 'NS778302.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('ON27CSv1.GSB', - 'ON27CSv1.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('ON76CSv1.GSB', - 'ON76CSv1.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('ON83CSv1.GSB', - 'ON83CSv1.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('TOR27CSv1.GSB', - 'TO27CSv1.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('PE7783V2.gsb', -- case difference on extension ! - 'PE7783V2.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('NA27NA83.GSB', - 'na27na83.gsb', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - +('AB_CSRS.DAC','ca_nrc_ABCSRSV4.tif','ABCSRSV4.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_ABCSRSV4.tif',1,1,NULL), +('CRD27_00.GSB','ca_nrc_CRD27_00.tif','CRD27_00.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_CRD27_00.tif',1,1,NULL), +('CRD93_00.GSB','ca_nrc_CRD93_00.tif','CRD93_00.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_CRD93_00.tif',1,1,NULL), +('NVI93_05.GSB','ca_nrc_NVI93_05.tif','NVI93_05.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_NVI93_05.tif',1,1,NULL), +('BC_27_05.GSB','ca_nrc_BC_27_05.tif','BC_27_05.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_BC_27_05.tif',1,1,NULL), +('BC_93_05.GSB','ca_nrc_BC_93_05.tif','BC_93_05.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_BC_93_05.tif',1,1,NULL), +('NB7783v2.gsb','ca_nrc_NB7783v2.tif','NB7783v2.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_NB7783v2.tif',1,1,NULL), +('NB2783v2.gsb','ca_nrc_NB2783v2.tif','NB2783v2.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_NB2783v2.tif',1,1,NULL), +('GS7783.GSB','ca_nrc_GS7783.tif','GS7783.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_GS7783.tif',1,1,NULL), +('NS778302.gsb','ca_nrc_NS778302.tif','NS778302.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_NS778302.tif',1,1,NULL), +('ON27CSv1.GSB','ca_nrc_ON27CSv1.tif','ON27CSv1.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_ON27CSv1.tif',1,1,NULL), +('ON76CSv1.GSB','ca_nrc_ON76CSv1.tif','ON76CSv1.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_ON76CSv1.tif',1,1,NULL), +('ON83CSv1.GSB','ca_nrc_ON83CSv1.tif','ON83CSv1.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_ON83CSv1.tif',1,1,NULL), +('TOR27CSv1.GSB','ca_nrc_TO27CSv1.tif','TO27CSv1.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_TO27CSv1.tif',1,1,NULL), +('PE7783V2.gsb','ca_nrc_PE7783V2.tif','PE7783V2.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_PE7783V2.tif',1,1,NULL), -- two grid names in EPSG point to the same file distributed by NRCan -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('NA27SCRS.GSB', - 'NA27SCRS.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('QUE27-98.gsb', - 'NA27SCRS.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('CQ77NA83.GSB', - 'cq77na83.gsb', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('CGQ77-98.gsb', - 'CQ77SCRS.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - - -- two grid names in EPSG point to the same file distributed by NRCan -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('NA83SCRS.GSB', - 'NA83SCRS.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('NAD83-98.gsb', - 'NA83SCRS.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('SK27-98.gsb', -- case difference on extension ! - 'SK27-98.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('SK83-98.gsb', -- case difference on extension ! - 'SK83-98.GSB', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('HT2_0.byn', - 'HT2_2010v70.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('CGG2013i08a.byn', - 'CGG2013ai08.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('CGG2013n83a.byn', - 'CGG2013an83.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('CGG2013i83.byn', - 'CGG2013i08.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('CGG2013n83.byn', - 'CGG2013n83.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); - - -- Iceland - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('ISN93_ISN2016.gsb', - 'ISN93_ISN2016.gsb', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('ISN2004_ISN2016.gsb', - 'ISN2004_ISN2016.gsb', - 'NTv2', - 'hgridshift', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('Icegeoid_ISN2004.gtx', - 'Icegeoid_ISN2004.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('Icegeoid_ISN93.gtx', - 'Icegeoid_ISN93.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('Icegeoid_ISN2016.gtx', - 'Icegeoid_ISN2016.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); - --- New Zealand grid shift models. EPSG names are not for GTX files (at time of writing) -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('auckland-1946-to-nzvd2016-conversion.csv', - 'auckht1946-nzvd2016.gtx', - 'GTX', - 'vgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('bluff-1955-to-nzvd2016-conversion.csv', - 'blufht1955-nzvd2016.gtx', - 'GTX', - 'vgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('dunedin-1958-to-nzvd2016-conversion.csv', - 'duneht1958-nzvd2016.gtx', - 'GTX', - 'vgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('dunedin-bluff-1960-to-nzvd2016-conversion.csv', - 'dublht1960-nzvd2016.gtx', - 'GTX', - 'vgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('gisborne-1926-to-nzvd2016-conversion.csv', - 'gisbht1926-nzvd2016.gtx', - 'GTX', - 'vgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('lyttelton-1937-to-nzvd2016-conversion.csv', - 'lyttht1937-nzvd2016.gtx', - 'GTX', - 'vgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('moturiki-1953-to-nzvd2016-conversion.csv', - 'motuht1953-nzvd2016.gtx', - 'GTX', - 'vgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('napier-1962-to-nzvd2016-conversion.csv', - 'napiht1962-nzvd2016.gtx', - 'GTX', - 'vgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('nelson-1955-to-nzvd2016-conversion.csv', - 'nelsht1955-nzvd2016.gtx', - 'GTX', - 'vgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('onetreepoint-1964-to-nzvd2016-conversion.csv', - 'ontpht1964-nzvd2016.gtx', - 'GTX', - 'vgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('stewartisland-1977-to-nzvd2016-conversion.csv', - 'stisht1977-nzvd2016.gtx', - 'GTX', - 'vgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('taranaki-1970-to-nzvd2016-conversion.csv', - 'taraht1970-nzvd2016.gtx', - 'GTX', - 'vgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('wellington-1953-to-nzvd2016-conversion.csv', - 'wellht1953-nzvd2016.gtx', - 'GTX', - 'vgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - --- WARNING: this builds the new entries from the above deprecated ones --- A check has been added in commit.sql to verify that a mapping from --- auckht1946-nzvd2016.gtx exists in this table, due to the below insert -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - SELECT proj_grid_name, - proj_grid_name, 'GTX', - 'vgridshift', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL - FROM grid_alternatives - WHERE proj_grid_name LIKE '%-nzvd2016.gtx'; - +('NA27NA83.GSB','ca_que_mern_na27na83.tif','na27na83.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_que_mern_na27na83.tif',1,1,NULL), +('NA27SCRS.GSB','ca_nrc_NA27SCRS.tif','NA27SCRS.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_NA27SCRS.tif',1,1,NULL), +('QUE27-98.gsb','ca_nrc_NA27SCRS.tif','NA27SCRS.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_NA27SCRS.tif',1,1,NULL), +('CQ77NA83.GSB','ca_que_mern_cq77na83.tif','cq77na83.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_que_mern_cq77na83.tif',1,1,NULL), +('CGQ77-98.gsb','ca_nrc_CQ77SCRS.tif','CQ77SCRS.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_CQ77SCRS.tif',1,1,NULL), +-- two grid names in EPSG point to the same file distributed by NRCan +('NA83SCRS.GSB','ca_nrc_NA83SCRS.tif','NA83SCRS.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_NA83SCRS.tif',1,1,NULL), +('NAD83-98.gsb','ca_nrc_NA83SCRS.tif','NA83SCRS.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_NA83SCRS.tif',1,1,NULL), +('SK27-98.gsb','ca_nrc_SK27-98.tif','SK27-98.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_SK27-98.tif',1,1,NULL), +('SK83-98.gsb','ca_nrc_SK83-98.tif','SK83-98.GSB','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/ca_nrc_SK83-98.tif',1,1,NULL), +('HT2_0.byn','ca_nrc_HT2_2010v70.tif','HT2_2010v70.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/ca_nrc_HT2_2010v70.tif',1,1,NULL), +('CGG2013i08a.byn','ca_nrc_CGG2013ai08.tif','CGG2013ai08.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/ca_nrc_CGG2013ai08.tif',1,1,NULL), +('CGG2013n83a.byn','ca_nrc_CGG2013an83.tif','CGG2013an83.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/ca_nrc_CGG2013an83.tif',1,1,NULL), +('CGG2013i83.byn','ca_nrc_CGG2013i08.tif','CGG2013i08.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/ca_nrc_CGG2013i08.tif',1,1,NULL), +('CGG2013n83.byn','ca_nrc_CGG2013n83.tif','CGG2013n83.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/ca_nrc_CGG2013n83.tif',1,1,NULL), +-- Iceland +('ISN93_ISN2016.gsb','is_lmi_ISN93_ISN2016.tif','ISN93_ISN2016.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/is_lmi_ISN93_ISN2016.tif',1,1,NULL), +('ISN2004_ISN2016.gsb','is_lmi_ISN2004_ISN2016.tif','ISN2004_ISN2016.gsb','GTiff','hgridshift',0,NULL,'https://cdn.proj.org/is_lmi_ISN2004_ISN2016.tif',1,1,NULL), +('Icegeoid_ISN2004.gtx','is_lmi_Icegeoid_ISN2004.tif','Icegeoid_ISN2004.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/is_lmi_Icegeoid_ISN2004.tif',1,1,NULL), +('Icegeoid_ISN93.gtx','is_lmi_Icegeoid_ISN93.tif','Icegeoid_ISN93.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/is_lmi_Icegeoid_ISN93.tif',1,1,NULL), +('Icegeoid_ISN2016.gtx','is_lmi_Icegeoid_ISN2016.tif','Icegeoid_ISN2016.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/is_lmi_Icegeoid_ISN2016.tif',1,1,NULL), +-- New Zealand grid shift models. +('auckland-1946-to-nzvd2016-conversion.csv','nz_linz_auckht1946-nzvd2016.tif','auckht1946-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_auckht1946-nzvd2016.tif',1,1,NULL), +-- Superseded entries +('bluff-1955-to-nzvd2016-conversion.csv','nz_linz_blufht1955-nzvd2016.tif','blufht1955-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_blufht1955-nzvd2016.tif',1,1,NULL), +('dunedin-1958-to-nzvd2016-conversion.csv','nz_linz_duneht1958-nzvd2016.tif','duneht1958-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_duneht1958-nzvd2016.tif',1,1,NULL), +('dunedin-bluff-1960-to-nzvd2016-conversion.csv','nz_linz_dublht1960-nzvd2016.tif','dublht1960-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_dublht1960-nzvd2016.tif',1,1,NULL), +('gisborne-1926-to-nzvd2016-conversion.csv','nz_linz_gisbht1926-nzvd2016.tif','gisbht1926-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_gisbht1926-nzvd2016.tif',1,1,NULL), +('lyttelton-1937-to-nzvd2016-conversion.csv','nz_linz_lyttht1937-nzvd2016.tif','lyttht1937-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_lyttht1937-nzvd2016.tif',1,1,NULL), +('moturiki-1953-to-nzvd2016-conversion.csv','nz_linz_motuht1953-nzvd2016.tif','motuht1953-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_motuht1953-nzvd2016.tif',1,1,NULL), +('napier-1962-to-nzvd2016-conversion.csv','nz_linz_napiht1962-nzvd2016.tif','napiht1962-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_napiht1962-nzvd2016.tif',1,1,NULL), +('nelson-1955-to-nzvd2016-conversion.csv','nz_linz_nelsht1955-nzvd2016.tif','nelsht1955-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_nelsht1955-nzvd2016.tif',1,1,NULL), +('onetreepoint-1964-to-nzvd2016-conversion.csv','nz_linz_ontpht1964-nzvd2016.tif','ontpht1964-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_ontpht1964-nzvd2016.tif',1,1,NULL), +('stewartisland-1977-to-nzvd2016-conversion.csv','nz_linz_stisht1977-nzvd2016.tif','stisht1977-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_stisht1977-nzvd2016.tif',1,1,NULL), +('taranaki-1970-to-nzvd2016-conversion.csv','nz_linz_taraht1970-nzvd2016.tif','taraht1970-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_taraht1970-nzvd2016.tif',1,1,NULL), +('wellington-1953-to-nzvd2016-conversion.csv','nz_linz_wellht1953-nzvd2016.tif','wellht1953-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_wellht1953-nzvd2016.tif',1,1,NULL), +('auckht1946-nzvd2016.gtx','nz_linz_auckht1946-nzvd2016.tif','auckht1946-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_auckht1946-nzvd2016.tif',1,1,NULL), +('blufht1955-nzvd2016.gtx','nz_linz_blufht1955-nzvd2016.tif','blufht1955-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_blufht1955-nzvd2016.tif',1,1,NULL), +('duneht1958-nzvd2016.gtx','nz_linz_duneht1958-nzvd2016.tif','duneht1958-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_duneht1958-nzvd2016.tif',1,1,NULL), +('dublht1960-nzvd2016.gtx','nz_linz_dublht1960-nzvd2016.tif','dublht1960-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_dublht1960-nzvd2016.tif',1,1,NULL), +('gisbht1926-nzvd2016.gtx','nz_linz_gisbht1926-nzvd2016.tif','gisbht1926-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_gisbht1926-nzvd2016.tif',1,1,NULL), +('lyttht1937-nzvd2016.gtx','nz_linz_lyttht1937-nzvd2016.tif','lyttht1937-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_lyttht1937-nzvd2016.tif',1,1,NULL), +('motuht1953-nzvd2016.gtx','nz_linz_motuht1953-nzvd2016.tif','motuht1953-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_motuht1953-nzvd2016.tif',1,1,NULL), +('napiht1962-nzvd2016.gtx','nz_linz_napiht1962-nzvd2016.tif','napiht1962-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_napiht1962-nzvd2016.tif',1,1,NULL), +('nelsht1955-nzvd2016.gtx','nz_linz_nelsht1955-nzvd2016.tif','nelsht1955-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_nelsht1955-nzvd2016.tif',1,1,NULL), +('ontpht1964-nzvd2016.gtx','nz_linz_ontpht1964-nzvd2016.tif','ontpht1964-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_ontpht1964-nzvd2016.tif',1,1,NULL), +('stisht1977-nzvd2016.gtx','nz_linz_stisht1977-nzvd2016.tif','stisht1977-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_stisht1977-nzvd2016.tif',1,1,NULL), +('taraht1970-nzvd2016.gtx','nz_linz_taraht1970-nzvd2016.tif','taraht1970-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_taraht1970-nzvd2016.tif',1,1,NULL), +('wellht1953-nzvd2016.gtx','nz_linz_wellht1953-nzvd2016.tif','wellht1953-nzvd2016.gtx','GTiff','vgridshift',0,NULL,'https://cdn.proj.org/nz_linz_wellht1953-nzvd2016.tif',1,1,NULL), -- Superseded -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('New_Zealand_Quasigeoid_2016.csv', - 'nzgeoid2016.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('nzgeoid2016.gtx', - 'nzgeoid2016.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - +('New_Zealand_Quasigeoid_2016.csv','nz_linz_nzgeoid2016.tif','nzgeoid2016.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/nz_linz_nzgeoid2016.tif',1,1,NULL), +('nzgeoid2016.gtx','nz_linz_nzgeoid2016.tif','nzgeoid2016.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/nz_linz_nzgeoid2016.tif',1,1,NULL), -- Superseded -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('nzgeoid09.sid', - 'nzgeoid2009.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); - -INSERT INTO grid_alternatives(original_grid_name, - proj_grid_name, - proj_grid_format, - proj_method, - inverse_direction, - package_name, - url, direct_download, open_license, directory) - VALUES ('nzgeoid2009.gtx', - 'nzgeoid2009.gtx', - 'GTX', - 'geoid_like', - 0, - 'proj-datumgrid-oceania', - NULL, NULL, NULL, NULL); +('nzgeoid09.sid','nz_linz_nzgeoid2009.tif','nzgeoid2009.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/nz_linz_nzgeoid2009.tif',1,1,NULL), +('nzgeoid2009.gtx','nz_linz_nzgeoid2009.tif','nzgeoid2009.gtx','GTiff','geoid_like',0,NULL,'https://cdn.proj.org/nz_linz_nzgeoid2009.tif',1,1,NULL) +; diff --git a/data/sql/grid_alternatives_generated.sql b/data/sql/grid_alternatives_generated_noaa.sql index 1c2e6ae8..974aeae2 100644 --- a/data/sql/grid_alternatives_generated.sql +++ b/data/sql/grid_alternatives_generated_noaa.sql @@ -4,787 +4,899 @@ INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('conus.las', + 'us_noaa_conus.tif', 'conus', - 'CTable2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_conus.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('alaska.las', + 'us_noaa_alaska.tif', 'alaska', - 'CTable2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_alaska.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('hawaii.las', + 'us_noaa_hawaii.tif', 'hawaii', - 'CTable2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_hawaii.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('prvi.las', + 'us_noaa_prvi.tif', 'prvi', - 'CTable2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_prvi.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('stgeorge.las', + 'us_noaa_stgeorge.tif', 'stgeorge', - 'CTable2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_stgeorge.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('stlrnc.las', + 'us_noaa_stlrnc.tif', 'stlrnc', - 'CTable2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_stlrnc.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('stpaul.las', + 'us_noaa_stpaul.tif', 'stpaul', - 'CTable2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_stpaul.tif', 1, 1, NULL); -- NAD83 -> NAD83(HPGN) entries INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('alhpgn.las', + 'us_noaa_alhpgn.tif', 'alhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_alhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('arhpgn.las', + 'us_noaa_arhpgn.tif', 'arhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_arhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('azhpgn.las', + 'us_noaa_azhpgn.tif', 'azhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_azhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('cnhpgn.las', + 'us_noaa_cnhpgn.tif', 'cnhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_cnhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('cohpgn.las', + 'us_noaa_cohpgn.tif', 'cohpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_cohpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('cshpgn.las', + 'us_noaa_cshpgn.tif', 'cshpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_cshpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('emhpgn.las', + 'us_noaa_emhpgn.tif', 'emhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_emhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('eshpgn.las', + 'us_noaa_eshpgn.tif', 'eshpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_eshpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('ethpgn.las', + 'us_noaa_ethpgn.tif', 'ethpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_ethpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('flhpgn.las', + 'us_noaa_FL.tif', 'FL', - 'CTable2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_FL.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('gahpgn.las', + 'us_noaa_gahpgn.tif', 'gahpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_gahpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('guhpgn.las', + 'us_noaa_guhpgn.tif', 'guhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_guhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('hihpgn.las', + 'us_noaa_hihpgn.tif', 'hihpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_hihpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('iahpgn.las', + 'us_noaa_iahpgn.tif', 'iahpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_iahpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('ilhpgn.las', + 'us_noaa_ilhpgn.tif', 'ilhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_ilhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('inhpgn.las', + 'us_noaa_inhpgn.tif', 'inhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_inhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('kshpgn.las', + 'us_noaa_kshpgn.tif', 'kshpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_kshpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('kyhpgn.las', + 'us_noaa_kyhpgn.tif', 'kyhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_kyhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('lahpgn.las', + 'us_noaa_lahpgn.tif', 'lahpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_lahpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('mdhpgn.las', + 'us_noaa_MD.tif', 'MD', - 'CTable2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_MD.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('mehpgn.las', + 'us_noaa_mehpgn.tif', 'mehpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_mehpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('mihpgn.las', + 'us_noaa_mihpgn.tif', 'mihpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_mihpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('mnhpgn.las', + 'us_noaa_mnhpgn.tif', 'mnhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_mnhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('mohpgn.las', + 'us_noaa_mohpgn.tif', 'mohpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_mohpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('mshpgn.las', + 'us_noaa_mshpgn.tif', 'mshpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_mshpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('nbhpgn.las', + 'us_noaa_nbhpgn.tif', 'nbhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_nbhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('nchpgn.las', + 'us_noaa_nchpgn.tif', 'nchpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_nchpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('ndhpgn.las', + 'us_noaa_ndhpgn.tif', 'ndhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_ndhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('nehpgn.las', + 'us_noaa_nehpgn.tif', 'nehpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_nehpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('njhpgn.las', + 'us_noaa_njhpgn.tif', 'njhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_njhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('nmhpgn.las', + 'us_noaa_nmhpgn.tif', 'nmhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_nmhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('nvhpgn.las', + 'us_noaa_nvhpgn.tif', 'nvhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_nvhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('nyhpgn.las', + 'us_noaa_nyhpgn.tif', 'nyhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_nyhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('ohhpgn.las', + 'us_noaa_ohhpgn.tif', 'ohhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_ohhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('okhpgn.las', + 'us_noaa_okhpgn.tif', 'okhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_okhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('pahpgn.las', + 'us_noaa_pahpgn.tif', 'pahpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_pahpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('pvhpgn.las', + 'us_noaa_pvhpgn.tif', 'pvhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_pvhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('schpgn.las', + 'us_noaa_schpgn.tif', 'schpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_schpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('sdhpgn.las', + 'us_noaa_sdhpgn.tif', 'sdhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_sdhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('tnhpgn.las', + 'us_noaa_TN.tif', 'TN', - 'CTable2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_TN.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('uthpgn.las', + 'us_noaa_uthpgn.tif', 'uthpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_uthpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('vahpgn.las', + 'us_noaa_vahpgn.tif', 'vahpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_vahpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('wihpgn.las', + 'us_noaa_WI.tif', 'WI', - 'CTable2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_WI.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('wmhpgn.las', + 'us_noaa_wmhpgn.tif', 'wmhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_wmhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('wohpgn.las', + 'us_noaa_WO.tif', 'WO', - 'CTable2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_WO.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('wshpgn.las', + 'us_noaa_wshpgn.tif', 'wshpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_wshpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('wthpgn.las', + 'us_noaa_wthpgn.tif', 'wthpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_wthpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('wvhpgn.las', + 'us_noaa_wvhpgn.tif', 'wvhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_wvhpgn.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('wyhpgn.las', + 'us_noaa_wyhpgn.tif', 'wyhpgn.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/us_noaa_wyhpgn.tif', 1, 1, NULL); diff --git a/data/sql/ignf.sql b/data/sql/ignf.sql index c0ffbf50..babefe19 100644 --- a/data/sql/ignf.sql +++ b/data/sql/ignf.sql @@ -2673,425 +2673,485 @@ INSERT INTO "compound_crs" VALUES('IGNF','WGS84UTM32.IGN78C','WGS84 UTM NORD FUS INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('ntf_r93.gsb', -- as referenced by the IGNF registry + 'fr_ign_ntf_r93.tif', 'ntf_r93.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ntf_r93.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggpf02-Huahine.mnt', -- as referenced by the IGNF registry + 'fr_ign_ggpf02-Huahine.tif', 'ggpf02-Huahine.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ggpf02-Huahine.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00v2.mnt', -- as referenced by the IGNF registry + 'fr_ign_ggg00v2.tif', 'ggg00v2.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ggg00v2.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggpf10-Tahiti.mnt', -- as referenced by the IGNF registry + 'fr_ign_ggpf10-Tahiti.tif', 'ggpf10-Tahiti.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ggpf10-Tahiti.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggpf02-Raiatea.mnt', -- as referenced by the IGNF registry + 'fr_ign_ggpf02-Raiatea.tif', 'ggpf02-Raiatea.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ggpf02-Raiatea.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00_sbv2.mnt', -- as referenced by the IGNF registry + 'fr_ign_ggg00_sbv2.tif', 'ggg00_sbv2.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ggg00_sbv2.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/gg10_smv2.mnt', -- as referenced by the IGNF registry + 'fr_ign_gg10_smv2.tif', 'gg10_smv2.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_gg10_smv2.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RAMG2016.mnt', -- as referenced by the IGNF registry + 'fr_ign_RAMG2016.tif', 'RAMG2016.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_RAMG2016.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggker08v2.mnt', -- as referenced by the IGNF registry + 'fr_ign_ggker08v2.tif', 'ggker08v2.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ggker08v2.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggspm06v1.mnt', -- as referenced by the IGNF registry + 'fr_ign_ggspm06v1.tif', 'ggspm06v1.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ggspm06v1.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/gg10_sbv2.mnt', -- as referenced by the IGNF registry + 'fr_ign_gg10_sbv2.tif', 'gg10_sbv2.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_gg10_sbv2.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggguy15.mnt', -- as referenced by the IGNF registry + 'fr_ign_ggguy15.tif', 'ggguy15.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ggguy15.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/metropole/RAF09.mnt', -- as referenced by the IGNF registry + 'fr_ign_RAF09.tif', 'RAF09.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_RAF09.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggpf08-Fakarava.mnt', -- as referenced by the IGNF registry + 'fr_ign_ggpf08-Fakarava.tif', 'ggpf08-Fakarava.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ggpf08-Fakarava.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggm00v2.mnt', -- as referenced by the IGNF registry + 'fr_ign_ggm00v2.tif', 'ggm00v2.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ggm00v2.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggpf10-Moorea.mnt', -- as referenced by the IGNF registry + 'fr_ign_ggpf10-Moorea.tif', 'ggpf10-Moorea.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ggpf10-Moorea.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggpf02-Maupiti.mnt', -- as referenced by the IGNF registry + 'fr_ign_ggpf02-Maupiti.tif', 'ggpf02-Maupiti.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ggpf02-Maupiti.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00_lsv2.mnt', -- as referenced by the IGNF registry + 'fr_ign_ggg00_lsv2.tif', 'ggg00_lsv2.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ggg00_lsv2.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggm04v1.mnt', -- as referenced by the IGNF registry + 'fr_ign_ggm04v1.tif', 'ggm04v1.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ggm04v1.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggg00_smv2.mnt', -- as referenced by the IGNF registry + 'fr_ign_ggg00_smv2.tif', 'ggg00_smv2.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ggg00_smv2.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RALD2016.mnt', -- as referenced by the IGNF registry + 'fr_ign_RALD2016.tif', 'RALD2016.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_RALD2016.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RAR07_bl.gra', -- as referenced by the IGNF registry + 'fr_ign_RAR07_bl.tif', 'RAR07_bl.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_RAR07_bl.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RALS2016.mnt', -- as referenced by the IGNF registry + 'fr_ign_RALS2016.tif', 'RALS2016.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_RALS2016.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RALDW842016.mnt', -- as referenced by the IGNF registry + 'fr_ign_RALDW842016.tif', 'RALDW842016.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_RALDW842016.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggpf02-Tahaa.mnt', -- as referenced by the IGNF registry + 'fr_ign_ggpf02-Tahaa.tif', 'ggpf02-Tahaa.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ggpf02-Tahaa.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RAGTBT2016.mnt', -- as referenced by the IGNF registry + 'fr_ign_RAGTBT2016.tif', 'RAGTBT2016.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_RAGTBT2016.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/metropole/RAC09.mnt', -- as referenced by the IGNF registry + 'fr_ign_RAC09.tif', 'RAC09.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_RAC09.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/RAMART2016.mnt', -- as referenced by the IGNF registry + 'fr_ign_RAMART2016.tif', 'RAMART2016.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_RAMART2016.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('https://geodesie.ign.fr/contenu/fichiers/documentation/grilles/metropole/RAF18.mnt', -- as referenced by the IGNF registry + 'fr_ign_RAF18.tif', 'RAF18.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_RAF18.tif', 1, 1, NULL); INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('http://geodesie.ign.fr/contenu/fichiers/documentation/grilles/outremer/ggpf02-Bora.mnt', -- as referenced by the IGNF registry + 'fr_ign_ggpf02-Bora.tif', 'ggpf02-Bora.gtx', - 'GTX', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ggpf02-Bora.tif', 1, 1, NULL); --- Null transformations between RRAF and WGS84 adapted from EPSG diff --git a/data/sql/proj_db_table_defs.sql b/data/sql/proj_db_table_defs.sql index 59cef3bc..cd545666 100644 --- a/data/sql/proj_db_table_defs.sql +++ b/data/sql/proj_db_table_defs.sql @@ -1090,27 +1090,30 @@ END; -- Table that contain alternative names for original grid names coming from the authority CREATE TABLE grid_alternatives( original_grid_name TEXT NOT NULL PRIMARY KEY, -- original grid name (e.g. Und_min2.5x2.5_egm2008_isw=82_WGS84_TideFree.gz). For LOS/LAS format, the .las files - proj_grid_name TEXT NOT NULL, -- PROJ grid name (e.g egm08_25.gtx) - proj_grid_format TEXT NOT NULL, -- one of 'CTable2', 'NTv1', 'NTv2', 'GTX' + proj_grid_name TEXT NOT NULL, -- PROJ >= 7 grid name (e.g us_nga_egm08_25.tif) + old_proj_grid_name TEXT, -- PROJ < 7 grid name (e.g egm08_25.gtx) + proj_grid_format TEXT NOT NULL, -- 'GTiff', 'GTX', 'NTv2' proj_method TEXT NOT NULL, -- hgridshift, vgridshift or geoid_like inverse_direction BOOLEAN NOT NULL CHECK (inverse_direction IN (0, 1)), -- whether the PROJ grid direction is reversed w.r.t to the authority one (TRUE in that case) - package_name TEXT, -- package name that contains the file + package_name TEXT, -- no longer used. Must be NULL url TEXT, -- optional URL where to download the PROJ grid direct_download BOOLEAN CHECK (direct_download IN (0, 1)), -- whether the URL can be used directly (if 0, authentication etc might be needed) open_license BOOLEAN CHECK (open_license IN (0, 1)), directory TEXT, -- optional directory where the file might be located CONSTRAINT fk_grid_alternatives_grid_packages FOREIGN KEY (package_name) REFERENCES grid_packages(package_name), - CONSTRAINT check_grid_alternatives_grid_fromat CHECK (proj_grid_format IN ('CTable2', 'NTv1', 'NTv2', 'GTX')), + CONSTRAINT check_grid_alternatives_grid_fromat CHECK (proj_grid_format IN ('GTiff', 'GTX', 'NTv2')), CONSTRAINT check_grid_alternatives_proj_method CHECK (proj_method IN ('hgridshift', 'vgridshift', 'geoid_like')), - CONSTRAINT check_grid_alternatives_not_hgridshift CHECK (NOT(proj_method != 'hgridshift' AND proj_grid_format IN ('CTable2', 'NTv1', 'NTv2'))), - CONSTRAINT check_grid_alternatives_not_vgridshift CHECK (NOT(proj_method = 'hgridshift' AND proj_grid_format IN ('GTX'))), CONSTRAINT check_grid_alternatives_inverse_direction CHECK (NOT(proj_method = 'geoid_like' AND inverse_direction = 1)), - CONSTRAINT check_grid_alternatives_package_name_url CHECK (NOT(package_name IS NOT NULL AND url IS NOT NULL)), + CONSTRAINT check_grid_alternatives_package_name CHECK (package_name IS NULL), CONSTRAINT check_grid_alternatives_direct_download_url CHECK (NOT(direct_download IS NULL AND url IS NOT NULL)), - CONSTRAINT check_grid_alternatives_open_license_url CHECK (NOT(open_license IS NULL AND url IS NOT NULL)) + CONSTRAINT check_grid_alternatives_open_license_url CHECK (NOT(open_license IS NULL AND url IS NOT NULL)), + CONSTRAINT check_grid_alternatives_constraint_cdn CHECK (NOT(url LIKE 'https://cdn.proj.org/%' AND (direct_download = 0 OR open_license = 0 OR url != 'https://cdn.proj.org/' || proj_grid_name))) ); +CREATE INDEX idx_grid_alternatives_proj_grid_name ON grid_alternatives(proj_grid_name); +CREATE INDEX idx_grid_alternatives_old_proj_grid_name ON grid_alternatives(old_proj_grid_name); + CREATE TRIGGER grid_alternatives_insert_trigger BEFORE INSERT ON grid_alternatives FOR EACH ROW BEGIN diff --git a/data/sql_filelist.cmake b/data/sql_filelist.cmake index 676a7a2c..041bdd74 100644 --- a/data/sql_filelist.cmake +++ b/data/sql_filelist.cmake @@ -29,7 +29,7 @@ set(SQL_FILES "${SQL_DIR}/esri.sql" "${SQL_DIR}/ignf.sql" "${SQL_DIR}/grid_alternatives.sql" - "${SQL_DIR}/grid_alternatives_generated.sql" + "${SQL_DIR}/grid_alternatives_generated_noaa.sql" "${SQL_DIR}/customizations.sql" "${SQL_DIR}/commit.sql" ) diff --git a/include/proj/io.hpp b/include/proj/io.hpp index e2f48dd4..3dcf7928 100644 --- a/include/proj/io.hpp +++ b/include/proj/io.hpp @@ -839,6 +839,11 @@ class PROJ_GCC_DLL DatabaseContext { bool &gridAvailable) const; PROJ_INTERNAL std::string + getProjGridName(const std::string &oldProjGridName); + + PROJ_INTERNAL std::string getOldProjGridName(const std::string &gridName); + + PROJ_INTERNAL std::string getAliasFromOfficialName(const std::string &officialName, const std::string &tableName, const std::string &source) const; diff --git a/scripts/build_db_create_ignf_from_xml.py b/scripts/build_db_create_ignf_from_xml.py index f39f8d81..63e22770 100755 --- a/scripts/build_db_create_ignf_from_xml.py +++ b/scripts/build_db_create_ignf_from_xml.py @@ -1067,27 +1067,31 @@ all_sql.append("""--- Grid alternatives""") all_sql.append('') all_sql.append("""INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, package_name, url, direct_download, open_license, directory) VALUES ('ntf_r93.gsb', -- as referenced by the IGNF registry + 'fr_ign_ntf_r93.tif', 'ntf_r93.gsb', - 'NTv2', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL); + NULL, + 'https://cdn.proj.org/fr_ign_ntf_r93.tif', 1, 1, NULL); """) for grid in setVerticalGrids: original_grid_name = grid - proj_grid_name = grid[grid.rfind('/')+1:].replace('.txt', '.gtx').replace('.mnt', '.gtx').replace('.gra', '.gtx') + old_proj_grid_name = grid[grid.rfind('/')+1:].replace('.txt', '.gtx').replace('.mnt', '.gtx').replace('.gra', '.gtx') + gtiff_grid_name = 'fr_ign_' + old_proj_grid_name[0:-4] + '.tif' all_sql.append("""INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, @@ -1095,11 +1099,12 @@ for grid in setVerticalGrids: url, direct_download, open_license, directory) VALUES ('%s', -- as referenced by the IGNF registry '%s', - 'GTX', + '%s', + 'GTiff', 'geoid_like', 0, - 'proj-datumgrid-europe', - NULL, NULL, NULL, NULL);""" % (original_grid_name, proj_grid_name)) + NULL, + '%s', 1, 1, NULL);""" % (original_grid_name, gtiff_grid_name, old_proj_grid_name, 'https://cdn.proj.org/' + gtiff_grid_name)) all_sql.append('') diff --git a/scripts/build_db_from_esri.py b/scripts/build_db_from_esri.py index f4237b9b..500dc5d0 100755 --- a/scripts/build_db_from_esri.py +++ b/scripts/build_db_from_esri.py @@ -1568,12 +1568,14 @@ def import_geogtran(): all_sql.append(sql) if filename in ('c1hpgn', 'c2hpgn'): - sql = """INSERT INTO grid_alternatives VALUES ('%s', '%s', 'NTv2', 'hgridshift', 0, 'proj-datumgrid-north-america', NULL, NULL, NULL, NULL);""" % ( - filename, filename + '.gsb') + tiff_filename = 'us_noaa_' + filename + '.tif' + sql = """INSERT INTO grid_alternatives VALUES ('%s', '%s', '%s', 'GTiff', 'hgridshift', 0, NULL, '%s', 1, 1, NULL);""" % ( + filename, tiff_filename, filename + '.gsb', 'https://cdn.proj.org/' + tiff_filename) all_sql.append(sql) elif filename == 'wohpgn': - sql = """INSERT INTO grid_alternatives VALUES ('%s', '%s', 'CTable2', 'hgridshift', 0, 'proj-datumgrid', NULL, NULL, NULL, NULL);""" % ( - filename, 'WO') + tiff_filename = 'us_noaa_' + filename + '.tif' + sql = """INSERT INTO grid_alternatives VALUES ('%s', '%s', '%s', 'GTiff', 'hgridshift', , NULL, '%s', 1, 1, NULL);""" % ( + filename, tiff_filename, 'WO', 'https://cdn.proj.org/' + tiff_filename) all_sql.append(sql) elif filename == 'prvi': continue diff --git a/scripts/build_grid_alternatives_generated.py b/scripts/build_grid_alternatives_generated_noaa.py index 6570a771..96e12842 100755 --- a/scripts/build_grid_alternatives_generated.py +++ b/scripts/build_grid_alternatives_generated_noaa.py @@ -91,13 +91,15 @@ script_dir_name = os.path.dirname(os.path.realpath(__file__)) sql_dir_name = os.path.join(os.path.dirname(script_dir_name), 'data', 'sql') f = open(os.path.join(sql_dir_name, 'grid_alternatives_generated') + '.sql', 'wb') -f.write("--- This file has been generated by scripts/build_grid_alternatives_generated.py. DO NOT EDIT !\n\n".encode('UTF-8')) +f.write("--- This file has been generated by scripts/build_grid_alternatives_generated_noaa.py. DO NOT EDIT !\n\n".encode('UTF-8')) f.write("-- NADCON (NAD27 -> NAD83) entries\n\n".encode('UTF-8')) for grid in nadcon_grids: + tiff_name = 'us_noaa_' + grid + '.tif' sql = """INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, @@ -105,11 +107,12 @@ for grid in nadcon_grids: url, direct_download, open_license, directory) VALUES ('%s', '%s', - 'CTable2', + '%s', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL);""" % (grid + '.las', grid) + NULL, + '%s', 1, 1, NULL);""" % (grid + '.las', tiff_name, grid, 'https://cdn.proj.org/' + tiff_name) f.write((sql + '\n').encode('UTF-8')) @@ -123,8 +126,10 @@ for row in hpgn_grids: ctable2_name = None las_filename = ntv2_name[0:-4] + ".las" if ctable2_name: + tiff_name = 'us_noaa_' + ctable2_name+'.tif' sql = """INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, @@ -132,14 +137,17 @@ for row in hpgn_grids: url, direct_download, open_license, directory) VALUES ('%s', '%s', - 'CTable2', + '%s', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid', - NULL, NULL, NULL, NULL);""" % (las_filename, ctable2_name) + NULL, + '%s', 1, 1, NULL);""" % (las_filename, tiff_name, ctable2_name, 'https://cdn.proj.org/' + tiff_name) else: + tiff_name = 'us_noaa_' + ntv2_name[0:-4]+'.tif' sql = """INSERT INTO grid_alternatives(original_grid_name, proj_grid_name, + old_proj_grid_name, proj_grid_format, proj_method, inverse_direction, @@ -147,11 +155,12 @@ for row in hpgn_grids: url, direct_download, open_license, directory) VALUES ('%s', '%s', - 'NTv2', + '%s', + 'GTiff', 'hgridshift', 0, - 'proj-datumgrid-north-america', - NULL, NULL, NULL, NULL);""" % (las_filename, ntv2_name) + NULL, + '%s', 1, 1, NULL);""" % (las_filename, tiff_name, ntv2_name, 'https://cdn.proj.org/' + tiff_name) f.write((sql + '\n').encode('UTF-8')) f.close() diff --git a/scripts/grid_checks.py b/scripts/grid_checks.py index 3b748d2c..6177fd4a 100755 --- a/scripts/grid_checks.py +++ b/scripts/grid_checks.py @@ -35,21 +35,19 @@ import fnmatch import os import sqlite3 -parser = argparse.ArgumentParser(description='Check database and proj-datumgrid consistency.') +parser = argparse.ArgumentParser(description='Check database and proj-datumgrid-geotiff consistency.') parser.add_argument('path_to_proj_db', help='Full pathname to proj.db') parser.add_argument('path_to_proj_datumgrid', - help='Full pathname to the root of the proj_datumgrid git repository') + help='Full pathname to the root of the proj_datumgrid_geotiff git repository') group = parser.add_mutually_exclusive_group(required=True) group.add_argument('--not-in-grid-alternatives', dest='not_in_grid_alternatives', action='store_true', help='list grids mentionned in grid_transformation but missing in grid_alternatives') -group.add_argument('--not-in-proj-datumgrid', dest='not_in_proj_datum_grid', action='store_true', +group.add_argument('--not-in-proj-datumgrid-geotiff', dest='not_in_proj_datum_grid_geotiff', action='store_true', help='list grids registered in grid_alternatives, but missing in proj-datumgrid') group.add_argument('--not-in-db', dest='not_in_db', action='store_true', help='list grids in proj-datumgrid, but not registered in grid_alternatives') -group.add_argument('--check-filelist', dest='check_filelist', action='store_true', - help='check consistency of proj-datumgrid filelist.csv') args = parser.parse_args() @@ -66,7 +64,7 @@ if args.not_in_grid_alternatives: for row in res: print(row) -elif args.not_in_proj_datum_grid: +elif args.not_in_proj_datum_grid_geotiff: set_grids = set() for root, dirnames, filenames in os.walk(proj_datumgrid): @@ -97,157 +95,5 @@ elif args.not_in_db: res = conn.execute("SELECT 1 FROM grid_alternatives WHERE proj_grid_name = ?", (filename,)) if not res.fetchone(): print('WARNING: grid ' + filename + ' in proj-datumgrid but missing in grid_alternatives') - -elif args.check_filelist: - - from osgeo import gdal - - set_grids = set() - non_gsb_hgrids = ('ntv1_can.dat', - 'alaska', - 'conus', - 'hawaii', - 'prvi', - 'stgeorge', - 'stlrnc', - 'stpaul', - 'FL'.lower(), - 'MD'.lower(), - 'TN'.lower(), - 'WI'.lower(), - 'WO'.lower(),) - for root, dirnames, filenames in os.walk(proj_datumgrid): - if '.git' in root: - continue - for filename in fnmatch.filter(filenames, '*'): - filename_lower = filename.lower() - if '.aux.xml' in filename_lower: - continue - if '.gsb' in filename_lower or '.gtx' in filename_lower: - set_grids.add(filename) - elif filename_lower in non_gsb_hgrids: - set_grids.add(filename) - - conn = sqlite3.connect(dbname) - - set_filenames_from_csv = set() - with open(os.path.join(proj_datumgrid,'filelist.csv')) as f: - reader = csv.reader(f) - first_line = True - for row in reader: - if first_line: - assert row == ['filename', 'type', 'area', 'unit', 'source_crs', 'target_crs', 'interpolation_crs', 'agency_name', 'source', 'licence'] - first_line = False - continue - filename, type, _, unit, source_crs, target_crs, interpolation_crs, _, _, _ = row - if type in ('DEFORMATION_MODEL', 'VELOCITY_MODEL'): - continue - assert type in ('HORIZONTAL_OFFSET', - 'VERTICAL_OFFSET_GEOGRAPHIC_TO_VERTICAL', - 'VERTICAL_OFFSET_VERTICAL_TO_VERTICAL'), type - set_filenames_from_csv.add(filename) - - assert filename in set_grids, filename - if filename.lower().endswith('.gsb') or filename.lower() in non_gsb_hgrids: - assert type == 'HORIZONTAL_OFFSET', (filename, type) - else: - assert type in ('VERTICAL_OFFSET_GEOGRAPHIC_TO_VERTICAL', - 'VERTICAL_OFFSET_VERTICAL_TO_VERTICAL'), (filename, type) - - for dirname in ('.', 'europe', 'north-america', 'oceania', 'world'): - filename_with_path_tmp = os.path.join(proj_datumgrid, dirname, filename) - if os.path.exists(filename_with_path_tmp): - filename_with_path = filename_with_path_tmp - break - assert filename_with_path - - ds = gdal.Open(filename_with_path) - assert ds, filename - gt = ds.GetGeoTransform() - grid_w = gt[0] - grid_n = gt[3] - grid_e = gt[0] + gt[1] * ds.RasterXSize - grid_s = gt[3] + gt[5] * ds.RasterYSize - if grid_w > 180: - grid_w -= 360 - grid_e -= 360 - - source_crs_name = None - target_crs_name = None - - if source_crs.startswith('EPSG:') or source_crs.startswith('IGNF:'): - auth_name = source_crs[0:4] - code = source_crs[len('EPSG:'):] - res = conn.execute("SELECT name, table_name FROM crs_view WHERE auth_name = ? AND code = ?", (auth_name, code)) - source_crs_name, table_name = res.fetchone() - if type == 'HORIZONTAL_OFFSET': - assert table_name == 'geodetic_crs', (filename, table_name, code) - res = conn.execute("SELECT type FROM geodetic_crs WHERE auth_name = ? AND code = ?", (auth_name, code)) - geodetic_crs_type, = res.fetchone() - assert geodetic_crs_type == 'geographic 2D', (filename, geodetic_crs_type, code) - elif type == 'VERTICAL_OFFSET_GEOGRAPHIC_TO_VERTICAL': - assert table_name == 'geodetic_crs', (filename, table_name, code) - res = conn.execute("SELECT type FROM geodetic_crs WHERE auth_name = ? AND code = ?", (auth_name, code)) - geodetic_crs_type, = res.fetchone() - if code == '4269': # NAD 83 - assert geodetic_crs_type == 'geographic 2D', (filename, geodetic_crs_type, code) - else: - assert geodetic_crs_type == 'geographic 3D', (filename, geodetic_crs_type, code) - elif type == 'VERTICAL_OFFSET_VERTICAL_TO_VERTICAL': - assert table_name == 'vertical_crs', (filename, table_name, code) - - res = conn.execute("SELECT south_lat, north_lat, west_lon, east_lon FROM crs_view c, area a WHERE c.area_of_use_auth_name = a.auth_name AND c.area_of_use_code = a.code AND c.auth_name = ? AND c.code = ?", (auth_name, code)) - s, n, w, e = res.fetchone() - if w > e: - if grid_w > 0: - e += 360 - else: - w -= 360 - if filename not in ('c1hpgn.gsb', 'c2hpgn.gsb', 'guhpgn.gsb', 'g2009g01.gtx','g2009s01.gtx','g2012bg0.gtx', 'MAY76V20.gsb', ): - assert grid_w < e, (filename, source_crs, grid_w, e) - assert grid_e > w, (filename, source_crs, grid_e, w) - assert grid_s < n, (filename, source_crs, grid_s, n) - assert grid_n > s, (filename, source_crs, grid_n, s) - - else: - assert False, (filename, source_crs) - - if target_crs.startswith('EPSG:') or target_crs.startswith('IGNF:'): - auth_name = target_crs[0:4] - code = target_crs[len('EPSG:'):] - res = conn.execute("SELECT name, table_name FROM crs_view WHERE auth_name = ? AND code = ?", (auth_name, code)) - target_crs_name, table_name = res.fetchone() - if type == 'HORIZONTAL_OFFSET': - assert table_name == 'geodetic_crs', (filename, table_name, code) - res = conn.execute("SELECT type FROM geodetic_crs WHERE auth_name = ? AND code = ?", (auth_name, code)) - geodetic_crs_type, = res.fetchone() - assert geodetic_crs_type == 'geographic 2D', (filename, geodetic_crs_type, code) - elif type in ('VERTICAL_OFFSET_GEOGRAPHIC_TO_VERTICAL', 'VERTICAL_OFFSET_VERTICAL_TO_VERTICAL'): - assert table_name == 'vertical_crs', (filename, table_name, code) - - res = conn.execute("SELECT south_lat, north_lat, west_lon, east_lon FROM crs_view c, area a WHERE c.area_of_use_auth_name = a.auth_name AND c.area_of_use_code = a.code AND c.auth_name = ? AND c.code = ?", (auth_name, code)) - s, n, w, e = res.fetchone() - if w > e: - if grid_w > 0: - e += 360 - else: - w -= 360 - if filename not in ('c1hpgn.gsb', 'c2hpgn.gsb', 'guhpgn.gsb', 'ggpf08-Fakarava.gtx'): - assert grid_w < e, (filename, target_crs, grid_w, e) - assert grid_e > w, (filename, target_crs, grid_e, w) - assert grid_s < n, (filename, target_crs, grid_s, n) - assert grid_n > s, (filename, target_crs, grid_n, s) - - elif target_crs.startswith('VERTCRS['): - assert type == 'VERTICAL_OFFSET_GEOGRAPHIC_TO_VERTICAL', (filename, target_crs) - else: - assert False, (filename, target_crs) - - #print(filename, source_crs_name, target_crs_name) - - for f in set_grids: - if f not in set_filenames_from_csv: - print(f + ' is missing in filelist.csv') - else: raise Exception('unknown mode') diff --git a/src/filemanager.cpp b/src/filemanager.cpp index 005e734b..4218fde1 100644 --- a/src/filemanager.cpp +++ b/src/filemanager.cpp @@ -40,6 +40,8 @@ #include "filemanager.hpp" #include "proj.h" #include "proj/internal/internal.hpp" +#include "proj/internal/io_internal.hpp" +#include "proj/io.hpp" #include "proj_internal.h" #include <sys/stat.h> @@ -1411,6 +1413,20 @@ static void *pj_open_file_with_manager(projCtx ctx, const char *name, .release(); } +// --------------------------------------------------------------------------- + +static NS_PROJ::io::DatabaseContextPtr getDBcontext(PJ_CONTEXT *ctx) { + try { + if (ctx->cpp_context == nullptr) { + ctx->cpp_context = new projCppContext(ctx); + } + return ctx->cpp_context->getDatabaseContext().as_nullable(); + } catch (const std::exception &e) { + pj_log(ctx, PJ_LOG_DEBUG, "%s", e.what()); + return nullptr; + } +} + /************************************************************************/ /* FileManager::open_resource_file() */ /************************************************************************/ @@ -1426,27 +1442,54 @@ NS_PROJ::FileManager::open_resource_file(projCtx ctx, const char *name) { reinterpret_cast<NS_PROJ::File *>(pj_open_lib_internal( ctx, name, "rb", pj_open_file_with_manager, nullptr, 0))); - // Retry with a .tif extension if the file name doesn't end with .tif + // Retry with the new proj grid name if the file name doesn't end with .tif if (file == nullptr && !is_tilde_slash(name) && !is_rel_or_absolute_filename(name) && !starts_with(name, "http://") && !starts_with(name, "https://") && strcmp(name, "proj.db") != 0 && strstr(name, ".tif") == nullptr) { - std::string filename(name); - auto pos = filename.rfind('.'); - if (pos + 4 == filename.size()) { - filename = filename.substr(0, pos) + ".tif"; - file.reset(reinterpret_cast<NS_PROJ::File *>( - pj_open_lib_internal(ctx, filename.c_str(), "rb", - pj_open_file_with_manager, nullptr, 0))); - } else { - // For example for resource files like 'alaska' - filename += ".tif"; - file.reset(reinterpret_cast<NS_PROJ::File *>( - pj_open_lib_internal(ctx, filename.c_str(), "rb", - pj_open_file_with_manager, nullptr, 0))); + + auto dbContext = getDBcontext(ctx); + if (dbContext) { + try { + auto filename = dbContext->getProjGridName(name); + if (!filename.empty()) { + file.reset(reinterpret_cast<NS_PROJ::File *>( + pj_open_lib_internal(ctx, filename.c_str(), "rb", + pj_open_file_with_manager, nullptr, + 0))); + if (file) { + pj_ctx_set_errno(ctx, 0); + } + } + } catch (const std::exception &e) { + pj_log(ctx, PJ_LOG_DEBUG, "%s", e.what()); + return nullptr; + } } - if (file) { - pj_ctx_set_errno(ctx, 0); + } + // Retry with the old proj grid name if the file name ends with .tif + else if (file == nullptr && !is_tilde_slash(name) && + !is_rel_or_absolute_filename(name) && + !starts_with(name, "http://") && !starts_with(name, "https://") && + strstr(name, ".tif") != nullptr) { + + auto dbContext = getDBcontext(ctx); + if (dbContext) { + try { + auto filename = dbContext->getOldProjGridName(name); + if (!filename.empty()) { + file.reset(reinterpret_cast<NS_PROJ::File *>( + pj_open_lib_internal(ctx, filename.c_str(), "rb", + pj_open_file_with_manager, nullptr, + 0))); + if (file) { + pj_ctx_set_errno(ctx, 0); + } + } + } catch (const std::exception &e) { + pj_log(ctx, PJ_LOG_DEBUG, "%s", e.what()); + return nullptr; + } } } @@ -1459,35 +1502,12 @@ NS_PROJ::FileManager::open_resource_file(projCtx ctx, const char *name) { remote_file += '/'; } remote_file += name; - auto pos = remote_file.rfind('.'); - if (pos + 4 == remote_file.size()) { - remote_file = remote_file.substr(0, pos) + ".tif"; - file = open(ctx, remote_file.c_str(), - NS_PROJ::FileAccess::READ_ONLY); - if (file) { - pj_log(ctx, PJ_LOG_DEBUG_MAJOR, "Using %s", - remote_file.c_str()); - pj_ctx_set_errno(ctx, 0); - } - } else { - // For example for resource files like 'alaska' - auto remote_file_tif = remote_file + ".tif"; - file = open(ctx, remote_file_tif.c_str(), - NS_PROJ::FileAccess::READ_ONLY); - if (file) { - pj_log(ctx, PJ_LOG_DEBUG_MAJOR, "Using %s", - remote_file_tif.c_str()); - pj_ctx_set_errno(ctx, 0); - } else { - // Init files - file = open(ctx, remote_file.c_str(), - NS_PROJ::FileAccess::READ_ONLY); - if (file) { - pj_log(ctx, PJ_LOG_DEBUG_MAJOR, "Using %s", - remote_file.c_str()); - pj_ctx_set_errno(ctx, 0); - } - } + file = + open(ctx, remote_file.c_str(), NS_PROJ::FileAccess::READ_ONLY); + if (file) { + pj_log(ctx, PJ_LOG_DEBUG_MAJOR, "Using %s", + remote_file.c_str()); + pj_ctx_set_errno(ctx, 0); } } } @@ -1522,7 +1542,8 @@ PAFile pj_open_lib(projCtx ctx, const char *name, const char *mode) { * as a short filename. * * @param ctx context. - * @param short_filename short filename (e.g. egm96_15.gtx). Must not be NULL. + * @param short_filename short filename (e.g. us_nga_egm96_15.tif). + * Must not be NULL. * @param out_full_filename output buffer, of size out_full_filename_size, that * will receive the full filename on success. * Will be zero-terminated. @@ -1531,14 +1552,33 @@ PAFile pj_open_lib(projCtx ctx, const char *name, const char *mode) { */ int pj_find_file(projCtx ctx, const char *short_filename, char *out_full_filename, size_t out_full_filename_size) { - auto f = reinterpret_cast<NS_PROJ::File *>(pj_open_lib_internal( - ctx, short_filename, "rb", pj_open_file_with_manager, out_full_filename, - out_full_filename_size)); - if (f != nullptr) { - delete f; - return 1; + auto file = std::unique_ptr<NS_PROJ::File>( + reinterpret_cast<NS_PROJ::File *>(pj_open_lib_internal( + ctx, short_filename, "rb", pj_open_file_with_manager, + out_full_filename, out_full_filename_size))); + + // Retry with the old proj grid name if the file name ends with .tif + if (file == nullptr && strstr(short_filename, ".tif") != nullptr) { + + auto dbContext = getDBcontext(ctx); + if (dbContext) { + try { + auto filename = dbContext->getOldProjGridName(short_filename); + if (!filename.empty()) { + file.reset(reinterpret_cast<NS_PROJ::File *>( + pj_open_lib_internal(ctx, filename.c_str(), "rb", + pj_open_file_with_manager, + out_full_filename, + out_full_filename_size))); + } + } catch (const std::exception &e) { + pj_log(ctx, PJ_LOG_DEBUG, "%s", e.what()); + return false; + } + } } - return 0; + + return file != nullptr; } /************************************************************************/ diff --git a/src/iso19111/coordinateoperation.cpp b/src/iso19111/coordinateoperation.cpp index a8c7c902..6d97adc3 100644 --- a/src/iso19111/coordinateoperation.cpp +++ b/src/iso19111/coordinateoperation.cpp @@ -8448,6 +8448,29 @@ static const std::string &_getCTABLE2Filename(const Transformation *op, //! @cond Doxygen_Suppress static const std::string & +_getHorizontalShiftGTIFFFilename(const Transformation *op, bool allowInverse) { + const auto &l_method = op->method(); + const auto &methodName = l_method->nameStr(); + if (ci_equal(methodName, PROJ_WKT2_NAME_METHOD_HORIZONTAL_SHIFT_GTIFF) || + (allowInverse && + ci_equal(methodName, + INVERSE_OF + PROJ_WKT2_NAME_METHOD_HORIZONTAL_SHIFT_GTIFF))) { + const auto &fileParameter = op->parameterValue( + EPSG_NAME_PARAMETER_LATITUDE_LONGITUDE_DIFFERENCE_FILE, + EPSG_CODE_PARAMETER_LATITUDE_LONGITUDE_DIFFERENCE_FILE); + if (fileParameter && + fileParameter->type() == ParameterValue::Type::FILENAME) { + return fileParameter->valueFile(); + } + } + return nullString; +} +//! @endcond + +// --------------------------------------------------------------------------- + +//! @cond Doxygen_Suppress +static const std::string & _getHeightToGeographic3DFilename(const Transformation *op, bool allowInverse) { const auto &methodName = op->method()->nameStr(); @@ -8658,7 +8681,30 @@ TransformationNNPtr Transformation::substitutePROJAlternativeGridNames( const auto &l_sourceCRS = sourceCRS(); const auto &l_targetCRS = targetCRS(); const auto &l_accuracies = coordinateOperationAccuracies(); - if (projGridFormat == "NTv1") { + if (projGridFormat == "GTiff") { + auto parameters = + std::vector<OperationParameterNNPtr>{createOpParamNameEPSGCode( + EPSG_CODE_PARAMETER_LATITUDE_LONGITUDE_DIFFERENCE_FILE)}; + auto methodProperties = util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, + PROJ_WKT2_NAME_METHOD_HORIZONTAL_SHIFT_GTIFF); + auto values = std::vector<ParameterValueNNPtr>{ + ParameterValue::createFilename(projFilename)}; + if (inverseDirection) { + return create(createPropertiesForInverse( + self.as_nullable().get(), true, false), + l_targetCRS, l_sourceCRS, nullptr, + methodProperties, parameters, values, + l_accuracies) + ->inverseAsTransformation(); + + } else { + return create(createSimilarPropertiesTransformation(self), + l_sourceCRS, l_targetCRS, nullptr, + methodProperties, parameters, values, + l_accuracies); + } + } else if (projGridFormat == "NTv1") { if (inverseDirection) { return createNTv1(createPropertiesForInverse( self.as_nullable().get(), true, false), @@ -9336,10 +9382,14 @@ void Transformation::_exportToPROJString( const auto &NTv1Filename = _getNTv1Filename(this, true); const auto &NTv2Filename = _getNTv2Filename(this, true); const auto &CTABLE2Filename = _getCTABLE2Filename(this, true); + const auto &HorizontalShiftGTIFFFilename = + _getHorizontalShiftGTIFFFilename(this, true); const auto &hGridShiftFilename = - !NTv1Filename.empty() ? NTv1Filename : !NTv2Filename.empty() - ? NTv2Filename - : CTABLE2Filename; + !HorizontalShiftGTIFFFilename.empty() + ? HorizontalShiftGTIFFFilename + : !NTv1Filename.empty() ? NTv1Filename : !NTv2Filename.empty() + ? NTv2Filename + : CTABLE2Filename; if (!hGridShiftFilename.empty()) { auto sourceCRSGeog = dynamic_cast<const crs::GeographicCRS *>(sourceCRS().get()); @@ -9417,11 +9467,15 @@ void Transformation::_exportToPROJString( if (fileParameter && fileParameter->type() == ParameterValue::Type::FILENAME) { formatter->addStep("vgridshift"); - // The vertcon grids go from NGVD 29 to NAVD 88, with units - // in millimeter (see - // https://github.com/OSGeo/proj.4/issues/1071) formatter->addParam("grids", fileParameter->valueFile()); - formatter->addParam("multiplier", 0.001); + if (fileParameter->valueFile().find(".tif") != std::string::npos) { + formatter->addParam("multiplier", 1.0); + } else { + // The vertcon grids go from NGVD 29 to NAVD 88, with units + // in millimeter (see + // https://github.com/OSGeo/proj.4/issues/1071), for gtx files + formatter->addParam("multiplier", 0.001); + } return; } } @@ -11155,7 +11209,9 @@ struct FilterResults { !gridDesc.available) { gridsAvailable = false; } - if (gridDesc.packageName.empty() && !gridDesc.available) { + if (gridDesc.packageName.empty() && + !(!gridDesc.url.empty() && gridDesc.openLicense) && + !gridDesc.available) { gridsKnown = false; } } diff --git a/src/iso19111/factory.cpp b/src/iso19111/factory.cpp index 7e680d31..54aa993f 100644 --- a/src/iso19111/factory.cpp +++ b/src/iso19111/factory.cpp @@ -987,7 +987,8 @@ bool DatabaseContext::lookForGridInfo( openLicense = (row[3].empty() ? row[4] : row[3]) == "1"; directDownload = (row[5].empty() ? row[6] : row[5]) == "1"; - if (considerKnownGridsAsAvailable && !packageName.empty()) { + if (considerKnownGridsAsAvailable && + (!packageName.empty() || (!url.empty() && openLicense))) { gridAvailable = true; } @@ -1012,6 +1013,30 @@ bool DatabaseContext::isKnownName(const std::string &name, sql += "\" WHERE name = ? LIMIT 1"; return !d->run(sql, {name}).empty(); } +// --------------------------------------------------------------------------- + +std::string +DatabaseContext::getProjGridName(const std::string &oldProjGridName) { + auto res = d->run("SELECT proj_grid_name FROM grid_alternatives WHERE " + "old_proj_grid_name = ?", + {oldProjGridName}); + if (res.empty()) { + return std::string(); + } + return res.front()[0]; +} + +// --------------------------------------------------------------------------- + +std::string DatabaseContext::getOldProjGridName(const std::string &gridName) { + auto res = d->run("SELECT old_proj_grid_name FROM grid_alternatives WHERE " + "proj_grid_name = ?", + {gridName}); + if (res.empty()) { + return std::string(); + } + return res.front()[0]; +} // --------------------------------------------------------------------------- diff --git a/src/proj_constants.h b/src/proj_constants.h index d5b484c6..54dc7873 100644 --- a/src/proj_constants.h +++ b/src/proj_constants.h @@ -508,6 +508,8 @@ #define PROJ_WKT2_NAME_METHOD_CTABLE2 "CTABLE2" +#define PROJ_WKT2_NAME_METHOD_HORIZONTAL_SHIFT_GTIFF "HORIZONTAL_SHIFT_GTIFF" + /* ------------------------------------------------------------------------ */ #define EPSG_CODE_METHOD_VERTCON 9658 diff --git a/test/cli/testprojinfo_out.dist b/test/cli/testprojinfo_out.dist index e7a92915..f06e13c7 100644 --- a/test/cli/testprojinfo_out.dist +++ b/test/cli/testprojinfo_out.dist @@ -287,7 +287,7 @@ Operation No. 1: DERIVED_FROM(EPSG):1312, NAD27 to NAD83 (3), 2.0 m, Canada PROJ string: -+proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=ntv1_can.dat +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 ++proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=ca_nrc_ntv1_can.tif +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 WKT2:2019 string: COORDINATEOPERATION["NAD27 to NAD83 (3)", @@ -321,9 +321,8 @@ COORDINATEOPERATION["NAD27 to NAD83 (3)", ORDER[2], ANGLEUNIT["degree",0.0174532925199433]], ID["EPSG",4269]]], - METHOD["NTv1", - ID["EPSG",9614]], - PARAMETERFILE["Latitude and longitude difference file","ntv1_can.dat"], + METHOD["HORIZONTAL_SHIFT_GTIFF"], + PARAMETERFILE["Latitude and longitude difference file","ca_nrc_ntv1_can.tif"], OPERATIONACCURACY[2.0], USAGE[ SCOPE["Historic record only - now superseded - see remarks."], @@ -337,7 +336,7 @@ Operation No. 2: DERIVED_FROM(EPSG):1313, NAD27 to NAD83 (4), 1.5 m, Canada - NAD27 PROJ string: -+proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=ntv2_0.gsb +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 ++proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=ca_nrc_ntv2_0.tif +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 WKT2:2019 string: COORDINATEOPERATION["NAD27 to NAD83 (4)", @@ -371,9 +370,8 @@ COORDINATEOPERATION["NAD27 to NAD83 (4)", ORDER[2], ANGLEUNIT["degree",0.0174532925199433]], ID["EPSG",4269]]], - METHOD["NTv2", - ID["EPSG",9615]], - PARAMETERFILE["Latitude and longitude difference file","ntv2_0.gsb"], + METHOD["HORIZONTAL_SHIFT_GTIFF"], + PARAMETERFILE["Latitude and longitude difference file","ca_nrc_ntv2_0.tif"], OPERATIONACCURACY[1.5], USAGE[ SCOPE["Accuracy 1-2 metres."], @@ -387,7 +385,7 @@ Operation No. 3: DERIVED_FROM(EPSG):1241, NAD27 to NAD83 (1), 0.15 m, USA - CONUS including EEZ PROJ string: -+proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=conus +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 ++proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=us_noaa_conus.tif +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 WKT2:2019 string: COORDINATEOPERATION["NAD27 to NAD83 (1)", @@ -421,8 +419,8 @@ COORDINATEOPERATION["NAD27 to NAD83 (1)", ORDER[2], ANGLEUNIT["degree",0.0174532925199433]], ID["EPSG",4269]]], - METHOD["CTABLE2"], - PARAMETERFILE["Latitude and longitude difference file","conus"], + METHOD["HORIZONTAL_SHIFT_GTIFF"], + PARAMETERFILE["Latitude and longitude difference file","us_noaa_conus.tif"], OPERATIONACCURACY[0.15], USAGE[ SCOPE["Accuracy at 67% confidence level is 0.15m onshore, 5m nearshore and undetermined farther offshore."], @@ -436,7 +434,7 @@ Operation No. 4: DERIVED_FROM(EPSG):1243, NAD27 to NAD83 (2), 0.5 m, USA - Alaska including EEZ PROJ string: -+proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=alaska +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 ++proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=us_noaa_alaska.tif +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 WKT2:2019 string: COORDINATEOPERATION["NAD27 to NAD83 (2)", @@ -470,8 +468,8 @@ COORDINATEOPERATION["NAD27 to NAD83 (2)", ORDER[2], ANGLEUNIT["degree",0.0174532925199433]], ID["EPSG",4269]]], - METHOD["CTABLE2"], - PARAMETERFILE["Latitude and longitude difference file","alaska"], + METHOD["HORIZONTAL_SHIFT_GTIFF"], + PARAMETERFILE["Latitude and longitude difference file","us_noaa_alaska.tif"], OPERATIONACCURACY[0.5], USAGE[ SCOPE["Accuracy at 67% confidence level is 0.5m onshore, 5m nearshore and undetermined farther offshore."], @@ -485,7 +483,7 @@ Operation No. 5: DERIVED_FROM(EPSG):1573, NAD27 to NAD83 (6), 1.5 m, Canada - Quebec PROJ string: -+proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=na27na83.gsb +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 ++proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift +grids=ca_que_mern_na27na83.tif +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 WKT2:2019 string: COORDINATEOPERATION["NAD27 to NAD83 (6)", @@ -519,9 +517,8 @@ COORDINATEOPERATION["NAD27 to NAD83 (6)", ORDER[2], ANGLEUNIT["degree",0.0174532925199433]], ID["EPSG",4269]]], - METHOD["NTv2", - ID["EPSG",9615]], - PARAMETERFILE["Latitude and longitude difference file","na27na83.gsb"], + METHOD["HORIZONTAL_SHIFT_GTIFF"], + PARAMETERFILE["Latitude and longitude difference file","ca_que_mern_na27na83.tif"], OPERATIONACCURACY[1.5], USAGE[ SCOPE["Accuracy 1-2 metres."], @@ -952,7 +949,7 @@ Operation No. 1: unknown id, Inverse of NAD83(2011) to NAVD88 height (3), 0.015 m, USA - CONUS - onshore PROJ string: -+proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=vgridshift +grids=g2018u0.gtx +multiplier=1 +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 ++proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=vgridshift +grids=us_noaa_g2018u0.tif +multiplier=1 +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 ------------------------------------- Operation No. 2: @@ -960,7 +957,7 @@ Operation No. 2: unknown id, Inverse of NAD83(2011) to NAVD88 height (2), 0.02 m, USA - Alaska PROJ string: -+proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=vgridshift +grids=g2012ba0.gtx +multiplier=1 +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 ++proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=vgridshift +grids=us_noaa_g2012ba0.tif +multiplier=1 +step +proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1 Testing NGF IGN69 height to RGF93: projinfo -s EPSG:5720 -t EPSG:4965 -o PROJ Candidate operations found: 2 @@ -970,7 +967,7 @@ Operation No. 1: INVERSE(DERIVED_FROM(EPSG)):8885, Inverse of RGF93 to NGF IGN69 height (3), 0.01 m, France - mainland onshore PROJ string: -+proj=vgridshift +grids=RAF18.gtx +multiplier=1 ++proj=vgridshift +grids=fr_ign_RAF18.tif +multiplier=1 ------------------------------------- Operation No. 2: @@ -1084,7 +1081,7 @@ Operation No. 1: DERIVED_FROM(EPSG):5656, GDA94 to AHD height (49), 0.03 m, Australia - mainland PROJ string: -+proj=pipeline +step +inv +proj=vgridshift +grids=AUSGeoid09_V1.01.gtx +multiplier=1 ++proj=pipeline +step +inv +proj=vgridshift +grids=au_ga_AUSGeoid09_V1.01.tif +multiplier=1 Testing -s "GDA2020" -t "AHD height" --grid-check none -o PROJ --spatial-test intersects Candidate operations found: 1 @@ -1094,7 +1091,7 @@ Operation No. 1: DERIVED_FROM(EPSG):8451, GDA2020 to AHD height (1), 0.03 m, Australia Christmas and Cocos - onshore PROJ string: -+proj=pipeline +step +inv +proj=vgridshift +grids=AUSGeoid2020_20180201.gtx +multiplier=1 ++proj=pipeline +step +inv +proj=vgridshift +grids=au_ga_AUSGeoid2020_20180201.tif +multiplier=1 Testing -k ellipsoid WGS84 PROJ string: diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp index df0bffb0..b74e5cf0 100644 --- a/test/unit/test_c_api.cpp +++ b/test/unit/test_c_api.cpp @@ -1298,12 +1298,10 @@ TEST_F(CApi, proj_coordoperation_get_grid_used) { ASSERT_NE(fullName, nullptr); ASSERT_NE(packageName, nullptr); ASSERT_NE(url, nullptr); - EXPECT_EQ(shortName, std::string("ntv1_can.dat")); + EXPECT_EQ(shortName, std::string("ca_nrc_ntv1_can.tif")); // EXPECT_EQ(fullName, std::string("")); - EXPECT_EQ(packageName, std::string("proj-datumgrid")); - EXPECT_TRUE(std::string(url).find( - "https://download.osgeo.org/proj/proj-datumgrid-") == 0) - << std::string(url); + EXPECT_EQ(packageName, std::string("")); + EXPECT_EQ(std::string(url), "https://cdn.proj.org/ca_nrc_ntv1_can.tif"); EXPECT_EQ(directDownload, 1); EXPECT_EQ(openLicense, 1); } @@ -3105,8 +3103,8 @@ TEST_F(CApi, proj_grid_get_info_from_database) { } { EXPECT_TRUE(proj_grid_get_info_from_database( - m_ctxt, "GDA94_GDA2020_conformal.gsb", nullptr, nullptr, nullptr, - nullptr, nullptr, nullptr)); + m_ctxt, "au_icsm_GDA94_GDA2020_conformal.tif", nullptr, nullptr, + nullptr, nullptr, nullptr, nullptr)); } { const char *name = nullptr; @@ -3116,8 +3114,8 @@ TEST_F(CApi, proj_grid_get_info_from_database) { int open_license = 0; int available = 0; EXPECT_TRUE(proj_grid_get_info_from_database( - m_ctxt, "GDA94_GDA2020_conformal.gsb", &name, &package_name, &url, - &direct_download, &open_license, &available)); + m_ctxt, "au_icsm_GDA94_GDA2020_conformal.tif", &name, &package_name, + &url, &direct_download, &open_license, &available)); ASSERT_NE(name, nullptr); ASSERT_NE(package_name, nullptr); ASSERT_NE(url, nullptr); diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp index d49db5bf..10c06e81 100644 --- a/test/unit/test_factory.cpp +++ b/test/unit/test_factory.cpp @@ -2245,6 +2245,7 @@ TEST_F(FactoryWithTmpDatabase, lookForGridInfo) { ASSERT_TRUE(execute("INSERT INTO grid_alternatives(original_grid_name," "proj_grid_name, " + "old_proj_grid_name, " "proj_grid_format, " "proj_method, " "inverse_direction, " @@ -2252,7 +2253,8 @@ TEST_F(FactoryWithTmpDatabase, lookForGridInfo) { "url, direct_download, open_license, directory) " "VALUES ('null', " "'PROJ_fake_grid', " - "'CTable2', " + "'old_PROJ_fake_grid', " + "'NTv2', " "'hgridshift', " "0, " "NULL, " diff --git a/test/unit/test_network.cpp b/test/unit/test_network.cpp index 241e6bbc..35dd2b1e 100644 --- a/test/unit/test_network.cpp +++ b/test/unit/test_network.cpp @@ -65,7 +65,7 @@ TEST(networking, initial_check) { if (!hCurlHandle) return; curl_easy_setopt(hCurlHandle, CURLOPT_URL, - "https://cdn.proj.org/ntf_r93.tif"); + "https://cdn.proj.org/fr_ign_ntf_r93.tif"); curl_easy_setopt(hCurlHandle, CURLOPT_RANGE, "0-1"); curl_easy_setopt(hCurlHandle, CURLOPT_WRITEFUNCTION, noop_curl_write_func); @@ -95,7 +95,7 @@ TEST(networking, basic) { const char *pipeline = "+proj=pipeline " "+step +proj=unitconvert +xy_in=deg +xy_out=rad " - "+step +proj=hgridshift +grids=https://cdn.proj.org/ntf_r93.tif " + "+step +proj=hgridshift +grids=https://cdn.proj.org/fr_ign_ntf_r93.tif " "+step +proj=unitconvert +xy_in=rad +xy_out=deg"; // network access disabled by default @@ -1055,6 +1055,10 @@ TEST(networking, simul_file_change_while_opened) { #ifdef CURL_ENABLED TEST(networking, curl_hgridshift) { + if (!networkAccessOK) { + return; + } + auto ctx = proj_context_create(); proj_grid_cache_set_enable(ctx, false); proj_context_set_enable_network(ctx, true); @@ -1086,6 +1090,10 @@ TEST(networking, curl_hgridshift) { #ifdef CURL_ENABLED TEST(networking, curl_vgridshift) { + if (!networkAccessOK) { + return; + } + auto ctx = proj_context_create(); proj_grid_cache_set_enable(ctx, false); proj_context_set_enable_network(ctx, true); @@ -1118,6 +1126,10 @@ TEST(networking, curl_vgridshift) { #ifdef CURL_ENABLED TEST(networking, curl_vgridshift_vertcon) { + if (!networkAccessOK) { + return; + } + auto ctx = proj_context_create(); proj_grid_cache_set_enable(ctx, false); proj_context_set_enable_network(ctx, true); @@ -1239,7 +1251,7 @@ TEST(networking, cache_basic) { const char *pipeline = "+proj=pipeline " "+step +proj=unitconvert +xy_in=deg +xy_out=rad " - "+step +proj=hgridshift +grids=https://cdn.proj.org/ntf_r93.tif " + "+step +proj=hgridshift +grids=https://cdn.proj.org/fr_ign_ntf_r93.tif " "+step +proj=unitconvert +xy_in=rad +xy_out=deg"; auto ctx = proj_context_create(); @@ -1265,7 +1277,7 @@ TEST(networking, cache_basic) { const char *url = reinterpret_cast<const char *>(sqlite3_column_text(hStmt, 0)); ASSERT_NE(url, nullptr); - ASSERT_EQ(std::string(url), "https://cdn.proj.org/ntf_r93.tif"); + ASSERT_EQ(std::string(url), "https://cdn.proj.org/fr_ign_ntf_r93.tif"); ASSERT_EQ(sqlite3_column_int64(hStmt, 1), 0); sqlite3_finalize(hStmt); sqlite3_close(hDB); @@ -1292,7 +1304,7 @@ TEST(networking, proj_grid_cache_clear) { const char *pipeline = "+proj=pipeline " "+step +proj=unitconvert +xy_in=deg +xy_out=rad " - "+step +proj=hgridshift +grids=https://cdn.proj.org/ntf_r93.tif " + "+step +proj=hgridshift +grids=https://cdn.proj.org/fr_ign_ntf_r93.tif " "+step +proj=unitconvert +xy_in=rad +xy_out=deg"; proj_cleanup(); @@ -1343,7 +1355,7 @@ TEST(networking, cache_saturation) { const char *pipeline = "+proj=pipeline " "+step +proj=unitconvert +xy_in=deg +xy_out=rad " - "+step +proj=hgridshift +grids=https://cdn.proj.org/ntf_r93.tif " + "+step +proj=hgridshift +grids=https://cdn.proj.org/fr_ign_ntf_r93.tif " "+step +proj=unitconvert +xy_in=rad +xy_out=deg"; proj_cleanup(); @@ -1405,7 +1417,7 @@ TEST(networking, cache_ttl) { const char *pipeline = "+proj=pipeline " "+step +proj=unitconvert +xy_in=deg +xy_out=rad " - "+step +proj=hgridshift +grids=https://cdn.proj.org/ntf_r93.tif " + "+step +proj=hgridshift +grids=https://cdn.proj.org/fr_ign_ntf_r93.tif " "+step +proj=unitconvert +xy_in=rad +xy_out=deg"; proj_cleanup(); @@ -1508,7 +1520,7 @@ TEST(networking, cache_lock) { const char *pipeline = "+proj=pipeline " "+step +proj=unitconvert +xy_in=deg +xy_out=rad " - "+step +proj=hgridshift +grids=https://cdn.proj.org/ntf_r93.tif " + "+step +proj=hgridshift +grids=https://cdn.proj.org/fr_ign_ntf_r93.tif " "+step +proj=unitconvert +xy_in=rad +xy_out=deg"; proj_cleanup(); @@ -1574,7 +1586,7 @@ TEST(networking, download_whole_files) { proj_cleanup(); unlink("proj_test_tmp/cache.db"); - unlink("proj_test_tmp/dvr90.tif"); + unlink("proj_test_tmp/dk_sdfe_dvr90.tif"); rmdir("proj_test_tmp"); putenv(const_cast<char *>("PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY=")); @@ -1583,11 +1595,12 @@ TEST(networking, download_whole_files) { auto ctx = proj_context_create(); proj_context_set_enable_network(ctx, true); - ASSERT_TRUE(proj_is_download_needed(ctx, "dvr90.gtx", false)); + ASSERT_TRUE(proj_is_download_needed(ctx, "dk_sdfe_dvr90.tif", false)); - ASSERT_TRUE(proj_download_file(ctx, "dvr90.gtx", false, nullptr, nullptr)); + ASSERT_TRUE( + proj_download_file(ctx, "dk_sdfe_dvr90.tif", false, nullptr, nullptr)); - FILE *f = fopen("proj_test_tmp/dvr90.tif", "rb"); + FILE *f = fopen("proj_test_tmp/dk_sdfe_dvr90.tif", "rb"); ASSERT_NE(f, nullptr); fclose(f); @@ -1596,7 +1609,7 @@ TEST(networking, download_whole_files) { const char *pipeline = "+proj=pipeline " "+step +proj=unitconvert +xy_in=deg +xy_out=rad " - "+step +proj=vgridshift +grids=dvr90.gtx +multiplier=1 " + "+step +proj=vgridshift +grids=dk_sdfe_dvr90.tif +multiplier=1 " "+step +proj=unitconvert +xy_in=rad +xy_out=deg"; auto P = proj_create(ctx, pipeline); @@ -1612,7 +1625,7 @@ TEST(networking, download_whole_files) { proj_context_set_enable_network(ctx, true); - ASSERT_FALSE(proj_is_download_needed(ctx, "dvr90.gtx", false)); + ASSERT_FALSE(proj_is_download_needed(ctx, "dk_sdfe_dvr90.tif", false)); { sqlite3 *hDB = nullptr; @@ -1631,7 +1644,7 @@ TEST(networking, download_whole_files) { } // If we ignore TTL settings, then no network access will be done - ASSERT_FALSE(proj_is_download_needed(ctx, "dvr90.gtx", true)); + ASSERT_FALSE(proj_is_download_needed(ctx, "dk_sdfe_dvr90.tif", true)); { sqlite3 *hDB = nullptr; @@ -1651,7 +1664,7 @@ TEST(networking, download_whole_files) { } // Should recheck from the CDN, update last_checked and do nothing - ASSERT_FALSE(proj_is_download_needed(ctx, "dvr90.gtx", false)); + ASSERT_FALSE(proj_is_download_needed(ctx, "dk_sdfe_dvr90.tif", false)); { sqlite3 *hDB = nullptr; @@ -1680,10 +1693,10 @@ TEST(networking, download_whole_files) { sqlite3_close(hDB); } - ASSERT_TRUE(proj_is_download_needed(ctx, "dvr90.gtx", false)); + ASSERT_TRUE(proj_is_download_needed(ctx, "dk_sdfe_dvr90.tif", false)); // Redo download with a progress callback this time. - unlink("proj_test_tmp/dvr90.tif"); + unlink("proj_test_tmp/dk_sdfe_dvr90.tif"); const auto cbk = [](PJ_CONTEXT *l_ctx, double pct, void *user_data) -> int { auto vect = static_cast<std::vector<std::pair<PJ_CONTEXT *, double>> *>( @@ -1693,7 +1706,8 @@ TEST(networking, download_whole_files) { }; std::vector<std::pair<PJ_CONTEXT *, double>> vectPct; - ASSERT_TRUE(proj_download_file(ctx, "dvr90.gtx", false, cbk, &vectPct)); + ASSERT_TRUE( + proj_download_file(ctx, "dk_sdfe_dvr90.tif", false, cbk, &vectPct)); ASSERT_EQ(vectPct.size(), 3U); ASSERT_EQ(vectPct.back().first, ctx); ASSERT_EQ(vectPct.back().second, 1.0); @@ -1703,7 +1717,7 @@ TEST(networking, download_whole_files) { putenv(const_cast<char *>("PROJ_USER_WRITABLE_DIRECTORY=")); putenv(const_cast<char *>("PROJ_FULL_FILE_CHUNK_SIZE=")); unlink("proj_test_tmp/cache.db"); - unlink("proj_test_tmp/dvr90.tif"); + unlink("proj_test_tmp/dk_sdfe_dvr90.tif"); rmdir("proj_test_tmp"); } @@ -1716,7 +1730,7 @@ TEST(networking, file_api) { proj_cleanup(); unlink("proj_test_tmp/cache.db"); - unlink("proj_test_tmp/dvr90.tif"); + unlink("proj_test_tmp/dk_sdfe_dvr90.tif"); rmdir("proj_test_tmp"); putenv(const_cast<char *>("PROJ_SKIP_READ_USER_WRITABLE_DIRECTORY=")); @@ -1806,9 +1820,10 @@ TEST(networking, file_api) { UserData userData; ASSERT_TRUE(proj_context_set_fileapi(ctx, &api, &userData)); - ASSERT_TRUE(proj_is_download_needed(ctx, "dvr90.gtx", false)); + ASSERT_TRUE(proj_is_download_needed(ctx, "dk_sdfe_dvr90.tif", false)); - ASSERT_TRUE(proj_download_file(ctx, "dvr90.gtx", false, nullptr, nullptr)); + ASSERT_TRUE( + proj_download_file(ctx, "dk_sdfe_dvr90.tif", false, nullptr, nullptr)); ASSERT_TRUE(userData.in_open); ASSERT_FALSE(userData.in_read); @@ -1824,7 +1839,7 @@ TEST(networking, file_api) { const char *pipeline = "+proj=pipeline " "+step +proj=unitconvert +xy_in=deg +xy_out=rad " - "+step +proj=vgridshift +grids=dvr90.gtx +multiplier=1 " + "+step +proj=vgridshift +grids=dk_sdfe_dvr90.tif +multiplier=1 " "+step +proj=unitconvert +xy_in=rad +xy_out=deg"; auto P = proj_create(ctx, pipeline); @@ -1847,7 +1862,7 @@ TEST(networking, file_api) { putenv(const_cast<char *>("PROJ_USER_WRITABLE_DIRECTORY=")); putenv(const_cast<char *>("PROJ_FULL_FILE_CHUNK_SIZE=")); unlink("proj_test_tmp/cache.db"); - unlink("proj_test_tmp/dvr90.tif"); + unlink("proj_test_tmp/dk_sdfe_dvr90.tif"); rmdir("proj_test_tmp"); } diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp index 495c80c3..ebd306ba 100644 --- a/test/unit/test_operation.cpp +++ b/test/unit/test_operation.cpp @@ -4460,7 +4460,8 @@ TEST(operation, geogCRS_to_geogCRS_context_inverse_needed) { .get()), "+proj=pipeline +step +proj=axisswap +order=2,1 +step " "+proj=unitconvert +xy_in=deg +xy_out=rad +step " - "+proj=hgridshift +grids=ntf_r93.gsb +step +proj=unitconvert " + "+proj=hgridshift +grids=fr_ign_ntf_r93.tif +step " + "+proj=unitconvert " "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1"); } { @@ -4478,7 +4479,8 @@ TEST(operation, geogCRS_to_geogCRS_context_inverse_needed) { list[0]->exportToPROJString(PROJStringFormatter::create().get()), "+proj=pipeline +step +proj=axisswap +order=2,1 +step " "+proj=unitconvert +xy_in=deg +xy_out=rad +step " - "+proj=hgridshift +grids=ntf_r93.gsb +step +proj=unitconvert " + "+proj=hgridshift +grids=fr_ign_ntf_r93.tif +step " + "+proj=unitconvert " "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1"); } { @@ -4496,7 +4498,8 @@ TEST(operation, geogCRS_to_geogCRS_context_inverse_needed) { list[0]->exportToPROJString(PROJStringFormatter::create().get()), "+proj=pipeline +step +proj=axisswap +order=2,1 +step " "+proj=unitconvert +xy_in=deg +xy_out=rad +step +inv " - "+proj=hgridshift +grids=ntf_r93.gsb +step +proj=unitconvert " + "+proj=hgridshift +grids=fr_ign_ntf_r93.tif +step " + "+proj=unitconvert " "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1"); } } @@ -4521,17 +4524,18 @@ TEST(operation, geogCRS_to_geogCRS_context_ntv1_ntv2_ctable2) { EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), "+proj=pipeline +step +proj=axisswap +order=2,1 +step " "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift " - "+grids=ntv1_can.dat +step +proj=unitconvert +xy_in=rad " + "+grids=ca_nrc_ntv1_can.tif +step +proj=unitconvert +xy_in=rad " "+xy_out=deg +step +proj=axisswap +order=2,1"); EXPECT_EQ(list[1]->exportToPROJString(PROJStringFormatter::create().get()), "+proj=pipeline +step +proj=axisswap +order=2,1 +step " "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift " - "+grids=ntv2_0.gsb +step +proj=unitconvert +xy_in=rad " + "+grids=ca_nrc_ntv2_0.tif +step +proj=unitconvert +xy_in=rad " "+xy_out=deg +step +proj=axisswap +order=2,1"); EXPECT_EQ(list[2]->exportToPROJString(PROJStringFormatter::create().get()), "+proj=pipeline +step +proj=axisswap +order=2,1 +step " "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift " - "+grids=conus +step +proj=unitconvert +xy_in=rad +xy_out=deg " + "+grids=us_noaa_conus.tif +step +proj=unitconvert +xy_in=rad " + "+xy_out=deg " "+step +proj=axisswap +order=2,1"); } @@ -4587,7 +4591,7 @@ TEST(operation, geogCRS_to_geogCRS_context_NAD27_to_WGS84_G1762) { EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), "+proj=pipeline +step +proj=axisswap +order=2,1 " "+step +proj=unitconvert +xy_in=deg +xy_out=rad " - "+step +proj=hgridshift +grids=ntv2_0.gsb " + "+step +proj=hgridshift +grids=ca_nrc_ntv2_0.tif " "+step +proj=unitconvert +xy_in=rad +xy_out=deg " "+step +proj=axisswap +order=2,1"); EXPECT_EQ(list[1]->nameStr(), @@ -4676,7 +4680,7 @@ TEST(operation, vertCRS_to_geogCRS_context) { PROJStringFormatter::Convention::PROJ_5, authFactory->databaseContext()) .get()), - "+proj=vgridshift +grids=egm08_25.gtx +multiplier=1"); + "+proj=vgridshift +grids=us_nga_egm08_25.tif +multiplier=1"); } { auto ctxt = @@ -4689,7 +4693,7 @@ TEST(operation, vertCRS_to_geogCRS_context) { ASSERT_EQ(list.size(), 2U); EXPECT_EQ( list[0]->exportToPROJString(PROJStringFormatter::create().get()), - "+proj=vgridshift +grids=egm08_25.gtx +multiplier=1"); + "+proj=vgridshift +grids=us_nga_egm08_25.tif +multiplier=1"); } { auto ctxt = @@ -4702,7 +4706,8 @@ TEST(operation, vertCRS_to_geogCRS_context) { ASSERT_EQ(list.size(), 2U); EXPECT_EQ( list[0]->exportToPROJString(PROJStringFormatter::create().get()), - "+proj=pipeline +step +inv +proj=vgridshift +grids=egm08_25.gtx " + "+proj=pipeline +step +inv +proj=vgridshift " + "+grids=us_nga_egm08_25.tif " "+multiplier=1"); } { @@ -4728,7 +4733,7 @@ TEST(operation, vertCRS_to_geogCRS_context) { ASSERT_EQ(list.size(), 1U); EXPECT_EQ( list[0]->exportToPROJString(PROJStringFormatter::create().get()), - "+proj=vgridshift +grids=nzgeoid2016.gtx +multiplier=1"); + "+proj=vgridshift +grids=nz_linz_nzgeoid2016.tif +multiplier=1"); } } @@ -4827,7 +4832,7 @@ TEST(operation, geogCRS_to_geogCRS_context_concatenated_operation) { "+proj=pipeline +step +proj=axisswap +order=2,1 +step " "+proj=unitconvert +xy_in=grad +xy_out=rad +step +inv " "+proj=longlat +ellps=clrk80ign +pm=paris +step +proj=hgridshift " - "+grids=ntf_r93.gsb +step +proj=unitconvert +xy_in=rad " + "+grids=fr_ign_ntf_r93.tif +step +proj=unitconvert +xy_in=rad " "+xy_out=deg +step +proj=axisswap +order=2,1"); EXPECT_TRUE(nn_dynamic_pointer_cast<ConcatenatedOperation>(list[0]) != @@ -4875,7 +4880,7 @@ TEST(operation, geogCRS_to_geogCRS_context_same_grid_name) { EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), "+proj=pipeline +step +proj=axisswap +order=2,1 +step " "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift " - "+grids=BETA2007.gsb +step +proj=unitconvert +xy_in=rad " + "+grids=de_adv_BETA2007.tif +step +proj=unitconvert +xy_in=rad " "+xy_out=deg +step +proj=axisswap +order=2,1"); } @@ -4919,7 +4924,7 @@ TEST(operation, geogCRS_to_geogCRS_CH1903_to_CH1903plus_context) { EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), "+proj=pipeline +step +proj=axisswap +order=2,1 " "+step +proj=unitconvert +xy_in=deg +xy_out=rad " - "+step +proj=hgridshift +grids=CHENyx06a.gsb " + "+step +proj=hgridshift +grids=ch_swisstopo_CHENyx06a.tif " "+step +proj=unitconvert +xy_in=rad +xy_out=deg " "+step +proj=axisswap +order=2,1"); @@ -4973,7 +4978,7 @@ TEST(operation, geogCRS_to_geogCRS_init_IGNF_to_init_IGNF_context) { "NOUVELLE TRIANGULATION DE LA FRANCE (NTF) vers RGF93 (ETRS89)"); EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), "+proj=pipeline +step +proj=unitconvert +xy_in=deg +xy_out=rad " - "+step +proj=hgridshift +grids=ntf_r93.gsb +step " + "+step +proj=hgridshift +grids=fr_ign_ntf_r93.tif +step " "+proj=unitconvert +xy_in=rad +xy_out=deg"); } @@ -5541,11 +5546,12 @@ TEST(operation, "NTF (Paris) to NTF (1) + Inverse of WGS 84 to NTF (3) + UTM zone 31N"); ASSERT_EQ(list[0]->coordinateOperationAccuracies().size(), 1U); EXPECT_EQ(list[0]->coordinateOperationAccuracies()[0]->value(), "1"); - EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), - "+proj=pipeline +step +proj=axisswap +order=2,1 +step " - "+proj=unitconvert +xy_in=grad +xy_out=rad +step +inv " - "+proj=longlat +ellps=clrk80ign +pm=paris +step +proj=hgridshift " - "+grids=ntf_r93.gsb +step +proj=utm +zone=31 +ellps=WGS84"); + EXPECT_EQ( + list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=grad +xy_out=rad +step +inv " + "+proj=longlat +ellps=clrk80ign +pm=paris +step +proj=hgridshift " + "+grids=fr_ign_ntf_r93.tif +step +proj=utm +zone=31 +ellps=WGS84"); } // --------------------------------------------------------------------------- @@ -6497,7 +6503,7 @@ static BoundCRSNNPtr createBoundVerticalCRS() { auto transformation = Transformation::createGravityRelatedHeightToGeographic3D( PropertyMap(), vertCRS, GeographicCRS::EPSG_4979, nullptr, - "egm08_25.gtx", std::vector<PositionalAccuracyNNPtr>()); + "us_nga_egm08_25.tif", std::vector<PositionalAccuracyNNPtr>()); return BoundCRS::create(vertCRS, GeographicCRS::EPSG_4979, transformation); } @@ -6506,17 +6512,14 @@ static BoundCRSNNPtr createBoundVerticalCRS() { TEST(operation, transformation_height_to_PROJ_string) { auto transf = createBoundVerticalCRS()->transformation(); EXPECT_EQ(transf->exportToPROJString(PROJStringFormatter::create().get()), - "+proj=vgridshift +grids=egm08_25.gtx +multiplier=1"); + "+proj=vgridshift +grids=us_nga_egm08_25.tif +multiplier=1"); auto grids = transf->gridsNeeded(DatabaseContext::create(), false); ASSERT_EQ(grids.size(), 1U); auto gridDesc = *(grids.begin()); - EXPECT_EQ(gridDesc.shortName, "egm08_25.gtx"); - EXPECT_EQ(gridDesc.packageName, "proj-datumgrid-world"); - EXPECT_TRUE(gridDesc.url.find( - "https://download.osgeo.org/proj/proj-datumgrid-world-") == - 0) - << gridDesc.url; + EXPECT_EQ(gridDesc.shortName, "us_nga_egm08_25.tif"); + EXPECT_TRUE(gridDesc.packageName.empty()); + EXPECT_EQ(gridDesc.url, "https://cdn.proj.org/us_nga_egm08_25.tif"); if (gridDesc.available) { EXPECT_TRUE(!gridDesc.fullName.empty()) << gridDesc.fullName; EXPECT_TRUE(gridDesc.fullName.find(gridDesc.shortName) != @@ -6625,7 +6628,8 @@ TEST(operation, transformation_NZLVD_to_PROJ_string) { PROJStringFormatter::create( PROJStringFormatter::Convention::PROJ_5, dbContext) .get()), - "+proj=vgridshift +grids=auckht1946-nzvd2016.gtx +multiplier=1"); + "+proj=vgridshift +grids=nz_linz_auckht1946-nzvd2016.tif " + "+multiplier=1"); } // --------------------------------------------------------------------------- @@ -6757,11 +6761,12 @@ TEST(operation, compoundCRS_with_boundVerticalCRS_to_geogCRS) { auto op = CoordinateOperationFactory::create()->createOperation( compound, GeographicCRS::EPSG_4979); ASSERT_TRUE(op != nullptr); - EXPECT_EQ(op->exportToPROJString(PROJStringFormatter::create().get()), - "+proj=pipeline +step +proj=axisswap +order=2,1 +step " - "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=vgridshift " - "+grids=egm08_25.gtx +multiplier=1 +step +proj=unitconvert " - "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1"); + EXPECT_EQ( + op->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=vgridshift " + "+grids=us_nga_egm08_25.tif +multiplier=1 +step +proj=unitconvert " + "+xy_in=rad +xy_out=deg +step +proj=axisswap +order=2,1"); } // --------------------------------------------------------------------------- @@ -6816,7 +6821,7 @@ TEST(operation, compoundCRS_with_boundGeogCRS_and_boundVerticalCRS_to_geogCRS) { "+convention=position_vector " "+step +inv +proj=cart +ellps=WGS84 " "+step +proj=pop +v_3 " - "+step +proj=vgridshift +grids=egm08_25.gtx +multiplier=1 " + "+step +proj=vgridshift +grids=us_nga_egm08_25.tif +multiplier=1 " "+step +proj=unitconvert +xy_in=rad +xy_out=deg " "+step +proj=axisswap +order=2,1"); @@ -6856,7 +6861,7 @@ TEST(operation, compoundCRS_with_boundProjCRS_and_boundVerticalCRS_to_geogCRS) { "+convention=position_vector " "+step +inv +proj=cart +ellps=WGS84 " "+step +proj=pop +v_3 " - "+step +proj=vgridshift +grids=egm08_25.gtx +multiplier=1 " + "+step +proj=vgridshift +grids=us_nga_egm08_25.tif +multiplier=1 " "+step +proj=unitconvert +xy_in=rad +xy_out=deg " "+step +proj=axisswap +order=2,1"); @@ -7095,13 +7100,14 @@ TEST(operation, compoundCRS_to_compoundCRS_context) { EXPECT_EQ(list[0]->nameStr(), "NGVD29 height (ftUS) to NAVD88 height (3) + " "NAD27 to WGS 84 (79) + Inverse of " "NAD83(NSRS2007) to WGS 84 (1)"); - EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), - "+proj=pipeline +step +proj=axisswap +order=2,1 +step " - "+proj=unitconvert +xy_in=deg +z_in=us-ft +xy_out=rad +z_out=m " - "+step +proj=vgridshift +grids=vertcone.gtx +multiplier=0.001 " - "+step +proj=hgridshift +grids=conus +step " - "+proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap " - "+order=2,1"); + EXPECT_EQ( + list[0]->exportToPROJString(PROJStringFormatter::create().get()), + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +z_in=us-ft +xy_out=rad +z_out=m " + "+step +proj=vgridshift +grids=us_noaa_vertcone.tif +multiplier=1 " + "+step +proj=hgridshift +grids=us_noaa_conus.tif +step " + "+proj=unitconvert +xy_in=rad +xy_out=deg +step +proj=axisswap " + "+order=2,1"); { // Test that we can round-trip this through WKT and still get the same // PROJ string. @@ -7132,12 +7138,13 @@ TEST(operation, compoundCRS_to_compoundCRS_context) { "Transformation from NGVD29 height (ftUS) to NAVD88 " "height (ballpark vertical transformation) + NAD27 to " "WGS 84 (79) + Inverse of NAD83(NSRS2007) to WGS 84 (1)"); - EXPECT_EQ(projString, - "+proj=pipeline +step +proj=axisswap +order=2,1 +step " - "+proj=unitconvert +xy_in=deg +z_in=us-ft +xy_out=rad " - "+z_out=m +step +proj=hgridshift +grids=conus " - "+step +proj=unitconvert +xy_in=rad " - "+xy_out=deg +step +proj=axisswap +order=2,1"); + EXPECT_EQ( + projString, + "+proj=pipeline +step +proj=axisswap +order=2,1 +step " + "+proj=unitconvert +xy_in=deg +z_in=us-ft +xy_out=rad " + "+z_out=m +step +proj=hgridshift +grids=us_noaa_conus.tif " + "+step +proj=unitconvert +xy_in=rad " + "+xy_out=deg +step +proj=axisswap +order=2,1"); foundApprox = true; break; } @@ -7247,7 +7254,7 @@ TEST(operation, vertCRS_to_vertCRS_context) { ASSERT_EQ(list.size(), 3U); EXPECT_EQ(list[0]->nameStr(), "NGVD29 height (m) to NAVD88 height (3)"); EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), - "+proj=vgridshift +grids=vertcone.gtx +multiplier=0.001"); + "+proj=vgridshift +grids=us_noaa_vertcone.tif +multiplier=1"); } // --------------------------------------------------------------------------- @@ -7263,7 +7270,8 @@ TEST(operation, vertCRS_to_vertCRS_New_Zealand_context) { authFactory->createCoordinateReferenceSystem("5759"), ctxt); ASSERT_EQ(list.size(), 1U); EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()), - "+proj=vgridshift +grids=auckht1946-nzvd2016.gtx +multiplier=1"); + "+proj=vgridshift +grids=nz_linz_auckht1946-nzvd2016.tif " + "+multiplier=1"); } // --------------------------------------------------------------------------- @@ -7334,7 +7342,8 @@ TEST(operation, compoundCRS_to_geogCRS_3D_context) { .get()), "+proj=pipeline +step +proj=axisswap +order=2,1 +step " "+proj=unitconvert +xy_in=deg +xy_out=rad +step " - "+proj=hgridshift +grids=conus +step +proj=unitconvert " + "+proj=hgridshift +grids=us_noaa_conus.tif " + "+step +proj=unitconvert " "+xy_in=rad +z_in=us-ft +xy_out=deg +z_out=m +step " "+proj=axisswap +order=2,1"); } @@ -7365,7 +7374,7 @@ TEST(operation, compoundCRS_to_geogCRS_3D_context) { "+proj=pipeline " "+step +proj=axisswap +order=2,1 " "+step +proj=unitconvert +xy_in=deg +xy_out=rad " - "+step +proj=vgridshift +grids=geoid09_conus.gtx " + "+step +proj=vgridshift +grids=us_noaa_geoid09_conus.tif " "+multiplier=1 " "+step +proj=unitconvert +xy_in=rad +xy_out=deg " "+step +proj=axisswap +order=2,1"); @@ -7406,7 +7415,7 @@ TEST(operation, compoundCRS_to_geogCRS_3D_context) { "+proj=pipeline " "+step +proj=axisswap +order=2,1 " "+step +proj=unitconvert +xy_in=deg +xy_out=rad " - "+step +proj=vgridshift +grids=geoid09_conus.gtx " + "+step +proj=vgridshift +grids=us_noaa_geoid09_conus.tif " "+multiplier=1 " "+step +proj=unitconvert +xy_in=rad +xy_out=deg " "+step +proj=axisswap +order=2,1"); @@ -7446,7 +7455,7 @@ TEST(operation, compoundCRS_to_geogCRS_3D_context) { "+proj=pipeline " "+step +proj=axisswap +order=2,1 " "+step +proj=unitconvert +xy_in=deg +xy_out=rad " - "+step +proj=vgridshift +grids=g2018u0.gtx " + "+step +proj=vgridshift +grids=us_noaa_g2018u0.tif " "+multiplier=1 " "+step +proj=unitconvert +xy_in=rad +xy_out=deg " "+step +proj=axisswap +order=2,1"); @@ -7464,9 +7473,9 @@ TEST(operation, compoundCRS_to_geogCRS_3D_context) { "+proj=pipeline " "+step +proj=axisswap +order=2,1 " "+step +proj=unitconvert +xy_in=deg +xy_out=rad " - "+step +proj=vgridshift +grids=g2018u0.gtx " + "+step +proj=vgridshift +grids=us_noaa_g2018u0.tif " "+multiplier=1 " - "+step +proj=hgridshift +grids=FL " + "+step +proj=hgridshift +grids=us_noaa_FL.tif " "+step +proj=unitconvert +xy_in=rad +xy_out=deg " "+step +proj=axisswap +order=2,1"); } @@ -7550,7 +7559,8 @@ TEST(operation, compoundCRS_of_projCRS_to_geogCRS_2D_context) { "+lat_1=41.6666666666667 +lat_2=40 +x_0=2000000.0001016 " "+y_0=500000.0001016 +ellps=GRS80 " "+step +proj=unitconvert +z_in=us-ft +z_out=m " - "+step +proj=vgridshift +grids=geoid09_conus.gtx +multiplier=1 " + "+step +proj=vgridshift +grids=us_noaa_geoid09_conus.tif " + "+multiplier=1 " "+step +proj=unitconvert +xy_in=rad +xy_out=deg " "+step +proj=axisswap +order=2,1"); } @@ -8006,14 +8016,15 @@ TEST(operation, compoundCRS_of_vertCRS_with_geoid_model_to_geogCRS) { "Ballpark geographic offset from NAD83(2011) to NAD83"); auto op_proj = list[0]->exportToPROJString(PROJStringFormatter::create().get()); - EXPECT_EQ(op_proj, - "+proj=pipeline " - "+step +inv +proj=lcc +lat_0=39.3333333333333 +lon_0=-77.75 " - "+lat_1=40.9666666666667 +lat_2=39.9333333333333 +x_0=600000 " - "+y_0=0 +ellps=GRS80 " - "+step +proj=vgridshift +grids=g2012bu0.gtx +multiplier=1 " - "+step +proj=unitconvert +xy_in=rad +xy_out=deg " - "+step +proj=axisswap +order=2,1"); + EXPECT_EQ( + op_proj, + "+proj=pipeline " + "+step +inv +proj=lcc +lat_0=39.3333333333333 +lon_0=-77.75 " + "+lat_1=40.9666666666667 +lat_2=39.9333333333333 +x_0=600000 " + "+y_0=0 +ellps=GRS80 " + "+step +proj=vgridshift +grids=us_noaa_g2012bu0.tif +multiplier=1 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg " + "+step +proj=axisswap +order=2,1"); } // --------------------------------------------------------------------------- @@ -8069,8 +8080,8 @@ TEST(operation, compoundCRS_from_WKT2_no_id_to_geogCRS_3D_context) { "+proj=pipeline +step +inv +proj=sterea +lat_0=52.1561605555556 " "+lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 " "+ellps=bessel " - "+step +proj=hgridshift +grids=rdtrans2018.gsb " - "+step +proj=vgridshift +grids=nlgeo2018.gtx +multiplier=1 " + "+step +proj=hgridshift +grids=nl_nsgi_rdtrans2018.tif " + "+step +proj=vgridshift +grids=nl_nsgi_nlgeo2018.tif +multiplier=1 " "+step +proj=unitconvert +xy_in=rad +xy_out=deg " "+step +proj=axisswap +order=2,1"); } @@ -8194,7 +8205,7 @@ TEST(operation, IGNF_LAMB1_TO_EPSG_4326) { "+proj=pipeline +step +inv +proj=lcc +lat_1=49.5 +lat_0=49.5 " "+lon_0=0 +k_0=0.99987734 +x_0=600000 +y_0=200000 " "+ellps=clrk80ign +pm=paris +step +proj=hgridshift " - "+grids=ntf_r93.gsb +step +proj=unitconvert +xy_in=rad " + "+grids=fr_ign_ntf_r93.tif +step +proj=unitconvert +xy_in=rad " "+xy_out=deg +step +proj=axisswap +order=2,1"); EXPECT_FALSE(list[1]->hasBallparkTransformation()); @@ -9616,15 +9627,16 @@ TEST(operation, normalizeForVisualization) { auto op = list[1]; auto opNormalized = op->normalizeForVisualization(); EXPECT_FALSE(opNormalized->_isEquivalentTo(op.get())); - EXPECT_EQ(opNormalized->exportToPROJString( - PROJStringFormatter::create( - PROJStringFormatter::Convention::PROJ_5, - authFactory->databaseContext()) - .get()), - "+proj=pipeline " - "+step +proj=unitconvert +xy_in=deg +xy_out=rad " - "+step +proj=vgridshift +grids=egm08_25.gtx +multiplier=1 " - "+step +proj=unitconvert +xy_in=rad +xy_out=deg"); + EXPECT_EQ( + opNormalized->exportToPROJString( + PROJStringFormatter::create( + PROJStringFormatter::Convention::PROJ_5, + authFactory->databaseContext()) + .get()), + "+proj=pipeline " + "+step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=vgridshift +grids=us_nga_egm08_25.tif +multiplier=1 " + "+step +proj=unitconvert +xy_in=rad +xy_out=deg"); } // Source(boundCRS) and target(geographic) must be inverted |
