ArcGIS QGIS學習二:圖層如何只顯示需要的部分幾何面數據(附最新坐標邊界下載全國省市區縣鄉鎮)
前言
當我們用GIS軟件打開一個SHP文件的時候,會顯示出裏面全部的幾何圖形,假如我只想要其中的一部分數據顯示出來,其他的均不要顯示,有那麼幾種操作方法。
我們可以通過把需要顯示的幾何面複製到另外一個圖層裏面來單獨顯示,但如果需要顯示的區域一變,又要重新搞,不是很方便。
下面將記錄一下我學到的解決方法:ArcGIS和QIGS都支持篩選一個圖層中的數據,提供類似SQL一樣的查詢語句,只需編寫查詢條件圖層就會只顯示匹配到的面。
準備SHP數據
-
到GitHub開源庫下載最新版的全國省市區邊界數據,地址://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 '%小'
查找名字為小
結尾的所有數據。
【完】