使用postgresql怎么计算两点之间的距离

  介绍

本篇文章为大家展示了使用postgresql怎么计算两点之间的距离,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

postgresql计算两点距离

select    ST_Distance (   ,ST_SetSRID (ST_MakePoint(115.97166453999147, 28.716493914230423), 4326年)::地理,   ,ST_SetSRID (ST_MakePoint(106.00231199774656, 29.719258550486572), 4326年)::地理   ),   ST_Length (   ,ST_MakeLine (   ,ST_MakePoint (115.97166453999147, 28.716493914230423),   ,ST_MakePoint (106.00231199774656, 29.719258550486572)   )::地理   )

备注:

ST_GeomFromText (& # 39; LINESTRING(115.97166453999147, 28.716493914230423, 106.00231199774656, 29.719258550486572) & # 39;)与   ST_MakeLine (   ST_MakePoint (115.97166453999147, 28.716493914230423),   ST_MakePoint (106.00231199774656, 29.719258550486572)   )等价   ,   ST_GeomFromText(& # 39;点(115.97166453999147,28.716493914230423)& # 39;,4326)与   ST_SetSRID (ST_MakePoint(115.97166453999147, 28.716493914230423), 4326年)等价   ,   ST_SetSRID (ST_MakePoint(115.97166453999147, 28.716493914230423), 4326年)::地理与   地理(ST_SetSRID (ST_MakePoint (115.97166453999147, 28.716493914230423), 4326)),   ST_GeographyFromText (& # 39; SRID=4326;点(115.97166453999147,28.716493914230423)& # 39;)等价   (::地理是postgis中的转换类型语法,把几何转成地理)

<强>补充:postgresql计算两点欧式距离(经纬度地理位置)

我就废话不多说了,大家还是直接看代码吧~

create 或是replace  function  getdistance   (,   ,lon1 数字,   lat1 数字,大敌;   lon2 数字,大敌;   ,lat2  numeric    ),   returns  int    as    身体,美元   declare    v_distance 数字;   v_earth_radius 数字;   radLat1 数字;   radLat2 数字;   v_radlatdiff 数字;   v_radlngdiff 数字;   begin    ,——地球半径   ,v_earth_radius:=6378137;   ,,   ,radLat1 :=, lat1  *,π()/180.0;   ,radLat2 :=, lat2  *,π()/180.0;   ,v_radlatdiff :=, radLat1 作用;radLat2;   ,v_radlngdiff :=, lon1  *,π()/180.0,安康;lon2  *,π()/180.0,,   ,v_distance :=, 2, *,正如(sqrt(权力(罪(时间/v_radlatdiff  2), 2), +,因为(radLat1), *,因为(radLat2), *,权力(罪(v_radlngdiff/2), 2)));   ,v_distance :=,圆(v_distance  *, v_earth_radius);   ,return  v_distance;   结束;   身体美元   language  & # 39; plpgsql& # 39;,不稳定的; create 或是replace  function  getdistance   (,   ,i_lngbegin 真实的,   i_latbegin 真正的大敌;   i_lngend 真正的大敌;   ,i_latend  real    ),   returns  float    as    身体美元/*   *大敌;   ,* select  getdistance_bygispoint (116.281524, 39.957202, 117.648673, 38.42584), as 距离;   ,* */,   declare    v_distance 真实;   v_earth_radius 真实;   v_radlatbegin 真实;   v_radlatend 真实;   v_radlatdiff 真实;   v_radlngdiff 真实;   begin    ,——地球半径   ,v_earth_radius:=6378.137;   ,,   ,v_radlatbegin :=, i_latbegin  *,π()/180.0;   ,v_radlatend :=, i_latend  *,π()/180.0;   ,v_radlatdiff :=, v_radlatbegin 作用;v_radlatend;   ,v_radlngdiff :=, i_lngbegin  *,π()/180.0,安康;i_lngend  *,π()/180.0,,   ,v_distance :=, 2, *,正如(sqrt(权力(罪(时间/v_radlatdiff  2), 2), +,因为(v_radlatbegin), *,因为(v_radlatend), *,权力(罪(v_radlngdiff/2), 2)));   ,v_distance :=, v_distance  *, v_earth_radius * 1000,,   ,return  v_distance;   结束;   身体,美元   language  & # 39; plpgsql& # 39;,不稳定的;

上述内容就是使用postgresql怎么计算两点之间的距离,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

使用postgresql怎么计算两点之间的距离