按属性选择 模糊_ArcGIS的属性查询

ArcGIS 中的属性查询表达式符合数据库的 SQL表达式语法及规范,这里主要是WHERE 子句的使用,但使用不同存储类型的数据源,SQL语法也不完全相同,如果是MDB格式地理数据库,SQL的使用语法就是Access的语法;如果数据存储是Oracle数据库,则就是Oracle的语法。在ArcGIS下常用SQL语法如表11-1所列。 

表11-1 SQL的常用语法

类型

字符串

空的判断

模糊查询

SHP

单引号

字符是=”,

数字是=0

_(下划线)表示1位,%表示多位

个人数据库(Mdb)

单双引号都可以

is Null

?表示1位,*表示多位

文件数据库(gdb)

单引号

is null

_表示1位,%表示多位

Oracle

单引号

is Null

_表示1位,%表示多位

Sql server

单引号

is Null

_表示1位,%表示多位

总结:字符串查询方法,一般用单引号;数字如整数,双精度,不加引号;字段名通常什么也不用加,不需要引号和中括号;对于特殊查询,如查询“北大”(北京大学),输入的查询值应该为:MDB格式数据'北*大*',其他格式'北%大%';字符串模糊查询使用“Like”关键字,同时加通配符,通配符除在mdb中是“*”外(如果使用C# ArcEngine开发,程序源代码中也使用“%”,而不是“*”),其他都是百分号“%”。精确查询使用“=”号。另外,SQL中不区分大小写,如null和NULL,是完全一样的,SHP文件不支持NULL。

查询中的“and” 是并且、逻辑“与”的含义,要同时满足两个查询条件,查询结果更少;而关键字“or”是或者、逻辑“或”的含义,查询结果一般比单条件查询结果更多。

数字不能直接模糊查询,处理思路是将该数字转换为字符串,转换语句如下(FID,OBJECTID是数字)表11-2所列。

表11-2数字模糊查询

类型

模糊查询

SHP

cast(FID  as character) like '%1%'

gdb

cast(OBJECTID  AS  varchar(20))  like   '%1%'

mdb

str( OBJECTID )  like '*1*'

oracle

OBJECTID  like ‘%1%’

Sql server

str(OBJECTID)  like ‘%1%’

如果要查询个人地理数据库数据,可以将字段名称用方括号括起:如[AREA],对于文件地理数据库数据和SHP,您可以将字段名称用双引号括起,"AREA",但是通常不需要。如直接AREA,所以字段名通常什么也不加。

查询时,数字可以使用“大于,小于或等于”运算符,对于字符型也可以使用“大于,小于或等于”运算符,字符型结果按ABC字母顺序从小到大排序,数字在字母之前。如果含有a,b,A,B大小写字母,按aAbB顺序从小到大排序。汉字也可以进行大小比较,ArcGIS下是按汉字的拼音顺序,对于多音字,情况有点复杂,如汉字“长”可能的拼音是“chang”,也可能是“zhang”,默认排序是按“chang”使用,重发音可以“zhong,chong”,此时排序按“zhong”,因为“zhong”是最常用的。

对于特殊字符的查询,在GDB、 SHP、Oracle、SQL Server下查询含下划线“_”和“%”等特殊字符的查询(XMMC是字段名),查询方法如下:

XMMCLIKE '%\_%' escape '\' ---查询含下划线_的

XMMC LIKE'%\%%' escape '\' ---查询含百分号%的

Acessmdb中*和?的查询
XMMC LIKE '*[*]*'
---查询含*的

XMMC LIKE '*[?]*'---查询含?的

属性查询的四种方法

  1. 1.  主菜单下“选择”菜单→“按属性选择”,该选择功能只能是针对要素图层,且查询的图层必须加载到ArcMap地图窗口,查询后ArcMap地图窗口自动选择查询结果要素对象,该属性查询操作界面如图11-1所示。

  2. 2.  工具箱中“按属性选择图层(SelectLayerByAttribute)”工具。使用该工具时输入数据可以是要素图层或表,但必须加到ArcMap的地图窗口,查询后自动选择满足查询条件的要素对象;

  3. 3.  工具箱中“筛选(Select)”工具。该工具的输入必须是是要素类或要素图层,查询输出结果是要素;

  4. 4.       使用工具箱中“表筛选(Table Select)”工具,该工具的输入可以是要素类或表,但该工具的查询输出结果只能是表;                     

9b805954a2ab63534f5db9e3e20156b3.png

图11-1 属性查询界面

图11-1中,上面的图层列表中选择查询图层,在字段列表框中双击字段,字段名进入SQL查询输入框,单击“获得唯一值”按钮可获得选中字段的唯一值(字段值相同的只返回一个)。当查询出现SQL语法错误,一个重要的方法:编辑框中的脚本拷贝到记事本中,仔细查看、分析,主要:字符是否加引号、引号是否半角、引号是否单引号、数字不加引号等等。

例1获得等高线计曲线

数据:“\chp11\dgx.SHP”,其中的高程字段是“BSGC”,且该等高线的等高距是20米,是100的倍数就是计曲线,如图11-2所示。

7a8cef95c477bbfa35a669f3efc8c3c6.png

图11-2 获得等高线计曲线查询

不同的数据源,SQL语句不太一样,如果SHP文件格式或者是GDB格式(个人地理数据库格式),查询的语句是:“round(BSGC/100,0)*100=BSGC”, “round”是四舍五入取位函数,其中的0是取整数;如果数据是MDB格式,则查询的语句是:“int(BSGC/100)*100= BSGC”,“int”取整函数。

类似的查询操作,在SHP文件格式中,查询“FID”字段是为偶数的要素对象,可使用“round(FID/2,0)*2= FID”这个查询语句来实现。

例2获得等高线长度大于平均值

测试数据:“chp11\复合查询.mdb\dgx”,查询等高线长度大于平均值的要素记录,具体的输入查询语句内容及界面如图11-3所示。

99d4bb1a834ac1df6e1986f391b121a2.png

图11-3获得等高线长度大于平均值的复合查询

注意:图11-3查询条件中字段外带的中括号“[]”可以去掉。上述输入的查询语句该改成:“Shape_Length>(select avg( Shape_Length) from dgx) ”,这里“avg”是计算平均值的函数,查询的数据可以是mdb和gdb格式数据,但不能是SHP文件,SHP不支持复杂查询及多个表之间嵌套。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值