From 0b635377ef542b86d40c52a081829b224b4f38e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Ignacio=20S=C3=A1nchez=20Lara?= Date: Mon, 16 Jul 2018 11:52:25 +0200 Subject: [PATCH] match_types for HERE metadata --- .../cartodb_services/here/geocoder.py | 16 +++++++++++++++- test/integration/test_street_functions.py | 4 ++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/server/lib/python/cartodb_services/cartodb_services/here/geocoder.py b/server/lib/python/cartodb_services/cartodb_services/here/geocoder.py index 44d695d..d8f7f41 100644 --- a/server/lib/python/cartodb_services/cartodb_services/here/geocoder.py +++ b/server/lib/python/cartodb_services/cartodb_services/here/geocoder.py @@ -13,6 +13,18 @@ PRECISION_BY_MATCH_TYPE = { 'pointAddress': PRECISION_PRECISE, 'interpolated': PRECISION_INTERPOLATED } +MATCH_TYPE_BY_MATCH_LEVEL = { + 'landmark': 'point_of_interest', + 'country': 'country', + 'state': 'state', + 'county': 'county', + 'city': 'locality', + 'district': 'district', + 'street': 'street', + 'intersection': 'intersection', + 'houseNumber': 'street_number', + 'postalCode': 'postal_code' +} class HereMapsGeocoder(Traceable): @@ -135,7 +147,9 @@ class HereMapsGeocoder(Traceable): # See https://stackoverflow.com/questions/51285622/missing-matchtype-at-here-geocoding-responses precision = PRECISION_BY_MATCH_TYPE[ result.get('MatchType', 'pointAddress')] + match_type = MATCH_TYPE_BY_MATCH_LEVEL.get(result['MatchLevel'], None) return { 'relevance': result['Relevance'], - 'precision': precision + 'precision': precision, + 'match_types': [match_type] if match_type else [] } diff --git a/test/integration/test_street_functions.py b/test/integration/test_street_functions.py index 7575b7c..bf7672e 100644 --- a/test/integration/test_street_functions.py +++ b/test/integration/test_street_functions.py @@ -78,9 +78,9 @@ class TestStreetFunctionsSetUp(TestCase): HERE_METADATAS = { 'Plaza España, Barcelona': - {'relevance': 1, 'precision': 'precise'}, + {'relevance': 1, 'precision': 'precise', 'match_types': ['street']}, 'Santiago Rusiñol 123, Valladolid': - {'relevance': 0.89, 'precision': 'precise'} # Wrong. See https://stackoverflow.com/questions/51285622/missing-matchtype-at-here-geocoding-responses + {'relevance': 0.89, 'precision': 'precise', 'match_types': ['street']} # Wrong. See https://stackoverflow.com/questions/51285622/missing-matchtype-at-here-geocoding-responses } TOMTOM_METADATAS = {