aboutsummaryrefslogtreecommitdiff
path: root/scripts/build_db_from_esri.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/build_db_from_esri.py')
-rwxr-xr-xscripts/build_db_from_esri.py49
1 files changed, 25 insertions, 24 deletions
diff --git a/scripts/build_db_from_esri.py b/scripts/build_db_from_esri.py
index 5a782dff..83e30c5d 100755
--- a/scripts/build_db_from_esri.py
+++ b/scripts/build_db_from_esri.py
@@ -55,12 +55,8 @@ date = args.date
conn = sqlite3.connect(proj_db)
cursor = conn.cursor()
-all_sql = []
-
-all_sql.append(
- """INSERT INTO "metadata" VALUES('ESRI.VERSION', '%s');""" % (version))
-all_sql.append(
- """INSERT INTO "metadata" VALUES('ESRI.DATE', '%s');""" % (date))
+all_sql = ["""INSERT INTO "metadata" VALUES('ESRI.VERSION', '{}');""".format(version),
+ """INSERT INTO "metadata" VALUES('ESRI.DATE', '{}');""".format(date)]
manual_grids = """------------------
-- ESRI grid names
@@ -91,6 +87,7 @@ VALUES
-- 'france/RGNC1991_NEA74Noumea' : we have a 3D geocentric corresponding one: no need for mapping
"""
+
def escape_literal(x):
return x.replace("'", "''")
@@ -118,7 +115,7 @@ def find_extent(extentname, slat, nlat, llon, rlon):
row = cursor.fetchone()
if row is None:
- #print('unknown extent inserted: ' + extentname)
+ # print('unknown extent inserted: ' + extentname)
if float(rlon) > 180:
new_rlon = '%s' % (float(rlon) - 360)
@@ -126,15 +123,15 @@ def find_extent(extentname, slat, nlat, llon, rlon):
(rlon, new_rlon, extentname))
rlon = new_rlon
- assert float(slat) >= -90 and float(slat) <= 90, (extentname,
- slat, nlat, llon, rlon)
- assert float(nlat) >= -90 and float(nlat) <= 90, (extentname,
- slat, nlat, llon, rlon)
+ assert -90 <= float(slat) <= 90, (extentname,
+ slat, nlat, llon, rlon)
+ assert -90 <= float(nlat) <= 90, (extentname,
+ slat, nlat, llon, rlon)
assert float(nlat) > float(slat), (extentname, slat, nlat, llon, rlon)
- assert float(llon) >= -180 and float(llon) <= 180, (extentname,
- slat, nlat, llon, rlon)
- assert float(rlon) >= -180 and float(rlon) <= 180, (extentname,
- slat, nlat, llon, rlon)
+ assert -180 <= float(llon) <= 180, (extentname,
+ slat, nlat, llon, rlon)
+ assert -180 <= float(rlon) <= 180, (extentname,
+ slat, nlat, llon, rlon)
sql = """INSERT INTO "extent" VALUES('ESRI','%d','%s','%s',%s,%s,%s,%s,0);""" % (
esri_area_counter, escape_literal(extentname), escape_literal(extentname), slat, nlat, llon, rlon)
@@ -151,6 +148,7 @@ def find_extent(extentname, slat, nlat, llon, rlon):
#################
+
def import_linunit():
with open(path_to_csv / 'pe_list_linunit.csv', 'rt') as csvfile:
reader = csv.reader(csvfile)
@@ -642,7 +640,6 @@ def import_geogcs():
p['pm_code'] = pm_code
map_datum_esri_to_parameters[datum_code] = p
-
# We may have already the EPSG entry, so use it preferably
if esri_name not in map_geogcs_esri_name_to_auth_code:
map_geogcs_esri_name_to_auth_code[esri_name] = ['ESRI', code]
@@ -653,7 +650,7 @@ def import_geogcs():
sql = """INSERT INTO "usage" VALUES('ESRI', '%s_USAGE','geodetic_crs','ESRI','%s','%s','%s','%s','%s');""" % (code, code, extent_auth_name, extent_code, 'EPSG', '1024')
all_sql.append(sql)
- if deprecated and code != latestWkid and code not in ('4305', '4812'): # Voirol 1960 no longer in EPSG
+ if deprecated and code != latestWkid and code not in ('4305', '4812'): # Voirol 1960 no longer in EPSG
cursor.execute(
"SELECT name FROM geodetic_crs WHERE auth_name = 'EPSG' AND code = ?", (latestWkid,))
src_row = cursor.fetchone()
@@ -665,15 +662,17 @@ def import_geogcs():
########################
+
def parse_wkt(s, level):
if s[0] == '"':
return s
pos = s.find('[')
if pos < 0:
return s
- return { s[0:pos] : parse_wkt_array(s[pos+1:-1], level + 1) }
+ return {s[0:pos]: parse_wkt_array(s[pos+1:-1], level + 1)}
-def parse_wkt_array(s, level = 0):
+
+def parse_wkt_array(s, level=0):
ar = []
in_string = False
cur_token = ''
@@ -693,7 +692,7 @@ def parse_wkt_array(s, level = 0):
cur_token += c
indent_level -= 1
assert indent_level >= 0
- elif indent_level == 0 and c == ',':
+ elif indent_level == 0 and c == ',':
ar.append(parse_wkt(cur_token, level + 1))
cur_token = ''
else:
@@ -705,7 +704,7 @@ def parse_wkt_array(s, level = 0):
if level == 0:
d = {}
for elt in ar:
- assert type(elt) == type({})
+ assert isinstance(elt, dict)
assert len(elt) == 1
if 'PROJECTION' in elt:
assert len(elt['PROJECTION']) == 1, elt['PROJECTION']
@@ -737,6 +736,7 @@ def parse_wkt_array(s, level = 0):
########################
+
def get_cs(parsed_conv_wkt):
UNIT_NAME = parsed_conv_wkt['UNIT_NAME']
@@ -778,10 +778,12 @@ def get_cs(parsed_conv_wkt):
########################
+
map_projcs_esri_name_to_auth_code = {}
set_esri_cs_code = set()
map_conversion_sql_to_code = {}
+
def import_projcs():
with open(path_to_csv / 'pe_list_projcs.csv', 'rt') as csvfile:
reader = csv.reader(csvfile)
@@ -1545,7 +1547,7 @@ def import_geogtran():
# print('Skipping GEOGTRAN %s (EPSG source) since it uses a non-supported yet suported method'% esri_name)
continue
if 'NADCON5' in wkt:
- print('Skipping NADCON5 %s (EPSG source) since it uses a non-supported yet suported method'% esri_name)
+ print('Skipping NADCON5 %s (EPSG source) since it uses a non-supported yet suported method' % esri_name)
continue
# Don't do anything particular except checking we know it
@@ -1556,7 +1558,7 @@ def import_geogtran():
# We don't want to import ESRI deprecated transformations
# (there are a lot), do we ?
if deprecated:
- #print('Skipping deprecated GEOGTRAN %s' % esri_name)
+ # print('Skipping deprecated GEOGTRAN %s' % esri_name)
continue
assert wkt.startswith('GEOGTRAN')
@@ -1752,7 +1754,6 @@ def import_geogtran():
assert filename.startswith('Dataset_')
filename = filename[len('Dataset_'):]
-
cursor.execute(
"SELECT g.name, g.grid_name FROM grid_transformation g JOIN usage u ON u.object_table_name = 'grid_transformation' AND u.object_auth_name = g.auth_name AND u.object_code = g.code JOIN extent e ON u.extent_auth_name = e.auth_name AND u.extent_code = e.code WHERE g.auth_name != 'ESRI' AND g.source_crs_auth_name = ? AND g.source_crs_code = ? AND g.target_crs_auth_name = ? AND g.target_crs_code = ? AND e.auth_name = ? AND e.code = ?", (src_crs_auth_name, src_crs_code, dst_crs_auth_name, dst_crs_code, extent_auth_name, extent_code))
src_row = cursor.fetchone()