Vairāk

Kā izmantot pitonu GeoAlchemy2, lai filtrētu dinamiski ģenerētos punktus?


Mēģinu veikt kaut ko līdzīgu šim SQL vaicājumam Geoalchemy2:

Atlasiet apgabala_poligoni.distrīcija NO marķieriem, rajona_poligoni WHERE ST_Contains (apgabala_poligoni.multi_poly, punkts (marķieri.marker_long, marķieri.marker_lat))

Šis vaicājums darbojas lieliski, tāpat kā MySQL. Tas man parāda, kurā apgabalā atrodas katrs marķieris.

Es vēlos atkārtot kaut ko līdzīgu, izmantojot Geoalchemy2 / SQLAlchemy. Es to izmēģināju:

results = dbSession.query (District_Polygon.district).  filter (func.ST_Contains (District_Polygon.multi_poly, WKTElement ('POINT ({0} {1})'.. formāts (Marker.marker_long, Marker.marker_lat))). visi ()

Diemžēl formatētājs nedarbojas, un sqlalchemy izeja izskatās šādi:

ATLASI apgabals_polygons.d rajons AS rajons_poligons.d rajons NO marķieriem, rajona_poligoni KUR ST_Contains (district_polygons.multi_poly, ST_GeomFromText (% s)) INFO sqlalchemy.engine.base.Engine ('POINT (markers.marker_long_lat)

Kā es varu atkārtot SQL komandas funkcionalitāti ORM modelī Geoalchemy / SQLAlchemy? Es gribētu izvairīties no neapstrādāta SQL, ja es varu.