PostGis路徑分析

2021-10-09 11:54:01 字數 3577 閱讀 3931

建立postgis資料庫。

使用sample資料庫做模板。

要生成最佳路徑,首先要生成合法的拓撲。

生成拓撲前,需要新增兩個字段,用來儲存線段的首尾編號

-- add "source" and "target" column

alter

table nyc_roads add

column

"source"

integer

;alter

table nyc_roads add

column

"target"

integer

;

呼叫pgr_createtopology生成拓撲,注意就是生成線段的首位編號的過程

pgr_createtopology('',

-- 需要生成拓撲的表名

float tolerance,

-- 容錯值'',

-- 線段列名'')

-- gid

容錯值:例如線段的端不能完全吻合時,允許多少誤差,單位一般為角度或公里數

官方說明: 例子

-- run topology function

select pgr_createtopology(

'nyc_roads'

,0.00001

,'geom'

,'gid'

);

pgrouting支援的最佳路徑演算法很多。

官方說明:

這裡以shortest path a*和shortest path dijkstra(狄克斯特拉)為例,介紹如何生成最佳路徑

如果考慮回程成本的話,需要增加回程成本的字段,並設定為公里數。

alter

table nyc_roads add

column reverse_cost double

precision

;update nyc_roadsset reverse_cost = length;

函式說明:

pgr_dijkstra(

text

sql,

-- 用於計算最佳路徑的資料**, 用sql表示, 例如

-- select id (gid), source (線段起點id), target (線段重點id), cost (起點到終點的成本) [,reverse_cost (終點到起點的成本)] from edge_table

integer source,

-- 規劃路徑的起點

integer target,

-- 規劃路徑的終點

boolean directed -- 是否支援雙向,如果為true,sql中必須有reverse_cost

);

官方說明:

返回結果:(seq, path_seq ,node, edge, cost, agg_cost)

node:起點id

edge:目標id, -1表示終點

與shortest path dijkstra演算法類似,只是sql需要用到每條線段的起點和重點的座標,其他引數和pgr_dijkstra都一樣。

alter

table nyc_roads add

column x1 double

precision

;alter

table nyc_roads add

column y1 double

precision

;alter

table nyc_roads add

column x2 double

precision

;alter

table nyc_roads add

column y2 double

precision

;update nyc_roads set x1 = st_x(st_pointn(geom,1)

);-- 線段起點座標x

update nyc_roads set y1 = st_y(st_pointn(geom,1)

);-- 線段起點座標y

update nyc_roads set x2 = st_x(st_pointn(geom, st_numpoints(geom)))

;-- 線段終點座標x

update nyc_roads set y2 = st_y(st_pointn(geom, st_numpoints(geom)))

;-- 線段終點座標y

函式說明:

pgr_astar(

sqltext

,-- select id, source, target, cost, x1, y1, x2, y2 [,reverse_cost] from edge_table ,包含了起點和重點座標,計算速度比shortest path dijkstra演算法快一點

source integer

,

target integer

, directed boolean

, has_rcost boolean

);

官方說明:

返回結果與pgr_dijkstra一樣

例子:

select

*from pgr_astar(

' select gid as id,

source::integer,

target::integer,

length::double precision as cost,

x1, y1, x2, y2

from nyc_roads',1

,9,false

);

結果:

網路分析概述 路徑分析

網路分析功能 路徑分析 路徑分析是gis中最基本的功能,其核心是對最佳路徑的求解。從網路模型的角度看,最佳路徑的求解是指在指定網路的兩個結點之間,找一條阻礙強度最小的路徑。另一種路徑分析功能是求解最佳遊歷方案,又分為弧段最佳遊歷方案求解和結點最佳遊歷方案求解兩種。最佳路徑分析 最佳路徑分析也稱最優路...

訪客路徑分析 Druid實踐

訪客分析是常見資料分析的一種,通過如上圖 google analytics 以比較直觀的方式展現使用者達到 後各條訪問路徑的流失情況,幫助 優化減少流失率。訪客路徑分析有如下幾個關鍵點 通過上述分析,要實現訪客路徑分析需要完成如下幾項工作 計算每一級所有網頁的會話總數。計算每一級會話數top 5的網...

統計之路徑分析簡述

一般來講,無論是一元線性回歸還是多元線性回歸,都是研究自變數如何影響因變數的。然而在一些問題當中,自變數之間也有可能存在聯絡。這種情況下,傳統的線性回歸模型就不適用了。路徑分析 path analysis 就可以解決這種問題。以下以住院的例子進行說明 圖1 圖1.路徑分析的乙個例子。年齡 入院時的病...