
ArcGIS按属性选择
在ArcGIS图层中选择要素的方法之一是使用属性查询来选择要素,使用“按属性选择”工具来执行,通过编写一段 SQL 查询表达式来选择要素。
1.打开“按属性选择”对话框的两种方法
(1)菜单栏“选择”\按属性选择,如图1所示。
图1 通过“选择”菜单打开“按属性选择”对话框
(2)在“内容列表”窗格中图层上右键\打开属性表\表选项\按属性选择,如图2所示。
图2 在图层上打开“按属性选择”对话框
2.系统自动提供了SQL表达式的第一部分
在“按属性选择”对话框中,系统自动提供了SQL 表达式的第一部分:
SELECT * FROM <要素类> WHERE:
<要素类>为数据源文件的要素类名称,不是要素类的别名,也不是被修改后的图层文件名
称。
例如,通过“选择”菜单打开“按属性选择”对话框,在“图层”列表中列出了当前MXD文档中的图层文件(数据源文件的要素类别名或被修改后的图层文件名称),系统默认自动生成MXD文档中最上面图层或者上次选择图层的SQL表达式的第一部分,当选择某个图层之后,SQL 表达式的第一部分会自动更新,如图3、图4所示。图4中“永久基本农田”图层引用的是“地类图斑2020年”数据源,定义查询的永久基本农田。
图3 系统自动生成的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表达式
方法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
更多推荐
所有评论(0)