目录

  • 1 项目一 地理信息系统概述
    • 1.1 任务一 地理信息系统概述
    • 1.2 任务二 地理信息系统的组成
    • 1.3 任务三 地理信息系统的功能
    • 1.4 任务四 地理信息系统数据源
    • 1.5 任务五 栅格数据结构
  • 2 项目二 ArcGIS软件概述
    • 2.1 任务一 ArcGIS的理念
    • 2.2 任务二 ArcGIS桌面版组成
    • 2.3 任务三 ArcGIS软件安装
  • 3 项目三 ArcMap和ArcCatalog基础
    • 3.1 任务一 ArcMap基础
    • 3.2 任务二 ArcCatalog基础
    • 3.3 任务三 属性连接和空间连接
  • 4 项目四 栅格地图的地理配准
    • 4.1 任务一 基于公里格网的栅格地理配准
    • 4.2 任务二 基于参考图层的栅格地理配准
  • 5 项目五 空间数据组织和管理
    • 5.1 任务一  shapefile文件的管理
    • 5.2 任务二 地理数据库
  • 6 项目六 编辑数据
    • 6.1 任务一 创建新图形
    • 6.2 任务二 编辑已有图形
    • 6.3 任务三 属性编辑和录入
  • 7 项目七 拓扑的创建及处理
    • 7.1 任务一 地图拓扑
    • 7.2 任务二 地理数据库拓扑
  • 8 项目八 空间校正
    • 8.1 任务一 变换数据
    • 8.2 任务二 边缘匹配
  • 9 项目九 空间数据处理
    • 9.1 任务一 转换数据
    • 9.2 任务二 数据镶嵌
    • 9.3 任务三 空间数据提取
    • 9.4 任务四 空间数据格式转换
    • 9.5 任务五 空间数据投影变换
  • 10 项目十 空间数据可视化
    • 10.1 项目一 图层符号化
    • 10.2 项目二 地图中的文字
    • 10.3 项目三 地图的页面版面和地图要素的设计设计
    • 10.4 项目四 地图输出
  • 11 项目十一 空间数据探查
    • 11.1 任务一 空间查询
    • 11.2 任务二 属性查询
任务二 属性查询
属性数据查询是通过处理属性数据而获取数据子集。所选中的数据子集能同时在表格中进行查验、在统计图中显示及链接到地图中高亮显示的要素。所选中的数据子集还可以被打印、保存,用于后期处理。

属性数据查询需要使用逻辑表达式,此时,属性数据必须能够被GIS或数据库管理系统所识别。尽管在概念上都一样,但是不同的系统有不同的表达式结构。例如,ArcGIS使用SQL(结构查询语言)做为查询表达式。
SQL 语法不适用于使用字段计算器计算字段。
在 ArcGIS 中,查询表达式用于选择要素和表记录的子集。ArcGIS 中的查询表达式符合标准的 SQL 表达式。例如,可以在使用按属性选择工具或查询构建器对话框时使用此语法来设置图层定义查询

(一)简单的SQL表达式

SELECT * FROM 构成了 SQL 表达式的第一部分,系统会自动提供该语句。

查询表达式使用跟随在 Select * From <图层或数据集> Where 子句之后这样的一般格式(例如,跟随在 SELECT * FROM <图层名称> WHERE 之后的 SQL 表达式部分)。

以下是 ArcGIS 查询表达式的一般格式:

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

对于组合查询,使用以下格式:

<字段名> <运算符> <值或字符串> <连接符> <字段名> <运算符> <值或字符串> ...

也可以使用括号 ( ) 来定义组合查询中的运算顺序。

由于将列作为一个整体进行选择的,因此不能将 SELECT 限制为仅返回相应表中的部分列,原因是 SELECT * 语法是通过硬编码实现的。因此,除非在使用子查询时,否则无法在 ArcGIS 的 SQL 查询中使用 DISTINCT、ORDER BY 和 GROUP BY 等关键字。

在从中构建查询表达式的多数 ArcGIS 对话框中,都会为提供图层或表的名称(或者从下拉列表中选择)。例如:

提供图层或表的名称

表达式的下一个部分是 WHERE 子句,这是您必须构建的部分。基本的 SQL WHERE 子句如下所示:

STATE_NAME = 'Alabama'

这样查找出STATE_NAME  的字段值是'Alabama' 的要素。

(二)SQL语法

所使用的 SQL 语法因数据源的不同而有所差异。每个DBMS(数据库管理系统)  都拥有各自的 SQL 方言。

要查询基于文件的数据(包括文件地理数据库、coverage、shapefile、INFO 表、dBASE 表、CAD 和 VPF 数据),需使用支持 SQL 功能的子集的 ArcGIS SQL 方言。要查询个人地理数据库,需使用 Microsoft Access 语法。要查询 ArcSDE 地理数据库,需使用基础 DBMS(即:Oracle、SQL Server、DB2、Informix 或 PostgreSQL)的 SQL 语法。

从中创建 SQL WHERE 子句的 ArcGIS 对话框会帮助您对所查询的数据库使用正确的语法。它们利用适当的分隔符列出正确的字段名称和值。而且还为您选择相关的 SQL 关键字和运算符。

