diff --git a/lib/xmet/city.py b/lib/xmet/city.py index 505b384..4ab0fda 100644 --- a/lib/xmet/city.py +++ b/lib/xmet/city.py @@ -1,6 +1,7 @@ import csv import shapely +from xmet.db import Database from xmet.coord import COORD_SYSTEM """ @@ -61,3 +62,22 @@ class City(): row[i] = row[i].rstrip() yield City.from_tsv_row(row) + + @staticmethod + def each_within_poly(db: Database, poly: shapely.Polygon): + sql = """ + select + * + from + xmet_city + where + ST_Within(location, GeomFromText(:poly, 4326)) = 1 + order by + population desc + """ + + st = db.query_sql(City, sql, { + 'poly': shapely.to_wkt(poly) + }) + + yield from st.each()