介绍
本篇文章为大家展示了使用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怎么计算两点之间的距离,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。