ArcGIS按属性选择

在ArcGIS图层中选择要素的方法之一是使用属性查询来选择要素,使用“按属性选择”工具来执行,通过编写一段 SQL 查询表达式来选择要素。

1.打开“按属性选择”对话框的两种方法

(1)菜单栏“选择”\按属性选择,如图1所示。
 图1 通过“选择”菜单打开“按属性选择”对话框
图1 通过“选择”菜单打开“按属性选择”对话框

(2)在“内容列表”窗格中图层上右键\打开属性表\表选项\按属性选择,如图2所示。
图2 在图层上打开“按属性选择”对话框
图2 在图层上打开“按属性选择”对话框

2.系统自动提供了SQL表达式的第一部分

在“按属性选择”对话框中,系统自动提供了SQL 表达式的第一部分:
SELECT * FROM <要素类> WHERE:
<要素类>为数据源文件的要素类名称,不是要素类的别名,也不是被修改后的图层文件名
称。
例如,通过“选择”菜单打开“按属性选择”对话框,在“图层”列表中列出了当前MXD文档中的图层文件(数据源文件的要素类别名或被修改后的图层文件名称),系统默认自动生成MXD文档中最上面图层或者上次选择图层的SQL表达式的第一部分,当选择某个图层之后,SQL 表达式的第一部分会自动更新,如图3、图4所示。图4中“永久基本农田”图层引用的是“地类图斑2020年”数据源,定义查询的永久基本农田。
图3 系统自动生成的SQL 表达式的第一部分
图3 系统自动生成的SQL 表达式的第一部分
图4 SQL 表达式随用户选择图层自动更新
图4 SQL 表达式随用户选择图层自动更新

3.编写SQL表达式的后半部分完成属性查询

我们只需要在系统自动提供的SQL表达式第一部分之后接着写 SQL 表达式的后半部分即可完成要素的属性查询。
ArcGIS SQL表达式后半部分的一般格式为:
<字段名> <运算符> <值或字符串>
对于组合查询,使用以下格式:
<字段名> <运算符> <值或字符串> <连接符> <字段名> <运算符> <值或字符串> …
也可以使用括号 () 来定义组合查询中的运算顺序。
在这里插入图片描述
运算符
可以使用算术运算符(+、-、、/)、比较运算符(=、<>、>、>=、<、<=)、操作符(like、is)、逻辑运算符(and、or、not)、成员运算符(in、not in)等、小括号()、null值、通配符(%、_、?、)、BETWEEN…AND…等参与运算。通配符与like操作符一起使用。
在这里插入图片描述
值或字符串
值不需要用单引号引用,单个字符串要用英文状态下的单引号引用起来。引用多个字符串时,字符串与字符串之间使用的英文状态下的逗号分隔。使用小括号时均为英文状态下的小括号。
在这里插入图片描述

4.ArcGIS SQL模糊查询

ArcGIS SQL中的模糊查询通常使用LIKE操作符来实现。LIKE操作符用于在指定字段中查找指定模式的匹配项。模式可以包含通配符。其一般格式为:
在这里插入图片描述

5.ArcGIS SQL空值(NULL)查询

可使用NULL关键字来选择指定字段为空值的要素和记录。NULL 关键字的前面始终使用 IS 或 IS NOT。

6.ArcGIS SQL反向查询

not <字段名> <运算符> <值或字符串> 或
<字段名> not <运算符> <值或字符串>

7.数值区间查询

可使用等于 (=)、不等于 (<>)、大于 (>)、小于 (<)、大于等于 (>=)、小于等于 (<=) 和 BETWEEN…AND… 运算符查询数字。
BETWEEN…AND… 表达式格式为:<字段名> BETWEEN 初值 AND 终值
包含初值和终值,初值要小于或等于终值。

8.计算

可使用算术运算符 +、-、* 和 / 在查询中加入计算,可以在字段和数字之间进行计算,也可以在字段之间进行计算。

9.ArcGIS SQL查询实例

例1 选择耕地
在集成“行政区”和国土空间规划“三区三线”成果的“地类图斑2020年_不打开”图层中,在“地类名称”字段中选择耕地。

方法1:输入表达式
将光标置于“按属性选择”对话框系统自动生成的SQL表达式第一部分之后,保持默认的方法“创建新选择内容” 不变,在列出的字段名称列表中双击“DLMC”字段,双击“=”,单击“获取唯一值”按钮,系统将一一列出“DLMC”字段中所有值,找到水田并双击它。接着再双击“Or®”、“DLMC”字段、“=”、“水浇地”、“Or®”、“DLMC”字段、“=”、“旱地”。
以上步骤会形成如下SQL表达式:DLMC = ‘水田’ OR DLMC = ‘水浇地’ OR DLMC = ‘旱地’
也可以直接输入这个表达式。
分别单击“验证”和“应用”按钮即可选择耕地(如图5)。
图5 选择耕地SQL表达式
图5 选择耕地SQL表达式

方法2:使用成员运算符in选择耕地

SQL表达式为:

DLMC in ('水田', '水浇地', '旱地')

这种方法简单、高效,适合于多选。

方法3:使用地类编码模糊查询耕地

水田、水浇地、旱地对应的地类编码分别为0101、0102、0103。因此,查询地类编码中为01开头的即可完成选择耕地的任务。SQL表达式为:

DLBM LIKE '01%'或DLBM LIKE '01__'

通配符“%”表示其位置可以是任意数量的任何字符或无字符。
通配符“”仅代表一个字符,本例中为2个“”。

例2 选择非耕地

SQL表达式为:

#方法1 通过地类编码查询
NOT DLBM LIKE '01%' 
#方法1 通过地类编码查询的第2种写法 
DLBM NOT LIKE '01%' 
#方法2 通过地类名称查询
NOT DLMC in ('水田', '水浇地', '旱地') 
#方法2 通过地类名称查询第2种写法
DLMC NOT in ('水田', '水浇地', '旱地')

例3 选择惠发街道耕地

SQL表达式为:

XZQMCXJ_GBH = '惠发街道' AND (DLMC = '水田' OR DLMC = '水浇地' OR DLMC = '旱地')
#注释:“XZQMCXJ_GBH”为行政区名称乡级_归并后。

例4 选择惠发街道面积大于1000平方米的耕地

SQL表达式为:

XZQMCXJ_GBH = '惠发街道' AND (DLMC in ('水田', '水浇地', '旱地')) AND TQMJ >1000
#注释:“TQMJ”为椭球面积。

例5 选择惠发街道面积大于等于1000平方米小于等于2000平方米的耕地

SQL表达式为:

#方法1
XZQMCXJ_GBH = '惠发街道' AND DLMC in ('水田', '水浇地', '旱地') AND (TQMJ >= 1000 AND TQMJ <= 2000) 
#方法2 使用BETWEEN...AND...运算符查询
XZQMCXJ_GBH = '惠发街道' AND DLMC in ('水田', '水浇地', '旱地') AND (TQMJ BETWEEN 1000 AND 2000)

例6 选择“XZQMCCJ_GBH”字段中的空值和非空无字符

SQL表达式为:

XZQMCCJ_GBH = '' OR XZQMCCJ_GBH IS NULL

例7 选择“XZQMCCJ_GBH”字段中的非空部分

SQL表达式为:

#写法1
NOT (XZQMCCJ_GBH = '' OR XZQMCCJ_GBH IS NULL)
#写法2
NOT XZQMCCJ_GBH = '' AND NOT XZQMCCJ_GBH IS NULL
#写法3
XZQMCCJ_GBH <> '' AND XZQMCCJ_GBH IS NOT NULL
  • 16
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值