亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Geoalchemy2 在 PostGis 中存儲 WKBElement 會導致經度不正確

使用 Geoalchemy2 在 PostGis 中存儲 WKBElement 會導致經度不正確

米脂 2021-12-29 20:10:11
我正在開發一個應用程序,它需要能夠在 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中無效。

嘗試交換測試數據中的輸入坐標。


查看完整回答
反對 回復 2021-12-29
  • 1 回答
  • 0 關注
  • 301 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號