共计 1375 个字符,预计需要花费 4 分钟才能阅读完成。
前言
当咱们用 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 '% 小'
查找名字为小
结尾的所有数据。
【完】