[polygons] Admin level constants, using transformed name as the sort key
This commit is contained in:
@@ -31,14 +31,23 @@ class ReverseGeocoder(RTreePolygonIndex):
|
|||||||
LOCALITIES_FILENAME = 'qs_localities.shp'
|
LOCALITIES_FILENAME = 'qs_localities.shp'
|
||||||
NEIGHBORHOODS_FILENAME = 'qs_neighborhoods.shp'
|
NEIGHBORHOODS_FILENAME = 'qs_neighborhoods.shp'
|
||||||
|
|
||||||
sorted_levels = ('adm0',
|
COUNTRY = 'adm0'
|
||||||
'adm1',
|
ADMIN1 = 'adm1'
|
||||||
'adm1_region',
|
ADMIN1_REGION = 'adm1_region'
|
||||||
'adm2',
|
ADMIN2 = 'adm2'
|
||||||
'adm2_region',
|
ADMIN2_REGION = 'adm2_region'
|
||||||
'localadmin',
|
LOCAL_ADMIN = 'localadmin'
|
||||||
'locality',
|
LOCALITY = 'locality'
|
||||||
'neighborhood',
|
NEIGHBORHOOD = 'neighborhood'
|
||||||
|
|
||||||
|
sorted_levels = (COUNTRY,
|
||||||
|
ADMIN1,
|
||||||
|
ADMIN1_REGION,
|
||||||
|
ADMIN2,
|
||||||
|
ADMIN2_REGION,
|
||||||
|
LOCAL_ADMIN,
|
||||||
|
LOCALITY,
|
||||||
|
NEIGHBORHOOD,
|
||||||
)
|
)
|
||||||
|
|
||||||
sort_levels = {k: i for i, k in enumerate(sorted_levels)}
|
sort_levels = {k: i for i, k in enumerate(sorted_levels)}
|
||||||
@@ -108,6 +117,7 @@ class ReverseGeocoder(RTreePolygonIndex):
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_from_shapefiles(cls,
|
def create_from_shapefiles(cls,
|
||||||
input_files,
|
input_files,
|
||||||
@@ -193,7 +203,7 @@ class ReverseGeocoder(RTreePolygonIndex):
|
|||||||
|
|
||||||
def sort_level(self, i):
|
def sort_level(self, i):
|
||||||
props, p = self.polygons[i]
|
props, p = self.polygons[i]
|
||||||
return self.sort_levels.get(props['qs_level'], 0)
|
return self.sort_levels.get(props[self.LEVEL], 0)
|
||||||
|
|
||||||
def get_candidate_polygons(self, lat, lon):
|
def get_candidate_polygons(self, lat, lon):
|
||||||
candidates = OrderedDict.fromkeys(self.index.intersection((lon, lat, lon, lat))).keys()
|
candidates = OrderedDict.fromkeys(self.index.intersection((lon, lat, lon, lat))).keys()
|
||||||
|
|||||||
Reference in New Issue
Block a user