婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > postgresql 計算距離的實例(單位直接生成米)

postgresql 計算距離的實例(單位直接生成米)

熱門標簽:電話機器人怎么換人工座席 400電話申請客服 廣州電銷機器人公司招聘 地圖標注要花多少錢 江蘇400電話辦理官方 電銷機器人能補救房產(chǎn)中介嗎 濟南外呼網(wǎng)絡(luò)電話線路 天津開發(fā)區(qū)地圖標注app 移動外呼系統(tǒng)模擬題

之前用的是ST_Distance 函數(shù),但是貌似需要進行一次單位的轉(zhuǎn)換,而且網(wǎng)上有說那種轉(zhuǎn)換不是特別準確,現(xiàn)在暫時將該算法記錄在此:

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é)果

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • PostgreSQL中enable、disable和validate外鍵約束的實例
  • PostgreSQL 修改視圖的操作
  • PostgreSQL 更新視圖腳本的注意事項說明
  • postgreSQL中的row_number() 與distinct用法說明
  • Postgresql 動態(tài)統(tǒng)計某一列的某一值出現(xiàn)的次數(shù)實例
  • postgresql 計算兩點距離的2種方法小結(jié)
  • PostgreSQL 查看表的主外鍵等約束關(guān)系詳解

標簽:杭州 寶雞 辛集 濮陽 昭通 海西 榆林 溫州

巨人網(wǎng)絡(luò)通訊聲明:本文標題《postgresql 計算距離的實例(單位直接生成米)》,本文關(guān)鍵詞  postgresql,計算,距離,的,實例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《postgresql 計算距離的實例(單位直接生成米)》相關(guān)的同類信息!
  • 本頁收集關(guān)于postgresql 計算距離的實例(單位直接生成米)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 弥渡县| 疏附县| 泾源县| 新疆| 辰溪县| 莱西市| 淳安县| 锦州市| 左贡县| 屏南县| 竹溪县| 眉山市| 禹州市| 武安市| 马公市| 张掖市| 东海县| 商河县| 双峰县| 出国| 泗阳县| 海林市| 团风县| 叙永县| 东阳市| 尚义县| 耿马| 襄城县| 株洲县| 阿勒泰市| 张家港市| 噶尔县| 集安市| 林州市| 金沙县| 大名县| 蓝田县| 奇台县| 西乌珠穆沁旗| 苏州市| 北辰区|