• 沒有找到結果。

立 政 治 大 學

Na tiona

l Ch engchi University

20

第四章 底層機制

底層機制指的是圖 3.1 系統架構圖中“shapefile library & customized library"中的 customized library,開發者可把底層機制當作抽象功能的集合以忽略實作細節。coverage 結構是用來描述region、polygon、arc 間的 topology 以提供 region、polygon、arc 三種圖 層間的關聯及線段資訊,polygon 與 region 對映、L/R village、相鄰關係和相鄰程度 是提供選區劃分演算法的抽象操作,有了此函式庫後設計選區劃分的演算法即可忽略底 層機制的實作細節以減少開發時間,當然我們的系統架構不僅局限於選區劃分,若要進 行其他GIS 的相關應用則必須在 customized library 中加上其他支援機制,在這裡我們只 對底層機制做選區劃分的支援。

4.1 coverage 結構

我們系統架構中的第一部分有提到 coverage 檔案,此檔案是由勤崴科技提供的 shapefile 經 ArcGIS 所轉成的,然後我們會再把 coverage 檔案轉成三份 shapfile,會採用 此轉換方式是因為coverage 包含了 region、polygon、arc 三種圖層,然而 shapefile 只能 包含其中一種圖層,再加上shapefile 是較廣泛的檔案格式,故我們把 coverage 當作中間 隔式轉成三份shapefile 即可擁有兩個格式的優點,還有我們之前有提到採用村里間相接 的邊界當作最小的評估單位,這就是coverage 裡 arc 圖層所提供的,圖 4.1 是 coverage 結構的示意圖。

圖4.1 coverage 結構。

閉polygon 或數個封閉 polygon,以上公式都能計算,而且沒有限定圍成的數個 polygon 要彼此相鄰,沒有限制一定要連續的polygon 集合正是 region 所呈現的型態,而 region 是用來表示村里的單位,下頁圖4.2 是一個擁有多個島嶼的村里,此村里正是一個不連 續的polygon 集合,我們可以利用上面的公式計算此村里的面積、中心點 X 座標、中心 點Y 座標和周長。

4.2 polygon-region 的 topology

polygon-arc 的 topology 是指把 polygon 圖層中的某個多邊形對映至 region 圖層裡某 個region 內的其中一個多邊形,polygon-arc 的 topology 也可稱為 polygon 與 region 對映,

此對映的前提是region 圖層和 polygon 圖層都是由同一個 shapefile 所轉成的,我們知道 region 圖層紀錄的基本元素是村里,而 polygon 圖層紀錄的基本元素是多邊形,這代表 由同一個shapefile 所轉成的 polygon 圖層包含的多邊形數會比 region 圖層包含的村里數 還多,因為函數關係只能多對一和一對一所以我們會設計 polygon 與 region 對映是從 polygon 對至 region 而非 region 對至 polygon,若 region 圖層中的村里對至 polygon 圖層 中的多邊形會造成一對多的對映,如此並不滿足函數關係,圖4.2 是屏東縣佳冬鄉塭豐

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

23

圖4.2 一個村里可包含多個 polygon。

4.3 arc-region 的 topology

arc-region 的 topology 是指 arc 圖層和其他圖層間的對映關係,arc-region 的 topology 也可稱為L/R village,arc 圖層紀錄的基本單位是線段,在原始的 coverage 的 arc 圖層中 只提供L/R polygon,L/R polygon 紀錄了線段的左右相鄰多邊形在 polygon 圖層的編號,

