diff options
Diffstat (limited to 'scripts/build_db_from_esri.py')
| -rwxr-xr-x | scripts/build_db_from_esri.py | 49 |
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() |
