mirror of
https://github.com/osm-search/Nominatim.git
synced 2024-10-27 11:42:46 +03:00
Merge pull request #3128 from lonvia/fix-classtype-lookup
Fix query over classtype tables
This commit is contained in:
commit
c29ffc38e6
@ -287,10 +287,11 @@ class NearSearch(AbstractSearch):
|
||||
# radius for the lookup.
|
||||
sql = sql.join(table, t.c.place_id == table.c.place_id)\
|
||||
.join(tgeom,
|
||||
sa.case((sa.and_(tgeom.c.rank_address < 9,
|
||||
tgeom.c.geometry.is_area()),
|
||||
tgeom.c.geometry.ST_Contains(table.c.centroid)),
|
||||
else_ = tgeom.c.centroid.ST_DWithin(table.c.centroid, 0.05)))\
|
||||
table.c.centroid.ST_CoveredBy(
|
||||
sa.case((sa.and_(tgeom.c.rank_address < 9,
|
||||
tgeom.c.geometry.is_area()),
|
||||
tgeom.c.geometry),
|
||||
else_ = tgeom.c.centroid.ST_Expand(0.05))))\
|
||||
.order_by(tgeom.c.centroid.ST_Distance(table.c.centroid))
|
||||
|
||||
sql = sql.where(t.c.rank_address.between(MIN_RANK_PARAM, MAX_RANK_PARAM))
|
||||
|
@ -74,7 +74,11 @@ class Geometry(types.UserDefinedType): # type: ignore[type-arg]
|
||||
|
||||
|
||||
def ST_Contains(self, other: SaColumn) -> SaColumn:
|
||||
return sa.func.ST_Contains(self, other, type_=sa.Float)
|
||||
return sa.func.ST_Contains(self, other, type_=sa.Boolean)
|
||||
|
||||
|
||||
def ST_CoveredBy(self, other: SaColumn) -> SaColumn:
|
||||
return sa.func.ST_CoveredBy(self, other, type_=sa.Boolean)
|
||||
|
||||
|
||||
def ST_ClosestPoint(self, other: SaColumn) -> SaColumn:
|
||||
|
Loading…
Reference in New Issue
Block a user