arcgis学习笔记
arcgis的概念
arcgis的应用场景
arcgis的发展历史
arcgis的cc工具箱
arcgis操作四十四个技巧
arcigspro中的动态文本技巧
ARCgis的图斑对比操作实操
arcgis如何汇总统计
arcgis如何布满布局操作
arcgis如何在dem栅格中提取水文线
arcgispro中如何创建空图层-最快办法
arcgismap过渡到PRO的操作细节
arcgisPRO如何画建筑阴影
arcgis的模型构建器-减轻重复劳动利器
如果在ArcGIS Pro的地图系列中插入动态统计表
arcgis土地利用转移矩阵
ArcGIS中的【OBJECTID_1】字段是什么鬼?如何还原成【OBJECTID】
arcgis四十个操作技巧-提高工作效率
ArcGIS 批量导出 MXD 地图,高效不加班
arcgis获取四至坐标
ArcGIS 强行修改字段类型工具
在ArcGIS中生成界址点的方法——基于arcpy脚本的实践指南
【ArcGIS 小技巧】为国空用地字段设置属性域,快速填充属性值并减少出错
arcgis导出csv格式
arcgis小技巧
数据分享2024年5月全国行政区划
arcgis计算子段的表达式
ArcGIS_空间连接_工具详解
ArcMap的那些功能在ArcGIS Pro里都去哪儿了?
【平面面积、椭球面积】计算方法全收录
解锁 ArcGIS 字段计算器!
ArcGIS【汇总统计】方法详解
解决你的所有 ArcGIS 标注问题:二分式、三分式、上下标、牵引线……
ArcGIS 模型构建器(ModelBuilder)_知识要点汇总
一篇文章学会 ArcGIS 模型构建器(ModelBuilder)
ArcGIS 筛选工具:19 段 SQL 代码,所有需求一网打尽
ArcGIS 模型构建器 Pro 版_更多花活演示
ArcGIS Pro 属性规则:数据自动化神器
【模型构建器高级技巧】迭代要素选择实现带属性的线面转换
【超级干货】26 段 python 代码,解锁 ArcGIS 字段计算器!
一文搞定 ArcGIS Pro 布局中的动态文本
本文档使用 MrDoc 发布
-
+
首页
ArcGIS 筛选工具:19 段 SQL 代码,所有需求一网打尽
**一、筛选工具的使用方法** # **筛选工具(Select_analysis)** 主要用于从输入要素类或输入要素图层中提取要素(通常使用选择或结构化查询语言 (SQL) 表达式),并将其存储于输出要素类中。 以三调图斑为例,图斑中有一个【DLMC】字段,该字段值包括(河流水面、农村道路、公路用地、城镇村道路……),如果我们想提取出农村道路并生成单独的要素类,就可以使用【筛选】工具。  筛选工具的路径:**【分析工具】—【提取分析】—【筛选】**。 以 ArcMap 为例,打开工具,界面如下:  如果是 ArcGIS Pro,工具名称变成了【选择】,界面如下:  Pro 里的 SQL 变成了可操作式的用法,对于新手来说更友好了。当然也可以切换成 SQL 语句写法:  个人觉得,在 Pro 里,尽可能采用可操作式的用法,方便,容易上手。 **但是如果想深入理解 SQL 筛选的原理,或者你用的是 ArcMap,那么 SQL 语句也需要好好学学。** **因为 SQL 并不只是用在【筛选】工具中,其它的包括图层的定义查询、地图或属性表中的按属性选择、以及一些系统工具的参数设置里,都会用到 SQL。** 下面就举些 SQL 筛选语句的具体例子。  **二、使用方法示例** ### **1、等于** 例如筛选【DLMC】值为【农村道路】的图斑: ``` DLMC = '农村道路' ``` ###  ### **2、不等于** 例如筛选【DLMC】值不等于【农村道路】的图斑: ``` DLMC <> '农村道路' ``` ###  ### **3、获取开头是特定文字的图斑 LIKE** 例如筛选【DLMC】值中开头文字是【其他】的图斑: ``` DLMC LIKE '其他 %' ``` 这里的【%】指代了任意字符或无字符。 语句的意思是前面的字符是【其他】,接下来的可以是任意字符。  ### **4、获取开头不是特定文字的图斑 LIKE** 例如筛选【DLMC】值中开头文字不是【其他】的图斑: ``` DLMC NOT LIKE '其他 %' ``` 这是例 3 的反义,就是在 LIKE 前面加个 NOT,这种用法很常见,后面很多用法都可以加这个反义用法,可以自已试一试。  ### **5、获取结尾是特定文字的图斑 LIKE** 例如筛选【DLMC】值中结尾文字是【林地】的图斑: ``` DLMC LIKE '% 林地' ``` 这里的【%】同样指代任意字符或无字符。 语句的意思是前面可以是任意字符,但最后两个字符必须是【林地】。  如果想获取结尾文字不是【林地】的图斑: ``` DLMC NOT LIKE '% 林地' ``` ### **6、包括多个值 IN** 例如筛选【DLMC】值是【沟渠】或【公路用地】的图斑: ``` DLMC IN ('公路用地', '沟渠') ``` 这里的 IN 就是集合的意思,后面括号里可以无限添加值 。  它有一个等效的写法,就是【DLMC】等于【公路用地】或【DLMC】等于【沟渠】: ``` DLMC = '公路用地' Or DLMC = '沟渠' ``` 当然第 1 种写法更简洁也更优雅,建议都用第 1 种。 ### **7、包含文本 LIKE** 例如筛选【DLMC】值中包含字符【水】的图斑: ``` DLMC LIKE '% 水 %' ``` 这里的【%】同样指代任意字符或无字符。 语句的意思是前面可以是任意字符,中间有一个【%】,后面可以是任意字符。  如果想获取不包含字符【水】的图斑: ``` DLMC NOT LIKE '% 水 %' ``` ### **8、包含文本且格式固定 LIKE** 例如筛选【DLMC】值中最后两个字符是【用地】且前面是 2 个字符的图斑: ``` DLMC LIKE '__用地' ``` 注意上面那根横线是两个【_】符号。 这个【_】符号指代的是任意一个字符。  如果要筛选前面只有 1 个字符的图斑: ``` DLMC LIKE '_用地' ``` 更复杂一点的,如果要筛选中间是【用地】,前面一个字符,后面也是一个字符: ``` DLMC LIKE '_用地_' ``` 总之,只要明白了【_】符号指代的意思,你也可以根据实际情况随意组合。 ### **9、字符串函数 SUBSTRING 等** 例如筛选【DLMC】中从第二 2 位起取 2 个字符的结果为【村道】的图斑: ``` SUBSTRING(DLMC FROM 2 FOR 2) = '村道' ```  这个方法等效于: ``` DLMC LIKE '_村道 %' ``` 字符串函数不止 SUBSTRING,其它的以后慢慢再研究。 ### **10、字符串联合 ||** 【 **||** 】符号所达到的目的是将两个字符串字段的值进行联合,比如说在某一行,【DLBM】的值为【0101】,【DLMC】的值为【水田】,则【DLBM** || **DLMC】的值则为【0101 水田】。 例如筛选【DLBM】和【DLMC】组合值中包含【2 竹】的图斑: ``` (DLBM || DLMC) LIKE '%2 竹 %' ```  不过要用在什么地方,说实话我也没想到,反正先记着。 ### **11、获取为空的图斑 NULL** 例如筛选【DLMC】值为空的图斑: ``` DLMC IS NULL ```  不为空的情况: ``` DLMC IS NOT NULL ``` ### **12、数字筛选,大于、小于、大等于、小等于、不等于** 例如筛选【Shape_Area】值大于 1000 的图斑: ``` Shape_Area > 1000 ```  类似的,【Shape_Area】值小于、大等于、小等于、不等 1000: ``` Shape_Area < 1000 Shape_Area >= 1000 Shape_Area <= 1000 Shape_Area <> 1000 ``` ### **13、数字筛选,区间 BETWEEN** 例如筛选【Shape_Area】值 400 至 430 的图斑: ``` Shape_Area BETWEEN 400 AND 430 ```  这个方法等效于: ``` Shape_Area >= 400 AND Shape_Area <= 430 ``` ### **14、AND 组合** 例如筛选【DLMC】值中包含字符【水】,并且【Shape_Area】值大于 1000 的图斑: ``` DLMC LIKE '% 水 %' And Shape_Area > 1000 ```  针对这种存在多个逻辑语句时,建议把单个逻辑用括号包起来,方便阅读和理解: ``` (DLMC LIKE '% 水 %') And (Shape_Area > 1000) ``` ### **15、OR 组合** 例如筛选【DLMC】值中包含字符【水】,或者【Shape_Area】值大于 1000 的图斑: ``` (DLMC LIKE '% 水 %') OR (Shape_Area > 1000) ``` OR 的前后两个逻辑语句,只要满足其中一个,就会被筛选出来。  ### **16、更复杂的混合逻辑** 例如筛选【DLMC】为【水田】,或【DLMC】为【旱地】且【GDDB】大等于 11 的图斑: ``` DLMC = '水田' Or (DLMC = '旱地' And GDDB > 11) ``` ###  ### **17、多个字段间的比对筛选** 例如筛选【JQDLMC】和【GHDLMC】值不同的图斑: ``` JQDLMC <> GHDLMC ``` ###  ### **18、多个字段间的数学计算** 例如筛选出【建筑面积】除以【用地面积】的值(即容积率)大于 2 的图斑: ``` 建筑面积 / 用地面积 > 2 ```  ### **19、获取数字大于平均值的图斑** 需要注意这种【SELECT * FROM * 】的用法只有 gdb 数据才有效,shp 要素不行。 例如筛选【Shape_Area】大于平均数的图斑: 查询【Shape_Area】的平均数为 14317.8  筛选语句如下: ``` Shape_Area > (SELECT AVG(Shape_Area) FROM 现状用地) ``` 筛选结果,都大于 14317.8,没有问题: <iframe src="https://wxa.wxs.qq.com/tmpl/kx/base_tmpl.html" class="iframe_ad_container iframe_adv_ad_container"></iframe>
睡觉的骆驼
2024年8月15日 20:35
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码