這代表L/R polygon 只提供 arc 圖層和 polygon 圖層之間的關係,然而選區劃分是以村里 作為劃分的單位,我們比較希望知道一線段的左右村里在region 圖層的編號而非左右多 邊形在polygon 圖層的編號,所以要建立村里間共用線段的關係也就是 arc 圖層和 region 圖層之間的關係才能判斷兩村里是否相鄰,我們在此以圖 4.3 示範同一條線段的 L/R polygon 和 L/R village,其中 PID 是指 polygon 圖層內的多邊形編號而 VID 是指 region 圖層中的村里代號,圖 4.3 中左方村里是台北市北投區湖田里,湖田里的村里編號是 450,右方村里是台北市北投區菁山里,菁山里的村里編號是 449,這兩個村里剛好都只 包含一個多邊形而這兩個多邊形在polygon 圖層的代號分別是 1 和 2,利用 arc 圖層提供 的L/R polygon 只能知道 polygon 圖層編號 1 和編號 2 的多邊形相鄰,並不能確定湖田 里和菁山里相鄰,然而上節提到的polygon 至 region 的對映是 polygon 圖層和 region 圖 層的對映關係,而arc 圖層提供的 L/R polygon 是 polygon 和 arc 的對應關係,所以我們 只要先用L/R polygon 查出圖 4.3 中兩村里共用線段的左右 polygon 分別是 polygon 圖層 的編號1 多邊形和編號 2 多邊形,再用 polygon 至 region 的對映即可得知此兩多別行分

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

24

別屬於region 圖層中的編號 1 村里和編號 2 村里,最後可得到此 arc 的左右村里也就是 湖田里和菁山里,以上範例就是L/R village 的建置過程,L/R village 除了可得知線段的 左右相接村里還可用來建立相鄰關係,相鄰關係會在下一節介紹。

圖4.3 同一條線段的 L/R polygon 和 L/R village。

4.4村里間的 topology

村里間的 topology 記錄村里周圍的相接村里,村里間的 topology 也可稱為相鄰關 係,我們提出自動化建立相鄰關係的方法,利用我們的底層機制可以免於使用人力建立 台灣一級行政區的相鄰關係。過去在沒有考量三種型態(region、polygon、arc)的圖層關 聯之前我們是使用半自動的方式建立台灣各一級行政區的相鄰關係,所謂半自動的方式 是利用預先編寫的Java 圖形介面顯示圖層並用人力做村里間的相鄰關係的點選,處理各 一級行政區所花的時間大約在 40 分鐘至一小時不等,事後還需要交給其他工作人員作 比對,雖然花費人力和時間不算太高但以人力建置難免會有疏失,例如兩村里相接的邊 界過短會被誤判成不相鄰,此方法最大的缺點是行政區內部有村里變動時就必須重新建 立相鄰關係,接下來要提出我們是如何自動化建置相鄰關係。

相鄰關係是利用L/R village 建置,相鄰關係是村里間的 topology,我們只要掃過 L/R

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

25

village 便可得知所有村里間的相鄰關係,圖 4.4 可用來說明相鄰關係的建置過程例,假 設我們要找到圖4.4 中村里 v1 的所有相接村里必須先找出和所有和 v1 相鄰的線段,假 設arc1 和 arc2 是所有和 v1 相鄰的線段,arc1 的左右 village 分別是 v1 和 v2、arc2 的左 右village 分別是 v1 和 v3,則我們可得知和 v1 相鄰的村里有 v2 和 v3,所以自動化的相 鄰關係建置是利用L/R village 建置。

圖4.4 相鄰關係的建置過程示意。

建置相鄰關係的過程中我們會同時紀錄相鄰村里間的共用線段,我們要說明相鄰村 里間的共用線段和L/R village 的差別,相鄰村里間的共用線段是輸入兩相鄰村里然後輸 出一條共用線段,L/R village 是輸入一條共用線段然後輸出兩個相鄰村里,我們可視相 鄰村里間的共用線段和L/R village 為反關係,這代表 L/R village 為 arc-region 的 topology 而相鄰村里間的共用線段為 region-arc 的 topology。紀錄共用線段可以進一步建立相鄰 程度,相鄰程度我們會在下節提到,相鄰關係紀錄了一個村里外相鄰的所有村里,再加 上我們有紀錄相鄰村里間的共用線段,這代表我們能利用相鄰關係和相鄰村里間的共用 線段查出一個村里的各個邊界分別是屬於arc 圖層中各自對映的線段編號。

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

26

4.5 相鄰程度

相鄰程度是指兩個村里相接的多寡,可定義為”共用邊長/小村里的周長”,我們習慣 把兩相鄰程度太小的村里視為不相鄰,可避免類似下面圖 4.5(a)的情形,意思是村里 1 和2 之間至少要有一個以上的強相鄰村里,我們也可把相鄰程度太低的兩村里視為不相 鄰,故此兩村里若是在同一選區且又視為不相鄰,這樣代表兩弱相鄰村里間必須至少有 一個相鄰程度較強的村里才能滿足選區連續性,把弱相鄰視為不相鄰可以當作一種避免 選區邊緣形狀過於畸零的一種策略。

