根據道路的shape獲得high_cross和low_cross

如圖所示:如何根據提供的道路的shape file獲得該路的high cross和low cross

所謂的high cross就是圖中的king st這條路,low cross是Gravers Ln這條路。

具體實現的方法如下:

#1 將道路的shape數據導入到 Sql Server中

#2 在實體表中增加兩個字段low_cross和high_cross

#3 用程序【我是用C#寫的一個小程序】循環每條街道,找出跟當前街道相交的路,獲得當前道路起始點地址的經緯度和一個交叉路口的經緯度,比較起始點位置與交叉路口的遠近,離數字較小的近就是low cross,離數字小的較遠的就是high cross。

#4 當然處理的過程中有多種情況:有隻有一個交叉點的情況 -- 只能更新一個high cross 或者low cross

兩個交叉路都在同一個方向的 -- 這就需要用Intersections的方法獲得交叉點比較,然後用STEquals的方法比較這兩個點是否爲同一個點【實際操作過程中發現,有時候兩個點的經緯度差別很小,如果用STEquals判斷是兩個點,實際邏輯上應該是一個點,STDistance比較一個容差的距離的方式比較合適的,經過測試我設置的值爲0.00002,這個值可根據實際情況設置】

三個交叉路口、四個交叉路口、五個交叉路口的都有 -- 處理方法是一樣,當前無法區分那個確實是high cross 和low cross,所以這種情況就是high cross或low cross可能有多個的情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章