1

私はこの形式のjsonを持っています:

{

     "type":"Feature",
     "properties":{},
     "geometry":{
          "type":"Point",
          "coordinates":[6.74285888671875,-3.6778915094650726]
     }
}

そして、flask-geoalchemy2 で定義されたフィールドは次のようになります:-

from app import db
from app.mixins import TimestampMixin
from geoalchemy2 import Geometry

class Event(db.Model, TimestampMixin):
    __tablename__ = 'events'

    id = db.Column(db.BigInteger, primary_key=True)
    title = db.Column(db.Unicode(255))
    start = db.Column(db.DateTime(timezone=True))
    location = db.Column(Geometry(geometry_type='POINT', srid=4326))
    is_active = db.Column(db.Boolean(), default=False)

    def __repr__(self):
        return '<Event %r %r>' % (self.id, self.title)

上記の json 値が割り当てられたeventオブジェクトを保存しようとすると、このエラーで失敗しますevent.location

DataError: (DataError) Geometry SRID (0) does not match column SRID (4326)

正しい形式event.locationは何ですか?

db.session.add(event)
db.session.commit() 

正しく動作するには?

4

2 に答える 2

0

geojson の処理方法に誤りがありました。sridgeojson が準拠しなければならないことを明示的に述べる必要があります。

これが解決策です:-

def process_formdata(self, valuelist):
    """ Convert GeoJSON to DB object """
    if valuelist:
        geo_ob = geojson.loads(valuelist[0])
        # Convert the Feature into a Shapely geometry and then to GeoAlchemy2 object
        # We could do something with the properties of the Feature here...
        self.data = from_shape(asShape(geo_ob.geometry), srid=4326)
    else:
        self.data = None
于 2014-06-16T07:16:40.730 に答える