[fix] A few Quattroshapes fixes
This commit is contained in:
@@ -2,6 +2,8 @@ import argparse
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
from functools import partial
|
||||||
|
|
||||||
this_dir = os.path.realpath(os.path.dirname(__file__))
|
this_dir = os.path.realpath(os.path.dirname(__file__))
|
||||||
sys.path.append(os.path.realpath(os.path.join(os.pardir, os.pardir)))
|
sys.path.append(os.path.realpath(os.path.join(os.pardir, os.pardir)))
|
||||||
|
|
||||||
@@ -9,6 +11,16 @@ from geodata.polygons.index import *
|
|||||||
from geodata.encoding import safe_decode
|
from geodata.encoding import safe_decode
|
||||||
|
|
||||||
|
|
||||||
|
decode_latin1 = partial(safe_decode, encoding='latin1')
|
||||||
|
|
||||||
|
|
||||||
|
def str_id(v):
|
||||||
|
v = int(v)
|
||||||
|
if v <= 0:
|
||||||
|
return None
|
||||||
|
return str(v)
|
||||||
|
|
||||||
|
|
||||||
class ReverseGeocoder(RTreePolygonIndex):
|
class ReverseGeocoder(RTreePolygonIndex):
|
||||||
COUNTRIES_FILENAME = 'qs_adm0.shp'
|
COUNTRIES_FILENAME = 'qs_adm0.shp'
|
||||||
ADMIN1_FILENAME = 'qs_adm1.shp'
|
ADMIN1_FILENAME = 'qs_adm1.shp'
|
||||||
@@ -36,57 +48,57 @@ class ReverseGeocoder(RTreePolygonIndex):
|
|||||||
'qs_a0': safe_decode,
|
'qs_a0': safe_decode,
|
||||||
'qs_iso_cc': safe_decode,
|
'qs_iso_cc': safe_decode,
|
||||||
'qs_level': safe_decode,
|
'qs_level': safe_decode,
|
||||||
'qs_gn_id': int,
|
'qs_gn_id': str_id,
|
||||||
'qs_woe_id': int,
|
'qs_woe_id': str_id,
|
||||||
},
|
},
|
||||||
ADMIN1_FILENAME: {
|
ADMIN1_FILENAME: {
|
||||||
'qs_a1': safe_decode,
|
'qs_a1': safe_decode,
|
||||||
'qs_a1_lc': safe_decode,
|
'qs_a1_lc': safe_decode,
|
||||||
'qs_level': safe_decode,
|
'qs_level': safe_decode,
|
||||||
'qs_gn_id': int,
|
'qs_gn_id': str_id,
|
||||||
'qs_woe_id': int,
|
'qs_woe_id': str_id,
|
||||||
},
|
},
|
||||||
ADMIN1_REGION_FILENAME: {
|
ADMIN1_REGION_FILENAME: {
|
||||||
'qs_a1r': safe_decode,
|
'qs_a1r': safe_decode,
|
||||||
'qs_a1r_lc': safe_decode,
|
'qs_a1r_lc': safe_decode,
|
||||||
'qs_level': safe_decode,
|
'qs_level': safe_decode,
|
||||||
'qs_gn_id': int,
|
'qs_gn_id': str_id,
|
||||||
'qs_woe_id': int,
|
'qs_woe_id': str_id,
|
||||||
},
|
},
|
||||||
ADMIN2_FILENAME: {
|
ADMIN2_FILENAME: {
|
||||||
'qs_a2': safe_decode,
|
'qs_a2': decode_latin1,
|
||||||
'qs_a2_lc': safe_decode,
|
'qs_a2_lc': safe_decode,
|
||||||
'qs_level': safe_decode,
|
'qs_level': safe_decode,
|
||||||
'qs_gn_id': int,
|
'qs_gn_id': str_id,
|
||||||
'qs_woe_id': int,
|
'qs_woe_id': str_id,
|
||||||
},
|
},
|
||||||
ADMIN2_REGION_FILENAME: {
|
ADMIN2_REGION_FILENAME: {
|
||||||
'qs_a2r': safe_decode,
|
'qs_a2r': safe_decode,
|
||||||
'qs_a2r_lc': safe_decode,
|
'qs_a2r_lc': safe_decode,
|
||||||
'qs_level': safe_decode,
|
'qs_level': safe_decode,
|
||||||
'qs_gn_id': int,
|
'qs_gn_id': str_id,
|
||||||
'qs_woe_id': int,
|
'qs_woe_id': str_id,
|
||||||
},
|
},
|
||||||
LOCAL_ADMIN_FILENAME: {
|
LOCAL_ADMIN_FILENAME: {
|
||||||
'qs_la': safe_decode,
|
'qs_la': safe_decode,
|
||||||
'qs_la_lc': safe_decode,
|
'qs_la_lc': safe_decode,
|
||||||
'qs_level': safe_decode,
|
'qs_level': safe_decode,
|
||||||
'qs_gn_id': int,
|
'qs_gn_id': str_id,
|
||||||
'qs_woe_id': int,
|
'qs_woe_id': str_id,
|
||||||
},
|
},
|
||||||
LOCALITIES_FILENAME: {
|
LOCALITIES_FILENAME: {
|
||||||
'qs_loc': safe_decode,
|
'qs_loc': safe_decode,
|
||||||
'qs_loc_alt': safe_decode,
|
'qs_loc_alt': safe_decode,
|
||||||
'qs_level': safe_decode,
|
'qs_level': safe_decode,
|
||||||
'qs_gn_id': int,
|
'qs_gn_id': str,
|
||||||
'qs_woe_id': int,
|
'qs_woe_id': str,
|
||||||
},
|
},
|
||||||
NEIGHBORHOODS_FILENAME: {
|
NEIGHBORHOODS_FILENAME: {
|
||||||
'name': safe_decode,
|
'name': safe_decode,
|
||||||
'name_en': safe_decode,
|
'name_en': safe_decode,
|
||||||
'qs_level': safe_decode,
|
'qs_level': safe_decode,
|
||||||
'woe_id': int,
|
'woe_id': str_id,
|
||||||
'gn_id': int,
|
'gn_id': str_id,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user