前一天講了向量圖層中的線跟面,今天來看一些特殊的幾何資料,雖然少見但還是遇得到,也藉此機會多認識一下Polygon。
polygon with hole是polygon內挖個洞,geojson處理polygon with hole的方法是在coordinates中加入hole,而且可以加入多個hole。
事實上,polygon的coordinates記錄的內容有兩個部分:
"coordinates":
[[外圈形狀(outter ring array)], [內圈形狀1(inner ring array)],[內圈形狀2(inner ring array)]]
舉個例子,一個有洞的Polygon資料是長這樣(用json ediotr觀察):
coordinates這個array包覆的第一個元素是outter ring,為polygon的外框,
第二個元素後面則擺可以選擇性的放多個inner ring,其效果就是在polygon挖洞,並且可以挖很多洞。
實務上,我們偶爾會遇到這種幾何,例如包圍著臺北市的新北市行政區域範圍(上面就是新北市的geojson),polygon中的coordinates除了outter ring外,跟昨天的Polygon範例相比,多了一個inner ring,如有興趣,新北市geojson請點此下載。
(資料取自github twgeojson。)
延續台灣的行政區當例子,行政區除了polygon內要被挖洞以外,當然也有行政區是由多個polgon組成,這時候在GIS資料是用multipolygon表示,例如澎湖等具有島嶼或群島性質的縣市,(澎湖縣geojson請點此下載)。
(資料取自github twgeojson。)
除了外島因為地理上就是群島的關係,很合理的需要用到multipolygon,但是在本島,也有不少區域會用到multi polygon,這種現象叫做飛地,例如-屏東縣瑪家鄉(wiki),除了原本的區域範圍外,因為政府早期鼓勵原住民到平地鄉開墾,因此遷村到原屬於內埔鄉及長治鄉範圍內,形成飛地,需要使用multipolygon表現(瑪家鄉geojson資料請點此下載)。
(資料重製自Open Street Map)
關於飛地的資料,台灣其實有不少村里,由於一些因素造成遷村(政府政策、災害),借用原本屬於其他行政區的一塊範圍使用,而出現像是瑪家鄉這樣的飛地。
另外有一件有趣的事,就是發現國土測繪中心opendata的村里界圖資好像怪怪的...,竟然沒有顯示遷村而調整界線,還是沿用沒有遷村的範圍(1967年就遷村了),可能有特殊理由吧(掌管門牌及行政區界是根據地方自治應該是縣市政府的權責,國土測繪中心這部分只是整合圖資供應的角色)。
總之就是套上官方的行政區域圖後,竟發現瑪家國中位置及門牌竟然在瑪家鄉鄉界的外面...,這個問題我前陣子遇到過一次,還以為是自己程式有bug,弄了半天才發現是這個資料的問題,所以特別拿出來做為參考囉。