簡體   English   中英

使用sqlalchemy從Postgis數據庫獲取經度和緯度

[英]Getting longitude and latidude from postgis database with sqlalchemy

我正在使用sqlalchemy軟件包來聲明對我的postgis數據庫的查詢,該數據庫充滿了城市的.osm數據。 我想從讓我們說出planet_osm_point表中檢索經度和緯度值。 我陳述如下的sql查詢:

      SELECT st_y(st_asewkt(st_transform(way, 4326))) as lat,
             st_x(st_asewkt(st_transform(way, 4326))) as lon
             "addr:housenumber" AS husenumber,
             "addr:street" AS street,
             "addr:postcode" AS postcode
      FROM planet_osm_point

Sqlalchemy拋出此錯誤:

sqlalchemy.exc.InternalError: (psycopg2.InternalError) FEHLER:  Argument to ST_Y() must be a point

唯一的問題是ST_Y()ST_X()函數。

ST_X/ST_Y返回浮點數。 您可以使用浮點數或將其轉換為文本。

由於ST_Y/ST_X返回floatsST_AsEWKT需要geometryST_AsEWKT在這里使用ST_AsEWKT是有問題的。

使用您得到的花車:

SELECT st_y(st_transform(way, 4326)) AS lat,
             st_x(st_transform(way, 4326)) AS lon
             "addr:housenumber" AS husenumber,
             "addr:street" AS street,
             "addr:postcode" AS postcode
      FROM planet_osm_point

或轉換為文字:

SELECT cast(st_y(st_transform(way, 4326)) as text) AS lat,
             cast(st_x(st_transform(way, 4326)) as text) AS lon
             "addr:housenumber" AS husenumber,
             "addr:street" AS street,
             "addr:postcode" AS postcode
      FROM planet_osm_point

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM