我写此查询和它的作品,虽然这是一个有点慢:ST_Distance和“为”在PostGIS的
SELECT name,
(ST_Distance(ST_Transform(way,900913),ST_Transform(ST_GeomFromText('POINT (-6.2222 53.307)',4326),900913)))
FROM ga_osm_latlong_polygon
WHERE
((ST_Distance(ST_Transform(way,900913),ST_Transform(ST_GeomFromText('POINT (-6.2222 53.307)',4326),900913)))
<= 1000)
ORDER BY
(ST_Distance(ST_Transform(way,900913),ST_Transform(ST_GeomFromText('POINT (-6.2222 53.307)',4326),900913))),
name
我试图重写它在一个更优雅的方式,用“为” :
SELECT name,
(ST_Distance(ST_Transform(way,900913),ST_Transform(ST_GeomFromText('POINT (-6.2222 53.307)',4326),900913))) AS d
FROM ga_osm_latlong_polygon
WHERE (d <= 1000)
ORDER BY d, name
不幸的是,我得到: 错误:列 “d” 不存在
约我越来越错在这里是什么你知道吗?
谢谢!
谢谢!由于某些原因,类型'地理'没有在我的PostGIS中定义。我需要的实际上是以米为单位的半径范围内的对象(存储在纬度/经度),这就是为什么我要改变mercator中的所有内容。任何其他方法呢? – Mulone 2011-02-03 10:48:50