我正在開發一個應用程序,它需要能夠在 PostGis 數據庫中存儲一個點。我正在使用 GeoAlchemy,它似乎存儲了不正確的經度。我有此代碼來處理添加帶有點位置數據的事件的請求。json_data = request.get_json(force=True)if "location" in json_data: json_location = json_data["location"] geojson_geom = geojson.loads(json.dumps(json_location)) geom = from_shape(asShape(geojson_geom), srid=4326) json_data["location"] = geomevent = Event(**json_data)try: session = Session() session.add(event) session.commit() session.refresh(event)except IntegrityError as e: abort(409, error=e.args[0])我使用的模型class Event(Base): __tablename__ = 'events' id = Column(Integer, primary_key=True) name = Column(String, nullable=False) location = Column(Geography(geometry_type='POINT', srid=4326), nullable=False)當我使用此測試數據時:{ "name": "Test", "location": { "coordinates": [ 47.65641, -117.42733 ], "type": "Point" }}然后str(geom)將等于010100000039622d3e05d4474061a6ed5f595b5dc0,如果我使用這個轉換器,我會得到POINT(47.65641 -117.42733),這是正確的位置。但是,當我在數據庫中查找行時,我看到它0101000020E610000039622D3E05D447403EB324404D494FC0存儲在位置列中,這是POINT(47.65641 -62.57267)一個非常不同的經度。據我所知,我向 GeoAlchemy2 提供了正確的數據和格式,如果有人能暗示我在這里做錯了什么,我將不勝感激。
1 回答
慕田峪7331174
TA貢獻1828條經驗 獲得超13個贊
Postgis中點坐標表示為Point(longitude, latitude),所以取值-117為緯度,在4326中無效。
嘗試交換測試數據中的輸入坐標。
添加回答
舉報
0/150
提交
取消
