第五章相互位置查询、空间连接1 相邻查询1.1 点状图层和线状图层的相邻选择查询打开地图文档\gis_ex09\ex05\ex05.mxd,激活data frame1,显示出二个图层:点状图层“村庄”、线状图层“公路”(见图5-1)。
双击data frame1,调出Data Frame Properties对话框,选General标签,将Map Units(地图单位)改成Kilometers(千米),显示单位(Display Units)也设为Kilometers(千米),按“确定”键退出。
选择菜单Selection / Select By Location…,调出位置选择对话框:图5-1 data frame1的显示I want to:Select features from 下拉选择,进行要素选择操作The following layers:√ 村庄勾选“村庄”,在该图层中选择要素That: are within a distance of 下拉选择,在一定距离内选择The features in this layer:公路下拉选择,用“公路”图层作为距离参照将上述操作合并起来意思是:I want to select features from the layer“村庄”that are within a distance of the layer“公路”,中文可解释成:从“村庄”里选要素,他们离开“公路”在一定距离之内。
为此还要定距离:√Apply a buffer to the features 公路勾选,要产生公路的邻近范围of:0.5 Kilometers键盘输入距离值,下拉选择距离单位(千米)图5-2 离开公路0.5千米范围内的村庄上述操作的意思是邻近公路的范围是0.5千米,按Apply键继续。
离开公路0.5公里范围内的村庄全部选出,这些点要素进入选择集,改变了显示颜色(见图5-2),按Close键,关闭选择条件对话框。
用鼠标右键点击图层“村庄”,选择Open Attribute Table,打开“Attribute of村庄”,可以看到37条记录中,18条记录进入了选择集,改变了颜色,即37个村庄中,有18个离开公路在0.5千米之内。
1.2 面状图层的相邻选择查询激活data frame2,显示出二个图层:面状图层“地块”、线状图层“供水管”。
双击data frame2,调出Data Frame Properties对话框,选择General标签,将Map Units(地图单位)改成Meters(米),将显示单位(Display Units)也设为Meters (米),按“确定”键退出。
选用菜单Selection / Select By Attributes…,出现Select By Attributes(条件组合查询)对话框:Layer:地块 下拉选择Method:Create a new selection 下拉选择利用用鼠标在文本框中输入查询条件“LANDUSE” Like ‘M’ (单双引号均是英文字符),如果选择了字段名LANDUSE后,Unique V alues: 提示框内没有提示内容,可点击下部按钮Get Unique V alues。
点击按钮Apply,符合条件的6个多边形(土地使用为工业)都选出,进入选择集,改变颜色,点击按钮Close,关闭条件组合查询对话框。
选用菜单Selection / Select By Location…,调出Select By Location对话框:I want to:Select features from 下拉选择,表示选择要素The following layers:√ 地块 仅勾选“地块”,在该图层中选择要素That:are within a distance of 下拉选择,在一定距离内选要素The features in this layer:地块 下拉选择,图层“地块”的要素为参照√Apply a buffer to the feature 地块 勾选,产生离开地块的邻近区of:100 Meters 键盘输入距离值,下拉选择距离单位(米)上述操作和前一节选择离开公路的村庄相似,区别是距离参照图层和选择要素的图层是同一个,点击Apply按钮,离开工业用地不超过100米的地块都进入选择集,按Close键关闭对话框。
在data frame2窗口中打开要素属性表“Attribute of 地块”,可以看出从39个地块中选出了25个,属性表窗口的底部,有Records (25 out of 39 Selected.)提示,他们离工业用地在100米之内(包括工业用地本身,见图5-3)。
图5-3 离开工业用地100米范围内的有关地块2 包含查询激活data frame3。
显示出两个图层:点状图层“学生”,面状图层“乡”(见图5-4)。
点击图层“乡”,选用菜单Selection / Select By Attributes…,出现SelectBy Attributes对话框:图5-4 data frame4显示Layer:乡 下拉选择Method:Create a new selection 下拉选择利用鼠标在文本框中输入: “NAME” Like ‘李村’(借助Unique V alues),点击按钮Apply,符合条件的多边形一个,改变颜色。
点击按钮Close,关闭条件组合查询对话框。
点击图层“学生”,选用菜单Selection / Select By Location,调出按位置选择要素的对话框:I want to:Select features from下拉选择,进行要素选择操作The following layers:√ 学生 勾选,在图层“学生”中选择要素That: are completely within 下拉选择,完全包含选择The features in this layer:乡下拉选择,图层“乡”作为包含的参照√ Use selected features(1 feature selected) 勾选,使用1个被选择的要素将上述操作合并起来意思是:I want to select features from the layer“学生”that are completely within“乡”,中文可解释为,从图层“学生”选择要素,他们被包含在图层“乡”里,图层“乡”有1个要素在选择集中。
按Apply键继续,可以看到,在点状图层“学生”中,有13个点要素进入了选择集,改变了颜色,即“李庄”范围内有13个学生(见图5-5),点击按钮Close,关闭位置选择对话框。
用鼠标右键点击图层名“学生”,打开“Attribute of 学生”,可以验证,在215条记录中有13条记录进入了选择集。
图5-5 在“李村”乡范围内的学生3 相交选择查询激活data frame2,显示出2个图层:线状图层“供水管”、面状图层“地块”。
如果上次操作时产生的“地块”多边形选择集未被清空,点击图层名“地块”,选用菜单Selection / Clear Selected Features,清空选择集。
选用菜单Selection / Set Selectable Layers…,将图层“地块”从可选图层中消除,仅将图层“供水管”设置为可选图层,Close关闭对话框。
用要素选择工具按钮(Select Features),配合Shift键,点击多段供水管,使他们进入选择集,表示这些供水管即将维修(注意:应选择一些与地块相交的水管)。
选用菜单Selection / Select By Location…,调出按位置选择要素的对话框:I want to:Select feature from 下拉选择,表示建立新的选择集The following layers:√ 地块 勾选“地块”,在该图层中选择要素That:intersect 下拉选择,表示相交选择The features in this layer:供水管 下拉选择,图层“供水管”的要素为参照 √Use selected features(6 feature selected):勾选,使用6个被选中的要素点击Apply按钮,凡是和即将维修的供水管相交的地块都改变了颜色,进入选择集。
打开“Attribute of地块”,可以看到和即将维修的供水管相交的那些地块进入了选择集。
4 相互位置选择查询小结图层之间的相互选择查询可以在不同类型要素的图层间进行:相邻(Are within distance of)点和点,点和线,点和面,线和线,线和面,面和面包含(Are completely Within)点和面,线和面,面和面相交(Intersect)线和线,线和面,面和面除本章介绍的图层之间选择查询还有更多的类型:Completely contain 也是包含选择,逻辑上和Are completely within相反Have their center in 有另一类要素的中心Share a line segment with 不同的要素共享一条边Touch the boundary of 与某个多边形的边界接触Are identical to 独立于某个要素Are crossed by the outline of:被某个要素穿越Contain 包含选择,并且可以有重叠的边Are contained by:与Are completely within类似,可以有重叠的边上述是大致的解释,可查看Help,获得进一步的解释。
图5-6 data frame4的显示5 空间连接读者曾练习了表和表之间的连接,这是关系型数据库的基本功能,ArcMap 可在二个图层的空间要素之间建立连接:空间连接(Spatial Join)。
本练习需要解决三个问题:(1)按直线距离最近给每个学生分配小学。
(2)按小学汇总该校分配到多少学生,计算学生上学的平均距离。
(3)小学能提供的座位数和分配到学生数进行比较。
5.1 按距离最近给每个学生分配学校激活data frame4,显示出三个图层:点状图层“学生”,点状图层“小学”,线状图层“公路”(公路仅用于显示,不参与分析,见图5-6)。
选择并打开图层“小学”的要素属性表,可看到11所小学的属性记录(表5-1):表5-1 图层“小学”的要素属性表shape SCHOOL_ID SCHOOL_NAM SEAT要素类型 小学编号 小学名称 可配座位数point 1 镇区小学 47point 2 第一小学 65point 3 中心小学 43point 4 前学小学 78point 5 附属小学 36point 6 练乡小学 57point 7 博才小学 48point 8 树人小学 96point 9 爱国小学 84point 10 光明小学 62point 11 础材小学 53鼠标右键点击data frame4的图层“学生”,在快捷菜单中选Join and Relates / Join…,弹出Join Data对话框:What do you want to join to this layer? Join data from another layer based on spatial location 下拉选择,基于空间位置的图层数据连接(不是一般的属性连接) 1.Choose the layer to join to this layer or load:小学下拉选择2.You are joining Points to Points: 属点和点的连接● Each point will be given all the attribute of the 点选下侧选项,按距离最近连接point in the layer being joined that is closest toit, and a distance field showing how close that …3.The result of the join will be saved into a new…:D:\gis_ex09\ex05\temp\Join_Output.shp 下拉选择路径,键盘输入文件名按OK键完成,系统自动将新产生的点状图层Join_Output加载到当前的Data Frame,要素的位置和图层“学生”一样。