26 lines
630 B
Python
26 lines
630 B
Python
from __future__ import annotations
|
|
from typing import Optional, Tuple, Any
|
|
|
|
import requests
|
|
import pandas as pd
|
|
|
|
|
|
def get_building_id(row: pd.Series[Any]) -> 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
|