diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2019-10-27 20:59:29 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-10-27 20:59:29 +0100 |
| commit | e2d5b13f3442a8e88093a9d68e1be550194a4d77 (patch) | |
| tree | 31789cfd11ea72eb9e5fc07eb2b2ac0839cfd5fd | |
| parent | e7dff6e3a9895af20b3d02337299d5f05c2ea4bc (diff) | |
| parent | 46c6ddf84defeb4ae855285da4416dff7178cacc (diff) | |
| download | PROJ-e2d5b13f3442a8e88093a9d68e1be550194a4d77.tar.gz PROJ-e2d5b13f3442a8e88093a9d68e1be550194a4d77.zip | |
Merge pull request #1696 from rouault/modify_concatenated_operation_structure
Database: add an auxiliary concatenated_operation_step table to allow arbitrary number of steps (fixes #1632)
| -rw-r--r-- | data/Makefile.am | 1 | ||||
| -rw-r--r-- | data/sql/concatenated_operation.sql | 419 | ||||
| -rw-r--r-- | data/sql/concatenated_operation_step.sql | 427 | ||||
| -rw-r--r-- | data/sql/grid_transformation.sql | 13 | ||||
| -rw-r--r-- | data/sql/ignf.sql | 64 | ||||
| -rw-r--r-- | data/sql/proj_db_table_defs.sql | 50 | ||||
| -rw-r--r-- | data/sql_filelist.cmake | 1 | ||||
| -rw-r--r-- | include/proj/coordinateoperation.hpp | 4 | ||||
| -rwxr-xr-x | scripts/build_db.py | 69 | ||||
| -rwxr-xr-x | scripts/build_db_create_ignf_from_xml.py | 10 | ||||
| -rw-r--r-- | src/iso19111/coordinateoperation.cpp | 183 | ||||
| -rw-r--r-- | src/iso19111/factory.cpp | 35 | ||||
| -rw-r--r-- | test/cli/testprojinfo_out.dist | 112 | ||||
| -rw-r--r-- | test/unit/test_c_api.cpp | 2 | ||||
| -rw-r--r-- | test/unit/test_factory.cpp | 43 | ||||
| -rw-r--r-- | test/unit/test_operation.cpp | 2 |
16 files changed, 1034 insertions, 401 deletions
diff --git a/data/Makefile.am b/data/Makefile.am index d686270d..e7c38d7c 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -27,6 +27,7 @@ SQL_ORDERED_LIST = sql/begin.sql \ sql/grid_transformation_custom.sql \ sql/other_transformation.sql \ sql/concatenated_operation.sql \ + sql/concatenated_operation_step.sql \ sql/alias_name.sql \ sql/supersession.sql \ sql/deprecation.sql \ diff --git a/data/sql/concatenated_operation.sql b/data/sql/concatenated_operation.sql index 029a60ef..9594bcbc 100644 --- a/data/sql/concatenated_operation.sql +++ b/data/sql/concatenated_operation.sql @@ -1,211 +1,212 @@ --- This file has been generated by scripts/build_db.py. DO NOT EDIT ! -INSERT INTO "concatenated_operation" VALUES('EPSG','3896','MGI (Ferro) to WGS 84 (2)','','2m accuracy','EPSG','4805','EPSG','4326','EPSG','1037',NULL,'EPSG','3895','EPSG','1618',NULL,NULL,'BEV-Aut',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','3966','MGI (Ferro) to WGS 84 (1)','Accuracy estimate is not available.','For military purposes only.','EPSG','4805','EPSG','4326','EPSG','2370',NULL,'EPSG','3913','EPSG','3962',NULL,NULL,'DMA-balk',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','4435','Puerto Rico to NAD83(HARN) (1)','May be taken as approximate transformation Puerto Rico to WGS 84 - see code 8583.','Accuracy 0.1m at 67% confidence level.','EPSG','4139','EPSG','4152','EPSG','3634',NULL,'EPSG','1461','EPSG','1495',NULL,NULL,'NGS-PRVI',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','4837','Amersfoort to ED50 (1)','Adopted by NAM in 2006, replacing polynomial tfms 1046, 6304, 1050 and 6306.','Oil and gas exploration and production.','EPSG','4289','EPSG','4230','EPSG','1275',NULL,'EPSG','1672','EPSG','1311',NULL,NULL,'NAM-Nld 2006',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','5190','Tokyo 1892 to Korea 2000 (1)','','Accuracy 10m.','EPSG','5132','EPSG','4737','EPSG','3266',NULL,'EPSG','5134','EPSG','5189',NULL,NULL,'OGP-Kor',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','5192','Tokyo 1892 to WGS 84 (1)','','Accuracy 10m.','EPSG','5132','EPSG','4326','EPSG','3266',NULL,'EPSG','5134','EPSG','5191',NULL,NULL,'OGP-Kor',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','5230','S-JTSK (Ferro) to WGS 84 (2)','','For applications to an accuracy of 1 metre.','EPSG','4818','EPSG','4326','EPSG','1211',NULL,'EPSG','1884','EPSG','4836',NULL,NULL,'OGP-Svk',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','5240','S-JTSK/05 (Ferro) to WGS 84 (1)','Replaces S-JTSK (Ferro) to WGS 84 (1) (CRS code 8642) in Czech Republic.','For applications to an accuracy of 1 metre.','EPSG','5229','EPSG','4326','EPSG','1079',NULL,'EPSG','5238','EPSG','5227',NULL,NULL,'OGP-Cze',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','5242','S-JTSK (Ferro) to WGS 84 (3)','Replaces S-JTSK (Ferro) to WGS 84 (1) (tfm code 8642).','Parameter values from S-JTSK/05 to ETRS89 (1) (code 5226). For applications to an accuracy of 1m.','EPSG','4818','EPSG','4326','EPSG','1079',NULL,'EPSG','1884','EPSG','5239',NULL,NULL,'OGP-Cze R05',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','5838','Lisbon (Lisbon) to WGS 84 (2)','','For applications to an accuracy of 2 metres.','EPSG','4803','EPSG','4326','EPSG','1294',NULL,'EPSG','1756','EPSG','1988',NULL,NULL,'OGP-Prt 2009',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','6714','Tokyo to JGD2011 (1)','See Tokyo to JGD2011 (2) (code 6740) for areas other than northern Honshu.','Surveying, mapping and civil engineering.','EPSG','4301','EPSG','6668','EPSG','4170',NULL,'EPSG','6712','EPSG','6713',NULL,NULL,'OGP-Jpn N Honshu',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','6739','NAD27 to NAD83(HARN) (22)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8622.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1410',NULL,'EPSG','1241','EPSG','1496',NULL,NULL,'NGS-Usa SD',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','6874','Tananarive (Paris) to WGS 84 (2)','Used by OMV.','For applications with an accuracy of 3m.','EPSG','4810','EPSG','4326','EPSG','3273',NULL,'EPSG','1265','EPSG','6873',NULL,NULL,'OGP-Mdg',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','7811','NTF (Paris) to RGF93 (2)','Second step is an emulation using NTv2 method of geocentric Interpolation method described in tfm code 7810. Note that the grid file parameters are of opposite sign.','Approximation to better than 1m of transformation of coordinates referenced to NTF (Paris) to RGF93.','EPSG','4807','EPSG','4171','EPSG','3694',NULL,'EPSG','1763','EPSG','15958',NULL,NULL,'IOGP-Fra NTv2',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','7965','Poolbeg height (ft(Br36)) to Malin Head height (1)','','Change of height to a different vertical reference surface for topographic mapping. Accuracy 0.1m.','EPSG','5754','EPSG','5731','EPSG','1305',NULL,'EPSG','7963','EPSG','7964',NULL,NULL,'1',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','7967','Poolbeg height (ft(Br36)) to Belfast height (1)','','Change of height to a different vertical reference surface for topographic mapping and engineering survey. Accuracy 0.1m.','EPSG','5754','EPSG','5732','EPSG','1305',NULL,'EPSG','7963','EPSG','7966',NULL,NULL,'1',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','7973','NGVD29 height (ftUS) to NAVD88 height (1)','','Change of height to a different vertical reference surface and unit. Accuracy 2cm.','EPSG','5702','EPSG','5703','EPSG','2950',NULL,'EPSG','7972','EPSG','7969',NULL,NULL,'IOGP - US Conus W',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','7974','NGVD29 height (ftUS) to NAVD88 height (2)','','Change of height to a different vertical reference surface and unit, accuracy 2cm.','EPSG','5702','EPSG','5703','EPSG','2949',NULL,'EPSG','7972','EPSG','7970',NULL,NULL,'IOGP - US Conus C',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','7975','NGVD29 height (ftUS) to NAVD88 height (3)','','Change of height to a different vertical reference surface and unit, accuracy 2cm.','EPSG','5702','EPSG','5703','EPSG','2948',NULL,'EPSG','7972','EPSG','7971',NULL,NULL,'IOGP - US Conus E',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','7983','HKPD height to HKCD depth (1)','','Hydrographic charting.','EPSG','5738','EPSG','5739','EPSG','3335',NULL,'EPSG','7982','EPSG','7977',NULL,NULL,'IOGP-HK',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','7986','KOC CD height to KOC WD depth (1)','','Vertical offset including change of axis positive direction.','EPSG','5790','EPSG','5789','EPSG','3267',NULL,'EPSG','7980','EPSG','7984',NULL,NULL,'IOGP-Kwt',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','7987','KOC CD height to KOC WD depth (ft) (1)','','Vertical offset including change of axis positive direction and change of axis unit.','EPSG','5790','EPSG','5614','EPSG','3267',NULL,'EPSG','7980','EPSG','7984','EPSG','7985','IOGP-Kwt',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8047','ED50 to WGS 84 (15)','Replaced by codes 8569 and 1612 in 1997 and 2001.¶The concatenation of transformations 1147 and 1146 gives the following position vector tfm: dX=-84.491 dY=-100.559 dZ=-114.209 metres rX= -2.4006 rY=-0.5367 rZ=-2.3742 microradians dS=+0.2947 ppm.','Oil exploration before 2001.','EPSG','4230','EPSG','4326','EPSG','2332',NULL,'EPSG','1147','EPSG','1146',NULL,NULL,'NMA-Nor N65 1991',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8094','NTF (Paris) to WGS 84 (1)','','Not known.','EPSG','4807','EPSG','4326','EPSG','3694',NULL,'EPSG','1763','EPSG','1193',NULL,NULL,'EPSG-Fra',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8174','Bogota 1975 (Bogota) to WGS 84 (1)','','For military purposes. Accuracy 6m, 5m and 6m in X, Y and Z axes.','EPSG','4802','EPSG','4326','EPSG','3229',NULL,'EPSG','1755','EPSG','1125',NULL,NULL,'DMA-Col',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8175','Monte Mario (Rome) to WGS 84 (1)','','For military purposes. Accuracy 25m in each axis.','EPSG','4806','EPSG','4326','EPSG','2339',NULL,'EPSG','1262','EPSG','1169',NULL,NULL,'EPSG-Ita',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8176','Tananarive (Paris) to WGS 84 (1)','','For military purposes. Accuracy not available.','EPSG','4810','EPSG','4326','EPSG','3273',NULL,'EPSG','1265','EPSG','1227',NULL,NULL,'EPSG-Mdg',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8178','Batavia (Jakarta) to WGS 84 (1)','','For military purposes. Accuracy 3m in each axis.','EPSG','4813','EPSG','4326','EPSG','1355',NULL,'EPSG','1759','EPSG','1123',NULL,NULL,'EPSG-Idn Sumatra',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8183','HD72 to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4237','EPSG','4326','EPSG','1119',NULL,'EPSG','1273','EPSG','1149',NULL,NULL,'EPSG-Hun',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8186','NTF (Paris) to ED50 (1)','','Not known.','EPSG','4807','EPSG','4230','EPSG','3694',NULL,'EPSG','1763','EPSG','1276',NULL,NULL,'EPSG-Fra',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8188','NTF (Paris) to WGS 72 (1)','','Not known.','EPSG','4807','EPSG','4322','EPSG','3694',NULL,'EPSG','1763','EPSG','1277',NULL,NULL,'EPSG-Fra',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8190','AGD66 to WGS 84 (2)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. 0.1m accuracy.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2575',NULL,'EPSG','1278','EPSG','1150',NULL,NULL,'EPSG-Aus 5m',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8192','AGD84 to WGS 84 (3)','Approximation assuming that GDA94 is equivalent to WGS 84.','5m accuracy. Approximation assuming that GDA94 is equivalent to WGS 84.','EPSG','4203','EPSG','4326','EPSG','2575',NULL,'EPSG','1279','EPSG','1150',NULL,NULL,'EPSG-Aus 5m',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8194','AGD84 to WGS 84 (4)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4203','EPSG','4326','EPSG','2575',NULL,'EPSG','1280','EPSG','1150',NULL,NULL,'EPSG-Aus 1m',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8195','RT90 to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4124','EPSG','4326','EPSG','1225',NULL,'EPSG','1437','EPSG','1149',NULL,NULL,'EPSG-Swe',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8199','Pulkovo 1942 to WGS 84 (2)','Approximation at the +/- 1m level assuming that LKS94(ETRS89) is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that LKS94(ETRS89) is equivalent to WGS 84.','EPSG','4284','EPSG','4326','EPSG','1145',NULL,'EPSG','1274','EPSG','1283',NULL,NULL,'EPSG-Ltu',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8211','Voirol 1875 (Paris) to WGS 84 (1)','','Oil exploration.','EPSG','4811','EPSG','4326','EPSG','1365',NULL,'EPSG','1266','EPSG','1294',NULL,NULL,'EPSG-Dza N',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8215','Tete to WGS 84 (1)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326','EPSG','1167',NULL,'EPSG','1297','EPSG','1302',NULL,NULL,'EPSG-Moz',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8217','Tete to WGS 84 (2)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326','EPSG','2350',NULL,'EPSG','1298','EPSG','1302',NULL,NULL,'EPSG-Moz A',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8219','Tete to WGS 84 (3)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326','EPSG','2351',NULL,'EPSG','1299','EPSG','1302',NULL,NULL,'EPSG-Moz B',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8221','Tete to WGS 84 (4)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326','EPSG','2352',NULL,'EPSG','1300','EPSG','1302',NULL,NULL,'EPSG-Moz C',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8223','Tete to WGS 84 (5)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326','EPSG','2353',NULL,'EPSG','1301','EPSG','1302',NULL,NULL,'EPSG-Moz D',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8234','DHDN to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4314','EPSG','4326','EPSG','2326',NULL,'EPSG','1309','EPSG','1149',NULL,NULL,'EPSG-Deu W',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8236','Pulkovo 1942 to WGS 84 (11)','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','EPSG','4284','EPSG','4326','EPSG','1343',NULL,'EPSG','1310','EPSG','1149',NULL,NULL,'EPSG-Deu E',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8243','NAD27 to WGS 84 (25)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84. Superseded by NAD27 to WGS 84 (27) (code 8404) in Quebec and NAD27 to WGS 84 (26) (code 8245) elsewhere in Canada.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4267','EPSG','4326','EPSG','1061',NULL,'EPSG','1312','EPSG','1188',NULL,NULL,'EPSG-Can old',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8245','NAD27 to WGS 84 (26)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4267','EPSG','4326','EPSG','1061',NULL,'EPSG','1313','EPSG','1188',NULL,NULL,'EPSG-Can',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8263','MGI (Ferro) to WGS 84 (1)','Accuracy estimate is not available.','For military purposes only.','EPSG','4805','EPSG','4326','EPSG','2370',NULL,'EPSG','1757','EPSG','1306',NULL,NULL,'DMA-balk',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8363','ETRS89 + Baltic 1957 height to ETRS89 + EVRF2007 height (1)','Compound transformation using two separate quasigeoid models (DVRM05 and DMQSK2014E).','Recommended method for transforming coordinates between Baltic 1957 height and EVRF2007 height and vice-versa in Slovakia.','EPSG','8360','EPSG','7423','EPSG','1211',NULL,'EPSG','8361','EPSG','8362',NULL,NULL,'UGKK-Svk',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8386','Old Hawaiian to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4135','EPSG','4326','EPSG','1334',NULL,'EPSG','1454','EPSG','1188',NULL,NULL,'EPSG-Usa Hi',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8388','St. Lawrence Island to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4136','EPSG','4326','EPSG','1332',NULL,'EPSG','1455','EPSG','1188',NULL,NULL,'EPSG-Usa AK StL',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8390','St. Paul Island to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4137','EPSG','4326','EPSG','1333',NULL,'EPSG','1456','EPSG','1188',NULL,NULL,'EPSG-Usa AK StP',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8392','St. George Island to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4138','EPSG','4326','EPSG','1331',NULL,'EPSG','1457','EPSG','1188',NULL,NULL,'EPSG-Usa AK StG',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8394','NAD27(CGQ77) to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84. Superseded by NAD27(CGQ77) to WGS 84 (2) (code 8564).','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4609','EPSG','4326','EPSG','1368',NULL,'EPSG','1451','EPSG','1188',NULL,NULL,'EPSG-Can Qc NT1',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8396','AGD66 to WGS 84 (3)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Superseded by AGD66 to WGS 84 (11) (code 8581).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2283',NULL,'EPSG','1458','EPSG','1150',NULL,NULL,'EPSG-Aus ACT 1m',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8398','AGD66 to WGS 84 (4)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Superseded by AGD66 to WGS 84 (9) (code 8576).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','1282',NULL,'EPSG','1459','EPSG','1150',NULL,NULL,'EPSG-Aus Tas 1m',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8400','AGD66 to WGS 84 (5)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2286',NULL,'EPSG','1460','EPSG','1150',NULL,NULL,'EPSG-Aus NSW Vic 1m',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8402','Puerto Rico to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4139','EPSG','4326','EPSG','1335',NULL,'EPSG','1461','EPSG','1188',NULL,NULL,'EPSG-PRVI',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8404','NAD27 to WGS 84 (27)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84. Superseded by NAD27 to WGS 84 (31) (code 8565).','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4267','EPSG','4326','EPSG','1368',NULL,'EPSG','1462','EPSG','1188',NULL,NULL,'EPSG-Can QC',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8406','NAD27(76) to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4608','EPSG','4326','EPSG','1367',NULL,'EPSG','1463','EPSG','1188',NULL,NULL,'EPSG-Can On',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8408','AGD66 to WGS 84 (6)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Superseded by AGD66 to WGS 84 (11) (code 8578).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2285',NULL,'EPSG','1464','EPSG','1150',NULL,NULL,'EPSG-Aus Vic 0.1m',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8418','ATS77 to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4122','EPSG','4326','EPSG','1447',NULL,'EPSG','1472','EPSG','1473',NULL,NULL,'EPSG-Can NB',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8419','ATS77 to WGS 84 (2)','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4122','EPSG','4326','EPSG','1533',NULL,'EPSG','1599','EPSG','1473',NULL,NULL,'EPSG-Can PEI',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8420','NAD27 to WGS 84 (32)','','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4267','EPSG','4326','EPSG','2375',NULL,'EPSG','1600','EPSG','1473',NULL,NULL,'SK PMC-Can SK',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8421','NAD83 to WGS 84 (7)','','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4269','EPSG','4326','EPSG','2375',NULL,'EPSG','1601','EPSG','1473',NULL,NULL,'SK PMC-Can SK',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8422','NAD83 to WGS 84 (8)','The gridded difference file AB_CSRS.DAC in STEP 1 will need to be renamed to AB_CSRS.gsb to run in some software suites. Formats identical, but AB file is provincial fit only.','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4269','EPSG','4326','EPSG','2376',NULL,'EPSG','1602','EPSG','1473',NULL,NULL,'Alb Env-Can AB',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8442','ETRS89 to S-JTSK (5)','Recommended method of a transformation from ETRS89 to S-JTSK in Slovakia. For reverse transformation see S-JTSK to ETRS89 (6) (code 8443). Both together replace S-JTSK to ETRS89 (4) (code 4827).','GIS, geodetic survey.','EPSG','4258','EPSG','4156','EPSG','1211',NULL,'EPSG','8365','EPSG','8364',NULL,NULL,'UGKK-Sk JTSK03',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8443','S-JTSK to ETRS89 (6)','Recommended method of a transformation from S-JTSK to ETRS89 in Slovakia. For reverse transformation see ETRS89 to S-JTSK (5) (code 8442). Both together replace S-JTSK to ETRS89 (4) (code 4827).','GIS, geodetic survey.','EPSG','4156','EPSG','4258','EPSG','1211',NULL,'EPSG','8364','EPSG','8367',NULL,NULL,'UGKK-Sk JTSK03',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8453','AGD66 to WGS 84 (7)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','1282',NULL,'EPSG','1506','EPSG','1150',NULL,NULL,'EPSG-Aus Tas 0.1m',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8454','AGD66 to WGS 84 (8)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2284',NULL,'EPSG','1507','EPSG','1150',NULL,NULL,'EPSG-Aus NT 0.1m',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8457','CH1903+ to WGS 84 (1)','Approximation at the +/- 1m level assuming that CHTRF95 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that CHTRF95 is equivalent to WGS 84.','EPSG','4150','EPSG','4326','EPSG','1286',NULL,'EPSG','1509','EPSG','1511',NULL,NULL,'EPSG-CH',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8460','NAD27 to NAD83(HARN) (1)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8590.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1372',NULL,'EPSG','1241','EPSG','1474',NULL,NULL,'NGS-Usa AL',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8461','NAD27 to NAD83(HARN) (2)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8591.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1373',NULL,'EPSG','1241','EPSG','1475',NULL,NULL,'NGS-Usa AZ',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8462','NAD27 to NAD83(HARN) (3)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8593.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','2297',NULL,'EPSG','1241','EPSG','1476',NULL,NULL,'NGS-Usa CA n',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8463','NAD27 to NAD83(HARN) (4)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8594.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','2298',NULL,'EPSG','1241','EPSG','1477',NULL,NULL,'NGS-Usa CA s',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8464','NAD27 to NAD83(HARN) (5)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8595.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1376',NULL,'EPSG','1241','EPSG','1478',NULL,NULL,'NGS-Usa CO',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8465','NAD27 to NAD83(HARN) (6)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8597.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1380',NULL,'EPSG','1241','EPSG','1479',NULL,NULL,'NGS-Usa GA',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8466','NAD27 to NAD83(HARN) (7)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8596.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1379',NULL,'EPSG','1241','EPSG','1480',NULL,NULL,'NGS-Usa FL',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8467','NAD27 to NAD83(HARN) (8)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8611.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','2382',NULL,'EPSG','1241','EPSG','1481',NULL,NULL,'NGS-Usa ID MT e',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8468','NAD27 to NAD83(HARN) (9)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8612.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','2383',NULL,'EPSG','1241','EPSG','1482',NULL,NULL,'NGS-Usa ID MT w',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8469','NAD27 to NAD83(HARN) (10)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8602.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1386',NULL,'EPSG','1241','EPSG','1483',NULL,NULL,'NGS-Usa KY',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8470','NAD27 to NAD83(HARN) (11)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8603.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1387',NULL,'EPSG','1241','EPSG','1484',NULL,NULL,'NGS-Usa LA',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8471','NAD27 to NAD83(HARN) (12)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8605.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','2377',NULL,'EPSG','1241','EPSG','1485',NULL,NULL,'NGS-Usa DE MD',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8472','NAD27 to NAD83(HARN) (13)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8604.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1388',NULL,'EPSG','1241','EPSG','1486',NULL,NULL,'NGS-Usa ME',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8473','NAD27 to NAD83(HARN) (14)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8607.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1391',NULL,'EPSG','1241','EPSG','1487',NULL,NULL,'NGS-Usa MI',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8474','NAD27 to NAD83(HARN) (15)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8609.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1393',NULL,'EPSG','1241','EPSG','1488',NULL,NULL,'NGS-Usa MS',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8475','NAD27 to NAD83(HARN) (16)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8613.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1396',NULL,'EPSG','1241','EPSG','1489',NULL,NULL,'NGS-Usa NE',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8476','NAD27 to NAD83(HARN) (17)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8606.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','2378',NULL,'EPSG','1241','EPSG','1490',NULL,NULL,'NGS-Usa NewEng',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8477','NAD27 to NAD83(HARN) (18)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8616.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1400',NULL,'EPSG','1241','EPSG','1491',NULL,NULL,'NGS-Usa NM',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8478','NAD27 to NAD83(HARN) (19)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8617.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1401',NULL,'EPSG','1241','EPSG','1492',NULL,NULL,'NGS-Usa NY',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8479','NAD27 to NAD83(HARN) (20)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8618.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1403',NULL,'EPSG','1241','EPSG','1493',NULL,NULL,'NGS-Usa ND',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8480','NAD27 to NAD83(HARN) (21)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8620.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1405',NULL,'EPSG','1241','EPSG','1494',NULL,NULL,'NGS-Usa OK',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8481','Puerto Rico to NAD83(HARN) (1)','May be taken as approximate transformation Puerto Rico to WGS 84 - see code 8583.','Accuracy 0.1m at 67% confidence level.','EPSG','4139','EPSG','4152','EPSG','1335',NULL,'EPSG','1241','EPSG','1495',NULL,NULL,'NGS-PRVI',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8482','NAD27 to NAD83(HARN) (22)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8622.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1410',NULL,'EPSG','1747','EPSG','1496',NULL,NULL,'NGS-Usa SD',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8483','NAD27 to NAD83(HARN) (23)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8623.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1411',NULL,'EPSG','1241','EPSG','1497',NULL,NULL,'NGS-Usa TN',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8484','NAD27 to NAD83(HARN) (24)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8624.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','2379',NULL,'EPSG','1241','EPSG','1498',NULL,NULL,'NGS-Usa TX e',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8485','NAD27 to NAD83(HARN) (25)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8625.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','2380',NULL,'EPSG','1241','EPSG','1499',NULL,NULL,'NGS-Usa TX w',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8486','NAD27 to NAD83(HARN) (26)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8627.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1415',NULL,'EPSG','1241','EPSG','1500',NULL,NULL,'NGS-Usa VA',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8487','NAD27 to NAD83(HARN) (27)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8621.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','2381',NULL,'EPSG','1241','EPSG','1501',NULL,NULL,'NGS-Usa OR WA',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8488','NAD27 to NAD83(HARN) (28)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8629.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1418',NULL,'EPSG','1241','EPSG','1502',NULL,NULL,'NGS-Usa WI',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8489','NAD27 to NAD83(HARN) (29)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8630.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1419',NULL,'EPSG','1241','EPSG','1503',NULL,NULL,'NGS-Usa WY',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8496','NAD27 to WGS 84 (28)','','Geodetic survey.','EPSG','4267','EPSG','4326','EPSG','2374',NULL,'EPSG','1241','EPSG','1515',NULL,NULL,'NGS-Usa conus',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8497','NAD27 to WGS 84 (29)','','Geodetic survey.','EPSG','4267','EPSG','4326','EPSG','2373',NULL,'EPSG','1243','EPSG','1515',NULL,NULL,'NGS-Usa AK',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8508','Old Hawaiian to NAD83(HARN) (1)','Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs Old Hawaiian (code 4135), NAD83 (code 4269) and NAD83(HARN) have longitudes positive east. May be taken as approximate transformation Old Hawaiin to WGS 84 - see code 8582.','Assumes NAD83 is coincident with NAD83(HARN). Accuracy about 1m.','EPSG','4135','EPSG','4152','EPSG','1334',NULL,'EPSG','1454','EPSG','1520',NULL,NULL,'NGS-Usa HI',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8509','NAD27 to NAD83(HARN) (30)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8599.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1383',NULL,'EPSG','1241','EPSG','1521',NULL,NULL,'NGS-Usa IN',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8510','NAD27 to NAD83(HARN) (31)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8601.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1385',NULL,'EPSG','1241','EPSG','1522',NULL,NULL,'NGS-Usa KS',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8511','NAD27 to NAD83(HARN) (32)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8614.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1397',NULL,'EPSG','1241','EPSG','1523',NULL,NULL,'NGS-Usa NV',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8512','NAD27 to NAD83(HARN) (33)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8619.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1404',NULL,'EPSG','1241','EPSG','1524',NULL,NULL,'NGS-Usa OH',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8513','NAD27 to NAD83(HARN) (34)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8626.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1413',NULL,'EPSG','1241','EPSG','1525',NULL,NULL,'NGS-Usa UT',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8514','NAD27 to NAD83(HARN) (35)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8628.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1417',NULL,'EPSG','1241','EPSG','1526',NULL,NULL,'NGS-Usa WV',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8517','Chos Malal 1914 to WGS 84 (1)','May be implemented using a single step geocentric translations of dx=+5.5m dY=+176.7m dZ=+141.4m.','Oil exploration','EPSG','4160','EPSG','4326','EPSG','2325',NULL,'EPSG','1528','EPSG','1527',NULL,NULL,'TOT-Arg Neu',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8530','South Yemen to WGS 84 (1)','May be implemented as a single transformation using geocentric translations transformation method with parameter values dX=-76m dY=-138m dZ=+67m.','Approximation at the +/- 1m level assuming that NGN96 is equivalent to WGS 84.','EPSG','4164','EPSG','4326','EPSG','1340',NULL,'EPSG','1539','EPSG','1540',NULL,NULL,'IGN-Yem South',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8532','Indian 1960 to WGS 84 (1)','May be implemented as a single transformation using position vector 7-parameter geocentric transformation method with parameter values dX=+199m dY=+931m dZ=+318.9m rX=rY=0 sec rZ=+0.814 sec dS=-0.38 ppm.','Oil exploration.','EPSG','4131','EPSG','4326','EPSG','1495',NULL,'EPSG','1541','EPSG','1240',NULL,NULL,'PV-Vnm',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8537','Egypt 1907 to WGS 84 (2)','Used by Shell. May be implemented as a single transformation using position vector 7-parameter geocentric transformation method with parameter values dX=-121.8m dY=+98.1m dZ=-10.7m rX=rY=0 sec rZ=+0.554 sec dS=+0.2263 ppm.','Oil exploration.','EPSG','4229','EPSG','4326','EPSG','1086',NULL,'EPSG','1545','EPSG','1237',NULL,NULL,'MCE-Egy',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8553','NAD27 to NAD83(HARN) (36)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8598.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1382',NULL,'EPSG','1241','EPSG','1553',NULL,NULL,'NGS-Usa IL',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8554','NAD27 to NAD83(HARN) (37)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8615.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1399',NULL,'EPSG','1241','EPSG','1554',NULL,NULL,'NGS-Usa NJ',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8560','AGD84 to WGS 84 (5)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Superseded by AGD84 to WGS 84 (6) (code 8579).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4203','EPSG','4326','EPSG','1280',NULL,'EPSG','1559','EPSG','1150',NULL,NULL,'EPSG-Aus WA',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8562','Nord Sahara 1959 to WGS 84 (3)','Derived at IGN monument CFP19 using Transit. Can be implemented as a single 7-param Position Vector transformation with parameter values of dX=-156.5m dY=-87.2m dZ=+287.8m; rX=rY=0 rZ=+0.814sec; dS=-0.38ppm.','Oil exploration.','EPSG','4307','EPSG','4326','EPSG','2393',NULL,'EPSG','1560','EPSG','1240',NULL,NULL,'CGG-Alg HM',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8563','NZGD49 to WGS 84 (3)','Assumes WGS 84 is coincident with NZGD2000. Accuracy about 1m.','Assumes WGS 84 is coincident with NZGD2000. Accuracy about 1m.','EPSG','4272','EPSG','4326','EPSG','1175',NULL,'EPSG','1568','EPSG','1565',NULL,NULL,'OSG-Nzl 1m',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8564','NAD27(CGQ77) to WGS 84 (2)','','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4609','EPSG','4326','EPSG','1368',NULL,'EPSG','1576','EPSG','1473',NULL,NULL,'EPSG-Can Qc NT2',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8565','NAD27 to WGS 84 (31)','','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4267','EPSG','4326','EPSG','1368',NULL,'EPSG','1574','EPSG','1188',NULL,NULL,'EPSG-Can Que',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8566','NAD83 to WGS 84 (6)','','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4269','EPSG','4326','EPSG','1368',NULL,'EPSG','1572','EPSG','1188',NULL,NULL,'EPSG-Can Qc',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8568','Deir ez Zor to WGS 84 (1)','Can be implemented as a position vector tfm with param. values dX=-174.6 dY=-3.1 dZ=238.1m; rX=rY=0 rZ=0.814"; dS=-0.38 ppm.','Oil exploration','EPSG','4227','EPSG','4326','EPSG','2329',NULL,'EPSG','1584','EPSG','1240',NULL,NULL,'EPSG-Syr',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8569','ED50 to WGS 84 (21)','Included in Statens Kartverk programme wsktrans between 1997 (v3.1) and 2001 (v4.0). Replaced by ED50 to WGS 84 (23) (code 1612) in April 2001.','Oil exploration before 1997/2001.','EPSG','4230','EPSG','4326','EPSG','2332',NULL,'EPSG','1588','EPSG','1149',NULL,NULL,'EPSG-Nor N65 1997',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8571','Accra to WGS 84 (2)','Can be implemented as a position vector tfm dX=-171.16 dY=17.29 dZ=325.21m, rX=rY=0 rZ=0.814", dS=-0.38 ppm. See tfm code 15495. Found in use within oil industry erroneously concatenated as dX=-171.16 dY=17.29 dZ=327.81m, rX=rY0 rZ=0.554", dS=0.2263 ppm.','Oil industry.','EPSG','4168','EPSG','4326','EPSG','1505',NULL,'EPSG','1570','EPSG','1240',NULL,NULL,'EPSG-Gha',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8572','Amersfoort to WGS 84 (2)','Parameter values for step 1 from Amersfoort to ETRS89 (2) (code 1751). Step 2 assumes that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation. Supersedes Amersfoort to WGS 84 (1) (code 1112).','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4289','EPSG','4326','EPSG','1275',NULL,'EPSG','1571','EPSG','1149',NULL,NULL,'EPSG-Nld',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8573','RGF93 to WGS 84 (1)','','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4171','EPSG','4326','EPSG','1096',NULL,'EPSG','1591','EPSG','1149',NULL,NULL,'EPSG-Fra',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8574','American Samoa 1962 to WGS 84 (2)','Transformation actually to NAD83(HARN), but for many purposes NAD83(HARNS) can be considered to be coincident with WGS 84.','Transformation actually to NAD83(HARN), but for many purposes NAD83(HARN) can be considered to be coincident with WGS 84.','EPSG','4169','EPSG','4326','EPSG','2288',NULL,'EPSG','1578','EPSG','1580',NULL,NULL,'EPSG-Asm',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8575','American Samoa 1962 to WGS 84 (3)','Transformation actually to NAD83(HARN), but for many purposes NAD83(HARNS) can be considered to be coincident with WGS 84.','Transformation actually to NAD83(HARN), but for many purposes NAD83(HARN) can be considered to be coincident with WGS 84.','EPSG','4169','EPSG','4326','EPSG','2289',NULL,'EPSG','1579','EPSG','1580',NULL,NULL,'EPSG-Asm',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8576','AGD66 to WGS 84 (9)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Supersedes AGD66 to WGS 84 (4) (code 8398).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','1282',NULL,'EPSG','1594','EPSG','1150',NULL,NULL,'EPSG-Aus Tas 1m',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8577','AGD66 to WGS 84 (10)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2284',NULL,'EPSG','1595','EPSG','1150',NULL,NULL,'EPSG-Aus NT',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8578','AGD66 to WGS 84 (11)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Supersedes AGD66 to WGS 84 (3) (code 8396) and AGD66 to WGS 84 (6) (code 8408).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2287',NULL,'EPSG','1596','EPSG','1150',NULL,NULL,'EPSG-Aus',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8579','AGD84 to WGS 84 (6)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Supersedes AGD84 to WGS 84 (5) (code 8560).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4203','EPSG','4326','EPSG','1280',NULL,'EPSG','1593','EPSG','1150',NULL,NULL,'EPSG-Aus WA',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8580','IRENET95 to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4173','EPSG','4326','EPSG','1305',NULL,'EPSG','1611','EPSG','1149',NULL,NULL,'OSI-Ire',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8581','PSD93 to WGS 84 (2)','Replaced by PSD93 to WGS 84 (1) (code 1439) in 1997. Can be implemented as a position vector tfm with parameter values dX= -182.046 dY= -225.604 dZ=+173.384m rX= -0.616 rY= -1.655 rZ=+8.378" dS=16.8673ppm.','Oil exploration.','EPSG','4134','EPSG','4326','EPSG','3288',NULL,'EPSG','1616','EPSG','1237',NULL,NULL,'PDO-Omn 93',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8582','Old Hawaiian to WGS 84 (2)','Transformation steps are from Old Hawaiian to NAD83(HARN) (1) (code 8508) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4135','EPSG','4326','EPSG','1334',NULL,'EPSG','1454','EPSG','1741',NULL,NULL,'EPSG-Usa Hi',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8583','Puerto Rico to WGS 84 (2)','Transformation steps are from Puerto Rico to NAD83(HARN) (1) (code 4435) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4139','EPSG','4326','EPSG','3634',NULL,'EPSG','1461','EPSG','1731',NULL,NULL,'EPSG-PRVI',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8584','NAD27 to NAD83(CSRS98) (3)','Can be taken as an approximate transformation NAD27 to WGS 84 - see code 8585.','Accuracy 1-2 metres.','EPSG','4267','EPSG','4140','EPSG','2376',NULL,'EPSG','1313','EPSG','1752',NULL,NULL,'EPSG-Can AB',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8585','NAD27 to WGS 84 (36)','Steps based on concatenated transformation NAD27 to NAD83(CSRS) (3) (code 8635) assuming that NAD83(CSRS) is equivalent to WGS 84.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2376',NULL,'EPSG','1313','EPSG','1702',NULL,NULL,'EPSG-Can AB',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8586','NAD27 to NAD83(HARN) (38)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8592.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1374',NULL,'EPSG','1241','EPSG','1704',NULL,NULL,'NGS-Usa AR',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8587','NAD27 to NAD83(HARN) (39)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8600.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1384',NULL,'EPSG','1241','EPSG','1705',NULL,NULL,'NGS-Usa IA',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8588','NAD27 to NAD83(HARN) (40)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8608.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1392',NULL,'EPSG','1241','EPSG','1706',NULL,NULL,'NGS-Usa MN',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8589','NAD27 to NAD83(HARN) (41)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8610.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1394',NULL,'EPSG','1241','EPSG','1707',NULL,NULL,'NGS-Usa MO',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8590','NAD27 to WGS 84 (37)','Transformation steps are from NAD27 to NAD83(HARN) (1) (code 8460) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1372',NULL,'EPSG','1241','EPSG','1717',NULL,NULL,'EPSG-Usa AL',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8591','NAD27 to WGS 84 (38)','Transformation steps are from NAD27 to NAD83(HARN) (2) (code 8461) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1373',NULL,'EPSG','1241','EPSG','1728',NULL,NULL,'EPSG-Usa AZ',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8592','NAD27 to WGS 84 (39)','Transformation steps are from NAD27 to NAD83(HARN) (38) (code 8586) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1374',NULL,'EPSG','1241','EPSG','1708',NULL,NULL,'EPSG-Usa AR',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8593','NAD27 to WGS 84 (40)','Transformation steps are from NAD27 to NAD83(HARN) (3) (code 8462) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2297',NULL,'EPSG','1241','EPSG','1739',NULL,NULL,'EPSG-Usa CA n',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8594','NAD27 to WGS 84 (41)','Transformation steps are from NAD27 to NAD83(HARN) (4) (code 8463) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2298',NULL,'EPSG','1241','EPSG','1750',NULL,NULL,'EPSG-Usa CA s',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8595','NAD27 to WGS 84 (42)','Transformation steps are from NAD27 to NAD83(HARN) (5) (code 8464) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1376',NULL,'EPSG','1241','EPSG','1712',NULL,NULL,'EPSG-Usa CO',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8596','NAD27 to WGS 84 (43)','Transformation steps are from NAD27 to NAD83(HARN) (7) (code 8466) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1379',NULL,'EPSG','1241','EPSG','1714',NULL,NULL,'EPSG-Usa FL',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8597','NAD27 to WGS 84 (44)','Transformation steps are from NAD27 to NAD83(HARN) (6) (code 8465) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1380',NULL,'EPSG','1241','EPSG','1713',NULL,NULL,'EPSG-Usa GA',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8598','NAD27 to WGS 84 (45)','Transformation steps are from NAD27 to NAD83(HARN) (36) (code 8553) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1382',NULL,'EPSG','1241','EPSG','1748',NULL,NULL,'EPSG-Usa IL',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8599','NAD27 to WGS 84 (46)','Transformation steps are from NAD27 to NAD83(HARN) (30) (code 8509) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1383',NULL,'EPSG','1241','EPSG','1742',NULL,NULL,'EPSG-Usa IN',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8600','NAD27 to WGS 84 (47)','Transformation steps are from NAD27 to NAD83(HARN) (39) (code 8587) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1384',NULL,'EPSG','1241','EPSG','1709',NULL,NULL,'EPSG-Usa IA',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8601','NAD27 to WGS 84 (48)','Transformation steps are from NAD27 to NAD83(HARN) (31) (code 8510) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1385',NULL,'EPSG','1241','EPSG','1743',NULL,NULL,'EPSG-Usa KS',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8602','NAD27 to WGS 84 (49)','Transformation steps are from NAD27 to NAD83(HARN) (10) (code 8469) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1386',NULL,'EPSG','1241','EPSG','1718',NULL,NULL,'EPSG-Usa KY',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8603','NAD27 to WGS 84 (50)','Transformation steps are from NAD27 to NAD83(HARN) (11) (code 8470) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1387',NULL,'EPSG','1241','EPSG','1719',NULL,NULL,'EPSG-Usa LA',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8604','NAD27 to WGS 84 (51)','Transformation steps are from NAD27 to NAD83(HARN) (13) (code 8472) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1388',NULL,'EPSG','1241','EPSG','1721',NULL,NULL,'EPSG-Usa ME',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8605','NAD27 to WGS 84 (52)','Transformation steps are from NAD27 to NAD83(HARN) (12) (code 8471) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2377',NULL,'EPSG','1241','EPSG','1720',NULL,NULL,'EPSG-Usa DE MD',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8606','NAD27 to WGS 84 (53)','Transformation steps are from NAD27 to NAD83(HARN) (17) (code 8476) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2378',NULL,'EPSG','1241','EPSG','1725',NULL,NULL,'EPSG-Usa NewEng',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8607','NAD27 to WGS 84 (54)','Transformation steps are from NAD27 to NAD83(HARN) (14) (code 8473) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1391',NULL,'EPSG','1241','EPSG','1722',NULL,NULL,'EPSG-Usa MI',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8608','NAD27 to WGS 84 (55)','Transformation steps are from NAD27 to NAD83(HARN) (40) (code 8588) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1392',NULL,'EPSG','1241','EPSG','1710',NULL,NULL,'EPSG-Usa MN',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8609','NAD27 to WGS 84 (56)','Transformation steps are from NAD27 to NAD83(HARN) (15) (code 8474) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1393',NULL,'EPSG','1241','EPSG','1723',NULL,NULL,'EPSG-Usa MS',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8610','NAD27 to WGS 84 (57)','Transformation steps are from NAD27 to NAD83(HARN) (41) (code 8589) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1394',NULL,'EPSG','1241','EPSG','1711',NULL,NULL,'EPSG-Usa MO',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8611','NAD27 to WGS 84 (58)','Transformation steps are from NAD27 to NAD83(HARN) (8) (code 8467) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2382',NULL,'EPSG','1241','EPSG','1715',NULL,NULL,'EPSG-Usa ID MT e',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8612','NAD27 to WGS 84 (59)','Transformation steps are from NAD27 to NAD83(HARN) (9) (code 8468) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2383',NULL,'EPSG','1241','EPSG','1716',NULL,NULL,'EPSG-Usa ID MT w',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8613','NAD27 to WGS 84 (60)','Transformation steps are from NAD27 to NAD83(HARN) (16) (code 8475) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1396',NULL,'EPSG','1241','EPSG','1724',NULL,NULL,'EPSG-Usa NE',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8614','NAD27 to WGS 84 (61)','Transformation steps are from NAD27 to NAD83(HARN) (32) (code 8511) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1397',NULL,'EPSG','1241','EPSG','1744',NULL,NULL,'EPSG-Usa NV',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8615','NAD27 to WGS 84 (62)','Transformation steps are from NAD27 to NAD83(HARN) (37) (code 8554) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1399',NULL,'EPSG','1241','EPSG','1749',NULL,NULL,'EPSG-Usa NJ',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8616','NAD27 to WGS 84 (63)','Transformation steps are from NAD27 to NAD83(HARN) (18) (code 8477) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1400',NULL,'EPSG','1241','EPSG','1726',NULL,NULL,'EPSG-Usa NM',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8617','NAD27 to WGS 84 (64)','Transformation steps are from NAD27 to NAD83(HARN) (19) (code 8478) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1401',NULL,'EPSG','1241','EPSG','1727',NULL,NULL,'EPSG-Usa NY',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8618','NAD27 to WGS 84 (65)','Transformation steps are from NAD27 to NAD83(HARN) (20) (code 8479) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1403',NULL,'EPSG','1241','EPSG','1729',NULL,NULL,'EPSG-Usa ND',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8619','NAD27 to WGS 84 (66)','Transformation steps are from NAD27 to NAD83(HARN) (33) (code 8512) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1404',NULL,'EPSG','1241','EPSG','1745',NULL,NULL,'EPSG-Usa OH',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8620','NAD27 to WGS 84 (67)','Transformation steps are from NAD27 to NAD83(HARN) (21) (code 8480) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1405',NULL,'EPSG','1241','EPSG','1730',NULL,NULL,'EPSG-Usa OK',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8621','NAD27 to WGS 84 (68)','Transformation steps are from NAD27 to NAD83(HARN) (27) (code 8487) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2381',NULL,'EPSG','1241','EPSG','1737',NULL,NULL,'EPSG-Usa OR WA',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8622','NAD27 to WGS 84 (69)','Transformation steps are from NAD27 to NAD83(HARN) (22) (code 6739) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1410',NULL,'EPSG','1241','EPSG','1732',NULL,NULL,'EPSG-Usa SD',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8623','NAD27 to WGS 84 (70)','Transformation steps are from NAD27 to NAD83(HARN) (23) (code 8483) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1411',NULL,'EPSG','1241','EPSG','1733',NULL,NULL,'EPSG-Usa TN',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8624','NAD27 to WGS 84 (71)','Transformation steps are from NAD27 to NAD83(HARN) (24) (code 8484) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2379',NULL,'EPSG','1241','EPSG','1734',NULL,NULL,'EPSG-Usa TX e',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8625','NAD27 to WGS 84 (72)','Transformation steps are from NAD27 to NAD83(HARN) (25) (code 8485) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2380',NULL,'EPSG','1241','EPSG','1735',NULL,NULL,'EPSG-Usa TX w',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8626','NAD27 to WGS 84 (73)','Transformation steps are from NAD27 to NAD83(HARN) (34) (code 8513) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1413',NULL,'EPSG','1241','EPSG','1746',NULL,NULL,'EPSG-Usa UT',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8627','NAD27 to WGS 84 (74)','Transformation steps are from NAD27 to NAD83(HARN) (26) (code 8486) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1415',NULL,'EPSG','1241','EPSG','1736',NULL,NULL,'EPSG-Usa VA',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8628','NAD27 to WGS 84 (75)','Transformation steps are from NAD27 to NAD83(HARN) (35) (code 8514) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1417',NULL,'EPSG','1241','EPSG','1747',NULL,NULL,'EPSG-Usa WV',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8629','NAD27 to WGS 84 (76)','Transformation steps are from NAD27 to NAD83(HARN) (28) (code 8488) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1418',NULL,'EPSG','1241','EPSG','1738',NULL,NULL,'EPSG-Usa WI',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8630','NAD27 to WGS 84 (77)','Transformation steps are from NAD27 to NAD83(HARN) (29) (code 8489) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1419',NULL,'EPSG','1241','EPSG','1740',NULL,NULL,'EPSG-Usa WY',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8631','Garoua to WGS 84 (1)','','Oil industry.','EPSG','4197','EPSG','4326','EPSG','2590',NULL,'EPSG','1805','EPSG','1240',NULL,NULL,'EPSG-Cmr',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8632','Kousseri to WGS 84 (1)','','Oil industry.','EPSG','4198','EPSG','4326','EPSG','2591',NULL,'EPSG','1806','EPSG','1240',NULL,NULL,'EPSG-Cmr',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8633','Yoff to WGS 84 (1)','Derived via WGS72. Can be used as a single positon vector transformation with parameter vaues of dX = -37 m, dY = +157 m, dZ = +89.5 m, rX = rY = 0 sec, rZ = 0.554 sec, dS = 0.219 ppm','Military purposes.','EPSG','4310','EPSG','4326','EPSG','1207',NULL,'EPSG','1828','EPSG','1238',NULL,NULL,'EPSG-SEN',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8634','Beduaram to WGS 84 (1)','Derived via WGS72BE. Can be used as a single positon vector transformation with parameter vaues of dX = -101 m, dY = -111 m, dZ = +188.9 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm','Oil exploration.','EPSG','4213','EPSG','4326','EPSG','2771',NULL,'EPSG','1839','EPSG','1240',NULL,NULL,'ELF-Ner SE',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8635','NAD27 to NAD83(CSRS) (3)','Can be taken as an approximate transformation NAD27 to WGS 84 - see code 8585.','Accuracy 1-2 metres.','EPSG','4267','EPSG','4617','EPSG','2376',NULL,'EPSG','1313','EPSG','1849',NULL,NULL,'EPSG-Can AB',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8636','Carthage (Paris) to WGS 84 (1)','','For military purposes.','EPSG','4816','EPSG','4326','EPSG','1618',NULL,'EPSG','1881','EPSG','1130',NULL,NULL,'EPSG-Tun',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8637','Lisbon (Lisbon) to WGS 84 (1)','','For applications to an accuracy of 2 metres.','EPSG','4803','EPSG','4326','EPSG','1294',NULL,'EPSG','1756','EPSG','1944',NULL,NULL,'EPSG-Prt',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8638','Makassar (Jakarta) to WGS 84 (1)','','Oil exploration.','EPSG','4804','EPSG','4326','EPSG','1316',NULL,'EPSG','1260','EPSG','1837',NULL,NULL,'EPSG - Idn Sul SW',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8639','NGO 1948 (Oslo) to WGS 84 (1)','','For military purposes.','EPSG','4817','EPSG','4326','EPSG','1352',NULL,'EPSG','1762','EPSG','1654',NULL,NULL,'EPSG-Nor',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8640','Nord Sahara 1959 (Paris) to WGS 84 (1)','','For military purposes.','EPSG','4819','EPSG','4326','EPSG','1026',NULL,'EPSG','1882','EPSG','1253',NULL,NULL,'EPSG-Dza',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8641','Segara (Jakarta) to WGS 84 (1)','','Accuracy estimate not available.','EPSG','4820','EPSG','4326','EPSG','1360',NULL,'EPSG','1883','EPSG','1897',NULL,NULL,'EPSG-Idn Kal SW',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8642','S-JTSK (Ferro) to WGS 84 (1)','Replaced by S-JTSK (Ferro) to WGS 84 (3) (code 5242) in 2009.','For applications to an accuracy of 1 metre.','EPSG','4818','EPSG','4326','EPSG','1079',NULL,'EPSG','1884','EPSG','1623',NULL,NULL,'EPSG-Cze',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8643','Greek to WGS 84 (1)','','5m accuracy','EPSG','4120','EPSG','4326','EPSG','3254',NULL,'EPSG','1891','EPSG','1272',NULL,NULL,'EPSG-Grc',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8644','Greek (Athens) to WGS 84 (1)','','5m accuracy.','EPSG','4815','EPSG','4326','EPSG','3254',NULL,'EPSG','1761','EPSG','1891','EPSG','1272','EPSG-Grc',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8645','MGI (Ferro) to WGS 84 (2)','','2m accuracy','EPSG','4805','EPSG','4326','EPSG','1037',NULL,'EPSG','1757','EPSG','1618',NULL,NULL,'BEV-Aut',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8646','Manoca 1962 to WGS 84 (1)','Derived via WGS72BE. Can be used as a single positon vector transformation with parameter vaues of dX = -56.7 m, dY = -171.8 m, dZ = -40.6 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm','Oil exploration','EPSG','4193','EPSG','4326','EPSG','2555',NULL,'EPSG','1902','EPSG','1240',NULL,NULL,'OGP-Cmr',1); -INSERT INTO "concatenated_operation" VALUES('EPSG','8647','NAD27 to WGS 84 (78)','','Oil industry operations.','EPSG','4267','EPSG','4326','EPSG','2831',NULL,'EPSG','1313','EPSG','1950','EPSG','1946','EPSG-Can E Off',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8648','Lisbon 1890 (Lisbon) to WGS 84 (1)','','Low accuracy applications.','EPSG','4904','EPSG','4326','EPSG','1294',NULL,'EPSG','1991','EPSG','1986',NULL,NULL,'EPSG-Prt 5m',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8649','Lisbon 1890 (Lisbon) to WGS 84 (2)','','Medium accuracy applications.','EPSG','4904','EPSG','4326','EPSG','1294',NULL,'EPSG','1991','EPSG','1990',NULL,NULL,'EPSG-Prt 1m',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8650','Palestine 1923 to WGS 84 (2)','Can be implemented as a geocentric translation tfm with param. values dX = -229m, dY = -67m, dZ= +277m.','Accuracy: 1m to north and 10m to south of east-west line through Beersheba (31°15''N).','EPSG','4281','EPSG','4326','EPSG','2603',NULL,'EPSG','1071','EPSG','1073',NULL,NULL,'SoI-Isr',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8651','Vientiane 1982 to WGS 84 (1)','Can be implemented as a geocentric translation tfm with param. values dX = 42.358m, dY = -124.688m, dZ= -37.366m.','Accuracy: 5m.','EPSG','4676','EPSG','4326','EPSG','1138',NULL,'EPSG','1063','EPSG','1065',NULL,NULL,'EPSG-Lao',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8652','Lao 1993 to WGS 84 (1)','Can be implemented as a geocentric translation tfm with param. values dX = 43.933m, dY = -129.593m, dZ= -39.331m.','Accuracy: 5m.','EPSG','4677','EPSG','4326','EPSG','1138',NULL,'EPSG','1064','EPSG','1065',NULL,NULL,'EPSG-Lao',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8655','Manoca 1962 to WGS 84 (2)','Derived via WGS 72BE. Can be implemented as a single positon vector transformation with parameter vaues of dX = -56.7 m, dY = -171.8 m, dZ = -38.7 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm.','Oil exploration','EPSG','4193','EPSG','4326','EPSG','2555',NULL,'EPSG','1902','EPSG','1240',NULL,NULL,'OGP-Cmr',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8656','Mhast (offshore) to WGS 84 (1)','Derived via WGS 72BE. Can be implemented as a single positon vector transformation with parameter vaues of dX = -255.0 m, dY = -29.0 m, dZ = -103.1 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm.','Oil industry exploration and production between 1979 and 1987.','EPSG','4705','EPSG','4326','EPSG','3180',NULL,'EPSG','15790','EPSG','1240',NULL,NULL,'OGP-Ago Cab',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8657','Egypt Gulf of Suez S-650 TL to WGS 84 (1)','Can be implemented as a single positon vector transformation with parameter vaues of dX = -123.0 m, dY = 98.0 m, dZ = 3.9 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm. Replaced by Egypt Gulf of Suez S-650 TL to WGS 84 (2) (tfm code 15846).','Oil industry exploration and production between 1980 and 1984.','EPSG','4706','EPSG','4326','EPSG','2341',NULL,'EPSG','15792','EPSG','1240',NULL,NULL,'OGP-Egy GoS',0); -INSERT INTO "concatenated_operation" VALUES('EPSG','8659','Kertau (RSO) to WGS 84 (1)','Step 1 is necessary to rescale the grid units before using step 2.','For transformation of MRT68 RSO coordinates.','EPSG','4751','EPSG','4326','EPSG','1309',NULL,'EPSG','15896','EPSG','1158',NULL,NULL,'OGP-Mys',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','3896','MGI (Ferro) to WGS 84 (2)','','2m accuracy','EPSG','4805','EPSG','4326','EPSG','1037',NULL,'BEV-Aut',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','3966','MGI (Ferro) to WGS 84 (1)','Accuracy estimate is not available.','For military purposes only.','EPSG','4805','EPSG','4326','EPSG','2370',NULL,'DMA-balk',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','4435','Puerto Rico to NAD83(HARN) (1)','May be taken as approximate transformation Puerto Rico to WGS 84 - see code 8583.','Accuracy 0.1m at 67% confidence level.','EPSG','4139','EPSG','4152','EPSG','3634',NULL,'NGS-PRVI',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','4837','Amersfoort to ED50 (1)','Adopted by NAM in 2006, replacing polynomial tfms 1046, 6304, 1050 and 6306.','Oil and gas exploration and production.','EPSG','4289','EPSG','4230','EPSG','1275',NULL,'NAM-Nld 2006',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','5190','Tokyo 1892 to Korea 2000 (1)','','Accuracy 10m.','EPSG','5132','EPSG','4737','EPSG','3266',NULL,'OGP-Kor',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','5192','Tokyo 1892 to WGS 84 (1)','','Accuracy 10m.','EPSG','5132','EPSG','4326','EPSG','3266',NULL,'OGP-Kor',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','5230','S-JTSK (Ferro) to WGS 84 (2)','','For applications to an accuracy of 1 metre.','EPSG','4818','EPSG','4326','EPSG','1211',NULL,'OGP-Svk',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','5240','S-JTSK/05 (Ferro) to WGS 84 (1)','Replaces S-JTSK (Ferro) to WGS 84 (1) (CRS code 8642) in Czech Republic.','For applications to an accuracy of 1 metre.','EPSG','5229','EPSG','4326','EPSG','1079',NULL,'OGP-Cze',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','5242','S-JTSK (Ferro) to WGS 84 (3)','Replaces S-JTSK (Ferro) to WGS 84 (1) (tfm code 8642).','Parameter values from S-JTSK/05 to ETRS89 (1) (code 5226). For applications to an accuracy of 1m.','EPSG','4818','EPSG','4326','EPSG','1079',NULL,'OGP-Cze R05',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','5838','Lisbon (Lisbon) to WGS 84 (2)','','For applications to an accuracy of 2 metres.','EPSG','4803','EPSG','4326','EPSG','1294',NULL,'OGP-Prt 2009',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','6714','Tokyo to JGD2011 (1)','See Tokyo to JGD2011 (2) (code 6740) for areas other than northern Honshu.','Surveying, mapping and civil engineering.','EPSG','4301','EPSG','6668','EPSG','4170',NULL,'OGP-Jpn N Honshu',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','6739','NAD27 to NAD83(HARN) (22)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8622.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1410',NULL,'NGS-Usa SD',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','6874','Tananarive (Paris) to WGS 84 (2)','Used by OMV.','For applications with an accuracy of 3m.','EPSG','4810','EPSG','4326','EPSG','3273',NULL,'OGP-Mdg',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7811','NTF (Paris) to RGF93 (2)','Second step is an emulation using NTv2 method of geocentric Interpolation method described in tfm code 7810. Note that the grid file parameters are of opposite sign.','Approximation to better than 1m of transformation of coordinates referenced to NTF (Paris) to RGF93.','EPSG','4807','EPSG','4171','EPSG','3694',NULL,'IOGP-Fra NTv2',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7965','Poolbeg height (ft(Br36)) to Malin Head height (1)','','Change of height to a different vertical reference surface for topographic mapping. Accuracy 0.1m.','EPSG','5754','EPSG','5731','EPSG','1305',NULL,'1',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7967','Poolbeg height (ft(Br36)) to Belfast height (1)','','Change of height to a different vertical reference surface for topographic mapping and engineering survey. Accuracy 0.1m.','EPSG','5754','EPSG','5732','EPSG','1305',NULL,'1',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7973','NGVD29 height (ftUS) to NAVD88 height (1)','','Change of height to a different vertical reference surface and unit. Accuracy 2cm.','EPSG','5702','EPSG','5703','EPSG','2950',NULL,'IOGP - US Conus W',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7974','NGVD29 height (ftUS) to NAVD88 height (2)','','Change of height to a different vertical reference surface and unit, accuracy 2cm.','EPSG','5702','EPSG','5703','EPSG','2949',NULL,'IOGP - US Conus C',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7975','NGVD29 height (ftUS) to NAVD88 height (3)','','Change of height to a different vertical reference surface and unit, accuracy 2cm.','EPSG','5702','EPSG','5703','EPSG','2948',NULL,'IOGP - US Conus E',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7983','HKPD height to HKCD depth (1)','','Hydrographic charting.','EPSG','5738','EPSG','5739','EPSG','3335',NULL,'IOGP-HK',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7986','KOC CD height to KOC WD depth (1)','','Vertical offset including change of axis positive direction.','EPSG','5790','EPSG','5789','EPSG','3267',NULL,'IOGP-Kwt',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','7987','KOC CD height to KOC WD depth (ft) (1)','','Vertical offset including change of axis positive direction and change of axis unit.','EPSG','5790','EPSG','5614','EPSG','3267',NULL,'IOGP-Kwt',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8047','ED50 to WGS 84 (15)','Replaced by codes 8569 and 1612 in 1997 and 2001.¶The concatenation of transformations 1147 and 1146 gives the following position vector tfm: dX=-84.491 dY=-100.559 dZ=-114.209 metres rX= -2.4006 rY=-0.5367 rZ=-2.3742 microradians dS=+0.2947 ppm.','Oil exploration before 2001.','EPSG','4230','EPSG','4326','EPSG','2332',NULL,'NMA-Nor N65 1991',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8094','NTF (Paris) to WGS 84 (1)','','Not known.','EPSG','4807','EPSG','4326','EPSG','3694',NULL,'EPSG-Fra',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8174','Bogota 1975 (Bogota) to WGS 84 (1)','','For military purposes. Accuracy 6m, 5m and 6m in X, Y and Z axes.','EPSG','4802','EPSG','4326','EPSG','3229',NULL,'DMA-Col',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8175','Monte Mario (Rome) to WGS 84 (1)','','For military purposes. Accuracy 25m in each axis.','EPSG','4806','EPSG','4326','EPSG','2339',NULL,'EPSG-Ita',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8176','Tananarive (Paris) to WGS 84 (1)','','For military purposes. Accuracy not available.','EPSG','4810','EPSG','4326','EPSG','3273',NULL,'EPSG-Mdg',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8178','Batavia (Jakarta) to WGS 84 (1)','','For military purposes. Accuracy 3m in each axis.','EPSG','4813','EPSG','4326','EPSG','1355',NULL,'EPSG-Idn Sumatra',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8183','HD72 to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4237','EPSG','4326','EPSG','1119',NULL,'EPSG-Hun',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8186','NTF (Paris) to ED50 (1)','','Not known.','EPSG','4807','EPSG','4230','EPSG','3694',NULL,'EPSG-Fra',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8188','NTF (Paris) to WGS 72 (1)','','Not known.','EPSG','4807','EPSG','4322','EPSG','3694',NULL,'EPSG-Fra',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8190','AGD66 to WGS 84 (2)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. 0.1m accuracy.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2575',NULL,'EPSG-Aus 5m',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8192','AGD84 to WGS 84 (3)','Approximation assuming that GDA94 is equivalent to WGS 84.','5m accuracy. Approximation assuming that GDA94 is equivalent to WGS 84.','EPSG','4203','EPSG','4326','EPSG','2575',NULL,'EPSG-Aus 5m',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8194','AGD84 to WGS 84 (4)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4203','EPSG','4326','EPSG','2575',NULL,'EPSG-Aus 1m',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8195','RT90 to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4124','EPSG','4326','EPSG','1225',NULL,'EPSG-Swe',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8199','Pulkovo 1942 to WGS 84 (2)','Approximation at the +/- 1m level assuming that LKS94(ETRS89) is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that LKS94(ETRS89) is equivalent to WGS 84.','EPSG','4284','EPSG','4326','EPSG','1145',NULL,'EPSG-Ltu',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8211','Voirol 1875 (Paris) to WGS 84 (1)','','Oil exploration.','EPSG','4811','EPSG','4326','EPSG','1365',NULL,'EPSG-Dza N',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8215','Tete to WGS 84 (1)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326','EPSG','1167',NULL,'EPSG-Moz',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8217','Tete to WGS 84 (2)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326','EPSG','2350',NULL,'EPSG-Moz A',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8219','Tete to WGS 84 (3)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326','EPSG','2351',NULL,'EPSG-Moz B',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8221','Tete to WGS 84 (4)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326','EPSG','2352',NULL,'EPSG-Moz C',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8223','Tete to WGS 84 (5)','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that Moznet is equivalent to WGS 84.','EPSG','4127','EPSG','4326','EPSG','2353',NULL,'EPSG-Moz D',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8234','DHDN to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4314','EPSG','4326','EPSG','2326',NULL,'EPSG-Deu W',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8236','Pulkovo 1942 to WGS 84 (11)','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that ETRF89 is equivalent to WGS 84.','EPSG','4284','EPSG','4326','EPSG','1343',NULL,'EPSG-Deu E',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8243','NAD27 to WGS 84 (25)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84. Superseded by NAD27 to WGS 84 (27) (code 8404) in Quebec and NAD27 to WGS 84 (26) (code 8245) elsewhere in Canada.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4267','EPSG','4326','EPSG','1061',NULL,'EPSG-Can old',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8245','NAD27 to WGS 84 (26)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4267','EPSG','4326','EPSG','1061',NULL,'EPSG-Can',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8263','MGI (Ferro) to WGS 84 (1)','Accuracy estimate is not available.','For military purposes only.','EPSG','4805','EPSG','4326','EPSG','2370',NULL,'DMA-balk',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8363','ETRS89 + Baltic 1957 height to ETRS89 + EVRF2007 height (1)','Compound transformation using two separate quasigeoid models (DVRM05 and DMQSK2014E).','Recommended method for transforming coordinates between Baltic 1957 height and EVRF2007 height and vice-versa in Slovakia.','EPSG','8360','EPSG','7423','EPSG','1211',NULL,'UGKK-Svk',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8386','Old Hawaiian to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4135','EPSG','4326','EPSG','1334',NULL,'EPSG-Usa Hi',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8388','St. Lawrence Island to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4136','EPSG','4326','EPSG','1332',NULL,'EPSG-Usa AK StL',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8390','St. Paul Island to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4137','EPSG','4326','EPSG','1333',NULL,'EPSG-Usa AK StP',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8392','St. George Island to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4138','EPSG','4326','EPSG','1331',NULL,'EPSG-Usa AK StG',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8394','NAD27(CGQ77) to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84. Superseded by NAD27(CGQ77) to WGS 84 (2) (code 8564).','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4609','EPSG','4326','EPSG','1368',NULL,'EPSG-Can Qc NT1',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8396','AGD66 to WGS 84 (3)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Superseded by AGD66 to WGS 84 (11) (code 8581).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2283',NULL,'EPSG-Aus ACT 1m',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8398','AGD66 to WGS 84 (4)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Superseded by AGD66 to WGS 84 (9) (code 8576).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','1282',NULL,'EPSG-Aus Tas 1m',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8400','AGD66 to WGS 84 (5)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2286',NULL,'EPSG-Aus NSW Vic 1m',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8402','Puerto Rico to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4139','EPSG','4326','EPSG','1335',NULL,'EPSG-PRVI',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8404','NAD27 to WGS 84 (27)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84. Superseded by NAD27 to WGS 84 (31) (code 8565).','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4267','EPSG','4326','EPSG','1368',NULL,'EPSG-Can QC',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8406','NAD27(76) to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83 is equivalent to WGS 84.','EPSG','4608','EPSG','4326','EPSG','1367',NULL,'EPSG-Can On',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8408','AGD66 to WGS 84 (6)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Superseded by AGD66 to WGS 84 (11) (code 8578).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2285',NULL,'EPSG-Aus Vic 0.1m',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8418','ATS77 to WGS 84 (1)','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4122','EPSG','4326','EPSG','1447',NULL,'EPSG-Can NB',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8419','ATS77 to WGS 84 (2)','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4122','EPSG','4326','EPSG','1533',NULL,'EPSG-Can PEI',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8420','NAD27 to WGS 84 (32)','','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4267','EPSG','4326','EPSG','2375',NULL,'SK PMC-Can SK',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8421','NAD83 to WGS 84 (7)','','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4269','EPSG','4326','EPSG','2375',NULL,'SK PMC-Can SK',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8422','NAD83 to WGS 84 (8)','The gridded difference file AB_CSRS.DAC in STEP 1 will need to be renamed to AB_CSRS.gsb to run in some software suites. Formats identical, but AB file is provincial fit only.','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4269','EPSG','4326','EPSG','2376',NULL,'Alb Env-Can AB',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8442','ETRS89 to S-JTSK (5)','Recommended method of a transformation from ETRS89 to S-JTSK in Slovakia. For reverse transformation see S-JTSK to ETRS89 (6) (code 8443). Both together replace S-JTSK to ETRS89 (4) (code 4827).','GIS, geodetic survey.','EPSG','4258','EPSG','4156','EPSG','1211',NULL,'UGKK-Sk JTSK03',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8443','S-JTSK to ETRS89 (6)','Recommended method of a transformation from S-JTSK to ETRS89 in Slovakia. For reverse transformation see ETRS89 to S-JTSK (5) (code 8442). Both together replace S-JTSK to ETRS89 (4) (code 4827).','GIS, geodetic survey.','EPSG','4156','EPSG','4258','EPSG','1211',NULL,'UGKK-Sk JTSK03',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8453','AGD66 to WGS 84 (7)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','1282',NULL,'EPSG-Aus Tas 0.1m',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8454','AGD66 to WGS 84 (8)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2284',NULL,'EPSG-Aus NT 0.1m',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8457','CH1903+ to WGS 84 (1)','Approximation at the +/- 1m level assuming that CHTRF95 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that CHTRF95 is equivalent to WGS 84.','EPSG','4150','EPSG','4326','EPSG','1286',NULL,'EPSG-CH',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8460','NAD27 to NAD83(HARN) (1)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8590.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1372',NULL,'NGS-Usa AL',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8461','NAD27 to NAD83(HARN) (2)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8591.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1373',NULL,'NGS-Usa AZ',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8462','NAD27 to NAD83(HARN) (3)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8593.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','2297',NULL,'NGS-Usa CA n',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8463','NAD27 to NAD83(HARN) (4)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8594.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','2298',NULL,'NGS-Usa CA s',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8464','NAD27 to NAD83(HARN) (5)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8595.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1376',NULL,'NGS-Usa CO',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8465','NAD27 to NAD83(HARN) (6)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8597.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1380',NULL,'NGS-Usa GA',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8466','NAD27 to NAD83(HARN) (7)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8596.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1379',NULL,'NGS-Usa FL',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8467','NAD27 to NAD83(HARN) (8)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8611.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','2382',NULL,'NGS-Usa ID MT e',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8468','NAD27 to NAD83(HARN) (9)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8612.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','2383',NULL,'NGS-Usa ID MT w',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8469','NAD27 to NAD83(HARN) (10)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8602.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1386',NULL,'NGS-Usa KY',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8470','NAD27 to NAD83(HARN) (11)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8603.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1387',NULL,'NGS-Usa LA',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8471','NAD27 to NAD83(HARN) (12)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8605.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','2377',NULL,'NGS-Usa DE MD',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8472','NAD27 to NAD83(HARN) (13)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8604.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1388',NULL,'NGS-Usa ME',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8473','NAD27 to NAD83(HARN) (14)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8607.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1391',NULL,'NGS-Usa MI',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8474','NAD27 to NAD83(HARN) (15)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8609.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1393',NULL,'NGS-Usa MS',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8475','NAD27 to NAD83(HARN) (16)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8613.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1396',NULL,'NGS-Usa NE',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8476','NAD27 to NAD83(HARN) (17)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8606.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','2378',NULL,'NGS-Usa NewEng',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8477','NAD27 to NAD83(HARN) (18)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8616.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1400',NULL,'NGS-Usa NM',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8478','NAD27 to NAD83(HARN) (19)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8617.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','1401',NULL,'NGS-Usa NY',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8479','NAD27 to NAD83(HARN) (20)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8618.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1403',NULL,'NGS-Usa ND',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8480','NAD27 to NAD83(HARN) (21)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8620.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1405',NULL,'NGS-Usa OK',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8481','Puerto Rico to NAD83(HARN) (1)','May be taken as approximate transformation Puerto Rico to WGS 84 - see code 8583.','Accuracy 0.1m at 67% confidence level.','EPSG','4139','EPSG','4152','EPSG','1335',NULL,'NGS-PRVI',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8482','NAD27 to NAD83(HARN) (22)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8622.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1410',NULL,'NGS-Usa SD',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8483','NAD27 to NAD83(HARN) (23)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8623.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1411',NULL,'NGS-Usa TN',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8484','NAD27 to NAD83(HARN) (24)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8624.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','2379',NULL,'NGS-Usa TX e',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8485','NAD27 to NAD83(HARN) (25)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8625.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','2380',NULL,'NGS-Usa TX w',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8486','NAD27 to NAD83(HARN) (26)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8627.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1415',NULL,'NGS-Usa VA',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8487','NAD27 to NAD83(HARN) (27)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8621.','Accuracy at 67% confidence level is 0.2m onshore, 5m nearshore and undetermined farther offshore.','EPSG','4267','EPSG','4152','EPSG','2381',NULL,'NGS-Usa OR WA',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8488','NAD27 to NAD83(HARN) (28)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8629.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1418',NULL,'NGS-Usa WI',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8489','NAD27 to NAD83(HARN) (29)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8630.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1419',NULL,'NGS-Usa WY',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8496','NAD27 to WGS 84 (28)','','Geodetic survey.','EPSG','4267','EPSG','4326','EPSG','2374',NULL,'NGS-Usa conus',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8497','NAD27 to WGS 84 (29)','','Geodetic survey.','EPSG','4267','EPSG','4326','EPSG','2373',NULL,'NGS-Usa AK',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8508','Old Hawaiian to NAD83(HARN) (1)','Uses NADCON method which expects longitudes positive west; EPSG GeogCRSs Old Hawaiian (code 4135), NAD83 (code 4269) and NAD83(HARN) have longitudes positive east. May be taken as approximate transformation Old Hawaiin to WGS 84 - see code 8582.','Assumes NAD83 is coincident with NAD83(HARN). Accuracy about 1m.','EPSG','4135','EPSG','4152','EPSG','1334',NULL,'NGS-Usa HI',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8509','NAD27 to NAD83(HARN) (30)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8599.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1383',NULL,'NGS-Usa IN',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8510','NAD27 to NAD83(HARN) (31)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8601.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1385',NULL,'NGS-Usa KS',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8511','NAD27 to NAD83(HARN) (32)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8614.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1397',NULL,'NGS-Usa NV',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8512','NAD27 to NAD83(HARN) (33)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8619.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1404',NULL,'NGS-Usa OH',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8513','NAD27 to NAD83(HARN) (34)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8626.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1413',NULL,'NGS-Usa UT',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8514','NAD27 to NAD83(HARN) (35)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8628.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1417',NULL,'NGS-Usa WV',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8517','Chos Malal 1914 to WGS 84 (1)','May be implemented using a single step geocentric translations of dx=+5.5m dY=+176.7m dZ=+141.4m.','Oil exploration','EPSG','4160','EPSG','4326','EPSG','2325',NULL,'TOT-Arg Neu',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8530','South Yemen to WGS 84 (1)','May be implemented as a single transformation using geocentric translations transformation method with parameter values dX=-76m dY=-138m dZ=+67m.','Approximation at the +/- 1m level assuming that NGN96 is equivalent to WGS 84.','EPSG','4164','EPSG','4326','EPSG','1340',NULL,'IGN-Yem South',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8532','Indian 1960 to WGS 84 (1)','May be implemented as a single transformation using position vector 7-parameter geocentric transformation method with parameter values dX=+199m dY=+931m dZ=+318.9m rX=rY=0 sec rZ=+0.814 sec dS=-0.38 ppm.','Oil exploration.','EPSG','4131','EPSG','4326','EPSG','1495',NULL,'PV-Vnm',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8537','Egypt 1907 to WGS 84 (2)','Used by Shell. May be implemented as a single transformation using position vector 7-parameter geocentric transformation method with parameter values dX=-121.8m dY=+98.1m dZ=-10.7m rX=rY=0 sec rZ=+0.554 sec dS=+0.2263 ppm.','Oil exploration.','EPSG','4229','EPSG','4326','EPSG','1086',NULL,'MCE-Egy',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8553','NAD27 to NAD83(HARN) (36)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8598.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1382',NULL,'NGS-Usa IL',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8554','NAD27 to NAD83(HARN) (37)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8615.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1399',NULL,'NGS-Usa NJ',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8560','AGD84 to WGS 84 (5)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Superseded by AGD84 to WGS 84 (6) (code 8579).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4203','EPSG','4326','EPSG','1280',NULL,'EPSG-Aus WA',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8562','Nord Sahara 1959 to WGS 84 (3)','Derived at IGN monument CFP19 using Transit. Can be implemented as a single 7-param Position Vector transformation with parameter values of dX=-156.5m dY=-87.2m dZ=+287.8m; rX=rY=0 rZ=+0.814sec; dS=-0.38ppm.','Oil exploration.','EPSG','4307','EPSG','4326','EPSG','2393',NULL,'CGG-Alg HM',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8563','NZGD49 to WGS 84 (3)','Assumes WGS 84 is coincident with NZGD2000. Accuracy about 1m.','Assumes WGS 84 is coincident with NZGD2000. Accuracy about 1m.','EPSG','4272','EPSG','4326','EPSG','1175',NULL,'OSG-Nzl 1m',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8564','NAD27(CGQ77) to WGS 84 (2)','','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4609','EPSG','4326','EPSG','1368',NULL,'EPSG-Can Qc NT2',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8565','NAD27 to WGS 84 (31)','','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4267','EPSG','4326','EPSG','1368',NULL,'EPSG-Can Que',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8566','NAD83 to WGS 84 (6)','','Approximation at the +/- 1m level assuming that NAD83(CSRS98) is equivalent to WGS 84.','EPSG','4269','EPSG','4326','EPSG','1368',NULL,'EPSG-Can Qc',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8568','Deir ez Zor to WGS 84 (1)','Can be implemented as a position vector tfm with param. values dX=-174.6 dY=-3.1 dZ=238.1m; rX=rY=0 rZ=0.814"; dS=-0.38 ppm.','Oil exploration','EPSG','4227','EPSG','4326','EPSG','2329',NULL,'EPSG-Syr',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8569','ED50 to WGS 84 (21)','Included in Statens Kartverk programme wsktrans between 1997 (v3.1) and 2001 (v4.0). Replaced by ED50 to WGS 84 (23) (code 1612) in April 2001.','Oil exploration before 1997/2001.','EPSG','4230','EPSG','4326','EPSG','2332',NULL,'EPSG-Nor N65 1997',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8571','Accra to WGS 84 (2)','Can be implemented as a position vector tfm dX=-171.16 dY=17.29 dZ=325.21m, rX=rY=0 rZ=0.814", dS=-0.38 ppm. See tfm code 15495. Found in use within oil industry erroneously concatenated as dX=-171.16 dY=17.29 dZ=327.81m, rX=rY0 rZ=0.554", dS=0.2263 ppm.','Oil industry.','EPSG','4168','EPSG','4326','EPSG','1505',NULL,'EPSG-Gha',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8572','Amersfoort to WGS 84 (2)','Parameter values for step 1 from Amersfoort to ETRS89 (2) (code 1751). Step 2 assumes that ETRS89 is equivalent to WGS 84 within the accuracy of the transformation. Supersedes Amersfoort to WGS 84 (1) (code 1112).','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4289','EPSG','4326','EPSG','1275',NULL,'EPSG-Nld',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8573','RGF93 to WGS 84 (1)','','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4171','EPSG','4326','EPSG','1096',NULL,'EPSG-Fra',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8574','American Samoa 1962 to WGS 84 (2)','Transformation actually to NAD83(HARN), but for many purposes NAD83(HARNS) can be considered to be coincident with WGS 84.','Transformation actually to NAD83(HARN), but for many purposes NAD83(HARN) can be considered to be coincident with WGS 84.','EPSG','4169','EPSG','4326','EPSG','2288',NULL,'EPSG-Asm',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8575','American Samoa 1962 to WGS 84 (3)','Transformation actually to NAD83(HARN), but for many purposes NAD83(HARNS) can be considered to be coincident with WGS 84.','Transformation actually to NAD83(HARN), but for many purposes NAD83(HARN) can be considered to be coincident with WGS 84.','EPSG','4169','EPSG','4326','EPSG','2289',NULL,'EPSG-Asm',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8576','AGD66 to WGS 84 (9)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Supersedes AGD66 to WGS 84 (4) (code 8398).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','1282',NULL,'EPSG-Aus Tas 1m',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8577','AGD66 to WGS 84 (10)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2284',NULL,'EPSG-Aus NT',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8578','AGD66 to WGS 84 (11)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Supersedes AGD66 to WGS 84 (3) (code 8396) and AGD66 to WGS 84 (6) (code 8408).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4202','EPSG','4326','EPSG','2287',NULL,'EPSG-Aus',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8579','AGD84 to WGS 84 (6)','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84. Supersedes AGD84 to WGS 84 (5) (code 8560).','Approximation at the +/- 1m level assuming that GDA94 is equivalent to WGS 84.','EPSG','4203','EPSG','4326','EPSG','1280',NULL,'EPSG-Aus WA',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8580','IRENET95 to WGS 84 (1)','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','Approximation at the +/- 1m level assuming that ETRS89 is equivalent to WGS 84.','EPSG','4173','EPSG','4326','EPSG','1305',NULL,'OSI-Ire',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8581','PSD93 to WGS 84 (2)','Replaced by PSD93 to WGS 84 (1) (code 1439) in 1997. Can be implemented as a position vector tfm with parameter values dX= -182.046 dY= -225.604 dZ=+173.384m rX= -0.616 rY= -1.655 rZ=+8.378" dS=16.8673ppm.','Oil exploration.','EPSG','4134','EPSG','4326','EPSG','3288',NULL,'PDO-Omn 93',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8582','Old Hawaiian to WGS 84 (2)','Transformation steps are from Old Hawaiian to NAD83(HARN) (1) (code 8508) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4135','EPSG','4326','EPSG','1334',NULL,'EPSG-Usa Hi',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8583','Puerto Rico to WGS 84 (2)','Transformation steps are from Puerto Rico to NAD83(HARN) (1) (code 4435) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4139','EPSG','4326','EPSG','3634',NULL,'EPSG-PRVI',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8584','NAD27 to NAD83(CSRS98) (3)','Can be taken as an approximate transformation NAD27 to WGS 84 - see code 8585.','Accuracy 1-2 metres.','EPSG','4267','EPSG','4140','EPSG','2376',NULL,'EPSG-Can AB',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8585','NAD27 to WGS 84 (36)','Steps based on concatenated transformation NAD27 to NAD83(CSRS) (3) (code 8635) assuming that NAD83(CSRS) is equivalent to WGS 84.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2376',NULL,'EPSG-Can AB',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8586','NAD27 to NAD83(HARN) (38)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8592.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1374',NULL,'NGS-Usa AR',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8587','NAD27 to NAD83(HARN) (39)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8600.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1384',NULL,'NGS-Usa IA',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8588','NAD27 to NAD83(HARN) (40)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8608.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1392',NULL,'NGS-Usa MN',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8589','NAD27 to NAD83(HARN) (41)','May be taken as approximate transformation NAD27 to WGS 84 - see code 8610.','Accuracy at 67% confidence level is 0.2m.','EPSG','4267','EPSG','4152','EPSG','1394',NULL,'NGS-Usa MO',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8590','NAD27 to WGS 84 (37)','Transformation steps are from NAD27 to NAD83(HARN) (1) (code 8460) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1372',NULL,'EPSG-Usa AL',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8591','NAD27 to WGS 84 (38)','Transformation steps are from NAD27 to NAD83(HARN) (2) (code 8461) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1373',NULL,'EPSG-Usa AZ',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8592','NAD27 to WGS 84 (39)','Transformation steps are from NAD27 to NAD83(HARN) (38) (code 8586) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1374',NULL,'EPSG-Usa AR',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8593','NAD27 to WGS 84 (40)','Transformation steps are from NAD27 to NAD83(HARN) (3) (code 8462) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2297',NULL,'EPSG-Usa CA n',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8594','NAD27 to WGS 84 (41)','Transformation steps are from NAD27 to NAD83(HARN) (4) (code 8463) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2298',NULL,'EPSG-Usa CA s',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8595','NAD27 to WGS 84 (42)','Transformation steps are from NAD27 to NAD83(HARN) (5) (code 8464) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1376',NULL,'EPSG-Usa CO',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8596','NAD27 to WGS 84 (43)','Transformation steps are from NAD27 to NAD83(HARN) (7) (code 8466) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1379',NULL,'EPSG-Usa FL',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8597','NAD27 to WGS 84 (44)','Transformation steps are from NAD27 to NAD83(HARN) (6) (code 8465) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1380',NULL,'EPSG-Usa GA',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8598','NAD27 to WGS 84 (45)','Transformation steps are from NAD27 to NAD83(HARN) (36) (code 8553) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1382',NULL,'EPSG-Usa IL',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8599','NAD27 to WGS 84 (46)','Transformation steps are from NAD27 to NAD83(HARN) (30) (code 8509) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1383',NULL,'EPSG-Usa IN',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8600','NAD27 to WGS 84 (47)','Transformation steps are from NAD27 to NAD83(HARN) (39) (code 8587) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1384',NULL,'EPSG-Usa IA',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8601','NAD27 to WGS 84 (48)','Transformation steps are from NAD27 to NAD83(HARN) (31) (code 8510) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1385',NULL,'EPSG-Usa KS',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8602','NAD27 to WGS 84 (49)','Transformation steps are from NAD27 to NAD83(HARN) (10) (code 8469) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1386',NULL,'EPSG-Usa KY',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8603','NAD27 to WGS 84 (50)','Transformation steps are from NAD27 to NAD83(HARN) (11) (code 8470) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1387',NULL,'EPSG-Usa LA',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8604','NAD27 to WGS 84 (51)','Transformation steps are from NAD27 to NAD83(HARN) (13) (code 8472) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1388',NULL,'EPSG-Usa ME',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8605','NAD27 to WGS 84 (52)','Transformation steps are from NAD27 to NAD83(HARN) (12) (code 8471) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2377',NULL,'EPSG-Usa DE MD',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8606','NAD27 to WGS 84 (53)','Transformation steps are from NAD27 to NAD83(HARN) (17) (code 8476) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2378',NULL,'EPSG-Usa NewEng',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8607','NAD27 to WGS 84 (54)','Transformation steps are from NAD27 to NAD83(HARN) (14) (code 8473) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1391',NULL,'EPSG-Usa MI',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8608','NAD27 to WGS 84 (55)','Transformation steps are from NAD27 to NAD83(HARN) (40) (code 8588) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1392',NULL,'EPSG-Usa MN',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8609','NAD27 to WGS 84 (56)','Transformation steps are from NAD27 to NAD83(HARN) (15) (code 8474) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1393',NULL,'EPSG-Usa MS',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8610','NAD27 to WGS 84 (57)','Transformation steps are from NAD27 to NAD83(HARN) (41) (code 8589) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1394',NULL,'EPSG-Usa MO',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8611','NAD27 to WGS 84 (58)','Transformation steps are from NAD27 to NAD83(HARN) (8) (code 8467) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2382',NULL,'EPSG-Usa ID MT e',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8612','NAD27 to WGS 84 (59)','Transformation steps are from NAD27 to NAD83(HARN) (9) (code 8468) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2383',NULL,'EPSG-Usa ID MT w',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8613','NAD27 to WGS 84 (60)','Transformation steps are from NAD27 to NAD83(HARN) (16) (code 8475) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1396',NULL,'EPSG-Usa NE',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8614','NAD27 to WGS 84 (61)','Transformation steps are from NAD27 to NAD83(HARN) (32) (code 8511) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1397',NULL,'EPSG-Usa NV',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8615','NAD27 to WGS 84 (62)','Transformation steps are from NAD27 to NAD83(HARN) (37) (code 8554) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1399',NULL,'EPSG-Usa NJ',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8616','NAD27 to WGS 84 (63)','Transformation steps are from NAD27 to NAD83(HARN) (18) (code 8477) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1400',NULL,'EPSG-Usa NM',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8617','NAD27 to WGS 84 (64)','Transformation steps are from NAD27 to NAD83(HARN) (19) (code 8478) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1401',NULL,'EPSG-Usa NY',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8618','NAD27 to WGS 84 (65)','Transformation steps are from NAD27 to NAD83(HARN) (20) (code 8479) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1403',NULL,'EPSG-Usa ND',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8619','NAD27 to WGS 84 (66)','Transformation steps are from NAD27 to NAD83(HARN) (33) (code 8512) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1404',NULL,'EPSG-Usa OH',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8620','NAD27 to WGS 84 (67)','Transformation steps are from NAD27 to NAD83(HARN) (21) (code 8480) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1405',NULL,'EPSG-Usa OK',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8621','NAD27 to WGS 84 (68)','Transformation steps are from NAD27 to NAD83(HARN) (27) (code 8487) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2381',NULL,'EPSG-Usa OR WA',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8622','NAD27 to WGS 84 (69)','Transformation steps are from NAD27 to NAD83(HARN) (22) (code 6739) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1410',NULL,'EPSG-Usa SD',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8623','NAD27 to WGS 84 (70)','Transformation steps are from NAD27 to NAD83(HARN) (23) (code 8483) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1411',NULL,'EPSG-Usa TN',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8624','NAD27 to WGS 84 (71)','Transformation steps are from NAD27 to NAD83(HARN) (24) (code 8484) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2379',NULL,'EPSG-Usa TX e',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8625','NAD27 to WGS 84 (72)','Transformation steps are from NAD27 to NAD83(HARN) (25) (code 8485) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','2380',NULL,'EPSG-Usa TX w',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8626','NAD27 to WGS 84 (73)','Transformation steps are from NAD27 to NAD83(HARN) (34) (code 8513) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1413',NULL,'EPSG-Usa UT',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8627','NAD27 to WGS 84 (74)','Transformation steps are from NAD27 to NAD83(HARN) (26) (code 8486) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1415',NULL,'EPSG-Usa VA',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8628','NAD27 to WGS 84 (75)','Transformation steps are from NAD27 to NAD83(HARN) (35) (code 8514) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1417',NULL,'EPSG-Usa WV',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8629','NAD27 to WGS 84 (76)','Transformation steps are from NAD27 to NAD83(HARN) (28) (code 8488) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1418',NULL,'EPSG-Usa WI',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8630','NAD27 to WGS 84 (77)','Transformation steps are from NAD27 to NAD83(HARN) (29) (code 8489) assuming that NAD83(HARN) is equivalent to WGS 84 within the accuracy of the transformation.','Approximation at the +/- 1m level.','EPSG','4267','EPSG','4326','EPSG','1419',NULL,'EPSG-Usa WY',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8631','Garoua to WGS 84 (1)','','Oil industry.','EPSG','4197','EPSG','4326','EPSG','2590',NULL,'EPSG-Cmr',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8632','Kousseri to WGS 84 (1)','','Oil industry.','EPSG','4198','EPSG','4326','EPSG','2591',NULL,'EPSG-Cmr',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8633','Yoff to WGS 84 (1)','Derived via WGS72. Can be used as a single positon vector transformation with parameter vaues of dX = -37 m, dY = +157 m, dZ = +89.5 m, rX = rY = 0 sec, rZ = 0.554 sec, dS = 0.219 ppm','Military purposes.','EPSG','4310','EPSG','4326','EPSG','1207',NULL,'EPSG-SEN',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8634','Beduaram to WGS 84 (1)','Derived via WGS72BE. Can be used as a single positon vector transformation with parameter vaues of dX = -101 m, dY = -111 m, dZ = +188.9 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm','Oil exploration.','EPSG','4213','EPSG','4326','EPSG','2771',NULL,'ELF-Ner SE',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8635','NAD27 to NAD83(CSRS) (3)','Can be taken as an approximate transformation NAD27 to WGS 84 - see code 8585.','Accuracy 1-2 metres.','EPSG','4267','EPSG','4617','EPSG','2376',NULL,'EPSG-Can AB',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8636','Carthage (Paris) to WGS 84 (1)','','For military purposes.','EPSG','4816','EPSG','4326','EPSG','1618',NULL,'EPSG-Tun',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8637','Lisbon (Lisbon) to WGS 84 (1)','','For applications to an accuracy of 2 metres.','EPSG','4803','EPSG','4326','EPSG','1294',NULL,'EPSG-Prt',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8638','Makassar (Jakarta) to WGS 84 (1)','','Oil exploration.','EPSG','4804','EPSG','4326','EPSG','1316',NULL,'EPSG - Idn Sul SW',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8639','NGO 1948 (Oslo) to WGS 84 (1)','','For military purposes.','EPSG','4817','EPSG','4326','EPSG','1352',NULL,'EPSG-Nor',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8640','Nord Sahara 1959 (Paris) to WGS 84 (1)','','For military purposes.','EPSG','4819','EPSG','4326','EPSG','1026',NULL,'EPSG-Dza',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8641','Segara (Jakarta) to WGS 84 (1)','','Accuracy estimate not available.','EPSG','4820','EPSG','4326','EPSG','1360',NULL,'EPSG-Idn Kal SW',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8642','S-JTSK (Ferro) to WGS 84 (1)','Replaced by S-JTSK (Ferro) to WGS 84 (3) (code 5242) in 2009.','For applications to an accuracy of 1 metre.','EPSG','4818','EPSG','4326','EPSG','1079',NULL,'EPSG-Cze',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8643','Greek to WGS 84 (1)','','5m accuracy','EPSG','4120','EPSG','4326','EPSG','3254',NULL,'EPSG-Grc',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8644','Greek (Athens) to WGS 84 (1)','','5m accuracy.','EPSG','4815','EPSG','4326','EPSG','3254',NULL,'EPSG-Grc',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8645','MGI (Ferro) to WGS 84 (2)','','2m accuracy','EPSG','4805','EPSG','4326','EPSG','1037',NULL,'BEV-Aut',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8646','Manoca 1962 to WGS 84 (1)','Derived via WGS72BE. Can be used as a single positon vector transformation with parameter vaues of dX = -56.7 m, dY = -171.8 m, dZ = -40.6 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm','Oil exploration','EPSG','4193','EPSG','4326','EPSG','2555',NULL,'OGP-Cmr',1); +INSERT INTO "concatenated_operation" VALUES('EPSG','8647','NAD27 to WGS 84 (78)','','Oil industry operations.','EPSG','4267','EPSG','4326','EPSG','2831',NULL,'EPSG-Can E Off',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8648','Lisbon 1890 (Lisbon) to WGS 84 (1)','','Low accuracy applications.','EPSG','4904','EPSG','4326','EPSG','1294',NULL,'EPSG-Prt 5m',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8649','Lisbon 1890 (Lisbon) to WGS 84 (2)','','Medium accuracy applications.','EPSG','4904','EPSG','4326','EPSG','1294',NULL,'EPSG-Prt 1m',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8650','Palestine 1923 to WGS 84 (2)','Can be implemented as a geocentric translation tfm with param. values dX = -229m, dY = -67m, dZ= +277m.','Accuracy: 1m to north and 10m to south of east-west line through Beersheba (31°15''N).','EPSG','4281','EPSG','4326','EPSG','2603',NULL,'SoI-Isr',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8651','Vientiane 1982 to WGS 84 (1)','Can be implemented as a geocentric translation tfm with param. values dX = 42.358m, dY = -124.688m, dZ= -37.366m.','Accuracy: 5m.','EPSG','4676','EPSG','4326','EPSG','1138',NULL,'EPSG-Lao',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8652','Lao 1993 to WGS 84 (1)','Can be implemented as a geocentric translation tfm with param. values dX = 43.933m, dY = -129.593m, dZ= -39.331m.','Accuracy: 5m.','EPSG','4677','EPSG','4326','EPSG','1138',NULL,'EPSG-Lao',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8655','Manoca 1962 to WGS 84 (2)','Derived via WGS 72BE. Can be implemented as a single positon vector transformation with parameter vaues of dX = -56.7 m, dY = -171.8 m, dZ = -38.7 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm.','Oil exploration','EPSG','4193','EPSG','4326','EPSG','2555',NULL,'OGP-Cmr',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8656','Mhast (offshore) to WGS 84 (1)','Derived via WGS 72BE. Can be implemented as a single positon vector transformation with parameter vaues of dX = -255.0 m, dY = -29.0 m, dZ = -103.1 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm.','Oil industry exploration and production between 1979 and 1987.','EPSG','4705','EPSG','4326','EPSG','3180',NULL,'OGP-Ago Cab',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8657','Egypt Gulf of Suez S-650 TL to WGS 84 (1)','Can be implemented as a single positon vector transformation with parameter vaues of dX = -123.0 m, dY = 98.0 m, dZ = 3.9 m, rX = rY = 0 sec, rZ = 0.814 sec, dS = -0.38 ppm. Replaced by Egypt Gulf of Suez S-650 TL to WGS 84 (2) (tfm code 15846).','Oil industry exploration and production between 1980 and 1984.','EPSG','4706','EPSG','4326','EPSG','2341',NULL,'OGP-Egy GoS',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','8659','Kertau (RSO) to WGS 84 (1)','Step 1 is necessary to rescale the grid units before using step 2.','For transformation of MRT68 RSO coordinates.','EPSG','4751','EPSG','4326','EPSG','1309',NULL,'OGP-Mys',0); +INSERT INTO "concatenated_operation" VALUES('EPSG','9103','NAD27 to ITRF2014 (1)','For use with legacy data - see CT code 9104 for alternative for new areas. Note that steps 1 and 2 are documented in the geog2D domain, steps 3 and 4 in the geocentric domain. Steps 3 and 4 may be implemented in one operation using CT code 8970.','Oil and gas exploration and production.','EPSG','4267','EPSG','7789','EPSG','3357',NULL,'IOGP-Usa GoM legacy',0); diff --git a/data/sql/concatenated_operation_step.sql b/data/sql/concatenated_operation_step.sql new file mode 100644 index 00000000..89b5d6d2 --- /dev/null +++ b/data/sql/concatenated_operation_step.sql @@ -0,0 +1,427 @@ +--- This file has been generated by scripts/build_db.py. DO NOT EDIT ! + +INSERT INTO "concatenated_operation_step" VALUES('EPSG','3896',1,'EPSG','3895'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','3896',2,'EPSG','1618'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','3966',1,'EPSG','3913'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','3966',2,'EPSG','3962'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','4435',1,'EPSG','1461'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','4435',2,'EPSG','1495'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','4837',1,'EPSG','1672'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','4837',2,'EPSG','1311'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','5190',1,'EPSG','5134'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','5190',2,'EPSG','5189'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','5192',1,'EPSG','5134'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','5192',2,'EPSG','5191'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','5230',1,'EPSG','1884'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','5230',2,'EPSG','4836'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','5240',1,'EPSG','5238'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','5240',2,'EPSG','5227'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','5242',1,'EPSG','1884'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','5242',2,'EPSG','5239'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','5838',1,'EPSG','1756'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','5838',2,'EPSG','1988'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','6714',1,'EPSG','6712'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','6714',2,'EPSG','6713'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','6739',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','6739',2,'EPSG','1496'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','6874',1,'EPSG','1265'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','6874',2,'EPSG','6873'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7811',1,'EPSG','1763'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7811',2,'EPSG','15958'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7965',1,'EPSG','7963'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7965',2,'EPSG','7964'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7967',1,'EPSG','7963'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7967',2,'EPSG','7966'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7973',1,'EPSG','7972'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7973',2,'EPSG','7969'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7974',1,'EPSG','7972'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7974',2,'EPSG','7970'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7975',1,'EPSG','7972'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7975',2,'EPSG','7971'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7983',1,'EPSG','7982'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7983',2,'EPSG','7977'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7986',1,'EPSG','7980'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7986',2,'EPSG','7984'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7987',1,'EPSG','7980'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7987',2,'EPSG','7984'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','7987',3,'EPSG','7985'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8047',1,'EPSG','1147'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8047',2,'EPSG','1146'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8094',1,'EPSG','1763'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8094',2,'EPSG','1193'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8174',1,'EPSG','1755'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8174',2,'EPSG','1125'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8175',1,'EPSG','1262'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8175',2,'EPSG','1169'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8176',1,'EPSG','1265'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8176',2,'EPSG','1227'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8178',1,'EPSG','1759'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8178',2,'EPSG','1123'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8183',1,'EPSG','1273'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8183',2,'EPSG','1149'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8186',1,'EPSG','1763'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8186',2,'EPSG','1276'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8188',1,'EPSG','1763'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8188',2,'EPSG','1277'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8190',1,'EPSG','1278'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8190',2,'EPSG','1150'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8192',1,'EPSG','1279'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8192',2,'EPSG','1150'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8194',1,'EPSG','1280'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8194',2,'EPSG','1150'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8195',1,'EPSG','1437'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8195',2,'EPSG','1149'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8199',1,'EPSG','1274'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8199',2,'EPSG','1283'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8211',1,'EPSG','1266'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8211',2,'EPSG','1294'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8215',1,'EPSG','1297'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8215',2,'EPSG','1302'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8217',1,'EPSG','1298'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8217',2,'EPSG','1302'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8219',1,'EPSG','1299'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8219',2,'EPSG','1302'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8221',1,'EPSG','1300'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8221',2,'EPSG','1302'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8223',1,'EPSG','1301'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8223',2,'EPSG','1302'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8234',1,'EPSG','1309'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8234',2,'EPSG','1149'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8236',1,'EPSG','1310'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8236',2,'EPSG','1149'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8243',1,'EPSG','1312'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8243',2,'EPSG','1188'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8245',1,'EPSG','1313'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8245',2,'EPSG','1188'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8263',1,'EPSG','1757'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8263',2,'EPSG','1306'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8363',1,'EPSG','8361'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8363',2,'EPSG','8362'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8386',1,'EPSG','1454'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8386',2,'EPSG','1188'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8388',1,'EPSG','1455'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8388',2,'EPSG','1188'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8390',1,'EPSG','1456'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8390',2,'EPSG','1188'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8392',1,'EPSG','1457'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8392',2,'EPSG','1188'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8394',1,'EPSG','1451'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8394',2,'EPSG','1188'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8396',1,'EPSG','1458'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8396',2,'EPSG','1150'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8398',1,'EPSG','1459'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8398',2,'EPSG','1150'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8400',1,'EPSG','1460'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8400',2,'EPSG','1150'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8402',1,'EPSG','1461'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8402',2,'EPSG','1188'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8404',1,'EPSG','1462'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8404',2,'EPSG','1188'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8406',1,'EPSG','1463'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8406',2,'EPSG','1188'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8408',1,'EPSG','1464'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8408',2,'EPSG','1150'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8418',1,'EPSG','1472'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8418',2,'EPSG','1473'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8419',1,'EPSG','1599'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8419',2,'EPSG','1473'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8420',1,'EPSG','1600'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8420',2,'EPSG','1473'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8421',1,'EPSG','1601'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8421',2,'EPSG','1473'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8422',1,'EPSG','1602'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8422',2,'EPSG','1473'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8442',1,'EPSG','8365'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8442',2,'EPSG','8364'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8443',1,'EPSG','8364'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8443',2,'EPSG','8367'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8453',1,'EPSG','1506'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8453',2,'EPSG','1150'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8454',1,'EPSG','1507'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8454',2,'EPSG','1150'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8457',1,'EPSG','1509'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8457',2,'EPSG','1511'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8460',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8460',2,'EPSG','1474'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8461',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8461',2,'EPSG','1475'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8462',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8462',2,'EPSG','1476'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8463',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8463',2,'EPSG','1477'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8464',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8464',2,'EPSG','1478'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8465',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8465',2,'EPSG','1479'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8466',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8466',2,'EPSG','1480'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8467',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8467',2,'EPSG','1481'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8468',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8468',2,'EPSG','1482'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8469',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8469',2,'EPSG','1483'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8470',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8470',2,'EPSG','1484'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8471',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8471',2,'EPSG','1485'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8472',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8472',2,'EPSG','1486'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8473',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8473',2,'EPSG','1487'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8474',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8474',2,'EPSG','1488'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8475',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8475',2,'EPSG','1489'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8476',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8476',2,'EPSG','1490'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8477',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8477',2,'EPSG','1491'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8478',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8478',2,'EPSG','1492'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8479',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8479',2,'EPSG','1493'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8480',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8480',2,'EPSG','1494'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8481',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8481',2,'EPSG','1495'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8482',1,'EPSG','1747'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8482',2,'EPSG','1496'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8483',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8483',2,'EPSG','1497'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8484',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8484',2,'EPSG','1498'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8485',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8485',2,'EPSG','1499'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8486',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8486',2,'EPSG','1500'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8487',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8487',2,'EPSG','1501'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8488',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8488',2,'EPSG','1502'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8489',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8489',2,'EPSG','1503'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8496',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8496',2,'EPSG','1515'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8497',1,'EPSG','1243'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8497',2,'EPSG','1515'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8508',1,'EPSG','1454'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8508',2,'EPSG','1520'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8509',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8509',2,'EPSG','1521'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8510',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8510',2,'EPSG','1522'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8511',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8511',2,'EPSG','1523'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8512',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8512',2,'EPSG','1524'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8513',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8513',2,'EPSG','1525'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8514',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8514',2,'EPSG','1526'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8517',1,'EPSG','1528'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8517',2,'EPSG','1527'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8530',1,'EPSG','1539'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8530',2,'EPSG','1540'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8532',1,'EPSG','1541'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8532',2,'EPSG','1240'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8537',1,'EPSG','1545'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8537',2,'EPSG','1237'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8553',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8553',2,'EPSG','1553'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8554',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8554',2,'EPSG','1554'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8560',1,'EPSG','1559'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8560',2,'EPSG','1150'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8562',1,'EPSG','1560'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8562',2,'EPSG','1240'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8563',1,'EPSG','1568'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8563',2,'EPSG','1565'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8564',1,'EPSG','1576'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8564',2,'EPSG','1473'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8565',1,'EPSG','1574'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8565',2,'EPSG','1188'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8566',1,'EPSG','1572'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8566',2,'EPSG','1188'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8568',1,'EPSG','1584'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8568',2,'EPSG','1240'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8569',1,'EPSG','1588'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8569',2,'EPSG','1149'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8571',1,'EPSG','1570'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8571',2,'EPSG','1240'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8572',1,'EPSG','1571'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8572',2,'EPSG','1149'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8573',1,'EPSG','1591'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8573',2,'EPSG','1149'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8574',1,'EPSG','1578'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8574',2,'EPSG','1580'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8575',1,'EPSG','1579'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8575',2,'EPSG','1580'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8576',1,'EPSG','1594'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8576',2,'EPSG','1150'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8577',1,'EPSG','1595'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8577',2,'EPSG','1150'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8578',1,'EPSG','1596'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8578',2,'EPSG','1150'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8579',1,'EPSG','1593'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8579',2,'EPSG','1150'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8580',1,'EPSG','1611'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8580',2,'EPSG','1149'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8581',1,'EPSG','1616'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8581',2,'EPSG','1237'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8582',1,'EPSG','1454'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8582',2,'EPSG','1741'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8583',1,'EPSG','1461'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8583',2,'EPSG','1731'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8584',1,'EPSG','1313'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8584',2,'EPSG','1752'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8585',1,'EPSG','1313'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8585',2,'EPSG','1702'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8586',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8586',2,'EPSG','1704'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8587',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8587',2,'EPSG','1705'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8588',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8588',2,'EPSG','1706'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8589',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8589',2,'EPSG','1707'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8590',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8590',2,'EPSG','1717'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8591',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8591',2,'EPSG','1728'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8592',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8592',2,'EPSG','1708'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8593',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8593',2,'EPSG','1739'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8594',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8594',2,'EPSG','1750'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8595',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8595',2,'EPSG','1712'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8596',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8596',2,'EPSG','1714'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8597',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8597',2,'EPSG','1713'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8598',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8598',2,'EPSG','1748'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8599',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8599',2,'EPSG','1742'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8600',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8600',2,'EPSG','1709'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8601',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8601',2,'EPSG','1743'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8602',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8602',2,'EPSG','1718'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8603',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8603',2,'EPSG','1719'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8604',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8604',2,'EPSG','1721'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8605',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8605',2,'EPSG','1720'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8606',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8606',2,'EPSG','1725'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8607',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8607',2,'EPSG','1722'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8608',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8608',2,'EPSG','1710'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8609',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8609',2,'EPSG','1723'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8610',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8610',2,'EPSG','1711'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8611',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8611',2,'EPSG','1715'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8612',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8612',2,'EPSG','1716'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8613',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8613',2,'EPSG','1724'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8614',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8614',2,'EPSG','1744'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8615',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8615',2,'EPSG','1749'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8616',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8616',2,'EPSG','1726'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8617',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8617',2,'EPSG','1727'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8618',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8618',2,'EPSG','1729'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8619',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8619',2,'EPSG','1745'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8620',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8620',2,'EPSG','1730'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8621',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8621',2,'EPSG','1737'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8622',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8622',2,'EPSG','1732'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8623',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8623',2,'EPSG','1733'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8624',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8624',2,'EPSG','1734'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8625',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8625',2,'EPSG','1735'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8626',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8626',2,'EPSG','1746'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8627',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8627',2,'EPSG','1736'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8628',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8628',2,'EPSG','1747'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8629',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8629',2,'EPSG','1738'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8630',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8630',2,'EPSG','1740'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8631',1,'EPSG','1805'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8631',2,'EPSG','1240'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8632',1,'EPSG','1806'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8632',2,'EPSG','1240'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8633',1,'EPSG','1828'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8633',2,'EPSG','1238'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8634',1,'EPSG','1839'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8634',2,'EPSG','1240'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8635',1,'EPSG','1313'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8635',2,'EPSG','1849'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8636',1,'EPSG','1881'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8636',2,'EPSG','1130'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8637',1,'EPSG','1756'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8637',2,'EPSG','1944'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8638',1,'EPSG','1260'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8638',2,'EPSG','1837'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8639',1,'EPSG','1762'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8639',2,'EPSG','1654'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8640',1,'EPSG','1882'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8640',2,'EPSG','1253'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8641',1,'EPSG','1883'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8641',2,'EPSG','1897'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8642',1,'EPSG','1884'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8642',2,'EPSG','1623'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8643',1,'EPSG','1891'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8643',2,'EPSG','1272'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8644',1,'EPSG','1761'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8644',2,'EPSG','1891'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8644',3,'EPSG','1272'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8645',1,'EPSG','1757'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8645',2,'EPSG','1618'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8646',1,'EPSG','1902'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8646',2,'EPSG','1240'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8647',1,'EPSG','1313'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8647',2,'EPSG','1950'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8647',3,'EPSG','1946'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8648',1,'EPSG','1991'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8648',2,'EPSG','1986'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8649',1,'EPSG','1991'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8649',2,'EPSG','1990'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8650',1,'EPSG','1071'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8650',2,'EPSG','1073'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8651',1,'EPSG','1063'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8651',2,'EPSG','1065'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8652',1,'EPSG','1064'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8652',2,'EPSG','1065'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8655',1,'EPSG','1902'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8655',2,'EPSG','1240'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8656',1,'EPSG','15790'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8656',2,'EPSG','1240'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8657',1,'EPSG','15792'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8657',2,'EPSG','1240'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8659',1,'EPSG','15896'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','8659',2,'EPSG','1158'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','9103',1,'EPSG','1241'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','9103',2,'EPSG','8971'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','9103',3,'EPSG','7807'); +INSERT INTO "concatenated_operation_step" VALUES('EPSG','9103',4,'EPSG','7790'); diff --git a/data/sql/grid_transformation.sql b/data/sql/grid_transformation.sql index 38d8ae0a..486be372 100644 --- a/data/sql/grid_transformation.sql +++ b/data/sql/grid_transformation.sql @@ -261,6 +261,19 @@ INSERT INTO "grid_transformation" VALUES('EPSG','8445','GDA94 to GDA2020 (5)','S INSERT INTO "grid_transformation" VALUES('EPSG','8446','GDA94 to GDA2020 (3)','Gives identical results to Helmert transformation GDA94 to GDA2020 (1) (code 8048). See GDA94 to GDA2020 (2) (code 8447) for alternative with local distortion modelling included. GDA2020 Technical Manual and fact sheet T1 give guidance on which to use.','Conformal transformation of GDA94 coordinates that have been derived through GNSS CORS.','EPSG','9615','NTv2','EPSG','4283','EPSG','7844','EPSG','2575',0.05,'EPSG','8656','Latitude and longitude difference file','GDA94_GDA2020_conformal.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ICSM-Aus NTv2 Conf',0); INSERT INTO "grid_transformation" VALUES('EPSG','8447','GDA94 to GDA2020 (2)','See GDA94 to GDA2020 (1) or (3) (codes 8048 and 8446) for alternative conformal-only transformation without local distortion modelling. GDA2020 Technical Manual and fact sheet T1 give guidance on which to use.','Transformation of GDA94 coordinates when localised distortion needs to be taken into account, e.g. if GDA94 coordinates were derived survey control monuments.','EPSG','9615','NTv2','EPSG','4283','EPSG','7844','EPSG','2575',0.05,'EPSG','8656','Latitude and longitude difference file','GDA94_GDA2020_conformal_and_distortion.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'ICSM-Aus Conf and Dist',0); INSERT INTO "grid_transformation" VALUES('EPSG','8451','GDA2020 to AHD height (1)','Uncertainties given in accompanying file AUSGeoid2020_windows_binary_uncertainty.gsb','Derivation of gravity-related heights from GNSS observations.','EPSG','1048','Geographic3D to GravityRelatedHeight (Ausgeoid v2)','EPSG','7843','EPSG','5711','EPSG','4493',0.03,'EPSG','8666','Geoid (height correction) model file','AUSGeoid2020_windows_binary.gsb',NULL,NULL,NULL,NULL,NULL,NULL,'GA-Aus 2020',0); +INSERT INTO "grid_transformation" VALUES('EPSG','8546','St. George Island to NAD83 (2)','Uses NADCON5 method which expects longitudes positive east in range 0-360°; EPSG source and target CRSs have longitudes positive east in range -180° to +180°.','Spatial referencing.','EPSG','1074','NADCON5 (2D)','EPSG','4138','EPSG','4269','EPSG','1331',0.15,'EPSG','8657','Latitude difference file','nadcon5.sg1952.nad83_1986.stgeorge.lat.trn.20160901.b','EPSG','8658','Longitude difference file','nadcon5.sg1952.nad83_1986.stgeorge.lon.trn.20160901.b',NULL,NULL,'NGS-Usa AK StG Nadcon5',0); +INSERT INTO "grid_transformation" VALUES('EPSG','8547','St. Lawrence Island to NAD83 (2)','Uses NADCON5 method which expects longitudes positive east in range 0-360°; EPSG source and target CRSs have longitudes positive east in range -180° to +180°.','Spatial referencing.','EPSG','1074','NADCON5 (2D)','EPSG','4136','EPSG','4269','EPSG','1332',0.5,'EPSG','8657','Latitude difference file','nadcon5.sl1952.nad83_1986.stlawrence.lat.trn.20160901.b','EPSG','8658','Longitude difference file','nadcon5.sl1952.nad83_1986.stlawrence.lon.trn.20160901.b',NULL,NULL,'NGS-Usa AK StL Nadcon5',0); +INSERT INTO "grid_transformation" VALUES('EPSG','8548','St. Paul Island to NAD83 (2)','Uses NADCON5 method which expects longitudes positive east in range 0-360°; EPSG source and target CRSs have longitudes positive east in range -180° to +180°.','Spatial referencing.','EPSG','1074','NADCON5 (2D)','EPSG','4137','EPSG','4269','EPSG','1333',0.5,'EPSG','8657','Latitude difference file','nadcon5.sp1952.nad83_1986.stpaul.lat.trn.20160901.b','EPSG','8658','Longitude difference file','nadcon5.sp1952.nad83_1986.stpaul.lon.trn.20160901.b',NULL,NULL,'NGS-Usa AK StP Nadcon5',0); +INSERT INTO "grid_transformation" VALUES('EPSG','8549','NAD27 to NAD83 (8)','Uses NADCON5 method which expects longitudes positive east in range 0-360°; source and target CRSs have longitudes positive east in range -180° to +180°. Accuracy at 67% confidence level is 0.5m onshore, 5m nearshore and undetermined farther offshore.','Spatial referencing.','EPSG','1074','NADCON5 (2D)','EPSG','4267','EPSG','4269','EPSG','1330',0.5,'EPSG','8657','Latitude difference file','nadcon5.nad27.nad83_1986.alaska.lat.trn.20160901.b','EPSG','8658','Longitude difference file','nadcon5.nad27.nad83_1986.alaska.lon.trn.20160901.b',NULL,NULL,'NGS-Usa AK Nadcon5',0); +INSERT INTO "grid_transformation" VALUES('EPSG','8550','NAD83 to NAD83(HARN) (48)','Uses NADCON5 method which expects longitudes positive east in range 0-360°; EPSG source and target CRSs have longitudes positive east in range -180° to +180°.','Spatial referencing.','EPSG','1074','NADCON5 (2D)','EPSG','4269','EPSG','4152','EPSG','2373',0.15,'EPSG','8657','Latitude difference file','nadcon5.nad83_1986.nad83_1992.alaska.lat.trn.20160901.b','EPSG','8658','Longitude difference file','nadcon5.nad83_1986.nad83_1992.alaska.lon.trn.20160901.b',NULL,NULL,'NGS-Usa AK Nadcon5',0); +INSERT INTO "grid_transformation" VALUES('EPSG','8555','NAD27 to NAD83 (7)','Uses NADCON5 method which expects longitudes positive east in range 0-360°; source and target CRSs have longitudes positive east in range -180° to +180°. Accuracy at 67% confidence level is 0.15m onshore, 1m nearshore and undetermined farther offshore.','Spatial referencing.','EPSG','1074','NADCON5 (2D)','EPSG','4267','EPSG','4269','EPSG','4516',0.15,'EPSG','8657','Latitude difference file','nadcon5.nad27.nad83_1986.conus.lat.trn.20160901.b','EPSG','8658','Longitude difference file','nadcon5.nad27.nad83_1986.conus.lon.trn.20160901.b',NULL,NULL,'NGS-Usa Conus Nadcon5',0); +INSERT INTO "grid_transformation" VALUES('EPSG','8556','NAD83 to NAD83(HARN) (47)','Uses NADCON5 method which expects longitudes positive east in range 0-360°; EPSG source and target CRSs have longitudes positive east in range -180° to +180°.','Spatial referencing.','EPSG','1074','NADCON5 (2D)','EPSG','4269','EPSG','4152','EPSG','4516',0.05,'EPSG','8657','Latitude difference file','nadcon5.nad83_1986.nad83_harn.conus.lat.trn.20160901.b','EPSG','8658','Longitude difference file','nadcon5.nad83_1986.nad83_harn.conus.lon.trn.20160901.b',NULL,NULL,'NGS-Usa Conus Nadcon5',0); +INSERT INTO "grid_transformation" VALUES('EPSG','8561','Old Hawaiian to NAD83 (2)','Uses NADCON5 method which expects longitudes positive east in range 0-360°; EPSG source and target CRSs have longitudes positive east in range -180° to +180°.','Spatial referencing.','EPSG','1074','NADCON5 (2D)','EPSG','4135','EPSG','4269','EPSG','1334',0.2,'EPSG','8657','Latitude difference file','nadcon5.ohd.nad83_1986.hawaii.lat.trn.20160901.b','EPSG','8658','Longitude difference file','nadcon5.ohd.nad83_1986.hawaii.lon.trn.20160901.b',NULL,NULL,'NGS-Usa HI Nadcon5',0); +INSERT INTO "grid_transformation" VALUES('EPSG','8660','NAD83 to NAD83(HARN) (49)','Uses NADCON5 method which expects longitudes positive east in range 0-360°; EPSG source and target CRSs have longitudes positive east in range -180° to +180°.','Spatial referencing.','EPSG','1074','NADCON5 (2D)','EPSG','4269','EPSG','4152','EPSG','1334',0.05,'EPSG','8657','Latitude difference file','nadcon5.nad83_1986.nad83_1993.hawaii.lat.trn.20160901.b','EPSG','8658','Longitude difference file','nadcon5.nad83_1986.nad83_1993.hawaii.lon.trn.20160901.b',NULL,NULL,'NGS-Usa HI Nadcon5',0); +INSERT INTO "grid_transformation" VALUES('EPSG','8662','American Samoa 1962 to NAD83(HARN) (3)','Uses NADCON5 method which expects longitudes positive east in range 0-360°; EPSG source and target CRSs have longitudes positive east in range -180° to +180°.','Spatial referencing.','EPSG','1074','NADCON5 (2D)','EPSG','4169','EPSG','4152','EPSG','3109',5.0,'EPSG','8657','Latitude difference file','nadcon5.as62.nad83_1993.as.lat.trn.20160901.b','EPSG','8658','Longitude difference file','nadcon5.as62.nad83_1993.as.lon.trn.20160901.b',NULL,NULL,'NGS-Asm Nadcon5',0); +INSERT INTO "grid_transformation" VALUES('EPSG','8665','Guam 1963 to NAD83(HARN) (2)','Uses NADCON5 method which expects longitudes positive east in range 0-360°; EPSG source and target CRSs have longitudes positive east in range -180° to +180°.','Spatial referencing.','EPSG','1074','NADCON5 (2D)','EPSG','4675','EPSG','4152','EPSG','4525',5.0,'EPSG','8657','Latitude difference file','nadcon5.gu63.nad83_1993.guamcnmi.lat.trn.20160901.b','EPSG','8658','Longitude difference file','nadcon5.gu63.nad83_1993.guamcnmi.lon.trn.20160901.b',NULL,NULL,'NGS-Gum NADCON5',0); +INSERT INTO "grid_transformation" VALUES('EPSG','8668','Puerto Rico to NAD83 (2)','Uses NADCON5 method which expects longitudes positive east in range 0-360°; EPSG source and target CRSs have longitudes positive east in range -180° to +180°.','Spatial referencing.','EPSG','1074','NADCON5 (2D)','EPSG','4139','EPSG','4269','EPSG','3634',0.15,'EPSG','8657','Latitude difference file','nadcon5.pr40.nad83_1986.prvi.lat.trn.20160901.b','EPSG','8658','Longitude difference file','nadcon5.pr40.nad83_1986.prvi.lon.trn.20160901.b',NULL,NULL,'NGS-Pri Vir Nadcon5',0); +INSERT INTO "grid_transformation" VALUES('EPSG','8669','NAD83 to NAD83(HARN) (50)','Uses NADCON5 method which expects longitudes positive east in range 0-360°; EPSG source and target CRSs have longitudes positive east in range -180° to +180°.','Spatial referencing.','EPSG','1074','NADCON5 (2D)','EPSG','4269','EPSG','4152','EPSG','3634',0.15,'EPSG','8657','Latitude difference file','nadcon5.nad83_1986.nad83_1993.prvi.lat.trn.20160901.b','EPSG','8658','Longitude difference file','nadcon5.nad83_1986.nad83_1993.prvi.lon.trn.20160901.b',NULL,NULL,'NGS-Pri Vir Nadcon5',0); INSERT INTO "grid_transformation" VALUES('EPSG','8676','Canada velocity grid v6','','Change of coordinate epoch for points referenced to NAD83(CSRS)v6.','EPSG','1070','Point motion by grid (Canada NTv2_Vel)','EPSG','8251','EPSG','8251','EPSG','1061',0.01,'EPSG','1050','Point motion velocity grid file','cvg60.cvb',NULL,NULL,NULL,NULL,NULL,NULL,'NRC-Can cvg6.0',0); INSERT INTO "grid_transformation" VALUES('EPSG','8885','RGF93 to NGF IGN69 height (3)','Replaces RGF93 to NGF IGN69 height (2) (code 8371). Accuracy at each 0.0333333333333° in longitude and 0.025° in latitude grid node is given within the geoid model file. Recommended interpolation method is bilinear.','Derivation of gravity-related heights from GPS observations.','EPSG','1073','Geographic3D to GravityRelatedHeight (IGN2009)','EPSG','4965','EPSG','5720','EPSG','1326',0.01,'EPSG','8666','Geoid (height correction) model file','RAF18.tac',NULL,NULL,NULL,NULL,NULL,NULL,'IGN Fra 18',0); INSERT INTO "grid_transformation" VALUES('EPSG','9105','ATS77 to NAD83 (1)','','Spatial referencing.','EPSG','9615','NTv2','EPSG','4122','EPSG','4269','EPSG','2313',0.5,'EPSG','8656','Latitude and longitude difference file','GS7783.GSB',NULL,NULL,NULL,NULL,NULL,NULL,'NSGC-Can NS',0); diff --git a/data/sql/ignf.sql b/data/sql/ignf.sql index 7bb3cffb..1abdd5af 100644 --- a/data/sql/ignf.sql +++ b/data/sql/ignf.sql @@ -3109,19 +3109,51 @@ INSERT INTO "helmert_transformation" VALUES('PROJ','IGNF_RGF93GDD_TO_EPSG_4326', --- Concatenated operations -INSERT INTO "concatenated_operation" VALUES('IGNF','TSG62_NTFPGRAD_TO_ED50G','Nouvelle Triangulation Francaise Paris grades to ED50G',NULL,'NATIONALE','IGNF','NTFPGRAD','IGNF','ED50G','IGNF','91',NULL,'IGNF','TSG1240','IGNF','TSG62_NTFG_TO_ED50G',NULL,NULL,'1.0.0',0); -INSERT INTO "concatenated_operation" VALUES('IGNF','TSG62_NTFP_TO_ED50G','Nouvelle Triangulation Francaise Paris grades to ED50G',NULL,'NATIONALE','IGNF','NTFP','IGNF','ED50G','IGNF','91',NULL,'IGNF','TSG1240_IGNF_NTFP_TO_IGNF_NTFG','IGNF','TSG62_NTFG_TO_ED50G',NULL,NULL,'1.0.0',0); -INSERT INTO "concatenated_operation" VALUES('IGNF','TSG62_NTFPGRAD_TO_ED50GEO','Nouvelle Triangulation Francaise Paris grades to ED50GEO',NULL,'NATIONALE','IGNF','NTFPGRAD','IGNF','ED50GEO','IGNF','91',NULL,'IGNF','TSG1240','IGNF','TSG62_NTFG_TO_ED50GEO',NULL,NULL,'1.0.0',0); -INSERT INTO "concatenated_operation" VALUES('IGNF','TSG62_NTFP_TO_ED50GEO','Nouvelle Triangulation Francaise Paris grades to ED50GEO',NULL,'NATIONALE','IGNF','NTFP','IGNF','ED50GEO','IGNF','91',NULL,'IGNF','TSG1240_IGNF_NTFP_TO_IGNF_NTFG','IGNF','TSG62_NTFG_TO_ED50GEO',NULL,NULL,'1.0.0',0); -INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84GEODD','Nouvelle Triangulation Francaise Paris grades to WGS84GEODD',NULL,'NATIONALE','IGNF','NTFPGRAD','IGNF','WGS84GEODD','IGNF','91',NULL,'IGNF','TSG1240','IGNF','TSG399_NTFG_TO_WGS84GEODD',NULL,NULL,'1.0.0',0); -INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFP_TO_WGS84GEODD','Nouvelle Triangulation Francaise Paris grades to WGS84GEODD',NULL,'NATIONALE','IGNF','NTFP','IGNF','WGS84GEODD','IGNF','91',NULL,'IGNF','TSG1240_IGNF_NTFP_TO_IGNF_NTFG','IGNF','TSG399_NTFG_TO_WGS84GEODD',NULL,NULL,'1.0.0',0); -INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84GDD','Nouvelle Triangulation Francaise Paris grades to WGS84GDD',NULL,'NATIONALE','IGNF','NTFPGRAD','IGNF','WGS84GDD','IGNF','91',NULL,'IGNF','TSG1240','IGNF','TSG399_NTFG_TO_WGS84GDD',NULL,NULL,'1.0.0',0); -INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFP_TO_WGS84GDD','Nouvelle Triangulation Francaise Paris grades to WGS84GDD',NULL,'NATIONALE','IGNF','NTFP','IGNF','WGS84GDD','IGNF','91',NULL,'IGNF','TSG1240_IGNF_NTFP_TO_IGNF_NTFG','IGNF','TSG399_NTFG_TO_WGS84GDD',NULL,NULL,'1.0.0',0); -INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84G','Nouvelle Triangulation Francaise Paris grades to WGS84G',NULL,'NATIONALE','IGNF','NTFPGRAD','IGNF','WGS84G','IGNF','91',NULL,'IGNF','TSG1240','IGNF','TSG399_NTFG_TO_WGS84G',NULL,NULL,'1.0.0',0); -INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFP_TO_WGS84G','Nouvelle Triangulation Francaise Paris grades to WGS84G',NULL,'NATIONALE','IGNF','NTFP','IGNF','WGS84G','IGNF','91',NULL,'IGNF','TSG1240_IGNF_NTFP_TO_IGNF_NTFG','IGNF','TSG399_NTFG_TO_WGS84G',NULL,NULL,'1.0.0',0); -INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFPGRAD_TO_4326','Nouvelle Triangulation Francaise Paris grades to 4326',NULL,'NATIONALE','IGNF','NTFPGRAD','EPSG','4326','IGNF','91',NULL,'IGNF','TSG1240','IGNF','TSG399_NTFG_TO_4326',NULL,NULL,'1.0.0',0); -INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFP_TO_4326','Nouvelle Triangulation Francaise Paris grades to 4326',NULL,'NATIONALE','IGNF','NTFP','EPSG','4326','IGNF','91',NULL,'IGNF','TSG1240_IGNF_NTFP_TO_IGNF_NTFG','IGNF','TSG399_NTFG_TO_4326',NULL,NULL,'1.0.0',0); -INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84GEO','Nouvelle Triangulation Francaise Paris grades to WGS84GEO',NULL,'NATIONALE','IGNF','NTFPGRAD','IGNF','WGS84GEO','IGNF','91',NULL,'IGNF','TSG1240','IGNF','TSG399_NTFG_TO_WGS84GEO',NULL,NULL,'1.0.0',0); -INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFP_TO_WGS84GEO','Nouvelle Triangulation Francaise Paris grades to WGS84GEO',NULL,'NATIONALE','IGNF','NTFP','IGNF','WGS84GEO','IGNF','91',NULL,'IGNF','TSG1240_IGNF_NTFP_TO_IGNF_NTFG','IGNF','TSG399_NTFG_TO_WGS84GEO',NULL,NULL,'1.0.0',0); -INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84RRAFGEO','Nouvelle Triangulation Francaise Paris grades to WGS84RRAFGEO',NULL,'NATIONALE','IGNF','NTFPGRAD','IGNF','WGS84RRAFGEO','IGNF','91',NULL,'IGNF','TSG1240','IGNF','TSG399_NTFG_TO_WGS84RRAFGEO',NULL,NULL,'1.0.0',0); -INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFP_TO_WGS84RRAFGEO','Nouvelle Triangulation Francaise Paris grades to WGS84RRAFGEO',NULL,'NATIONALE','IGNF','NTFP','IGNF','WGS84RRAFGEO','IGNF','91',NULL,'IGNF','TSG1240_IGNF_NTFP_TO_IGNF_NTFG','IGNF','TSG399_NTFG_TO_WGS84RRAFGEO',NULL,NULL,'1.0.0',0); +INSERT INTO "concatenated_operation" VALUES('IGNF','TSG62_NTFPGRAD_TO_ED50G','Nouvelle Triangulation Francaise Paris grades to ED50G',NULL,'NATIONALE','IGNF','NTFPGRAD','IGNF','ED50G','IGNF','91',NULL,'1.0.0',0); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG62_NTFPGRAD_TO_ED50G',1,'IGNF','TSG1240'); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG62_NTFPGRAD_TO_ED50G',2,'IGNF','TSG62_NTFG_TO_ED50G'); +INSERT INTO "concatenated_operation" VALUES('IGNF','TSG62_NTFP_TO_ED50G','Nouvelle Triangulation Francaise Paris grades to ED50G',NULL,'NATIONALE','IGNF','NTFP','IGNF','ED50G','IGNF','91',NULL,'1.0.0',0); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG62_NTFP_TO_ED50G',1,'IGNF','TSG1240_IGNF_NTFP_TO_IGNF_NTFG'); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG62_NTFP_TO_ED50G',2,'IGNF','TSG62_NTFG_TO_ED50G'); +INSERT INTO "concatenated_operation" VALUES('IGNF','TSG62_NTFPGRAD_TO_ED50GEO','Nouvelle Triangulation Francaise Paris grades to ED50GEO',NULL,'NATIONALE','IGNF','NTFPGRAD','IGNF','ED50GEO','IGNF','91',NULL,'1.0.0',0); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG62_NTFPGRAD_TO_ED50GEO',1,'IGNF','TSG1240'); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG62_NTFPGRAD_TO_ED50GEO',2,'IGNF','TSG62_NTFG_TO_ED50GEO'); +INSERT INTO "concatenated_operation" VALUES('IGNF','TSG62_NTFP_TO_ED50GEO','Nouvelle Triangulation Francaise Paris grades to ED50GEO',NULL,'NATIONALE','IGNF','NTFP','IGNF','ED50GEO','IGNF','91',NULL,'1.0.0',0); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG62_NTFP_TO_ED50GEO',1,'IGNF','TSG1240_IGNF_NTFP_TO_IGNF_NTFG'); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG62_NTFP_TO_ED50GEO',2,'IGNF','TSG62_NTFG_TO_ED50GEO'); +INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84GEODD','Nouvelle Triangulation Francaise Paris grades to WGS84GEODD',NULL,'NATIONALE','IGNF','NTFPGRAD','IGNF','WGS84GEODD','IGNF','91',NULL,'1.0.0',0); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84GEODD',1,'IGNF','TSG1240'); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84GEODD',2,'IGNF','TSG399_NTFG_TO_WGS84GEODD'); +INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFP_TO_WGS84GEODD','Nouvelle Triangulation Francaise Paris grades to WGS84GEODD',NULL,'NATIONALE','IGNF','NTFP','IGNF','WGS84GEODD','IGNF','91',NULL,'1.0.0',0); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFP_TO_WGS84GEODD',1,'IGNF','TSG1240_IGNF_NTFP_TO_IGNF_NTFG'); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFP_TO_WGS84GEODD',2,'IGNF','TSG399_NTFG_TO_WGS84GEODD'); +INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84GDD','Nouvelle Triangulation Francaise Paris grades to WGS84GDD',NULL,'NATIONALE','IGNF','NTFPGRAD','IGNF','WGS84GDD','IGNF','91',NULL,'1.0.0',0); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84GDD',1,'IGNF','TSG1240'); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84GDD',2,'IGNF','TSG399_NTFG_TO_WGS84GDD'); +INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFP_TO_WGS84GDD','Nouvelle Triangulation Francaise Paris grades to WGS84GDD',NULL,'NATIONALE','IGNF','NTFP','IGNF','WGS84GDD','IGNF','91',NULL,'1.0.0',0); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFP_TO_WGS84GDD',1,'IGNF','TSG1240_IGNF_NTFP_TO_IGNF_NTFG'); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFP_TO_WGS84GDD',2,'IGNF','TSG399_NTFG_TO_WGS84GDD'); +INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84G','Nouvelle Triangulation Francaise Paris grades to WGS84G',NULL,'NATIONALE','IGNF','NTFPGRAD','IGNF','WGS84G','IGNF','91',NULL,'1.0.0',0); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84G',1,'IGNF','TSG1240'); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84G',2,'IGNF','TSG399_NTFG_TO_WGS84G'); +INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFP_TO_WGS84G','Nouvelle Triangulation Francaise Paris grades to WGS84G',NULL,'NATIONALE','IGNF','NTFP','IGNF','WGS84G','IGNF','91',NULL,'1.0.0',0); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFP_TO_WGS84G',1,'IGNF','TSG1240_IGNF_NTFP_TO_IGNF_NTFG'); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFP_TO_WGS84G',2,'IGNF','TSG399_NTFG_TO_WGS84G'); +INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFPGRAD_TO_4326','Nouvelle Triangulation Francaise Paris grades to 4326',NULL,'NATIONALE','IGNF','NTFPGRAD','EPSG','4326','IGNF','91',NULL,'1.0.0',0); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFPGRAD_TO_4326',1,'IGNF','TSG1240'); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFPGRAD_TO_4326',2,'IGNF','TSG399_NTFG_TO_4326'); +INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFP_TO_4326','Nouvelle Triangulation Francaise Paris grades to 4326',NULL,'NATIONALE','IGNF','NTFP','EPSG','4326','IGNF','91',NULL,'1.0.0',0); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFP_TO_4326',1,'IGNF','TSG1240_IGNF_NTFP_TO_IGNF_NTFG'); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFP_TO_4326',2,'IGNF','TSG399_NTFG_TO_4326'); +INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84GEO','Nouvelle Triangulation Francaise Paris grades to WGS84GEO',NULL,'NATIONALE','IGNF','NTFPGRAD','IGNF','WGS84GEO','IGNF','91',NULL,'1.0.0',0); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84GEO',1,'IGNF','TSG1240'); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84GEO',2,'IGNF','TSG399_NTFG_TO_WGS84GEO'); +INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFP_TO_WGS84GEO','Nouvelle Triangulation Francaise Paris grades to WGS84GEO',NULL,'NATIONALE','IGNF','NTFP','IGNF','WGS84GEO','IGNF','91',NULL,'1.0.0',0); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFP_TO_WGS84GEO',1,'IGNF','TSG1240_IGNF_NTFP_TO_IGNF_NTFG'); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFP_TO_WGS84GEO',2,'IGNF','TSG399_NTFG_TO_WGS84GEO'); +INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84RRAFGEO','Nouvelle Triangulation Francaise Paris grades to WGS84RRAFGEO',NULL,'NATIONALE','IGNF','NTFPGRAD','IGNF','WGS84RRAFGEO','IGNF','91',NULL,'1.0.0',0); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84RRAFGEO',1,'IGNF','TSG1240'); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFPGRAD_TO_WGS84RRAFGEO',2,'IGNF','TSG399_NTFG_TO_WGS84RRAFGEO'); +INSERT INTO "concatenated_operation" VALUES('IGNF','TSG399_NTFP_TO_WGS84RRAFGEO','Nouvelle Triangulation Francaise Paris grades to WGS84RRAFGEO',NULL,'NATIONALE','IGNF','NTFP','IGNF','WGS84RRAFGEO','IGNF','91',NULL,'1.0.0',0); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFP_TO_WGS84RRAFGEO',1,'IGNF','TSG1240_IGNF_NTFP_TO_IGNF_NTFG'); +INSERT INTO "concatenated_operation_step" VALUES('IGNF','TSG399_NTFP_TO_WGS84RRAFGEO',2,'IGNF','TSG399_NTFG_TO_WGS84RRAFGEO'); diff --git a/data/sql/proj_db_table_defs.sql b/data/sql/proj_db_table_defs.sql index 6b38e736..8a02acf4 100644 --- a/data/sql/proj_db_table_defs.sql +++ b/data/sql/proj_db_table_defs.sql @@ -1310,15 +1310,6 @@ CREATE TABLE concatenated_operation( accuracy FLOAT CHECK (accuracy >= 0), - step1_auth_name TEXT NOT NULL, - step1_code TEXT NOT NULL, - - step2_auth_name TEXT NOT NULL, - step2_code TEXT NOT NULL, - - step3_auth_name TEXT, - step3_code TEXT, - operation_version TEXT, -- normally mandatory in OGC Topic 2 but optional here deprecated BOOLEAN NOT NULL CHECK (deprecated IN (0, 1)), @@ -1327,9 +1318,6 @@ CREATE TABLE concatenated_operation( --CONSTRAINT fk_concatenated_operation_coordinate_operation FOREIGN KEY (auth_name, code) REFERENCES coordinate_operation(auth_name, code), --CONSTRAINT fk_concatenated_operation_source_crs FOREIGN KEY (source_crs_auth_name, source_crs_code) REFERENCES crs(auth_name, code), --CONSTRAINT fk_concatenated_operation_target_crs FOREIGN KEY (target_crs_auth_name, target_crs_code) REFERENCES crs(auth_name, code), - --CONSTRAINT fk_concatenated_operation_step1 FOREIGN KEY (step1_auth_name, step1_code) REFERENCES coordinate_operation(auth_name, code), - --CONSTRAINT fk_concatenated_operation_step2 FOREIGN KEY (step2_auth_name, step2_code) REFERENCES coordinate_operation(auth_name, code), - --CONSTRAINT fk_concatenated_operation_step3 FOREIGN KEY (step3_auth_name, step3_code) REFERENCES coordinate_operation(auth_name, code), CONSTRAINT fk_concatenated_operation_transformation_area FOREIGN KEY (area_of_use_auth_name, area_of_use_code) REFERENCES area(auth_name, code) ); @@ -1340,28 +1328,12 @@ FOR EACH ROW BEGIN SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: (auth_name, code) must not already exist in coordinate_operation_with_conversion_view') WHERE EXISTS (SELECT 1 FROM coordinate_operation_with_conversion_view covwv WHERE covwv.auth_name = NEW.auth_name AND covwv.code = NEW.code); - SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: step1(auth_name, code) must already exist in coordinate_operation_with_conversion_view') - WHERE NOT EXISTS (SELECT 1 FROM coordinate_operation_with_conversion_view covwv WHERE covwv.auth_name = NEW.step1_auth_name AND covwv.code = NEW.step1_code); - - SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: step2(auth_name, code) must already exist in coordinate_operation_with_conversion_view') - WHERE NOT EXISTS (SELECT 1 FROM coordinate_operation_with_conversion_view covwv WHERE covwv.auth_name = NEW.step2_auth_name AND covwv.code = NEW.step2_code); - - SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: step3(auth_name, code) must already exist in coordinate_operation_with_conversion_view') - WHERE NEW.step3_auth_name IS NOT NULL AND NOT EXISTS (SELECT 1 FROM coordinate_operation_with_conversion_view covwv WHERE covwv.auth_name = NEW.step3_auth_name AND covwv.code = NEW.step3_code); - SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: source_crs(auth_name, code) not found') WHERE NOT EXISTS (SELECT 1 FROM crs_view WHERE crs_view.auth_name = NEW.source_crs_auth_name AND crs_view.code = NEW.source_crs_code); SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: target_crs(auth_name, code) not found') WHERE NOT EXISTS (SELECT 1 FROM crs_view WHERE crs_view.auth_name = NEW.target_crs_auth_name AND crs_view.code = NEW.target_crs_code); - SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: step1 should not be a concatenated_operation') - WHERE EXISTS(SELECT 1 FROM concatenated_operation WHERE auth_name = NEW.step1_auth_name AND code = NEW.step1_code); - SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: step2 should not be a concatenated_operation') - WHERE EXISTS(SELECT 1 FROM concatenated_operation WHERE auth_name = NEW.step2_auth_name AND code = NEW.step2_code); - SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: step3 should not be a concatenated_operation') - WHERE EXISTS(SELECT 1 FROM concatenated_operation WHERE auth_name = NEW.step3_auth_name AND code = NEW.step3_code); - SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: source_crs must not be deprecated when concatenated_operation is not deprecated') WHERE EXISTS(SELECT 1 FROM crs_view crs WHERE crs.auth_name = NEW.source_crs_auth_name AND crs.code = NEW.source_crs_code AND crs.deprecated != 0) AND NEW.deprecated = 0 AND NOT (NEW.auth_name = 'ESRI'); SELECT RAISE(ABORT, 'insert on concatenated_operation violates constraint: target_crs must not be deprecated when concatenated_operation is not deprecated') @@ -1370,6 +1342,28 @@ FOR EACH ROW BEGIN WHERE EXISTS(SELECT 1 FROM area WHERE area.auth_name = NEW.area_of_use_auth_name AND area.code = NEW.area_of_use_code AND area.deprecated != 0) AND NEW.deprecated = 0; END; +CREATE TABLE concatenated_operation_step( + operation_auth_name TEXT NOT NULL CHECK (length(operation_auth_name) >= 1), + operation_code TEXT NOT NULL CHECK (length(operation_code) >= 1), + step_number INTEGER NOT NULL CHECK (step_number >= 1), + step_auth_name TEXT NOT NULL CHECK (length(step_auth_name) >= 1), + step_code TEXT NOT NULL CHECK (length(step_code) >= 1), + + CONSTRAINT pk_concatenated_operation_step PRIMARY KEY (operation_auth_name, operation_code, step_number) + --CONSTRAINT fk_concatenated_operation_step_to_operation FOREIGN KEY (step_auth_name, step_code) REFERENCES coordinate_operation(auth_name, code) +); + +CREATE TRIGGER concatenated_operation_step_insert_trigger +BEFORE INSERT ON concatenated_operation_step +FOR EACH ROW BEGIN + + SELECT RAISE(ABORT, 'insert on concatenated_operation_step violates constraint: (step_auth_name, step_code) must already exist in coordinate_operation_with_conversion_view') + WHERE NOT EXISTS (SELECT 1 FROM coordinate_operation_with_conversion_view covwv WHERE covwv.auth_name = NEW.step_auth_name AND covwv.code = NEW.step_code); + + SELECT RAISE(ABORT, 'insert on concatenated_operation_step violates constraint: step should not be a concatenated_operation') + WHERE EXISTS(SELECT 1 FROM concatenated_operation WHERE auth_name = NEW.step_auth_name AND code = NEW.step_code); + +END; CREATE TABLE alias_name( table_name TEXT NOT NULL CHECK (table_name IN ( diff --git a/data/sql_filelist.cmake b/data/sql_filelist.cmake index 0c3c2ab3..676a7a2c 100644 --- a/data/sql_filelist.cmake +++ b/data/sql_filelist.cmake @@ -22,6 +22,7 @@ set(SQL_FILES "${SQL_DIR}/grid_transformation_custom.sql" "${SQL_DIR}/other_transformation.sql" "${SQL_DIR}/concatenated_operation.sql" + "${SQL_DIR}/concatenated_operation_step.sql" "${SQL_DIR}/alias_name.sql" "${SQL_DIR}/supersession.sql" "${SQL_DIR}/deprecation.sql" diff --git a/include/proj/coordinateoperation.hpp b/include/proj/coordinateoperation.hpp index fb57238d..6c4c25c2 100644 --- a/include/proj/coordinateoperation.hpp +++ b/include/proj/coordinateoperation.hpp @@ -1348,6 +1348,10 @@ class PROJ_GCC_DLL Conversion : public SingleOperation { PROJ_INTERNAL ConversionNNPtr alterParametersLinearUnit( const common::UnitOfMeasure &unit, bool convertToNewUnit) const; + PROJ_INTERNAL static ConversionNNPtr + createGeographicGeocentric(const crs::CRSNNPtr &sourceCRS, + const crs::CRSNNPtr &targetCRS); + //! @endcond protected: diff --git a/scripts/build_db.py b/scripts/build_db.py index bf3ddc0a..f52883cf 100755 --- a/scripts/build_db.py +++ b/scripts/build_db.py @@ -343,7 +343,7 @@ def fill_helmert_transformation(proj_db_cursor): '?,?,?, ?,?, ?,?,?, ?,?, ?,?, ?,?, ?, ?,?,?,?,?, ?,?,?,?,?, ?,?,?, ?,?,?,?,?, ?,?,?,?,?, ?,?,?, ?,?,?, ?,?,?,?,?, ?,?)', arg) def fill_grid_transformation(proj_db_cursor): - proj_db_cursor.execute("SELECT coord_op_code, coord_op_name, coord_op_method_code, coord_op_method_name, source_crs_code, target_crs_code, area_of_use_code, coord_op_accuracy, coord_tfm_version, epsg_coordoperation.deprecated, coord_op_scope, epsg_coordoperation.remarks FROM epsg.epsg_coordoperation LEFT JOIN epsg.epsg_coordoperationmethod USING (coord_op_method_code) WHERE coord_op_type = 'transformation' AND (coord_op_method_name LIKE 'Geographic3D to%' OR coord_op_method_name LIKE 'Geog3D to%' OR coord_op_method_name LIKE 'Point motion by grid%' OR coord_op_method_name LIKE 'Vertical Offset by Grid Interpolation%' OR coord_op_method_name IN ('NADCON', 'NTv1', 'NTv2', 'VERTCON'))") + proj_db_cursor.execute("SELECT coord_op_code, coord_op_name, coord_op_method_code, coord_op_method_name, source_crs_code, target_crs_code, area_of_use_code, coord_op_accuracy, coord_tfm_version, epsg_coordoperation.deprecated, coord_op_scope, epsg_coordoperation.remarks FROM epsg.epsg_coordoperation LEFT JOIN epsg.epsg_coordoperationmethod USING (coord_op_method_code) WHERE coord_op_type = 'transformation' AND (coord_op_method_name LIKE 'Geographic3D to%' OR coord_op_method_name LIKE 'Geog3D to%' OR coord_op_method_name LIKE 'Point motion by grid%' OR coord_op_method_name LIKE 'Vertical Offset by Grid Interpolation%' OR coord_op_method_name IN ('NADCON', 'NADCON5 (2D)', 'NTv1', 'NTv2', 'VERTCON'))") for (code, name, method_code, method_name, source_crs_code, target_crs_code, area_of_use_code, coord_op_accuracy, coord_tfm_version, deprecated, scope, remarks) in proj_db_cursor.fetchall(): expected_order = 1 max_n_params = 2 @@ -384,6 +384,12 @@ def fill_grid_transformation(proj_db_cursor): grid2_param_code = param_code[1] grid2_param_name = param_name[1] grid2_value = param_value[1] + elif method_code == 1074: # NADCON5 (2D) + assert param_code[1] == 8658, param_code[1] + grid2_param_auth_name = EPSG_AUTHORITY + grid2_param_code = param_code[1] + grid2_param_name = param_name[1] + grid2_value = param_value[1] elif method_code == 1071: # Vertical Offset by Grid Interpolation (NZLVD) assert param_code[1] == 1048, param_code[1] interpolation_crs_auth_name = EPSG_AUTHORITY @@ -473,57 +479,44 @@ def fill_concatenated_operation(proj_db_cursor): proj_db_cursor.execute("SELECT coord_op_code, coord_op_name, coord_op_method_code, coord_op_method_name, source_crs_code, target_crs_code, area_of_use_code, coord_op_accuracy, coord_tfm_version, epsg_coordoperation.deprecated, coord_op_scope, epsg_coordoperation.remarks FROM epsg.epsg_coordoperation LEFT JOIN epsg.epsg_coordoperationmethod USING (coord_op_method_code) WHERE coord_op_type = 'concatenated operation'") for (code, name, method_code, method_name, source_crs_code, target_crs_code, area_of_use_code, coord_op_accuracy, coord_tfm_version, deprecated, scope, remarks) in proj_db_cursor.fetchall(): expected_order = 1 - max_n_params = 3 - step_code = [None for i in range(max_n_params)] - - proj_db_cursor.execute("SELECT COUNT(*) FROM epsg_coordoperationpath WHERE concat_operation_code = ?", (code,)) - (nsteps, ) = proj_db_cursor.fetchone() - # Our database model has only provision for up to 3 steps currently. - # As of EPSG v9.8.2, only EPSG:9103 (NAD27 to ITRF2014 (1)) and 9104 (NAD27 to ITRF2014 (2)) have respectively 4 and 7 steps. - # Tracked as https://github.com/OSGeo/PROJ/issues/1632 - if nsteps > 3: - print('Cannot import concatenated_operation ' + str(code) + ', as it has more than 3 steps.') - continue + steps_code = [] iterator = proj_db_cursor.execute("SELECT op_path_step, single_operation_code FROM epsg_coordoperationpath WHERE concat_operation_code = ? ORDER BY op_path_step", (code,)) for (order, single_operation_code) in iterator: - assert order <= max_n_params assert order == expected_order - step_code[order - 1] = single_operation_code + steps_code.append(single_operation_code) expected_order += 1 n_params = expected_order - 1 if n_params == 0: # For example http://www.epsg-registry.org//export.htm?gml=urn:ogc:def:coordinateOperation:EPSG::8658 continue - assert n_params in (2, 3), (code, n_params) - - arg = (EPSG_AUTHORITY, code, name, - remarks, scope, - EPSG_AUTHORITY, source_crs_code, - EPSG_AUTHORITY, target_crs_code, - EPSG_AUTHORITY, area_of_use_code, - coord_op_accuracy, - EPSG_AUTHORITY, step_code[0], - EPSG_AUTHORITY, step_code[1], - EPSG_AUTHORITY if step_code[2] else None, step_code[2], - coord_tfm_version, - deprecated - ) - proj_db_cursor.execute("SELECT 1 FROM coordinate_operation_with_conversion_view WHERE code = ?", (step_code[0],)) - step1_exists = proj_db_cursor.fetchone() is not None + all_steps_exist = True + for step_code in steps_code: + proj_db_cursor.execute("SELECT 1 FROM coordinate_operation_with_conversion_view WHERE code = ?", (step_code,)) + if proj_db_cursor.fetchone() is None: + print('Step of code %d for concatenated_operation %d does not exist' % (step_code, code)) + all_steps_exist = False + break - proj_db_cursor.execute("SELECT 1 FROM coordinate_operation_with_conversion_view WHERE code = ?", (step_code[1],)) - step2_exists = proj_db_cursor.fetchone() is not None + if all_steps_exist: - step3_exists = True - if step_code[2]: - proj_db_cursor.execute("SELECT 1 FROM coordinate_operation_with_conversion_view WHERE code = ?", (step_code[2],)) - step3_exists = proj_db_cursor.fetchone() is not None + arg = (EPSG_AUTHORITY, code, name, + remarks, scope, + EPSG_AUTHORITY, source_crs_code, + EPSG_AUTHORITY, target_crs_code, + EPSG_AUTHORITY, area_of_use_code, + coord_op_accuracy, + coord_tfm_version, + deprecated + ) - if step1_exists and step2_exists and step3_exists: #proj_db_cursor.execute("INSERT INTO coordinate_operation VALUES (?,?,'concatenated_operation')", (EPSG_AUTHORITY, code)) proj_db_cursor.execute('INSERT INTO concatenated_operation VALUES (' + - '?,?,?, ?,?, ?,?, ?,?, ?,?, ?, ?,?, ?,?, ?,?, ?,?)', arg) + '?,?,?, ?,?, ?,?, ?,?, ?,?, ?, ?,?)', arg) + + for i in range(len(steps_code)): + proj_db_cursor.execute('INSERT INTO concatenated_operation_step VALUES (?,?,?,?,?)', (EPSG_AUTHORITY, code, i+1, EPSG_AUTHORITY,steps_code[i])) + def fill_alias(proj_db_cursor): proj_db_cursor.execute("SELECT object_code, alias FROM epsg.epsg_alias WHERE object_table_name = 'epsg_datum'") diff --git a/scripts/build_db_create_ignf_from_xml.py b/scripts/build_db_create_ignf_from_xml.py index b797477f..33302bc3 100755 --- a/scripts/build_db_create_ignf_from_xml.py +++ b/scripts/build_db_create_ignf_from_xml.py @@ -504,7 +504,7 @@ for node in root.iterfind('.//Transformation'): print('Fixing URL of ' + filename + ' to ' + mapGridURLs[filename]) filename = mapGridURLs[filename] - if not filename.endswith('RAF09.mnt'): # no longer available + if not filename.endswith('RAF09.mnt') and not filename.endswith('ggspm06v1.mnt'): # no longer available r = requests.head(filename, allow_redirects = True ) if r.status_code not in (200, 302): assert False, (r.status_code, id, name, filename) @@ -693,7 +693,13 @@ for node in root.iterfind('.//Transformation'): #sql = """INSERT INTO "coordinate_operation" VALUES('IGNF','%s','concatenated_operation');""" % (id_concat) #all_sql_concat.append(sql) - sql = """INSERT INTO "concatenated_operation" VALUES('IGNF','%s','Nouvelle Triangulation Francaise Paris grades to %s',NULL,'%s','IGNF','%s','%s','%s','%s','%s',NULL,'IGNF','%s','IGNF','%s',NULL,NULL,'%s',0);""" % (id_concat, target[1], scope, NTFPalias, target[0], target[1], area_of_use[0], area_of_use[1], idFirstOp, id_geog, operation_version) + sql = """INSERT INTO "concatenated_operation" VALUES('IGNF','%s','Nouvelle Triangulation Francaise Paris grades to %s',NULL,'%s','IGNF','%s','%s','%s','%s','%s',NULL,'%s',0);""" % (id_concat, target[1], scope, NTFPalias, target[0], target[1], area_of_use[0], area_of_use[1], operation_version) + all_sql_concat.append(sql) + + sql = """INSERT INTO "concatenated_operation_step" VALUES('IGNF','%s',1,'IGNF','%s');""" % (id_concat, idFirstOp) + all_sql_concat.append(sql) + + sql = """INSERT INTO "concatenated_operation_step" VALUES('IGNF','%s',2,'IGNF','%s');""" % (id_concat, id_geog) all_sql_concat.append(sql) diff --git a/src/iso19111/coordinateoperation.cpp b/src/iso19111/coordinateoperation.cpp index 6a05bbe8..881a16fd 100644 --- a/src/iso19111/coordinateoperation.cpp +++ b/src/iso19111/coordinateoperation.cpp @@ -4710,6 +4710,64 @@ Conversion::createGeographicGeocentric(const util::PropertyMap &properties) { //! @cond Doxygen_Suppress +static const char *getCRSQualifierStr(const crs::CRSPtr &crs) { + auto geod = dynamic_cast<crs::GeodeticCRS *>(crs.get()); + if (geod) { + if (geod->isGeocentric()) { + return " (geocentric)"; + } + auto geog = dynamic_cast<crs::GeographicCRS *>(geod); + if (geog) { + if (geog->coordinateSystem()->axisList().size() == 2) { + return " (geog2D)"; + } else { + return " (geog3D)"; + } + } + } + return ""; +} + +// --------------------------------------------------------------------------- + +static std::string buildOpName(const char *opType, const crs::CRSPtr &source, + const crs::CRSPtr &target) { + std::string res(opType); + const auto &srcName = source->nameStr(); + const auto &targetName = target->nameStr(); + const char *srcQualifier = ""; + const char *targetQualifier = ""; + if (srcName == targetName) { + srcQualifier = getCRSQualifierStr(source); + targetQualifier = getCRSQualifierStr(target); + if (strcmp(srcQualifier, targetQualifier) == 0) { + srcQualifier = ""; + targetQualifier = ""; + } + } + res += " from "; + res += srcName; + res += srcQualifier; + res += " to "; + res += targetName; + res += targetQualifier; + return res; +} + +// --------------------------------------------------------------------------- + +ConversionNNPtr +Conversion::createGeographicGeocentric(const crs::CRSNNPtr &sourceCRS, + const crs::CRSNNPtr &targetCRS) { + auto properties = util::PropertyMap().set( + common::IdentifiedObject::NAME_KEY, + buildOpName("Conversion", sourceCRS, targetCRS)); + auto conv = createGeographicGeocentric(properties); + conv->setCRSs(sourceCRS, targetCRS, nullptr); + return conv; +} +// --------------------------------------------------------------------------- + static util::PropertyMap &addDomains(util::PropertyMap &map, const common::ObjectUsage *obj) { @@ -7403,52 +7461,6 @@ TransformationNNPtr Transformation::createChangeVerticalUnit( // --------------------------------------------------------------------------- -static const char *getCRSQualifierStr(const crs::CRSPtr &crs) { - auto geod = dynamic_cast<crs::GeodeticCRS *>(crs.get()); - if (geod) { - if (geod->isGeocentric()) { - return " (geocentric)"; - } - auto geog = dynamic_cast<crs::GeographicCRS *>(geod); - if (geog) { - if (geog->coordinateSystem()->axisList().size() == 2) { - return " (geog2D)"; - } else { - return " (geog3D)"; - } - } - } - return ""; -} - -// --------------------------------------------------------------------------- - -static std::string buildOpName(const char *opType, const crs::CRSPtr &source, - const crs::CRSPtr &target) { - std::string res(opType); - const auto &srcName = source->nameStr(); - const auto &targetName = target->nameStr(); - const char *srcQualifier = ""; - const char *targetQualifier = ""; - if (srcName == targetName) { - srcQualifier = getCRSQualifierStr(source); - targetQualifier = getCRSQualifierStr(target); - if (strcmp(srcQualifier, targetQualifier) == 0) { - srcQualifier = ""; - targetQualifier = ""; - } - } - res += " from "; - res += srcName; - res += srcQualifier; - res += " to "; - res += targetName; - res += targetQualifier; - return res; -} - -// --------------------------------------------------------------------------- - static util::PropertyMap createPropertiesForInverse(const CoordinateOperation *op, bool derivedFrom, bool approximateInversion) { @@ -9524,6 +9536,9 @@ ConcatenatedOperationNNPtr ConcatenatedOperation::create( // --------------------------------------------------------------------------- //! @cond Doxygen_Suppress + +// --------------------------------------------------------------------------- + void ConcatenatedOperation::fixStepsDirection( const crs::CRSNNPtr &concatOpSourceCRS, const crs::CRSNNPtr &concatOpTargetCRS, @@ -9620,14 +9635,47 @@ void ConcatenatedOperation::fixStepsDirection( nullptr); } } else if (!conv && l_sourceCRS && l_targetCRS) { + + const auto isGeographic = [](const crs::CRS *crs) -> bool { + return dynamic_cast<const crs::GeographicCRS *>(crs) != nullptr; + }; + + const auto isGeocentric = [](const crs::CRS *crs) -> bool { + auto geodCRS = dynamic_cast<const crs::GeodeticCRS *>(crs); + if (geodCRS && + geodCRS->coordinateSystem()->axisList().size() == 3) + return true; + return false; + }; + // Transformations might be mentioned in their forward directions, // whereas we should instead use the reverse path. auto prevOpTarget = (i == 0) ? concatOpSourceCRS.as_nullable() : operationsInOut[i - 1]->targetCRS(); - if (!compareStepCRS(l_sourceCRS.get(), prevOpTarget.get()) && - compareStepCRS(l_targetCRS.get(), prevOpTarget.get())) { + if (compareStepCRS(l_sourceCRS.get(), prevOpTarget.get())) { + // do nothing + } else if (compareStepCRS(l_targetCRS.get(), prevOpTarget.get())) { op = op->inverse(); } + // Below is needed for EPSG:9103 which chains NAD83(2011) geographic + // 2D with NAD83(2011) geocentric + else if (l_sourceCRS->nameStr() == prevOpTarget->nameStr() && + ((isGeographic(l_sourceCRS.get()) && + isGeocentric(prevOpTarget.get())) || + (isGeocentric(l_sourceCRS.get()) && + isGeographic(prevOpTarget.get())))) { + auto newOp(Conversion::createGeographicGeocentric( + NN_NO_CHECK(prevOpTarget), NN_NO_CHECK(l_sourceCRS))); + operationsInOut.insert(operationsInOut.begin() + i, newOp); + } else if (l_targetCRS->nameStr() == prevOpTarget->nameStr() && + ((isGeographic(l_targetCRS.get()) && + isGeocentric(prevOpTarget.get())) || + (isGeocentric(l_targetCRS.get()) && + isGeographic(prevOpTarget.get())))) { + auto newOp(Conversion::createGeographicGeocentric( + NN_NO_CHECK(prevOpTarget), NN_NO_CHECK(l_targetCRS))); + operationsInOut.insert(operationsInOut.begin() + i, newOp); + } } } @@ -10290,10 +10338,6 @@ struct CoordinateOperationFactory::Private { hasPerfectAccuracyResult(const std::vector<CoordinateOperationNNPtr> &res, const Context &context); - static ConversionNNPtr - createGeographicGeocentric(const crs::CRSNNPtr &sourceCRS, - const crs::CRSNNPtr &targetCRS); - static void setCRSs(CoordinateOperation *co, const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS); }; @@ -11659,18 +11703,6 @@ static CoordinateOperationNNPtr createHorizVerticalHorizPROJBased( //! @cond Doxygen_Suppress -ConversionNNPtr CoordinateOperationFactory::Private::createGeographicGeocentric( - const crs::CRSNNPtr &sourceCRS, const crs::CRSNNPtr &targetCRS) { - auto properties = util::PropertyMap().set( - common::IdentifiedObject::NAME_KEY, - buildOpName("Conversion", sourceCRS, targetCRS)); - auto conv = Conversion::createGeographicGeocentric(properties); - conv->setCRSs(sourceCRS, targetCRS, nullptr); - return conv; -} - -// --------------------------------------------------------------------------- - std::vector<CoordinateOperationNNPtr> CoordinateOperationFactory::Private::createOperationsGeogToGeog( std::vector<CoordinateOperationNNPtr> &res, const crs::CRSNNPtr &sourceCRS, @@ -12712,8 +12744,8 @@ CoordinateOperationFactory::Private::createOperations( if (geodSrc->datum()->_isEquivalentTo( geodDst->datum().get(), util::IComparable::Criterion::EQUIVALENT)) { - res.emplace_back( - createGeographicGeocentric(sourceCRS, targetCRS)); + res.emplace_back(Conversion::createGeographicGeocentric( + sourceCRS, targetCRS)); } else if (isSrcGeocentric) { std::string interm_crs_name(geogDst->nameStr()); interm_crs_name += " (geocentric)"; @@ -12729,8 +12761,8 @@ CoordinateOperationFactory::Private::createOperations( geodSrc->coordinateSystem())))); auto opFirst = createBallparkGeocentricTranslation(sourceCRS, interm_crs); - auto opSecond = - createGeographicGeocentric(interm_crs, targetCRS); + auto opSecond = Conversion::createGeographicGeocentric( + interm_crs, targetCRS); res.emplace_back(ConcatenatedOperation::createComputeMetadata( {opFirst, opSecond}, !allowEmptyIntersection)); } else { @@ -13364,9 +13396,7 @@ CoordinateOperationFactory::Private::createOperations( verticalTransform, interpToTarget, interpolationGeogCRS, true); res.emplace_back(op); - } catch ( - const InvalidOperationEmptyIntersection &) { - continue; + } catch (const std::exception &) { } } } @@ -13377,10 +13407,13 @@ CoordinateOperationFactory::Private::createOperations( // involve a grid, because of the rather arbitrary order // horizontal then vertical applied for (const auto &horizTransform : horizTransforms) { - auto op = createHorizVerticalPROJBased( - sourceCRS, targetCRS, horizTransform, - verticalTransform); - res.emplace_back(op); + try { + auto op = createHorizVerticalPROJBased( + sourceCRS, targetCRS, horizTransform, + verticalTransform); + res.emplace_back(op); + } catch (const std::exception &) { + } } } } diff --git a/src/iso19111/factory.cpp b/src/iso19111/factory.cpp index 9be04580..6fef6366 100644 --- a/src/iso19111/factory.cpp +++ b/src/iso19111/factory.cpp @@ -3141,8 +3141,7 @@ operation::CoordinateOperationNNPtr AuthorityFactory::createCoordinateOperation( "source_crs_auth_name, source_crs_code, " "target_crs_auth_name, target_crs_code, " "area_of_use_auth_name, area_of_use_code, accuracy, " - "step1_auth_name, step1_code, step2_auth_name, step2_code, " - "step3_auth_name, step3_code, operation_version, deprecated FROM " + "operation_version, deprecated FROM " "concatenated_operation WHERE auth_name = ? AND code = ?", code); if (res.empty()) { @@ -3150,6 +3149,13 @@ operation::CoordinateOperationNNPtr AuthorityFactory::createCoordinateOperation( throw NoSuchAuthorityCodeException( "concatenated_operation not found", d->authority(), code); } + + auto resSteps = d->runWithCodeParam( + "SELECT step_auth_name, step_code FROM " + "concatenated_operation_step WHERE operation_auth_name = ? " + "AND operation_code = ? ORDER BY step_number", + code); + try { const auto &row = res.front(); size_t idx = 0; @@ -3163,32 +3169,17 @@ operation::CoordinateOperationNNPtr AuthorityFactory::createCoordinateOperation( const auto &area_of_use_auth_name = row[idx++]; const auto &area_of_use_code = row[idx++]; const auto &accuracy = row[idx++]; - const auto &step1_auth_name = row[idx++]; - const auto &step1_code = row[idx++]; - const auto &step2_auth_name = row[idx++]; - const auto &step2_code = row[idx++]; - const auto &step3_auth_name = row[idx++]; - const auto &step3_code = row[idx++]; const auto &operation_version = row[idx++]; const auto &deprecated_str = row[idx++]; const bool deprecated = deprecated_str == "1"; std::vector<operation::CoordinateOperationNNPtr> operations; - operations.push_back( - d->createFactory(step1_auth_name) - ->createCoordinateOperation(step1_code, false, - usePROJAlternativeGridNames, - std::string())); - operations.push_back( - d->createFactory(step2_auth_name) - ->createCoordinateOperation(step2_code, false, - usePROJAlternativeGridNames, - std::string())); - - if (!step3_auth_name.empty()) { + for (const auto &rowStep : resSteps) { + const auto &step_auth_name = rowStep[0]; + const auto &step_code = rowStep[1]; operations.push_back( - d->createFactory(step3_auth_name) - ->createCoordinateOperation(step3_code, false, + d->createFactory(step_auth_name) + ->createCoordinateOperation(step_code, false, usePROJAlternativeGridNames, std::string())); } diff --git a/test/cli/testprojinfo_out.dist b/test/cli/testprojinfo_out.dist index f97fde62..c1d9f3e0 100644 --- a/test/cli/testprojinfo_out.dist +++ b/test/cli/testprojinfo_out.dist @@ -212,7 +212,7 @@ CONVERSION["UTM zone 31N", Testing projinfo -s NAD27 -t NAD83 Candidate operations found: 1 -Note: using '--spatial-test intersects' would bring more results (8) +Note: using '--spatial-test intersects' would bring more results (10) ------------------------------------- Operation n°1: @@ -267,7 +267,7 @@ COORDINATEOPERATION["Ballpark geographic offset from NAD27 to NAD83", BBOX[-90,-180,90,180]]] Testing projinfo -s NAD27 -t NAD83 --grid-check none --spatial-test intersects --summary -Candidate operations found: 8 +Candidate operations found: 10 DERIVED_FROM(EPSG):1312, NAD27 to NAD83 (3), 1.0 m, Canada DERIVED_FROM(EPSG):1313, NAD27 to NAD83 (4), 1.5 m, Canada - NAD27 DERIVED_FROM(EPSG):1241, NAD27 to NAD83 (1), 0.15 m, USA - CONUS including EEZ @@ -276,9 +276,11 @@ EPSG:1462, NAD27 to NAD83 (5), 1.0 m, Canada - Quebec EPSG:1573, NAD27 to NAD83 (6), 1.5 m, Canada - Quebec EPSG:9111, NAD27 to NAD83 (9), 1.5 m, Canada - Saskatchewan unknown id, Ballpark geographic offset from NAD27 to NAD83, unknown accuracy, World, has ballpark transformation +EPSG:8555, NAD27 to NAD83 (7), 0.15 m, USA - CONUS and GoM +EPSG:8549, NAD27 to NAD83 (8), 0.5 m, USA - Alaska Testing projinfo -s NAD27 -t NAD83 --grid-check none --spatial-test intersects -Candidate operations found: 8 +Candidate operations found: 10 ------------------------------------- Operation n°1: @@ -685,6 +687,110 @@ COORDINATEOPERATION["Ballpark geographic offset from NAD27 to NAD83", AREA["World"], BBOX[-90,-180,90,180]]] +------------------------------------- +Operation n°9: + +EPSG:8555, NAD27 to NAD83 (7), 0.15 m, USA - CONUS and GoM + +PROJ string: + +WKT2:2019 string: +COORDINATEOPERATION["NAD27 to NAD83 (7)", + VERSION["NGS-Usa Conus Nadcon5"], + SOURCECRS[ + GEOGCRS["NAD27", + DATUM["North American Datum 1927", + ELLIPSOID["Clarke 1866",6378206.4,294.978698213898, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4267]]], + TARGETCRS[ + GEOGCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4269]]], + METHOD["NADCON5 (2D)", + ID["EPSG",1074]], + PARAMETERFILE["Latitude difference file","nadcon5.nad27.nad83_1986.conus.lat.trn.20160901.b"], + PARAMETERFILE["Longitude difference file","nadcon5.nad27.nad83_1986.conus.lon.trn.20160901.b"], + OPERATIONACCURACY[0.15], + USAGE[ + SCOPE["Spatial referencing."], + AREA["USA - CONUS and GoM"], + BBOX[23.82,-124.79,49.38,-66.91]], + ID["EPSG",8555], + REMARK["Uses NADCON5 method which expects longitudes positive east in range 0-360°; source and target CRSs have longitudes positive east in range -180° to +180°. Accuracy at 67% confidence level is 0.15m onshore, 1m nearshore and undetermined farther offshore."]] + +------------------------------------- +Operation n°10: + +EPSG:8549, NAD27 to NAD83 (8), 0.5 m, USA - Alaska + +PROJ string: + +WKT2:2019 string: +COORDINATEOPERATION["NAD27 to NAD83 (8)", + VERSION["NGS-Usa AK Nadcon5"], + SOURCECRS[ + GEOGCRS["NAD27", + DATUM["North American Datum 1927", + ELLIPSOID["Clarke 1866",6378206.4,294.978698213898, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4267]]], + TARGETCRS[ + GEOGCRS["NAD83", + DATUM["North American Datum 1983", + ELLIPSOID["GRS 1980",6378137,298.257222101, + LENGTHUNIT["metre",1]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433]], + CS[ellipsoidal,2], + AXIS["geodetic latitude (Lat)",north, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["geodetic longitude (Lon)",east, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]], + ID["EPSG",4269]]], + METHOD["NADCON5 (2D)", + ID["EPSG",1074]], + PARAMETERFILE["Latitude difference file","nadcon5.nad27.nad83_1986.alaska.lat.trn.20160901.b"], + PARAMETERFILE["Longitude difference file","nadcon5.nad27.nad83_1986.alaska.lon.trn.20160901.b"], + OPERATIONACCURACY[0.5], + USAGE[ + SCOPE["Spatial referencing."], + AREA["USA - Alaska"], + BBOX[51.3,172.42,71.4,-129.99]], + ID["EPSG",8549], + REMARK["Uses NADCON5 method which expects longitudes positive east in range 0-360°; source and target CRSs have longitudes positive east in range -180° to +180°. Accuracy at 67% confidence level is 0.5m onshore, 5m nearshore and undetermined farther offshore."]] + Testing projinfo -s EPSG:4230 -t EPSG:4258 --bbox 8,54.51,15.24,57.8 --summary Candidate operations found: 1 Note: using '--spatial-test intersects' would bring more results (2) diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp index d8968e97..8ac5a511 100644 --- a/test/unit/test_c_api.cpp +++ b/test/unit/test_c_api.cpp @@ -1344,7 +1344,7 @@ TEST_F(CApi, proj_create_operations) { ASSERT_NE(res, nullptr); ObjListKeeper keeper_res(res); - EXPECT_EQ(proj_list_get_count(res), 8); + EXPECT_EQ(proj_list_get_count(res), 10); EXPECT_EQ(proj_list_get(m_ctxt, res, -1), nullptr); EXPECT_EQ(proj_list_get(m_ctxt, res, proj_list_get_count(res)), nullptr); diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp index 7784d8a2..47cee060 100644 --- a/test/unit/test_factory.cpp +++ b/test/unit/test_factory.cpp @@ -1116,6 +1116,28 @@ TEST( // --------------------------------------------------------------------------- +TEST( + factory, + AuthorityFactory_createCoordinateOperation_concatenated_operation_epsg_9103) { + auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG"); + auto op = factory->createCoordinateOperation("9103", false); + auto concatenated = nn_dynamic_pointer_cast<ConcatenatedOperation>(op); + ASSERT_TRUE(concatenated != nullptr); + auto operations = concatenated->operations(); + ASSERT_EQ(operations.size(), + 5U); // we've added an explicit geographic -> geocentric step + EXPECT_EQ(operations[0]->nameStr(), "NAD27 to NAD83 (1)"); + EXPECT_EQ(operations[1]->nameStr(), "NAD83 to NAD83(2011) (1)"); + EXPECT_EQ( + operations[2]->nameStr(), + "Conversion from NAD83(2011) (geog2D) to NAD83(2011) (geocentric)"); + EXPECT_EQ(operations[3]->nameStr(), + "Inverse of ITRF2008 to NAD83(2011) (1)"); + EXPECT_EQ(operations[4]->nameStr(), "ITRF2008 to ITRF2014 (1)"); +} + +// --------------------------------------------------------------------------- + static bool in(const std::string &str, const std::vector<std::string> &list) { for (const auto &listItem : list) { if (str == listItem) { @@ -1514,12 +1536,21 @@ class FactoryWithTmpDatabase : public ::testing::Test { "NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) << last_error(); - ASSERT_TRUE(execute( - "INSERT INTO concatenated_operation " - "VALUES('EPSG','DUMMY_CONCATENATED','name',NULL,NULL," - "'EPSG','4326','EPSG'" - ",'4326','EPSG','1262',NULL,'EPSG','DUMMY_OTHER_TRANSFORMATION'" - ",'EPSG','DUMMY_OTHER_TRANSFORMATION',NULL,NULL,NULL,0);")) + ASSERT_TRUE( + execute("INSERT INTO concatenated_operation " + "VALUES('EPSG','DUMMY_CONCATENATED','name',NULL,NULL," + "'EPSG','4326','EPSG'" + ",'4326','EPSG','1262',NULL,NULL,0);")) + << last_error(); + + ASSERT_TRUE(execute("INSERT INTO concatenated_operation_step " + "VALUES('EPSG','DUMMY_CONCATENATED',1," + "'EPSG','DUMMY_OTHER_TRANSFORMATION');")) + << last_error(); + + ASSERT_TRUE(execute("INSERT INTO concatenated_operation_step " + "VALUES('EPSG','DUMMY_CONCATENATED',2," + "'EPSG','DUMMY_OTHER_TRANSFORMATION');")) << last_error(); } diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp index 53dcb861..8805e6a1 100644 --- a/test/unit/test_operation.cpp +++ b/test/unit/test_operation.cpp @@ -4516,7 +4516,7 @@ TEST(operation, geogCRS_to_geogCRS_context_ntv1_ntv2_ctable2) { authFactory->createCoordinateReferenceSystem("4267"), // NAD27 authFactory->createCoordinateReferenceSystem("4269"), // NAD83 ctxt); - ASSERT_EQ(list.size(), 8U); + ASSERT_EQ(list.size(), 10U); 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 " |
