一個ArcGIS網路分析的最短路徑例子||A Network Analyst Shortest Route of ArcGIS
這是我前幾年利用ArcMap,ArcCatalog做的最短路徑查詢時候實現的步驟說明記錄,留作後用,時代久遠,很容易忘記,適當做個記錄算是個好習慣吧。
例子是以上海地鐵線路換乘的。
可以實現任意兩點之間的地鐵路線查詢。
主要內容:ArcMap,ArcCatalog,Network Analyst模組最短路徑查詢。
原本是英文的,為了不讓以為是抄襲別人的,我只是部分修改為中文了。
1 在Arcmap中畫地鐵線路圖(向量圖)
兩個層:線路層和站點層
線路層中注意不同線路交叉處,在可以換乘的位置,vertex需要snapping(捕捉)!
<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]-->
<!-- [if gte mso 10]>
2 Creating a geodatabase network dataset
Firstly, Create a file geodatabase( in Arccatalog);
Secondly, create a new feature dataset;
Thirdly, Import Feature Class, showed as :
<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]>
Chose Any Vertex can get a junctionbetween different route.
It will be different,if Endpoint has been chosed.
3 Finding the best routeusing a network dataset
1)create new network dataset
在Arccatalog中右擊線路層,newnetwork dataset
<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]>
生成Line1_ND.nd,Line1_ND_Jucntions檔案.
<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]>
生成Network Analyst時候注意選擇網路生成的依據,路徑的ID or time?特別是對於需要換乘的情況,尤其要注意以路徑的ID為優先,對於步行或者不考慮換乘耽誤的時間,則應該以路程的時間消耗為第一選擇。
Field isID:
<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]>
2)Add data
在Arcmap的中,右擊add data,講Line1_ND.nd檔案新增。
<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]>
3)create New Route
<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]>
The Network Analyst Window nowcontains empty lists ofStops, Routes and Barriers categories. Additionally, the table of contents contains anew Route Analysis Layer.
<!-- [if !mso]><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]>
4)Addingstops
網路工具欄
<!-- [if gte vml 1]> <![endif]-->
點選顯示網路工具欄中NetworkAnalyst Window
將Stops選中
在地圖中標記任意兩個位置
<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]>
<!-- [if !mso]><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]>
5)產生路徑
點選sovle按鈕
<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if !mso]><!-- [if gte mso 10]>
6)其他例子
The Shortest Routemarked asgreen Line.
<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]>
參考資料推薦:
輕鬆入門教程-ArcGIS Desktop.pdf
GIS軟體應用實驗指導書2006修定.pdf
Finding_Your_Way_with_ArcGIS_Network_Analyst.pdf
Network_Analyst_Tutorial.pdf
韓鵬《地理資訊系統開發――ArcObjects方法》
以上資料,均可以直接載CSDN中搜索下載到。
//-----------------------------------------------------------
//歡迎批評指正,郵箱:[email protected]
// QQ:30442301
//-----------------------------------------------------------
相關推薦
一個ArcGIS網路分析的最短路徑例子||A Network Analyst Shortest Route of ArcGIS
這是我前幾年利用ArcMap,ArcCatalog做的最短路徑查詢時候實現的步驟說明記錄,留作後用,時代久遠,很容易忘記,適當做個記錄算是個好習慣吧。 例子是以上海地鐵線路換乘的。 可以實現任意兩點之間的地鐵路線查詢。 主要內容:ArcMap,ArcCatalog,Netw
ArcGIS API for Javascript4.8 路徑網路分析、最短路徑查詢
程式碼是在官方demo上修改來的,官方的demo是需要裝置代理伺服器,才能顯示效果的,這裡我直接設定了ArcGIS Server允許跨域,所以不需要設定代理。 <!DOCTYPE html> <html> <head>
一個例子讓你明白一個演算法-Dijkstra(求源點到各頂點最短路徑)
演算法思想 1.在一個圖中,把所有頂點分為兩個集合P,Q(P為最短路徑集合,Q為待選集合),用dis陣列儲存源點到各個頂點的最短路徑(到自身為0)。 2.初始化P集合,就是加入源點到該集合,並在ma
arcgis api for js入門開發系列十三地圖最短路徑分析
上一篇實現了demo的地圖列印,本篇新增地圖最短路徑分析,截圖如下: 具體實現的思路如下: 1.點選地圖獲取地名,呼叫了arcgis的地理編碼服務,關於地理編碼服務製作以及釋出章節,感興趣的請檢視這裡 點選地圖獲取地名的核心js程式碼: DCI.Route
arcgis for android 短路徑分析 查詢最短路徑
ArcGIS for Android(10.1.1)只支援線上的網路分析,執行路徑分析可以通過RoutingTask類的solve方法來進行,通過給slove方法傳遞RoutingParameters型別的引數,可以最短路徑的查詢。而要成功執行路徑分析,就必須釋出網路分析
演算法分析與設計課程設計-Dijkstra最短路徑演算法
演算法分析與設計課程設計報告書 題目:Dijkstra最短路徑演算法 設計人:張欽穎 班級:14計科2班 學號:1414080901218 一、  
Dijkstra(從一個源點到其他各點的最短路徑)
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 typedef struct { int vertex[MAXSIZE]; int edges[MAXSIZE][MAXSIZE]; }Gra
計算機演算法設計與分析 (四) 貪心演算法--單源最短路徑
1.Dijkstra演算法是解決單源最短路徑的一個貪心演算法。給定一個帶權有向圖G=(V,E),其中每條邊的權都是非負實數,另外,還給定V中的一個頂點,稱為源。現在要計算源到其他各個頂點的最短路長度。這裡的路的長度指的是路上各邊權之和。 Dijkstra演算法可
LeetCode : 743. 網路延遲時間(Network Delay Time)解答,有權最短路徑問題
743. 網路延遲時間 有 N 個網路節點,標記為 1 到 N。 給定一個列表 times,表示訊號經過 有向 邊的傳遞時間。 times[i] = (u, v, w),其中 u 是源節點,v 是目標節點, w 是一個訊號從源節點傳遞到目標節點的時間。 現在,我
迪傑斯特拉(Dijkstra)演算法--有向網路最短路徑
單源最短路徑問題是:對於給定的有向網路G=(V,E)及單個源點v,求v到G的其餘各頂點的最短路徑。 演算法的基本思想 a.初始時,S只包含源點,即S={v},v的距離為0。U包含除v外的其他頂點,即:U={其餘頂點},若v與U中頂點u有邊,則<u,v>
迪傑斯特拉(Dijkstra)演算法--無向網路最短路徑
與有向網路不同的是,無向網路的鄰接矩陣是對稱的,所以在構造鄰接矩陣的時候要注意。Dijkstra演算法的具體內容參照我上次寫的迪傑斯特拉(Dijstra)演算法——有向網路最短路徑 下面直接放程式碼和例項,以便更加理解使用。 #include<stdio.
Dijkstra演算法(一個節點到其他所有節點的最短路徑)
Dijkstra(迪傑斯特拉)演算法是典型的單源最短路徑演算法,用於計算一個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴充套件,直到擴充套件到終點為止。Dijkstra演算法是很有代表性的最短路徑演算法,在很多專業課程中都作為基本內容有詳細的介紹,如資料
Dijkstra演算法--一個點到其餘點最短路徑
Dijkstra演算法 要求 求一個點(源點)到其餘各個頂點的最短路徑。 思路 先將源點到其餘各個點的路徑列出來dis[],找到最小值,這個最小值就是源點到這一點u的最短路徑,並標記已經找出,再以這個點開始,依次遍歷到其它點v,如果這個點u到
圖之從一個頂點到其餘各個頂點的最短路徑(有向圖)
目錄 從一個頂點到其餘各個頂點最短路徑的簡介 舉例以及詳細分析 程式碼塊 測試結果 從一個頂點到其餘各個頂點最短路徑的簡介(又名單元最短路徑) 1.定義概覽 Dijkstra(迪傑斯特拉)演算法是典型的單源最短路徑演算法,用於計算一個節點到其他所
Dijkstra演算法實現從一個源點到其他各點的最短路徑
最短路徑問題與現實生活中的問題息息相關,所以最短路徑問題一定要掌握,這是書上的介紹 怎麼理解呢?還是給個例子會比較清楚,比如下面這個圖: 初始時,集合s={a}(假設a為源點),t={b,c,d,e} 然後從t中選取到a路徑長度最短的頂點:
計算機網路之路由動態選擇最短路徑
路由選擇最短路徑背景: 因特網是全球性的網路,因特網內部又劃分為多個子網,專業名稱為自治系統(簡稱AS),自治系統內部有很多路由器,自治系統之間也有很多路由器。 路由器的主要工作是什麼? 答:為經過路由器的資料包找到一條最佳傳輸路徑,並將該資料有效地傳送到目的站點。。
最短路徑之Dijkstra演算法及例項分析
Dijkstra演算法迪科斯徹演算法 Dijkstra演算法描述為:假設用帶權鄰接矩陣來表示帶權有向圖。首先引進一個輔助向量D,它的每個分量D[i]表示當前所找到的從始點v到每個終點Vi的最短路徑。它的初始狀態為:若兩頂點之間有弧,則D[i]為弧上的權值;否則置D[i]為無
資料結構::迷宮(二)--棧的一個應用(求迷宮最短路徑)
上篇文章我們知道求解迷宮通路的方法,但是一個迷宮有時是不止一條出路,在這些出路中,我們如何找到最短的那一條,這就是我今天要說的迷宮最短路徑問題。 (此處使用的圖): 【先來分析有什麼解決方案:】 1、方法一:我們如果採用上章中遞迴的方式,將所走的路用2標記起來
迷宮最短路徑dfs和bfs程式碼分析
dfs用遞迴一步步試探,在所有路徑中選出最短的一條路徑 程式碼: //0是路,1是牆 #include<iostream> #include<algorithm> using
最短路徑演算法—Floyd(弗洛伊德)演算法分析與實現(Python)
December 19, 2015 10:56 PM Floyd演算法是解決任意兩點間的最短路徑的一種演算法,可以正確處理帶權有向圖或負權的最短路徑問題 解決此問題有兩種方法: 其一是分別以圖中每個頂點為源點共呼叫n次演算法; 其二是採用Floyd演算法