diff --git a/parser/__init__.py b/parser/__init__.py index 28442cb..d20c8cb 100644 --- a/parser/__init__.py +++ b/parser/__init__.py @@ -1,2 +1,3 @@ from .rosseti import RossetiParser -from .address import split_addresses \ No newline at end of file +from .address import split_addresses +from .building_id import fetch_builing_ids \ No newline at end of file diff --git a/parser/building_id.py b/parser/building_id.py new file mode 100644 index 0000000..4bc0938 --- /dev/null +++ b/parser/building_id.py @@ -0,0 +1,24 @@ +from typing import Optional, Tuple + +import requests +import pandas as pd + + +def get_building_id(row) -> Optional[Tuple[int, float, float]]: + r = requests.get('https://geocode.gate.petersburg.ru/parse/eas', params={ + 'street': row['Улица'] + }) + + res = r.json() + + if 'error' not in res: + return (res['Building_ID'], res['Longitude'], res['Latitude']) + + return None + + +def fetch_builing_ids(df: pd.DataFrame) -> pd.DataFrame: + df[['Building_ID', 'lng', 'lat']] = df.apply( + get_building_id, axis=1, result_type='expand') + + return df