aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/build_db.py28
-rwxr-xr-xscripts/build_db_from_esri.py8
2 files changed, 32 insertions, 4 deletions
diff --git a/scripts/build_db.py b/scripts/build_db.py
index 77f53fd9..46bef8c8 100755
--- a/scripts/build_db.py
+++ b/scripts/build_db.py
@@ -518,6 +518,33 @@ def fill_alias(proj_db_cursor):
else:
print('Cannot find datum %s in geodetic_datum or vertical_datum' % (code))
+
+def find_table(proj_db_cursor, code):
+ for table_name in ('helmert_transformation', 'grid_transformation', 'concatenated_operation'):
+ proj_db_cursor.execute('SELECT name FROM %s WHERE code = ?' % table_name, (code,))
+ row = proj_db_cursor.fetchone()
+ if row is not None:
+ return row[0], table_name
+ return None
+
+def fill_supersession(proj_db_cursor):
+ proj_db_cursor.execute("SELECT object_code, superseded_by FROM epsg.epsg_supersession WHERE object_table_name = 'epsg_coordoperation' AND object_code != superseded_by")
+ for row in proj_db_cursor.fetchall():
+ code, superseded_by = row
+ proj_db_cursor.execute('SELECT 1 FROM coordinate_operation_view WHERE code = ?', (code,))
+ if proj_db_cursor.fetchone() is None:
+ print('Skipping supersession of %d since it has not been imported' % code)
+ continue
+
+ src_name, superseded_table_name = find_table(proj_db_cursor, code)
+ dst_name, replacement_table_name = find_table(proj_db_cursor, superseded_by)
+ assert superseded_table_name, row
+ assert replacement_table_name, row
+ if superseded_table_name == 'grid_transformation' and replacement_table_name == 'grid_transformation' and src_name.startswith('NAD27 to NAD83'):
+ print('Skipping supersession of %d (%s) by %d (%s)' % (code, src_name, superseded_by, dst_name))
+ continue
+ proj_db_cursor.execute("INSERT INTO supersession VALUES (?,'EPSG',?,?,'EPSG',?,'EPSG')", (superseded_table_name, code, replacement_table_name, superseded_by))
+
def report_non_imported_operations(proj_db_cursor):
proj_db_cursor.execute("SELECT coord_op_code, coord_op_type, coord_op_name, coord_op_method_code, coord_op_method_name, source_crs_code, target_crs_code, area_of_use_code, coord_op_accuracy, epsg_coordoperation.deprecated FROM epsg.epsg_coordoperation LEFT JOIN epsg.epsg_coordoperationmethod USING (coord_op_method_code) WHERE coord_op_code NOT IN (SELECT code FROM coordinate_operation_with_conversion_view)")
rows = []
@@ -563,6 +590,7 @@ fill_grid_transformation(proj_db_cursor)
fill_other_transformation(proj_db_cursor)
fill_concatenated_operation(proj_db_cursor)
fill_alias(proj_db_cursor)
+fill_supersession(proj_db_cursor)
non_imported_operations = report_non_imported_operations(proj_db_cursor)
proj_db_cursor.close()
diff --git a/scripts/build_db_from_esri.py b/scripts/build_db_from_esri.py
index 2bc4a528..4f89f59f 100755
--- a/scripts/build_db_from_esri.py
+++ b/scripts/build_db_from_esri.py
@@ -609,7 +609,7 @@ def import_geogcs():
src_row = cursor.fetchone()
assert src_row
- sql = """INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('geodetic_crs','ESRI','%s','EPSG','%s','ESRI');""" % (
+ sql = """INSERT INTO "supersession" VALUES('geodetic_crs','ESRI','%s','geodetic_crs','EPSG','%s','ESRI');""" % (
code, latestWkid)
all_sql.append(sql)
@@ -728,7 +728,7 @@ def import_projcs():
latestWkid = mapDeprecatedToNonDeprecated[deprecated]
if latestWkid in wkid_set:
- sql = """INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','%s','ESRI','%s','ESRI');""" % (
+ sql = """INSERT INTO "supersession" VALUES('projected_crs','ESRI','%s','projected_crs','ESRI','%s','ESRI');""" % (
code, latestWkid)
all_sql.append(sql)
else:
@@ -736,7 +736,7 @@ def import_projcs():
"SELECT name FROM projected_crs WHERE auth_name = 'EPSG' AND code = ?", (latestWkid,))
src_row = cursor.fetchone()
assert src_row, row
- sql = """INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('projected_crs','ESRI','%s','EPSG','%s','ESRI');""" % (
+ sql = """INSERT INTO "supersession" VALUES('projected_crs','ESRI','%s','projected_crs','EPSG','%s','ESRI');""" % (
code, latestWkid)
all_sql.append(sql)
@@ -962,7 +962,7 @@ def import_vertcs():
src_row = cursor.fetchone()
assert src_row
- sql = """INSERT INTO "link_from_deprecated_to_non_deprecated" VALUES('vertical_crs','ESRI','%s','EPSG','%s','ESRI');""" % (
+ sql = """INSERT INTO "supersession" VALUES('vertical_crs','ESRI','%s','vertical_crs','EPSG','%s','ESRI');""" % (
code, latestWkid)
all_sql.append(sql)