[英]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
返回floats
且ST_AsEWKT
需要geometry
, ST_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.