Flyingis

          Talking and thinking freely !
          Flying in the world of GIS !
          隨筆 - 156, 文章 - 16, 評論 - 589, 引用 - 0
          數(shù)據(jù)加載中……

          GIS 緩沖區(qū)應(yīng)用及算法實現(xiàn)

          作者: Flyingis

          地理信息空間幾何關(guān)系分析主要包括鄰近度 (proximity) 分析、疊加分析、網(wǎng)絡(luò)分析等。緩沖區(qū)分析是鄰近度分析的一種,緩沖區(qū)是為了識別某一地理實體或空間物體對其周圍地物的影響度而在其周圍建立具有一定寬度的帶狀區(qū)域。緩沖區(qū)作為獨(dú)立的數(shù)據(jù)層進(jìn)行疊加分析,可應(yīng)用到道路、河流、環(huán)境污染源、居民點、輻射源等的空間分析,為某種應(yīng)用目的提供科學(xué)依據(jù),另外,結(jié)合不同的專業(yè)模型,可以在生活、軍事、城鄉(xiāng)規(guī)劃等領(lǐng)域發(fā)揮重要的作用。

          針對點、線、面不同的幾何類型,建立緩沖區(qū)的方式相互有所不同。建立點緩沖區(qū)比較簡單,即以某點要素為圓心,以緩沖半徑 R 作圓,得到點要素的緩沖區(qū);線要素的緩沖區(qū)是以線為軸,以 R 為距離作兩側(cè)的平行線,在線的兩端構(gòu)建兩個半圓弧段,和平行線一起組成緩沖區(qū);面緩沖區(qū)的建立,是以面要素的邊界為基線向內(nèi)外側(cè)作平行線,平行線和基線里的區(qū)域就是面緩沖區(qū)。除此之外,還可以對柵格數(shù)據(jù)建立緩沖區(qū),根據(jù)不同的模型方程建立動態(tài)緩沖區(qū),不論對什么樣的數(shù)據(jù)建立緩沖區(qū),其基本方法都是相似的。

          緩沖區(qū)實現(xiàn)算法有矢量方法和柵格方法兩種。其中矢量方法數(shù)據(jù)量小,方法相對成熟,柵格圖像需要進(jìn)行柵格像元之間進(jìn)行布爾運(yùn)算,當(dāng)緩沖區(qū)較大時會帶來較重的運(yùn)算負(fù)荷,實際運(yùn)用中存在一定的局限性。矢量方法算法一般遵循以下步驟:

          :確定中心點——以中心點為圓心、 R 為半徑生成一個圓——得到緩沖區(qū)邊界

          線、面 :確定軸線——以距離 R 生成中心軸線的平行曲線——處理轉(zhuǎn)角弧段——對生成的弧段進(jìn)行求交、合并運(yùn)算——生成緩沖區(qū)邊界

          常用的矢量數(shù)據(jù)中心線擴(kuò)張算法:

          角分線法

          基本思想:即“簡單平行線法”,在軸線的兩邊作出平行線,在轉(zhuǎn)角處形成尖角,兩端形成弧段,組成緩沖區(qū)。

          缺陷:難以保證在尖角處緩沖區(qū)左右邊線等寬;校正過程復(fù)雜,主要體現(xiàn)在軸線折角很大和很小時的情況;算法模型復(fù)雜,主要是因為幾何生成過程中需要處理較多的異常。

          凸角圓弧法

          基本思想:顧名思義,即是在轉(zhuǎn)角外側(cè)用圓弧來代替尖角,內(nèi)側(cè)仍然使用尖角的方法,生成緩沖區(qū)。

          實施步驟:

          1.??????? 直線性判斷,判斷相鄰三點是否在同一直線上;

          2.??????? 折點凸凹性判斷,確定轉(zhuǎn)角的地方哪側(cè)使用直線求交,哪側(cè)使用圓弧連接;

          3.??????? 凸點圓弧的嵌入,即將轉(zhuǎn)角外側(cè)形成的圓弧和兩邊的線段相連;

          4.??????? 邊線關(guān)系的判別與處理,島嶼多邊形參與緩沖區(qū)邊界的構(gòu)成,重疊多邊形不參與緩沖區(qū)邊界的構(gòu)成;

          5.??????? 緩沖區(qū)邊界的形成,具體是將重疊區(qū)域進(jìn)行合并,繪制外圍的邊線,包括島嶼多邊形的輪廓,形成最終的緩沖區(qū)邊界。

          在緩沖區(qū)算法中,需要注意的一個問題是緩沖區(qū)多邊形的重疊與合并,包括同一要素緩沖區(qū)的重疊和多個要素之間緩沖區(qū)的重疊。柵格數(shù)據(jù)緩沖區(qū)內(nèi)的柵格具有一個與其影響度對應(yīng)的一個值,如果重疊區(qū)域具有相同影響度則任取一值,如果不同則采取影響度大的代替影響度小的方法處理。對于矢量數(shù)據(jù)的處理算法有三種:數(shù)學(xué)運(yùn)算法;矢量-柵格轉(zhuǎn)換法;矢量-柵格混合法。?

          posted on 2006-04-17 15:25 Flyingis 閱讀(7755) 評論(9)  編輯  收藏 所屬分類: GIS-GPS-RS

          評論

          # re: GIS 緩沖區(qū)應(yīng)用及算法實現(xiàn)  回復(fù)  更多評論   

          可否有現(xiàn)成算法可以給我研究學(xué)習(xí)。
          zhanzhenbo@126.com
          2006-10-09 10:11 | piaoyi

          # re: GIS 緩沖區(qū)應(yīng)用及算法實現(xiàn)  回復(fù)  更多評論   

          @piaoyi
          研究GIS底層算法,可以選擇各種GIS開源軟件。
          2006-10-11 18:46 | Flyingis

          # re: GIS 緩沖區(qū)應(yīng)用及算法實現(xiàn)  回復(fù)  更多評論   

          是的,現(xiàn)在看來.確實有很多優(yōu)秀的開源項目值得研究.

          呵呵.
          2006-12-07 20:35 | zhanzhenbo

          # re: GIS 緩沖區(qū)應(yīng)用及算法實現(xiàn)[未登錄]  回復(fù)  更多評論   

          能否給我一份算法或代碼,謝謝!
          shenyegh@scfast.com
          2007-06-10 18:44 | 小高

          # re: GIS 緩沖區(qū)應(yīng)用及算法實現(xiàn)  回復(fù)  更多評論   

          fangkai@163.com

          # re: GIS 緩沖區(qū)應(yīng)用及算法實現(xiàn)  回復(fù)  更多評論   

          想研究源代碼的朋友可以看看Geotools源代碼。
          2007-06-28 10:00 | Flyingis

          # re: GIS 緩沖區(qū)應(yīng)用及算法實現(xiàn)  回復(fù)  更多評論   

          我用的是VC,不懂Java,現(xiàn)在急需實現(xiàn)緩沖區(qū)分析,不知有沒有詳細(xì)的算法或源碼
          2007-08-28 20:28 | jeo2007

          # re: GIS 緩沖區(qū)應(yīng)用及算法實現(xiàn)  回復(fù)  更多評論   

          @jeo2007
          給你推薦一本書:《地理信息系統(tǒng)算法基礎(chǔ)》,科學(xué)出版社。
          2007-08-29 10:11 | Flyingis

          # re: GIS 緩沖區(qū)應(yīng)用及算法實現(xiàn)  回復(fù)  更多評論   

          gujiacheng1@sohu.com
          萬分感謝
          2014-02-17 23:01 | SGu
          主站蜘蛛池模板: 宝清县| 黄山市| 潢川县| 巧家县| 长汀县| 南陵县| 南安市| 巴林右旗| 沿河| 肇源县| 绥江县| 铜陵市| 沛县| 榕江县| 玉田县| 连云港市| 邹平县| 盐池县| 伽师县| 图木舒克市| 邵武市| 平原县| 孟村| 温宿县| 怀化市| 门源| 黄平县| 庄河市| 伊吾县| 义乌市| 丹巴县| 睢宁县| 白玉县| 新竹县| 天长市| 深圳市| 米林县| 永济市| 绥棱县| 厦门市| 民县|