aboutsummaryrefslogtreecommitdiff
path: root/scripts/build_db.py
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-10-06 17:08:29 +0200
committerEven Rouault <even.rouault@spatialys.com>2020-10-08 17:31:55 +0200
commitff9a386c72afb277aa79b86c7efb54e9843e810a (patch)
treef084ad0ec6c1cdd6512b0185bf9ed054b6835739 /scripts/build_db.py
parentecf9cf0d975b3eb7630a314e8b32dd59658c3e2a (diff)
downloadPROJ-ff9a386c72afb277aa79b86c7efb54e9843e810a.tar.gz
PROJ-ff9a386c72afb277aa79b86c7efb54e9843e810a.zip
Database: import datum ensemble accuracy and members (but do not use them)
Diffstat (limited to 'scripts/build_db.py')
-rwxr-xr-xscripts/build_db.py19
1 files changed, 13 insertions, 6 deletions
diff --git a/scripts/build_db.py b/scripts/build_db.py
index 817b226b..47a275f1 100755
--- a/scripts/build_db.py
+++ b/scripts/build_db.py
@@ -167,7 +167,7 @@ def fill_geodetic_datum(proj_db_cursor):
for (datum_code, datum_name, ellipsoid_code, prime_meridian_code, publication_date, frame_reference_epoch, deprecated) in res:
publication_date = compute_publication_date(datum_code, datum_name, frame_reference_epoch, publication_date)
proj_db_cursor.execute(
- "INSERT INTO geodetic_datum VALUES (?, ?, ?, NULL, ?, ?, ?, ?, ?, ?, ?)", (EPSG_AUTHORITY, datum_code, datum_name, EPSG_AUTHORITY, ellipsoid_code, EPSG_AUTHORITY, prime_meridian_code, publication_date, frame_reference_epoch, deprecated))
+ "INSERT INTO geodetic_datum VALUES (?, ?, ?, NULL, ?, ?, ?, ?, ?, ?, NULL, ?)", (EPSG_AUTHORITY, datum_code, datum_name, EPSG_AUTHORITY, ellipsoid_code, EPSG_AUTHORITY, prime_meridian_code, publication_date, frame_reference_epoch, deprecated))
def fill_vertical_datum(proj_db_cursor):
@@ -177,29 +177,36 @@ def fill_vertical_datum(proj_db_cursor):
for (datum_code, datum_name, publication_date, frame_reference_epoch, deprecated) in res:
publication_date = compute_publication_date(datum_code, datum_name, frame_reference_epoch, publication_date)
proj_db_cursor.execute(
- "INSERT INTO vertical_datum VALUES (?, ?, ?, NULL, ?, ?)", (EPSG_AUTHORITY, datum_code, datum_name,publication_date, deprecated))
+ "INSERT INTO vertical_datum VALUES (?, ?, ?, NULL, ?, NULL, ?)", (EPSG_AUTHORITY, datum_code, datum_name,publication_date, deprecated))
def fill_datumensemble(proj_db_cursor):
- proj_db_cursor.execute("SELECT datum_code, datum_name, deprecated FROM epsg.epsg_datum WHERE datum_type = 'ensemble'")
+ proj_db_cursor.execute("SELECT datum_code, datum_name, ensemble_accuracy, deprecated FROM epsg.epsg_datum JOIN epsg.epsg_datumensemble ON datum_code = datum_ensemble_code WHERE datum_type = 'ensemble'")
rows = proj_db_cursor.fetchall()
- for (datum_code, datum_name, deprecated) in rows:
+ for (datum_code, datum_name, ensemble_accuracy, deprecated) in rows:
+ assert ensemble_accuracy is not None
proj_db_cursor.execute("SELECT DISTINCT datum_type, ellipsoid_code, prime_meridian_code FROM epsg.epsg_datum WHERE datum_code IN (SELECT datum_code FROM epsg.epsg_datumensemblemember WHERE datum_ensemble_code = ?)", (datum_code,))
subrows = proj_db_cursor.fetchall()
assert len(subrows) == 1, datum_code
datum_type = subrows[0][0]
if datum_type == 'vertical':
- proj_db_cursor.execute("INSERT INTO vertical_datum (auth_name, code, name, description, publication_date, deprecated) VALUES (?, ?, ?, ?, ?, ?)", (EPSG_AUTHORITY, datum_code, datum_name, None, None, deprecated))
+ datum_ensemble_member_table = 'vertical_datum_ensemble_member'
+ proj_db_cursor.execute("INSERT INTO vertical_datum (auth_name, code, name, description, publication_date, ensemble_accuracy, deprecated) VALUES (?, ?, ?, ?, ?, ?, ?)", (EPSG_AUTHORITY, datum_code, datum_name, None, None, ensemble_accuracy, deprecated))
else:
+ datum_ensemble_member_table = 'geodetic_datum_ensemble_member'
assert datum_type in ('dynamic geodetic', 'geodetic'), datum_code
ellipsoid_code = subrows[0][1]
prime_meridian_code = subrows[0][2]
assert ellipsoid_code, datum_code
assert prime_meridian_code, datum_code
proj_db_cursor.execute(
- "INSERT INTO geodetic_datum (auth_name, code, name, description, ellipsoid_auth_name, ellipsoid_code, prime_meridian_auth_name, prime_meridian_code, publication_date , deprecated) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", (EPSG_AUTHORITY, datum_code, datum_name, None, EPSG_AUTHORITY, ellipsoid_code, EPSG_AUTHORITY, prime_meridian_code, None, deprecated))
+ "INSERT INTO geodetic_datum (auth_name, code, name, description, ellipsoid_auth_name, ellipsoid_code, prime_meridian_auth_name, prime_meridian_code, publication_date , ensemble_accuracy, deprecated) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", (EPSG_AUTHORITY, datum_code, datum_name, None, EPSG_AUTHORITY, ellipsoid_code, EPSG_AUTHORITY, prime_meridian_code, None, ensemble_accuracy, deprecated))
+ proj_db_cursor.execute("SELECT datum_code, datum_sequence FROM epsg.epsg_datumensemblemember WHERE datum_ensemble_code = ? ORDER by datum_sequence", (datum_code,))
+ for member_code, sequence in proj_db_cursor.fetchall():
+ proj_db_cursor.execute(
+ "INSERT INTO " + datum_ensemble_member_table + " (ensemble_auth_name, ensemble_code, member_auth_name, member_code, sequence) VALUES (?, ?, ?, ?, ?)", (EPSG_AUTHORITY, datum_code, EPSG_AUTHORITY, member_code, sequence))
def fill_coordinate_system(proj_db_cursor):
proj_db_cursor.execute(