【发布时间】:2012-10-24 16:41:59
【问题描述】:
我需要计算两者之间的距离
- 所有建筑物和
- 所有医院
在从 OSM 导入的地图中。
我使用以下查询:
SELECT building_id, hospital_id, ST_Distance(building_centroid, hospital_location)
FROM
(
select planet_osm_polygon.osm_id building_id, ST_Centroid(planet_osm_polygon.way) building_centroid
from planet_osm_polygon
where building = 'yes'
) buildings,
(
select planet_osm_point.osm_id hospital_id, planet_osm_point.way hospital_location
from planet_osm_point
where amenity = 'hospital') hospitals
我得到奇怪的结果 - 距离总是小于 1。
我怎样才能知道报告这些值的单位?
更新 1: 示例结果:
更新 2:此查询似乎有效
SELECT building_id, hospital_id, ST_Distance_sphere(building_centroid, hospital_location) distance
FROM
(
select planet_osm_polygon.osm_id building_id, ST_Centroid(planet_osm_polygon.way) building_centroid
from planet_osm_polygon
where building = 'yes'
) buildings,
(
select planet_osm_point.osm_id hospital_id, planet_osm_point.way hospital_location
from planet_osm_point
where amenity = 'hospital') hospitals
ORDER BY distance
【问题讨论】:
-
请从您的表格中发布几条相关记录。
-
谢谢。您能否还粘贴来自
planet_osm_polygon和planet_osm_point的几条记录,这些记录的ID 由您的查询返回?还请发布您的表的定义 (CREATE TABLE ...) -
@Quassnoi 表定义可以在这里找到 - dl.dropbox.com/u/11776689/2012_11_05_postgis/table_defs.sql
-
@Quassnoi 表格内容
planet_osm_polygon- dl.dropbox.com/u/11776689/2012_11_05_postgis/… -
@Quassnoi 表格内容
planet_osm_point- dl.dropbox.com/u/11776689/2012_11_05_postgis/…
标签: postgresql postgis postgresql-9.2