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

View File

@ -7,6 +7,8 @@ import math
import numpy as np import numpy as np
import open3d as o3d import open3d as o3d
import requests
import json
from trimesh import Trimesh from trimesh import Trimesh
from trimesh import intersections from trimesh import intersections
from helpers.configuration_helper import ConfigurationHelper from helpers.configuration_helper import ConfigurationHelper
@ -187,3 +189,14 @@ class GeometryHelper:
return 'Ground' return 'Ground'
else: else:
return 'Roof' 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 xmltodict~=0.12.0
numpy~=1.18.5 numpy~=1.19.0
open3d~=0.10.0.0 open3d~=0.10.0.0
trimesh~=3.7.0 trimesh~=3.7.0
pyproj~=2.6.1.post1 pyproj~=2.6.1.post1
@ -15,7 +15,7 @@ parso~=0.7.0
jedi~=0.17.0 jedi~=0.17.0
pytz~=2020.1 pytz~=2020.1
setuptools~=47.3.0 setuptools~=47.3.0
scipy~=1.4.1 scipy~=1.5.0
six~=1.15.0 six~=1.15.0
webencodings~=0.5.1 webencodings~=0.5.1
packaging~=20.4 packaging~=20.4