[polygons] Admin level constants, using transformed name as the sort key

This commit is contained in:
Al
2015-10-13 21:20:58 -04:00
parent d151445dc3
commit e7b1040a47

View File

@@ -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()