(三)搜索字符串

1、字符串必须始终用单引号括起例如:STATE_NAME = 'California'
2、表达式中的字符串区分大小写,但在查询个人地理数据库中的要素类和表时除外。要在其他数据格式中进行不区分大小写的搜索,可使用 SQL 函数将所有值转换为相同的大小写形式。对于基于文件的数据源(如地理数据库或 shapefile),可使用 UPPER 或 LOWER 函数。例如,以下表达式将选择姓氏存储为 Jones 或 JONES 这两种形式的客户:UPPER(LAST_NAME) = 'JONES'
3、其他数据源也有类似的函数。例如,个人地理数据库中的 UCASE 和 LCASE 函数可执行同样的操作。可使用 LIKE 运算符(而不是 = 运算符)来构建部分字符串搜索。例如,以下表达式将从美国州名称中选择 Mississippi 和 Missouri:STATE_NAME LIKE 'Miss%'

4、% 表示其位置可以是任意数量的任何字符:一个字符、一百个字符或无字符。此外,如果希望在查询时通配符仅代表一个字符,则可使用“_”。

例如,以下表达式将找到 Catherine Smith 和 Katherine Smith:OWNER_NAME LIKE '_atherine smith'

5、上述通配符适用于任何基于文件的数据或 ArcSDE 地理数据库数据。在查询个人地理数据库时,使用通配符 * 来表示任意数量的字符,而使用 ? 来表示一个字符。

在按属性选择 和查询构建器 对话框中,通配符以按钮的形式显示。您可单击相应的按钮来将通配符输入到正在构建的表达式中。构建查询时,仅显示适用于所查询的图层或表的数据源的通配符。

如果在字符串中同时使用通配符和 = 运算符,则此字符将被视为字符串的一部分,而不会将其视为通配符。

还可使用大于 (>)、小于 (<)、大于等于 (>=)、小于等于 (<=) 以及 BETWEEN 运算符,来基于排序顺序选择字符串值。例如,以下表达式将选择 coverage 中名称首字母为 M 到 Z 的所有城市:CITY_NAME >= 'M'

6、查询字符串时,还可使用不等于 (<>) 运算符。

如果字符串包含单引号,首先需要使用另一单引号作为转义字符。例如:NAME = 'Alfie''s Trough'

(三)NULL关键字

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

例如,要查找尚未输入 1996 年人口的城市,可使用 POPULATION96 IS NULL,或者,要查找已输入 1996 年人口的城市,可使用 POPULATION96 IS NOT NULL。

(四)搜索数字

可使用等于 (=)、不等于 (<>)、大于 (>)、小于 (<)、大于等于 (>=)、小于等于 (<=) 和 BETWEEN 运算符查询数字。
例如:POPULATION96 >= 5000

无论区域设置如何定义,所列出的数值将始终使用点作为小数分隔符。在表达式中不能使用逗号作为小数分隔符或千位分隔符。

(五)计算

可使用算术运算符 +、-、* 和 / 在查询中加入计算:

可在字段和数字之间进行计算。

例如:AREA >= PERIMETER * 100

也可在字段之间进行计算。

例如,要查找人口密度小于等于每平方英里 25 人的所有国家,可使用以下表达式:POP1990 / AREA <= 25。

(六)运算符优先级

表达式求值顺序遵照标准的运算符优先级规则。

例如,求值时,首先计算括号内部的表达式部分,然后再计算其他部分。示例:HOUSEHOLDS > MALES * POP90_SQMI + AREA

与以下表达式的求值顺序不同

HOUSEHOLDS > MALES * (POP90_SQMI + AREA)

可单击添加括号,然后输入括号内部的表达式,也可高亮显示要放入括号内部的现有表达式,然后单击括号按钮 将其括起。

(七)组合表达式

通过使用 AND 和 OR 运算符将表达式组合在一起,可构建复杂表达式。

例如,以下表达式将选择面积超过 1,500 平方英尺的所有房屋和一个可容纳三台或更多汽车的车库。

AREA > 1500 AND GARAGE > 3

如果使用 OR 运算符,OR 运算符两侧的两个表达式中必须至少有一个为真时才会选择记录。

例如:

RAINFALL < 20 OR SLOPE > 35

在表达式开头使用 NOT 运算符可查找与指定表达式不匹配的要素或记录。

例如:

NOT STATE_NAME = 'Colorado'

NOT 表达式可与 AND 和 OR 组合。

例如,以下表达式将选择除 Maine 以外的所有新英格兰州。

SUB_REGION = 'New England' AND NOT STATE_NAME = 'Maine'

(八)子查询

子查询是嵌套在另一个查询中的查询,仅受地理数据库数据源支持。子查询可用于应用谓词或聚合函数,或将数据与存储在另一张表中的值进行比较。例如,以下查询只会选择未列在表 indep_countries 中的国家:

COUNTRY_NAME NOT IN (SELECT COUNTRY_NAME FROM indep_countries)

(九)查询日期

从中创建 SQL WHERE 子句的 ArcGIS 对话框会帮助您对所查询的数据库使用正确的数据语法。大多数情况下,只需单击字段、运算符和值,即可生成正确的语法。