0

移行を管理するために Flask-Migrate を実装しようとしていますが、移行スクリプトを作成しようとするとエラーが発生します: "geoalchemy2.exc.ArgumentError: ディメンション 2 の無効な geometry_type 'POINTZ'"。

Flask プロジェクトがあり、geoalchemy2 を使用して PostGIS データベースとやり取りしています。データベースには、PolygonZ および PointZ ジオメトリ (次元 = 3) を持ついくつかのテーブルがあります。コマンド ライン経由で Flask-Migrate を使用した最初の移行は正常に機能し、移行スクリプトが生成されました (その後、機能するように微調整されました)。

3D ジオメトリを持つモデルは次のように定義されます。

from MyProject import db
from geoalchemy2 import Geometry

class Source(db.Model):
    __tablename__ = 'source'
    id = db.Column(db.Integer, primary_key=True)
    project_id = db.Column(db.Integer(), db.ForeignKey('project.id'))
    project = db.relationship('Project', foreign_keys=[project_id])
    category = db.Column(db.String(300))
    geometry = db.Column(Geometry(geometry_type='POINTZ', srid=4326, dimension=3))

class Building(db.Model):
    __tablename__ = 'building'
    id = db.Column(db.Integer, primary_key=True)
    project_id = db.Column(db.Integer(), db.ForeignKey('project.id'))
    project = db.relationship('Project', foreign_keys=[project_id])
    geometry = db.Column(Geometry(geometry_type='POLYGONZ', srid=4326, dimension=3))

移行は、Flask Migrate コマンドを使用してコマンド ラインで実行されます。

flask db migrate

スクリプトを作成せずに失敗し、この geoalchemy2 エラーが発生します

geoalchemy2.exc.ArgumentError: invalid geometry_type 'POINTZ' for dimension 2

Flask-Alembic も試してみましたが、最後に同じ geoalchemy2 エラーが表示されるので、Alembic がジオメトリ列を表示する方法に関係していると思います。よくわからない。

アドバイスをいただければ幸いです。ありがとう

4

1 に答える 1