ArcGIS筛选工具:19段SQL示例代码,所有需求一网打尽

本文主要是介绍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,没有问题:

 

这篇关于ArcGIS筛选工具:19段SQL示例代码,所有需求一网打尽的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/788260

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