加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – ST_Distance的返回值单位

发布时间:2020-12-13 16:33:27 所属栏目:百科 来源:网络整理
导读:我需要计算之间的距离 所有建筑物和 所有医院 在从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_polyg
我需要计算之间的距离

>所有建筑物和
>所有医院

在从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,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,planet_osm_point.way hospital_location
from planet_osm_point  
where amenity = 'hospital') hospitals
ORDER BY distance
单位的一般规则是输出长度单位与输入长度单位相同.

OSM方式几何数据具有纬度和经度(SRID=4326)的长度单位.因此,ST_Distance年度的产出单位也将具有十六度学位,这并不真正有用.

你可以做几件事情:

>使用ST_Distance_Sphere快速/近似距离(以米为单位)
>使用ST_Distance_Spheroid以米为单位的精度距离>将纬度/长几何数据类型转换为地理位置,自动使ST_Distance和其他函数使用线性单位的米

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读