前言
當我們用GIS軟件打開一個SHP文件的時候,會顯示出里面全部的幾何圖形,假如我只想要其中的一部分數(shù)據(jù)顯示出來,其他的均不要顯示,有那么幾種操作方法。
我們可以通過把需要顯示的幾何面復(fù)制到另外一個圖層里面來單獨顯示,但如果需要顯示的區(qū)域一變,又要重新搞,不是很方便。
下面將記錄一下我學(xué)到的解決方法:ArcGIS和QIGS都支持篩選一個圖層中的數(shù)據(jù),提供類似SQL一樣的查詢語句,只需編寫查詢條件圖層就會只顯示匹配到的面。
準備SHP數(shù)據(jù)
到GitHub開源庫下載最新版的全國省市區(qū)邊界數(shù)據(jù),地址:https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov ,支持 在線預(yù)覽(高德地圖、ECharts),這個開源庫經(jīng)常更新維護 各方面都支持得很好,可以到鄉(xiāng)鎮(zhèn)級,也不亂碼。
下載并解壓得到 ok_geo.csv 文件,里面包含了全國的省市區(qū)邊界數(shù)據(jù),此開源庫內(nèi)提供了一個轉(zhuǎn)換工具,開源將此csv文件轉(zhuǎn)換成shp、geojson、sql等格式,也一樣的下載一下。
打開轉(zhuǎn)換工具,工具里面選擇 ok_geo.csv 文件,因為里面是全國所有的省市區(qū)數(shù)據(jù),比較大,我們先導(dǎo)出武漢的所有區(qū)縣數(shù)據(jù)來演示;在工具的城市名前綴里面填寫
"湖北省 武漢市 "(結(jié)尾帶一個空格,不然武漢市的邊界也會導(dǎo)出來)。點擊轉(zhuǎn)換工具的
轉(zhuǎn)成shp文件按鈕,耐心稍等一會,武漢市的所有區(qū)縣數(shù)據(jù)就導(dǎo)出成功了,shp文件在 ok_geo.csv 同一個目錄里。
ArcMap 的篩選
在ArcMap中打開導(dǎo)出的武漢SHP文件:

圖層上右鍵打開圖層屬性面板,切換到查詢定義(Definition Query):

ArcMap查詢定義里面填寫了name='漢陽區(qū)' or name='硚口區(qū)'條件,意思是篩選出屬性表中name列等于漢陽區(qū)或者硚口區(qū)的數(shù)據(jù),點確定后就查詢出需要顯示的數(shù)據(jù),不匹配的全部未顯示,只會顯示匹配到的:

如何編寫更多的查詢條件請參考下面。
QGIS 的篩選
在QGIS中打開導(dǎo)出的武漢SHP文件:

圖層上右鍵打開過濾(Filter)菜單,進入查詢定義(Query Builder):

QGIS查詢定義里面填寫了name='漢陽區(qū)' or name='硚口區(qū)'條件,意思是篩選出屬性表中name列等于漢陽區(qū)或者硚口區(qū)的數(shù)據(jù),點確定后就查詢出需要顯示的數(shù)據(jù),不匹配的全部未顯示,只會顯示匹配到的:

如何編寫查詢條件
查詢條件和SQL的where查詢條件類似,支持 and or like = > < != 等運算符。
字符串用'單引號括起來,比如:name='張三'、name like '張%'。
字段名稱直接寫或者用"雙引號括起來,比如:"編號(數(shù)字)"=12345。
用and和or進行多個條件組合查詢,比如:面積>100 and 面積<200 or 面積=999。
and組合比or組合優(yōu)先級更高,可以用()來控制優(yōu)先級,比如:(名稱='A' or 名稱='B') and 面積<200,會查找出名稱為A或B,并且面積小于200的數(shù)據(jù);如果去掉括號,就變成了:查找名稱為A的所有數(shù)據(jù),和名稱為B并且面積小于200的數(shù)據(jù)。
用like來進行字符串的模糊查詢,比如:
-
name like '%小%'查找名字中包含小字的所有數(shù)據(jù); -
name like '張%'查找名字為張開頭的所有數(shù)據(jù); -
name like '%小'查找名字為小結(jié)尾的所有數(shù)據(jù)。
【完】