建立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.路徑分析的乙個例子。年齡 入院時的病...