我正在寻找一种将空间数据映射到 sqlalchemy 对象的方法。有人可以告诉我是否有这样的方法吗?谢谢!
问问题
2374 次
2 回答
6
您可以使用GeoAlchemy创建MySQL
空间列,但不再维护此包。使用GeoAlchemy2是不可能的,因为根据文档它不支持。MySQL
无论如何,GeoAlchemy
没有必要MySQL
在Python
. 您可以通过创建自定义Geometry
类来实现它:
from sqlalchemy import func
from sqlalchemy.types import UserDefinedType
class Geometry(UserDefinedType):
def get_col_spec(self):
return 'GEOMETRY'
def bind_expression(self, bindvalue):
return func.ST_GeomFromText(bindvalue, type_=self)
def column_expression(self, col):
return func.ST_AsText(col, type_=self)
然后,您可以在模型中使用此自定义类型:
your_column = Column(Geometry, nullable=False)
于 2018-07-28T09:05:54.183 回答
1
是的,您需要查看GeoAlchemy软件包。
为表带来一个名为 GeometryColumn 的列类型。
过滤也是非常 sqlalchemic 的。从文档:
s = session.query(Spot).filter(Spot.geom.kml == '<Point><coordinates>-81.4,38.08</coordinates></Point>').first()
它并不比一个简单的pip install GeoAlchemy
.
于 2012-05-04T15:40:27.477 回答