country_code TEXT,
class TEXT,
type TEXT,
- linked_place_id BIGINT
+ linked_place_id BIGINT,
+ centroid_x float,
+ centroid_y float
);
-- Retrieve the data needed by the indexer for updating the place.
result.type := p.type;
result.country_code := p.country_code;
result.rank_address := p.rank_address;
+ result.centroid_x := ST_X(p.centroid);
+ result.centroid_y := ST_Y(p.centroid);
-- Names of linked places need to be merged in, so search for a linkable
-- place already here.
Wrapper around place information the indexer gets from the database and hands to
the tokenizer.
"""
-from typing import Optional, Mapping, Any
+from typing import Optional, Mapping, Any, Tuple
class PlaceInfo:
""" This data class contains all information the tokenizer can access
return self._info.get('rank_address', 0)
+ @property
+ def centroid(self) -> Optional[Tuple[float, float]]:
+ """ A center point of the place in WGS84. May be None when the
+ geometry of the place is unknown.
+ """
+ x, y = self._info.get('centroid_x'), self._info.get('centroid_y')
+ return None if x is None or y is None else (x, y)
+
+
def is_a(self, key: str, value: str) -> bool:
""" Set to True when the place's primary tag corresponds to the given
key and value.