2

我正在寻找一种将空间数据映射到 sqlalchemy 对象的方法。有人可以告诉我是否有这样的方法吗?谢谢!

4

2 回答 2

6

您可以使用GeoAlchemy创建MySQL空间列,但不再维护此包。使用GeoAlchemy2是不可能的,因为根据文档它不支持。MySQL

无论如何,GeoAlchemy没有必要MySQLPython. 您可以通过创建自定义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 回答