婷婷久久综合九色综合,欧美成色婷婷在线观看视频,偷窥视频一区,欧美日本一道道一区二区

<tt id="bu9ss"></tt>
  • <span id="bu9ss"></span>
  • <pre id="bu9ss"><tt id="bu9ss"></tt></pre>
    <label id="bu9ss"></label>

    當前位置:首頁 >  站長 >  數(shù)據庫 >  正文

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

     2021-05-31 17:03  來源: 腳本之家   我來投稿 撤稿糾錯

      阿里云優(yōu)惠券 先領券再下單

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

    1select st_distance(ST_GeomFromText('POINT(120.451737 36.520975)',900913),ST_GeomFromText('POINT(120.455636 36.520885)',900913))*60*1.852;

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

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

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

    這種方式的不便在于:

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

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

    追加:

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

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

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

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

    實例如下:

    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;

     

    搜索結果

    文章來源:腳本之家

    來源地址:https://www.jb51.net/article/204784.htm

    申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!

    相關文章

    熱門排行

    信息推薦