0

开始在 GIS 系统上工作,并决定将 GeoAlchemy2 用于 ORM。

由于 PostGis 在 DB 中以 WKB 格式保存点并且前端需要 GeoJson,我认为“类型装饰器”可能会在这里提供帮助。但总是从 geoalchemy2\types.py 得到错误:

"AttributeError: 'Geometry' object has no attribute 'upper'"

不确定我是否正确理解了这个想法。我需要生成自定义类型吗?

以下是代码片段:

from sqlalchemy.types import TypeDecorator
from geoalchemy2.types import Geometry
from geoalchemy2 import functions
from shapely import wkb, wkt
from shapely.geometry import Point

class PointDecorator(TypeDecorator):
    impl = Geometry

    def process_literal_param(self, value, dialect):
           return functions.ST_AsGeoJSON(value)

    process_bind_param = process_literal_param

    def process_result_value(self, value, dialect):
        return wkb.dump(value, hex=True)

class Point(Base):
    id = Column(Integer, primary_key=True, index=True)
    location = Column(PointDecorator(Geometry('POINT')), index=True)
4

0 回答 0