本篇文章為大家展示了如何在postgresql對(duì)距離進(jìn)行計(jì)算,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)長(zhǎng)期為超過千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為金門企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,金門網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。select st_distance(ST_GeomFromText('POINT(120.451737 36.520975)',900913),ST_GeomFromText('POINT(120.455636 36.520885)',900913))*60*1.852;
這里的計(jì)算方式倒是可以換坐標(biāo)系,但是,測(cè)試了兩個(gè)坐標(biāo)系都沒有起作用。而且該種方式轉(zhuǎn)換過單位后跟arcgis計(jì)算出的結(jié)果相差甚遠(yuǎn),最終決定使用下面的方式;
今天發(fā)現(xiàn)了另外一種方式來計(jì)算距離,這種方式可以直接生成單位為米的結(jié)果:
select ST_Length(Geography(ST_GeomFromText('LINESTRING(120.451737 36.520975,120.455636 36.520885)')));
1.要把點(diǎn)轉(zhuǎn)換成線或者其他的圖形而不是點(diǎn);
2.geography函數(shù)現(xiàn)在只支持4326坐標(biāo)系,不能換成其他的。
追加:
上面的方式是計(jì)算點(diǎn)到點(diǎn)的距離,但是如果要想知道某一個(gè)點(diǎn)到某條線的距離是不是在某個(gè)范圍內(nèi),又該如何計(jì)算呢;如下:
select ST_Contains(St_Astext(ST_Buffer(geography(geomfromtext('MULTILINESTRING((線的坐標(biāo)點(diǎn)))')),25.00{以米為單位的距離})),st_astext(geography(geomfromtext('POINT(121.37805 37.54142)')))) as result
使用類似上面的方式,就可以輸入以米為單位的距離判斷某個(gè)點(diǎn)是否在某個(gè)距離范圍內(nèi);
補(bǔ)充:postgresql 搜索指定距離內(nèi)的記錄 按近到遠(yuǎn)排序 并返回距離
實(shí)例如下:
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é)果
上述內(nèi)容就是如何在postgresql對(duì)距離進(jìn)行計(jì)算,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
本文標(biāo)題:如何在postgresql對(duì)距離進(jìn)行計(jì)算-創(chuàng)新互聯(lián)
地址分享:http://muchs.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)站維護(hù)、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容