我正在尝试使用sqlalchemy
和geoalchemy2
在 Python 3.5 上进行空间操作。我有一个以点为geom
属性的表。我已经阅读了表格并按照文档说明进行操作:
metadata = MetaData()
table = Table('table',
metadata, autoload=True,
schema = "schema",
autoload_with=engine)
print(table.columns)
这正确地返回了我的表列的名称。现在,我想创建数据的空间子集,仅选择 POLYGON 对象内的点。我试过ST_Contains
和ST_Intersection
:
# Create session for queries
Session = sessionmaker(bind=engine)
session = Session()
#SELECT * FROM table:
q = session.query(table).filter(table.c.geom.ST_Intersects(func.GeomFromEWKT(<POLYGON>)))
POLYGON 是一个定义了SRID=4326
. 我已经尝试过使用同一个多边形的不同形式,但没有一个奏效。执行查询时,返回以下错误:
(psycopg2.InternalError) geometry contains non-closed rings
HINT: "...140.965576171875 -11.11288507032144))" <-- parse error at position 166 within geometry
我在哪里失败?