[polygons] OSM reverse geocoder sort levels

This commit is contained in:
Al
2015-11-20 13:52:30 -05:00
parent b948a8ebd8
commit 130518fe58

View File

@@ -611,6 +611,9 @@ class OSMReverseGeocoder(RTreePolygonIndex):
for the dependency lookups and Tarjan's algorithm for finding strongly connected for the dependency lookups and Tarjan's algorithm for finding strongly connected
components to stitch together the polygons. components to stitch together the polygons.
''' '''
ADMIN_LEVEL = 'admin_level'
include_property_patterns = set([ include_property_patterns = set([
'name', 'name',
'name:*', 'name:*',
@@ -622,6 +625,7 @@ class OSMReverseGeocoder(RTreePolygonIndex):
'short_name', 'short_name',
'short_name:*', 'short_name:*',
'admin_level', 'admin_level',
'place',
'wikipedia', 'wikipedia',
'wikipedia:*', 'wikipedia:*',
]) ])
@@ -715,6 +719,13 @@ class OSMReverseGeocoder(RTreePolygonIndex):
return index return index
def sort_level(self, i):
props, p = self.polygons[i]
return self.sort_levels.get(props[self.ADMIN_LEVEL], 0)
def get_candidate_polygons(self, lat, lon, all_levels=False):
candidates = super(OSMReverseGeocoder, self).get_candidate_polygons(lat, lon, all_levels=all_levels)
return sorted(candidates, key=self.sort_level, reverse=True)
if __name__ == '__main__': if __name__ == '__main__':
# Handle argument parsing here # Handle argument parsing here