mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-26 11:08:13 +00:00
avoid forwarding variables via SQL
This commit is contained in:
@@ -302,7 +302,9 @@ def create_from_osmline_row(row: Optional[SaRow],
|
|||||||
|
|
||||||
|
|
||||||
def create_from_tiger_row(row: Optional[SaRow],
|
def create_from_tiger_row(row: Optional[SaRow],
|
||||||
class_type: Type[BaseResultT]) -> Optional[BaseResultT]:
|
class_type: Type[BaseResultT],
|
||||||
|
osm_type: Optional[str] = None,
|
||||||
|
osm_id: Optional[int] = None) -> Optional[BaseResultT]:
|
||||||
""" Construct a new result and add the data from the result row
|
""" Construct a new result and add the data from the result row
|
||||||
from the Tiger data interpolation table. 'class_type' defines
|
from the Tiger data interpolation table. 'class_type' defines
|
||||||
the type of result to return. Returns None if the row is None.
|
the type of result to return. Returns None if the row is None.
|
||||||
@@ -317,7 +319,7 @@ def create_from_tiger_row(row: Optional[SaRow],
|
|||||||
|
|
||||||
res = class_type(source_table=SourceTable.TIGER,
|
res = class_type(source_table=SourceTable.TIGER,
|
||||||
place_id=row.place_id,
|
place_id=row.place_id,
|
||||||
osm_object=(row.osm_type, row.osm_id),
|
osm_object=(osm_type or row.osm_type, osm_id or row.osm_id),
|
||||||
category=('place', 'houses' if hnr is None else 'house'),
|
category=('place', 'houses' if hnr is None else 'house'),
|
||||||
postcode=row.postcode,
|
postcode=row.postcode,
|
||||||
country_code='us',
|
country_code='us',
|
||||||
|
|||||||
@@ -7,7 +7,8 @@
|
|||||||
"""
|
"""
|
||||||
Implementation of reverse geocoding.
|
Implementation of reverse geocoding.
|
||||||
"""
|
"""
|
||||||
from typing import Optional, List, Callable, Type, Tuple, Dict, Any
|
from typing import Optional, List, Callable, Type, Tuple, Dict, Any, cast
|
||||||
|
import functools
|
||||||
|
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
|
|
||||||
@@ -270,9 +271,7 @@ class ReverseGeocoder:
|
|||||||
return (await self.conn.execute(sql, self.bind_params)).one_or_none()
|
return (await self.conn.execute(sql, self.bind_params)).one_or_none()
|
||||||
|
|
||||||
|
|
||||||
async def _find_tiger_number_for_street(self, parent_place_id: int,
|
async def _find_tiger_number_for_street(self, parent_place_id: int) -> Optional[SaRow]:
|
||||||
parent_type: str,
|
|
||||||
parent_id: int) -> Optional[SaRow]:
|
|
||||||
t = self.conn.t.tiger
|
t = self.conn.t.tiger
|
||||||
|
|
||||||
def _base_query() -> SaSelect:
|
def _base_query() -> SaSelect:
|
||||||
@@ -287,8 +286,6 @@ class ReverseGeocoder:
|
|||||||
|
|
||||||
return sa.select(inner.c.place_id,
|
return sa.select(inner.c.place_id,
|
||||||
inner.c.parent_place_id,
|
inner.c.parent_place_id,
|
||||||
sa.sql.expression.label('osm_type', parent_type),
|
|
||||||
sa.sql.expression.label('osm_id', parent_id),
|
|
||||||
_interpolated_housenumber(inner),
|
_interpolated_housenumber(inner),
|
||||||
_interpolated_position(inner),
|
_interpolated_position(inner),
|
||||||
inner.c.postcode,
|
inner.c.postcode,
|
||||||
@@ -332,14 +329,15 @@ class ReverseGeocoder:
|
|||||||
distance = addr_row.distance
|
distance = addr_row.distance
|
||||||
elif row.country_code == 'us' and parent_place_id is not None:
|
elif row.country_code == 'us' and parent_place_id is not None:
|
||||||
log().comment('Find TIGER housenumber for street')
|
log().comment('Find TIGER housenumber for street')
|
||||||
addr_row = await self._find_tiger_number_for_street(parent_place_id,
|
addr_row = await self._find_tiger_number_for_street(parent_place_id)
|
||||||
row.osm_type,
|
|
||||||
row.osm_id)
|
|
||||||
log().var_dump('Result (street Tiger housenumber)', addr_row)
|
log().var_dump('Result (street Tiger housenumber)', addr_row)
|
||||||
|
|
||||||
if addr_row is not None:
|
if addr_row is not None:
|
||||||
|
row_func = cast(RowFunc,
|
||||||
|
functools.partial(nres.create_from_tiger_row,
|
||||||
|
osm_type=row.osm_type,
|
||||||
|
osm_id=row.osm_id))
|
||||||
row = addr_row
|
row = addr_row
|
||||||
row_func = nres.create_from_tiger_row
|
|
||||||
else:
|
else:
|
||||||
distance = row.distance
|
distance = row.distance
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user