前言
當我們用GIS軟體開啟一個SHP檔案的時候,會顯示出裡面全部的幾何圖形,假如我只想要其中的一部分資料顯示出來,其他的均不要顯示,有那麼幾種操作方法。
我們可以透過把需要顯示的幾何面複製到另外一個圖層裡面來單獨顯示,但如果需要顯示的區域一變,又要重新搞,不是很方便。
下面將記錄一下我學到的解決方法:ArcGIS和QIGS都支援篩選一個圖層中的資料,提供類似SQL一樣的查詢語句,只需編寫查詢條件圖層就會只顯示匹配到的面。
準備SHP資料
-
到GitHub開源庫下載最新版的全國省市區邊界資料,地址:https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov ,支援 線上預覽(高德地圖、ECharts),這個開源庫經常更新維護 各方面都支援得很好,可以到鄉鎮級,也不亂碼。
-
下載並解壓得到 ok_geo.csv 檔案,裡面包含了全國的省市區邊界資料,此開源庫內提供了一個轉換工具,開源將此csv檔案轉換成shp、geojson、sql等格式,也一樣的下載一下。
-
開啟轉換工具,工具裡面選擇 ok_geo.csv 檔案,因為裡面是全國所有的省市區資料,比較大,我們先匯出武漢的所有區縣資料來演示;在工具的城市名字首裡面填寫
"湖北省 武漢市 "
(結尾帶一個空格,不然武漢市的邊界也會匯出來)。 -
點選轉換工具的
轉成shp檔案
按鈕,耐心稍等一會,武漢市的所有區縣資料就匯出成功了,shp檔案在 ok_geo.csv 同一個目錄裡。
ArcMap 的篩選
在ArcMap中開啟匯出的武漢SHP檔案:
圖層上右鍵開啟圖層屬性皮膚,切換到查詢定義(Definition Query):
ArcMap查詢定義裡面填寫了name='漢陽區' or name='礄口區'
條件,意思是篩選出屬性表中name
列等於漢陽區
或者礄口區
的資料,點確定後就查詢出需要顯示的資料,不匹配的全部未顯示,只會顯示匹配到的:
如何編寫更多的查詢條件請參考下面。
QGIS 的篩選
在QGIS中開啟匯出的武漢SHP檔案:
圖層上右鍵開啟過濾(Filter)選單,進入查詢定義(Query Builder):
QGIS查詢定義裡面填寫了name='漢陽區' or name='礄口區'
條件,意思是篩選出屬性表中name
列等於漢陽區
或者礄口區
的資料,點確定後就查詢出需要顯示的資料,不匹配的全部未顯示,只會顯示匹配到的:
如何編寫查詢條件
查詢條件和SQL
的where
查詢條件類似,支援 and or like = > < !=
等運算子。
字串用'
單引號括起來,比如:name='張三'
、name like '張%'
。
欄位名稱直接寫或者用"
雙引號括起來,比如:"編號(數字)"=12345
。
用and
和or
進行多個條件組合查詢,比如:面積>100 and 面積<200 or 面積=999
。
and
組合比or
組合優先順序更高,可以用()
來控制優先順序,比如:(名稱='A' or 名稱='B') and 面積<200
,會查詢出名稱為A或B,並且面積小於200的資料;如果去掉括號,就變成了:查詢名稱為A的所有資料,和名稱為B並且面積小於200的資料。
用like
來進行字串的模糊查詢,比如:
name like '%小%'
查詢名字中包含小
字的所有資料;name like '張%'
查詢名字為張
開頭的所有資料;name like '%小'
查詢名字為小
結尾的所有資料。
【完】