一 矢量数据的关联、连接、汇总、查询与展示
矢量数据是构建地理数据库的核心。GIS中常用数据表来构建关系型的地理数据库,其中不同表格之间的数据通过关键字段的关联建立联系,而借助于图形与属性之间的关联,则可以实现对地理空间数据的汇总与查询。地理数据库的构建及其查询、汇总在考古学和文化遗产管理实践中有广泛的应用,本章练习使用的数据来源于希腊Kythera岛田野考古调查项目,相关介绍可参考网站www.ucl.ac.uk/kip。
1.空间数据的关联
(1)首先,使用Office软件打开本章练习文件夹下的Excel文件kip_obs.xls。观察发现这个表记录了Kythera岛上每个考古遗址调查采集的黑曜石遗物的情况。表格按照遗物来记录,每条记录包括了该黑曜石所在的遗址(site_id)、类型(category)和测量数据包括的长度(length)、宽度(width)和厚度(thickness)。表格中共有800条数据,即记录了800件调查采集的黑曜石的情况。
(2)将该文件kip_obs.xls保存为DBF格式的文件KIP_OBS.DBF。
注意:Office 2007以上版本使用Excel软件无法直接保存dbf格式文件,需要借助于Access实现;如果保存为csv格式的文件,在ArcMap中则无法正确加载数值与文本混合的字段,如本练习中的site_id字段将统一转换成数值型字段,从而导致文本内容的丢失。
(3)打开ArcMap,添加kip_cont.shp、kip_sites.shp和KIP_OBS.DBF三个数据文件。其中KIP_OBS作为数据表加入到了Source中,但并没有显示。(图6-1)
图6-1 添加田野考古调查图层和数据文件
(4)在导航栏中,分别选择kip_sites和KIP_OBS图层,右键点击“打开属性表”发现这两个数据表格之间是“一对多”的关系:一个遗址采集有多件黑曜石,而每件黑曜石只能属于一个遗址。这两个图层之间的关键字段分别是“SITE_NO”和“SITE_ID”。下面我们就利用这两个字段建立表格之间的关联。
(5)在导航栏中,右键点击kip_sites图层,选择“连接和关联”→“关联”,打开“关联”对话框。在“选择该图层中关联将基于的字段”为SITE_N0;“选择要关联到此图层的表或图层,或者从磁盘加载”为KIP_OBS;“选择关联或图层中要作为关联基础的字段”为SITE_ID;“为关联选择一个名称”为关联1。点“确定”后,完成两个图层之间的关联。(图6-2)
图6-2 建立关联对话框
(6)建立了关联的两个图层表面上看不出任何变化。但用鼠标点击工具栏中的识别按钮,并在地图显示栏中点击其中的某个遗址,即可查询该遗址点的属性信息和关联信息。如图6-3所示,093号遗址点采集到的所有黑曜石信息都关联到了该点上。
图6-3 查询关联属性对话框
2.数据的汇总
在地理数据库中,通过“一对多”的关系实现空间数据的查询和分类展示比较困难,通常情况下需要将“一对多”的关系转换成“一对一”的关系。“一对多”到“一对一”的转换需要对数据进行汇总。
(1)在导航栏中,右键点击KIP_OBS图层,选择“打开属性表”。在属性表中我们看到,SITE_ID字段有若干重复记录,这是因为每个遗址会出土多件黑曜石遗物。那么我们就可以根据SITE_ID字段进行汇总,生成新的表格,计算每个遗址出土黑曜石的总体状况。
(2)右键点击SITE_ID字段头,在下拉菜单中选择“汇总”,打开汇总对话框。在“选择一个或多个要包括在输出表中的汇总统计信息”下,展开“LENGTH”字段,选中“平均”;指定输出表为obs_cont(注意:保存为dBASE格式)。(图6-4)
图6-4 汇总属性对话框
点击“确定”后将汇总后的表格加载至导航栏,并用右键点击,选择“打开属性表”将其打开,如图6-5所示:SITE_ID字段变成了唯一字段,即每个遗址一条记录;Count_SITE_ID字段记录的是从原表格KIP_OBS中汇总了多少个SITE_ID相同的字段,即每个遗址采集了多少件黑曜石;Average_LENGTH字段记录的是所有SITE_ID相同的记录的LENGTH值的平均值,即每个遗址所有采集的黑曜石的平均长度。
图6-5 汇总后表格
3.数据的连接与分类展示
上述汇总后的表格obs_cont是按遗址记录的采集遗物的情况,那么与矢量图层kip_sites之间就是“一对一”的关系,因此下面我们采用“连接”的方法将这两个表格(obs_cont表和kip_sites的属性表)连接起来,并根据汇总的遗物的属性对遗址点进行分类展示。
(1)导航栏中右键点击kip_sites图层,在下拉菜单中点击“连接和关联”→“连接”,打开“连接数据”对话框,在“选择该图层中连接将基于的字段”为SITE_NO;在“选择要连接到此图层的表,或者从磁盘加载表”中选择obs_cont;“选择此表中要作为连接基础的字段”为SITE_ID。点“确定”后完成数据连接。(图6-6)
图6-6 连接数据对话框
(2)打开kip_sites图层的属性表,可以看到obs_cont表已经根据关键字段连接进来,下面可依据其属性值进行分类展示。
(3)导航栏中,右键点击kip_sites图层,打开“属性”对话框。在“符号系统”选项卡下,选择“显示”方式为“数量”→“分级符号”;选择分级显示的“字段值”为Count_SITE_ID;符号大小为4-18;颜色为红色。(图6-7)
图6-7 调整符号显示系统
点击“确定”后,显示按符号分级显示的遗址大小,如图6-8所示:符号的大小代表了该遗址采集到的黑曜石的数量的多少。
图6-8 按出土黑曜石数量的分级展示
(4)下面请按照各遗址采集到的黑曜石的平均长度分类展示。结果如图6-9所示:
图6-9 按出土黑曜石平均长度的分级展示
4.基于属性信息和空间信息的查询
假设我们有这样一个研究的需要:选择青铜时代早期第Ⅱ段(公元前2700—前2200)发现黑曜石数在5个以上,且距离海岸线1公里范围内的遗址。我们可以按照以下的步骤完成这个选择过程。
(1)首先在ArcMap的菜单中点“选择”下的“按属性选择”,打开属性选择对话框。选择“图层”为kip_cont;字段“LAYER”的属性值为0的空间数据,即选海拔高度为0的海岸线。(图6-10)
图6-10 按海拔高度属性选择海岸线
点“确定”后将海拔高度为0的等高线选择出来,如图6-11所示。
(2)关闭属性选择对话框,然后重新打开它。这次,选择的对象是kip_sites文件。这里我们要同时选择年代信息和黑曜石计数的信息。因为年代为青铜时代早期第Ⅱ段的信息记录在EBII1字段中,其中属性值为2和3的记录表示存在这一时期的遗存,符合条件。黑曜石计数的信息记录在Count_SITE_ID字段中,其中大于5的值符合条件。所以,满足需求的SQL语句如图6-12。注意其中OR和AND的使用。
图6-11 选择海拔高度为0的海岸线
图6-12 按照年代和属性信息的综合选择
点“确定”后将所有属于青铜时代早期第Ⅱ段,发现黑曜石数量大于5的遗址选择出来,如图6-13所示。
(3)下面再进行空间位置的选择。这次从“选择”菜单中点击“按位置选择”,打开空间位置查询对话框。注意:我们是要从上述已经选择出来的信息中继续选择,即“选择方法”为“从当前在以下图层中选择的要素中选择”;被选择的“目标图层”是kip_sites;“源图层”为kip_cont(我们上面已经选择了该图层中海拔高度为0的海岸线,因此下面的处理均只针对该海岸线进行,而不是所有的等高线);“空间选择方法”是“目标图层要素在源图层要素的某一距离范围内”;“应用搜索距离”设置为1000,即距离海岸线1公里的范围。(图6-14)
图6-13 青铜时代早期第Ⅱ段发现黑曜石数量大于5的遗址
图6-14 按位置选择对话框
点击“确定”后完成最终的选择,即选择所有“距离海岸线1公里范围内属于青铜时代早期第Ⅱ阶段且采集到的黑曜石数大于5的遗址”。(图6-15)
图6-15 按照属性信息和空间信息综合选择的遗址
下面还可以点击导航栏中的kip_sites图层,选择“数据”→“导出数据”,将最终选择的遗址点图层导出为新的图层。