从几天以来,我一直在努力弄清楚如何使用支持空间数据库操作的python的sqlalchemy扩展geoalchemy2正确地从geoalchemy2数据库中查询数据。
我正在处理python3.4和Openstreetmaps数据,这些数据来自勃兰登堡(德国的行政区域),我将这些数据输入到本地Postgres中。数据以lat/long为单位。我一直在学习如何使用geoalchemy (tutorial.html)的ORM部分设置内容的教程。一开始,一切都很好
现在,一切都很好,直到我试图缩小范围-因为我不想让所有的建筑物存储在我的DB,但可能只有那些在一个给定的边界或边界多边形。
我尝试在各种选项中使用.filter(),但没有成功。据我所知,那个filter()需要某种bool输入,因此必须根据它定义一个语句。那么这样的陈述有什么不对呢?
session.query(QuerySchema).filter(func.ST_Contains(bbox, QuerySchema.way))检查func.ST_Contains(bbox, QuerySchema.way)的结果会带来<geoalchemy2.functions.ST_Contains at 0x10a12a400; ST_Contains>,因此显然filter()不能正常工作。
问:如何执行操作才能正常工作,即只给给定边界内的DB条目?
发布于 2015-07-20 23:26:31
请尝试以下查询:
session.query(QuerySchema).filter(QuerySchema.way.ST_Within(bbox))https://stackoverflow.com/questions/31475396
复制相似问题