change reverse_geocoder for openmaps api call

This commit is contained in:
Guille Gutierrez 2020-06-26 14:34:37 -04:00
parent ab20418a18
commit 106fe545fa
3 changed files with 21 additions and 8 deletions

View File

@ -7,7 +7,7 @@ import sys
from typing import List, Union
import pyproj
import reverse_geocoder as rg
# import reverse_geocoder as rg
from pyproj import Transformer
from city_model_structure.building import Building
@ -31,6 +31,7 @@ class City:
# todo: right now extracted at city level, in the future should be extracted also at building level if exist
self._location = None
@property
def _get_location(self):
if self._location is None:
gps = pyproj.CRS('EPSG:4326') # LatLon with WGS84 datum used by GPS units and Google Earth
@ -41,7 +42,8 @@ class City:
sys.exit()
transformer = Transformer.from_crs(input_reference, gps)
coordinates = transformer.transform(self.lower_corner[0], self.lower_corner[1])
self._location = rg.search(coordinates)
self._location = GeometryHelper.get_location(coordinates[0], coordinates[1])
# rg.search(coordinates)
return self._location
@property
@ -50,7 +52,7 @@ class City:
City country code
:return: str
"""
return self._get_location()[0]['cc']
return self._get_location[0]
@property
def name(self):
@ -58,9 +60,7 @@ class City:
City name
:return: str
"""
if self._name is None:
self._name = self._get_location()[0]['name']
return self._name
return self._get_location[1]
@property
def city_objects(self) -> Union[List[CityObject], None]:

View File

@ -7,6 +7,8 @@ import math
import numpy as np
import open3d as o3d
import requests
import json
from trimesh import Trimesh
from trimesh import intersections
from helpers.configuration_helper import ConfigurationHelper
@ -187,3 +189,14 @@ class GeometryHelper:
return 'Ground'
else:
return 'Roof'
@staticmethod
def get_location(latitude, longitude):
url = 'https://nominatim.openstreetmap.org/reverse?lat={latitude}&lon={longitude}&format=json'
resp = requests.get(url.format(latitude=latitude, longitude=longitude))
if resp.status_code != 200:
# This means something went wrong.
raise Exception('GET /tasks/ {}'.format(resp.status_code))
else:
response = resp.json()
return [response['address']['country_code'], response['address']['city']]

View File

@ -1,5 +1,5 @@
xmltodict~=0.12.0
numpy~=1.18.5
numpy~=1.19.0
open3d~=0.10.0.0
trimesh~=3.7.0
pyproj~=2.6.1.post1
@ -15,7 +15,7 @@ parso~=0.7.0
jedi~=0.17.0
pytz~=2020.1
setuptools~=47.3.0
scipy~=1.4.1
scipy~=1.5.0
six~=1.15.0
webencodings~=0.5.1
packaging~=20.4