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,没有问题:

 

### 回答1: GIS图层是地理信息系统中的一种数据表示形式,可以用来显示和分析地理空间数据。一个图斑是GIS图层中的一个特定地理要素,例如一个建筑物、一块耕地或者一条道路。 当GIS图层只显示一个图斑时,可能有以下几种原因。首先,可能是因为该图斑被选择或筛选出来,而其他图斑被隐藏或过滤掉了。这种选择或筛选操作可以基于图斑的属性、空间位置或其他条件来进行。 其次,也有可能是因为图层中只包含一个图斑。这种情况通常发生在仅包含一个地理要素的图层,比如表示一个行政区划的图层或者一条河流的图层。这种简单的图层只显示一个图斑是合理的,并且通常用于展示单一的地理空间要素。 此外,还有可能是由于图层的样式或渲染设置导致只显示一个图斑。GIS软件通常提供了丰富的样式和渲染选项,可以根据用户的需求来控制如何显示地理要素。如果用户在图层样式设置中指定只显示一个图斑,那么地图上只会显示该指定的图斑。 综上所述,当GIS图层只显示一个图斑时,可能是因为选择、筛选、图层内容或样式设置等因素导致的结果。这种情况下,该图斑通常呈现出突出显示的效果,以便用户更好地注意和分析该特定地理要素的相关信息。 ### 回答2: GIS图层是地理信息系统中的一个重要概念,用于存储和展示地理数据。一个图斑是GIS图层中的一片区域,可以是一个建筑物、一片森林、一个湖泊等地理实体。 当GIS图层只显示一个图斑时,意味着在该图层的地图中只能看到该特定图斑的信息和属性,而其他图斑将被隐藏或不可见。这可以通过以下几种方式实现: 首先,可以利用空间查询和过滤功能,根据特定的属性条件来筛选出指定的图斑。例如,可以设置一个属性查询条件,只显示属性字中符合要求的图斑,其他图斑将被过滤掉。 其次,可以使用地图缩放功能。通过放大地图视图,只保留特定图斑的细节,隐藏其他图斑。这样,只有特定图斑在视野范围内可见,其他图斑则会在地图范围之外缩小或隐藏。 另外,可以利用图层叠加功能。将多个图层叠加在一起,然后通过设置图层的透明度或可见性,只显示感兴趣的图斑。这样,其他图层中的图斑将被隐藏或不可见,只有指定图斑可见。 总之,当GIS图层只显示一个图斑时,可以通过空间查询、地图缩放和图层叠加等方法实现。这样可以聚焦于特定图斑的细节,帮助用户更好地理解和分析地理信息。 ### 回答3: GIS图层是指地理信息系统中的一种数据展示方式,它可以将不同类型的空间数据以图层的形式进行展示和分析。当一个GIS图层只显示一个图斑时,意味着该图层中只包含了一个不可分割的地物或地理要素。 这种情况可能是由以下几个原因导致的: 1. 数据缺失或未完整导入:当只有一个图斑显示在图层中时,可能是由于其他地物的数据缺失或者在数据导入过程中出现了错误,导致只有一个图斑被成功导入和显示。 2. 数据选择或过滤:在GIS软件中,可以对数据进行选择或过滤操作,只显示满足特定条件的地物。因此,只显示一个图斑可能是由于对数据进行了选择或过滤操作,只保留了符合特定条件的地物。 3. 数据绘制设置:GIS软件一般提供了数据绘制和渲染的设置选项,可以根据不同的需求对地物进行不同的展示效果。当只显示一个图斑时,可能是在数据绘制设置中将其他地物的显示效果设置为透明或隐藏,只保留了一个图斑的显示效果。 总之,当一个GIS图层只显示一个图斑时,可能是由于数据缺失、数据选择或过滤、数据绘制设置等原因导致的。通过检查数据导入、选择和过滤操作以及数据绘制设置,可以进一步确定并解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

规划GIS会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值