forked from edward/owl-map
Type hints and docstrings.
This commit is contained in:
parent
3bc6863b49
commit
8e41dcab58
|
@ -5,6 +5,7 @@ import re
|
||||||
import typing
|
import typing
|
||||||
|
|
||||||
import flask
|
import flask
|
||||||
|
import geoalchemy2
|
||||||
from sqlalchemy import and_, func, or_, text
|
from sqlalchemy import and_, func, or_, text
|
||||||
from sqlalchemy.dialects import postgresql
|
from sqlalchemy.dialects import postgresql
|
||||||
from sqlalchemy.orm import selectinload
|
from sqlalchemy.orm import selectinload
|
||||||
|
@ -87,19 +88,25 @@ def is_street_number_first(lat: float, lon: float) -> bool:
|
||||||
return bool(alpha2_number_first & alpha2)
|
return bool(alpha2_number_first & alpha2)
|
||||||
|
|
||||||
|
|
||||||
def make_envelope(bounds):
|
def make_envelope(bounds: list[float]) -> geoalchemy2.functions.ST_MakeEnvelope:
|
||||||
|
"""Make en envelope for the given bounds."""
|
||||||
return func.ST_MakeEnvelope(*bounds, srid)
|
return func.ST_MakeEnvelope(*bounds, srid)
|
||||||
|
|
||||||
|
|
||||||
def get_bbox_centroid(bbox):
|
def get_bbox_centroid(bbox: list[float]) -> tuple[str, str]:
|
||||||
|
"""Get centroid of bounding box."""
|
||||||
bbox = make_envelope(bbox)
|
bbox = make_envelope(bbox)
|
||||||
centroid = database.session.query(func.ST_AsText(func.ST_Centroid(bbox))).scalar()
|
centroid = database.session.query(func.ST_AsText(func.ST_Centroid(bbox))).scalar()
|
||||||
m = re_point.match(centroid)
|
m = re_point.match(centroid)
|
||||||
assert m
|
assert m
|
||||||
return reversed(m.groups())
|
lon, lat = m.groups()
|
||||||
|
assert lon and lat
|
||||||
|
return (lat, lon)
|
||||||
|
|
||||||
|
|
||||||
def make_envelope_around_point(lat: float, lon: float, distance: float):
|
def make_envelope_around_point(
|
||||||
|
lat: float, lon: float, distance: float
|
||||||
|
) -> geoalchemy2.functions.ST_MakeEnvelope:
|
||||||
conn = database.session.connection()
|
conn = database.session.connection()
|
||||||
|
|
||||||
p = func.ST_MakePoint(lon, lat)
|
p = func.ST_MakePoint(lon, lat)
|
||||||
|
@ -191,6 +198,7 @@ def get_and_save_item(qid: str) -> model.Item | None:
|
||||||
print(f'{entity["pageid"]=} {entity["ns"]=} {entity["type"]=}')
|
print(f'{entity["pageid"]=} {entity["ns"]=} {entity["type"]=}')
|
||||||
print(entity.keys())
|
print(entity.keys())
|
||||||
raise
|
raise
|
||||||
|
assert item
|
||||||
item.locations = model.location_objects(coords)
|
item.locations = model.location_objects(coords)
|
||||||
database.session.add(item)
|
database.session.add(item)
|
||||||
database.session.commit()
|
database.session.commit()
|
||||||
|
@ -214,7 +222,7 @@ def get_isa_count(items: list[model.Item]) -> list[tuple[str, int]]:
|
||||||
return isa_count.most_common()
|
return isa_count.most_common()
|
||||||
|
|
||||||
|
|
||||||
def get_items_in_bbox(bbox):
|
def get_items_in_bbox(bbox: list[float]):
|
||||||
db_bbox = make_envelope(bbox)
|
db_bbox = make_envelope(bbox)
|
||||||
|
|
||||||
q = (
|
q = (
|
||||||
|
@ -1072,10 +1080,10 @@ class PlaceItems(typing.TypedDict):
|
||||||
"""Place items."""
|
"""Place items."""
|
||||||
|
|
||||||
count: int
|
count: int
|
||||||
items: list[model.Item]
|
items: list[dict[str, typing.Any]]
|
||||||
|
|
||||||
|
|
||||||
def get_place_items(osm_type: int, osm_id: int) -> PlaceItems:
|
def get_place_items(osm_type: str, osm_id: int) -> PlaceItems:
|
||||||
"""Return place items for given osm_type and osm_id."""
|
"""Return place items for given osm_type and osm_id."""
|
||||||
src_id = osm_id * {"way": 1, "relation": -1}[osm_type]
|
src_id = osm_id * {"way": 1, "relation": -1}[osm_type]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue