中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

如何在postgresql對距離進行計算-創(chuàng)新互聯(lián)

本篇文章為大家展示了如何在postgresql對距離進行計算,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

創(chuàng)新互聯(lián)長期為超過千家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為金門企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、成都做網(wǎng)站,金門網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
select st_distance(ST_GeomFromText('POINT(120.451737 36.520975)',900913),ST_GeomFromText('POINT(120.455636 36.520885)',900913))*60*1.852;

這里的計算方式倒是可以換坐標系,但是,測試了兩個坐標系都沒有起作用。而且該種方式轉(zhuǎn)換過單位后跟arcgis計算出的結(jié)果相差甚遠,最終決定使用下面的方式;

今天發(fā)現(xiàn)了另外一種方式來計算距離,這種方式可以直接生成單位為米的結(jié)果:

select ST_Length(Geography(ST_GeomFromText('LINESTRING(120.451737 36.520975,120.455636 36.520885)')));

這種方式的不便在于:

1.要把點轉(zhuǎn)換成線或者其他的圖形而不是點;

2.geography函數(shù)現(xiàn)在只支持4326坐標系,不能換成其他的。

追加:

上面的方式是計算點到點的距離,但是如果要想知道某一個點到某條線的距離是不是在某個范圍內(nèi),又該如何計算呢;如下:

select ST_Contains(St_Astext(ST_Buffer(geography(geomfromtext('MULTILINESTRING((線的坐標點))')),25.00{以米為單位的距離})),st_astext(geography(geomfromtext('POINT(121.37805 37.54142)')))) as result

使用類似上面的方式,就可以輸入以米為單位的距離判斷某個點是否在某個距離范圍內(nèi);

補充:postgresql 搜索指定距離內(nèi)的記錄 按近到遠排序 并返回距離

實例如下:

CREATE TABLE mylocation ( 
 id SERIAL PRIMARY KEY,
 geom GEOMETRY(Point, 4326),
 name VARCHAR(128),
 x double precision,
 y double precision
); 
 
INSERT INTO mylocation (geom,name,x,y) VALUES (
 ST_GeomFromText('POINT(0.0001 0)', 4326),'zhangsan',0.0001,0
);
INSERT INTO mylocation (geom,name,x,y) VALUES (
 ST_GeomFromText('POINT(0.001 0)', 4326),'zhangsan',0.001,0
);
INSERT INTO mylocation (geom,name,x,y) VALUES (
 ST_GeomFromText('POINT(0.001 0)', 4326),'zhangsan',0.001,0
);
INSERT INTO mylocation (geom,name,x,y) VALUES (
 ST_GeomFromText('POINT(0.1 0)', 4326),'zhangsan',0.1,0
); 
 
SELECT id, name,geom,x,y,  ST_DistanceSphere(
           geom,
           ST_GeometryFromText('POINT(0 0)')) distance
FROM mylocation
WHERE ST_DWithin(
 geom, 
 ST_GeomFromText('POINT(0 0)', 4326),
 0.001
)ORDER BY distance asc;;

查詢語句 下面距離單位為m

SELECT id, name,geom,x,y,  ST_DistanceSphere(
           geom,
           ST_GeometryFromText('POINT(0 0)')) distance
FROM mylocation
WHERE ST_DWithin(
 geom::geography, 
 ST_GeomFromText('POINT(0 0)', 4326)::geography,
 1000
) ORDER BY distance asc;

搜索結(jié)果

如何在postgresql對距離進行計算

上述內(nèi)容就是如何在postgresql對距離進行計算,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文標題:如何在postgresql對距離進行計算-創(chuàng)新互聯(lián)
地址分享:http://www.rwnh.cn/article34/dcdsse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站內(nèi)鏈App開發(fā)、網(wǎng)站建設(shè)網(wǎng)站維護、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
禹州市| 赫章县| 集贤县| 微山县| 贞丰县| 慈利县| 大化| 泰宁县| 苏尼特左旗| 五家渠市| 顺昌县| 增城市| 土默特右旗| 泸溪县| 阜南县| 鹤岗市| 武强县| 美姑县| 丹江口市| 句容市| 六盘水市| 营口市| 伊春市| 宜良县| 兰州市| 安阳县| 郸城县| 南通市| 临高县| 安吉县| 东海县| 新竹县| 额济纳旗| 上蔡县| 资阳市| 浦县| 温泉县| 文昌市| 托克托县| 陇川县| 元阳县|