aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/grid_checks.py50
1 files changed, 39 insertions, 11 deletions
diff --git a/scripts/grid_checks.py b/scripts/grid_checks.py
index 556ed326..f2cd786c 100755
--- a/scripts/grid_checks.py
+++ b/scripts/grid_checks.py
@@ -34,7 +34,8 @@ import fnmatch
import os
import sqlite3
-parser = argparse.ArgumentParser(description='Check database and PROJ-data consistency.')
+parser = argparse.ArgumentParser(
+ description='Check database and PROJ-data consistency.')
parser.add_argument('path_to_proj_db',
help='Full pathname to proj.db')
parser.add_argument('path_to_proj_data',
@@ -48,6 +49,9 @@ group.add_argument('--not-in-proj-data', dest='not_in_proj_data', action='store_
group.add_argument('--not-in-db', dest='not_in_db', action='store_true',
help='list grids in PROJ-data repository, but not registered in grid_alternatives')
+parser.add_argument('--show-superseded', dest='show_superseded', action='store_true',
+ help='Show superseded grid transformations in --not-in-grid-alternatives mode')
+
args = parser.parse_args()
dbname = args.path_to_proj_db
@@ -55,13 +59,33 @@ proj_data = args.path_to_proj_data
if args.not_in_grid_alternatives:
conn = sqlite3.connect(dbname)
- print('Authority, code, name, grid_name, is_superseded')
- res = conn.execute("""
- SELECT auth_name, code, name, grid_name, EXISTS (SELECT 1 FROM supersession WHERE superseded_table_name = 'grid_transformation' AND superseded_auth_name = auth_name AND superseded_code = code) AS superseded FROM grid_transformation
- WHERE deprecated = 0 AND
- NOT EXISTS (SELECT 1 FROM grid_alternatives WHERE original_grid_name = grid_name)""")
+ header = '"Authority","code","name","extent_name","grid_name"'
+ if args.show_superseded:
+ header += ',"is_superseded"'
+ print(header)
+ sql = """
+ SELECT gt.auth_name, gt.code, gt.name, e.name, gt.grid_name,
+ EXISTS (SELECT 1 FROM supersession WHERE
+ superseded_table_name = 'grid_transformation' AND
+ superseded_auth_name = gt.auth_name AND
+ superseded_code = gt.code) AS superseded
+ FROM grid_transformation gt
+ JOIN usage u
+ ON u.object_table_name = 'grid_transformation' AND
+ u.object_auth_name = gt.auth_name AND
+ u.object_code = gt.code
+ JOIN extent e
+ ON e.auth_name = u.extent_auth_name AND
+ e.code = u.extent_code
+ WHERE gt.deprecated = 0 AND
+ NOT EXISTS (SELECT 1 FROM grid_alternatives WHERE original_grid_name = gt.grid_name)"""
+ if not args.show_superseded:
+ sql += " AND superseded = 0"
+ res = conn.execute(sql)
for row in res:
- print(row)
+ if not args.show_superseded:
+ row = [x for x in row][0:-1]
+ print(','.join(['"' + str(x) + '"' for x in row]))
elif args.not_in_proj_data:
@@ -71,10 +95,12 @@ elif args.not_in_proj_data:
set_grids.add(filename)
conn = sqlite3.connect(dbname)
- res = conn.execute("SELECT DISTINCT proj_grid_name FROM grid_alternatives WHERE open_license is NULL OR open_license != 0")
+ res = conn.execute(
+ "SELECT DISTINCT proj_grid_name FROM grid_alternatives WHERE open_license is NULL OR open_license != 0")
for (grid_name,) in res:
if grid_name not in set_grids:
- print('ERROR: grid ' + grid_name + ' in grid_alternatives but missing in PROJ-data')
+ print('ERROR: grid ' + grid_name +
+ ' in grid_alternatives but missing in PROJ-data')
elif args.not_in_db:
@@ -91,8 +117,10 @@ elif args.not_in_db:
conn = sqlite3.connect(dbname)
for filename in sorted(set_grids):
- res = conn.execute("SELECT 1 FROM grid_alternatives WHERE proj_grid_name = ?", (filename,))
+ res = conn.execute(
+ "SELECT 1 FROM grid_alternatives WHERE proj_grid_name = ?", (filename,))
if not res.fetchone():
- print('WARNING: grid ' + filename + ' in PROJ-data but missing in grid_alternatives')
+ print('WARNING: grid ' + filename +
+ ' in PROJ-data but missing in grid_alternatives')
else:
raise Exception('unknown mode')