圖 4.5(a) 弱相鄰。 圖 4.5(b) 強相鄰。

相鄰程度可以看成相鄰關係配合相接村里間的線段,要注意的是一條線段左右各只 會有一個village,但是兩相鄰村里可能共用一條以上的線段,我們有在底層機制建置這 個細節。

我們提出把弱相鄰視為不相鄰的觀點,利用此觀點調整選區所帶來的主要好處是可 以避免選區邊界出現畸零的形狀,此外還可以減少調整選區所需的時間以及形狀評估時 也有較大的機會保留劃分出來的選區。過去調整選區時是以相鄰關係維持選區的連通 性,只要相鄰關係中有紀錄兩村里相鄰就必須納入調整選區時的考量,我們可以利用相 鄰關係維持選區連通性的前提下把某村里移出或移入選區以調整形狀、人口和選票,然

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

27

而把所有相鄰的村里都納入調整選區時的考量並非沒有缺點,癥結在於相鄰關係只記錄 兩村里是否相鄰而沒紀錄兩村里相鄰的多寡,我們在相鄰關係上配合線段資訊以得到兩 村里共用的線段,如此便可得知兩村里的相鄰多寡,兩弱相鄰的村里可在選區劃分的應 用中視為不相鄰,這暗示被視為不相鄰的兩弱相鄰村里間必須要有其他和此兩村里相鄰 的強相鄰村里才能滿足選區的連通性,我們的想法是在調整選區時移出或移入某村里會 造成弱相鄰的狀況就不予考慮,把這些會造成選區形狀畸零的狀況排除在調整選區的過 程即可節省調整選區時所花的時間,過去只考慮相鄰關係下會出現兩弱相鄰的村里間沒 有其他村里相接的情況,假如弱相鄰的情況發生在選區邊緣會造成選區不滿足形狀完整 性,如此情況下產生的選區勢必在形狀評估時被排除,這樣又要在形狀評估時花費時間 排除不好的選區劃分結果,假如將兩弱相鄰的村里視為不相鄰且此兩村里在同一選區的 情況下,此兩村里間勢必出現其他村里相接,有了其他村里填補在此兩村里間即使此兩 村里出現在選區邊緣出現畸零形狀的機率也會減低,之後的形狀評估時也有較大的機會 保留劃分出來的選區,理想上形狀評估階段能排除越少的選區劃分結果代表選區調整階

而把所有相鄰的村里都納入調整選區時的考量並非沒有缺點,癥結在於相鄰關係只記錄 兩村里是否相鄰而沒紀錄兩村里相鄰的多寡,我們在相鄰關係上配合線段資訊以得到兩 村里共用的線段,如此便可得知兩村里的相鄰多寡,兩弱相鄰的村里可在選區劃分的應 用中視為不相鄰,這暗示被視為不相鄰的兩弱相鄰村里間必須要有其他和此兩村里相鄰 的強相鄰村里才能滿足選區的連通性,我們的想法是在調整選區時移出或移入某村里會 造成弱相鄰的狀況就不予考慮,把這些會造成選區形狀畸零的狀況排除在調整選區的過 程即可節省調整選區時所花的時間,過去只考慮相鄰關係下會出現兩弱相鄰的村里間沒 有其他村里相接的情況,假如弱相鄰的情況發生在選區邊緣會造成選區不滿足形狀完整 性,如此情況下產生的選區勢必在形狀評估時被排除,這樣又要在形狀評估時花費時間 排除不好的選區劃分結果,假如將兩弱相鄰的村里視為不相鄰且此兩村里在同一選區的 情況下,此兩村里間勢必出現其他村里相接,有了其他村里填補在此兩村里間即使此兩 村里出現在選區邊緣出現畸零形狀的機率也會減低,之後的形狀評估時也有較大的機會 保留劃分出來的選區,理想上形狀評估階段能排除越少的選區劃分結果代表選區調整階

相關文件