search/reverse/lookup with geojson,geocodejson output

This commit is contained in:
Marc Tobias Metten
2018-03-18 01:49:26 +01:00
committed by marc tobias
parent 1d0da944a6
commit 7a964efb3a
17 changed files with 455 additions and 23 deletions

View File

@@ -110,6 +110,10 @@ class SearchResponse(GenericResponse):
self.header['json_func'] = m.group(1)
self.result = json.JSONDecoder(object_pairs_hook=OrderedDict).decode(code)
def parse_geojson(self):
self.parse_json()
self.result = geojson_results_to_json_results(self.result)
def parse_html(self):
content, errors = tidy_document(self.page,
options={'char-encoding' : 'utf8'})
@@ -185,6 +189,12 @@ class ReverseResponse(GenericResponse):
self.header['json_func'] = m.group(1)
self.result = [json.JSONDecoder(object_pairs_hook=OrderedDict).decode(code)]
def parse_geojson(self):
self.parse_json()
if 'error' in self.result:
return
self.result = geojson_results_to_json_results(self.result[0])
def parse_xml(self):
et = ET.fromstring(self.page)
@@ -250,6 +260,27 @@ class StatusResponse(GenericResponse):
self.result = [json.JSONDecoder(object_pairs_hook=OrderedDict).decode(self.page)]
def geojson_result_to_json_result(geojson_result):
result = geojson_result['properties']
result['geojson'] = geojson_result['geometry']
if 'bbox' in geojson_result:
# bbox is minlon, minlat, maxlon, maxlat
# boundingbox is minlat, maxlat, minlon, maxlon
result['boundingbox'] = [
geojson_result['bbox'][1],
geojson_result['bbox'][3],
geojson_result['bbox'][0],
geojson_result['bbox'][2]
]
return result
def geojson_results_to_json_results(geojson_results):
if 'error' in geojson_results:
return
return list(map(geojson_result_to_json_result, geojson_results['features']))
@when(u'searching for "(?P<query>.*)"(?P<dups> with dups)?')
def query_cmd(context, query, dups):
""" Query directly via PHP script.
@@ -414,6 +445,8 @@ def website_lookup_request(context, fmt, query):
if fmt == 'json ':
outfmt = 'json'
elif fmt == 'geojson ':
outfmt = 'geojson'
else:
outfmt = 'xml'