GIS-空间分析(2)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lling0309/article/details/102565187

一、距离量测

距离量测是指要素之间直线距离的量测。量测可在一个图层中的点到另一图层的点之间 进行,或在一个图层的各个点到另一图层中的最邻近点或线之间进行。

距离量测可以直接用于数据分析。例如,Chang 等(1995)利用距离量测来测试鹿的重 新定居点是否更接近原始林与皆伐区的边缘,而不是在鹿的重新定居区内随机分布。Fortney 等(2000)应用家庭位置和医疗提供者之间的距离量测,评价健康服务的地理可达性。

定位准确度则是要求距离量测的另一个话题。首先,准备两组点,一组点用于测试(测 试点),另一组是具有更高准确度的其他相同点(参照点)。其次,链接测试点和参照点来 量测距离。比如 Zandbergen Barbeau2011)用该方法并辅以从高敏感度 GPS 功能的手 机上获得的 GPS 数据,对 TIGER2000 中用高分辨率彩色正摄影像上的参考点比较了采样道 路的相交点和 T 型路口。基于距离量测得出以下结论,TIGER 2009 TIGER 2000 的路网 更准确

任务 1点距离量算

点距离(point distance)工具是指在某一指定搜索半径范围内,确定输入点要素与临近点要素中所有点之间的距离。如图 1-1 所示

                      

1) 实验数据:/chp1/距离量测/data

2) 实验步骤:

①在 ArcToolbox 中双击【分析工具】-【邻域分析】-【点距离】,打开【点距离】对话框,如图 1-2 所示,其参数说明见表 1-1 所示。                           

                                                                                表 1-1 【点距离】对话框参数说明

②输入【输入要素】、【邻近要素】数据,指定输出表的保存路径和名称。

【搜索半径】为可选项。在其文本框中,输入查询半径的值,并确定单位。

④单击【确定】按钮,完成点距离分析操作如图 1-3 所示。

                     

实验说明

点距离的输出结果是一个表格,表格包含三个字段,如图 1-1 所示。在计算输入要素与 所有邻近要素的距离时,如果没有确定搜索半径,则系统会默认一个搜索半径,此时点距离 工具将创建两组点之间的距离矩阵,输出的表可能会非常大,例如,如果输入要素和邻近要 素各包含 1000 个点,则输出表会包含一百万条记录。使用有意义的搜索半径来限制输出的 大小和提高工具的性能。输出表仅包含具有搜索半径内邻近点的这些记录。结果将记录在输出表中,其中包含以下信息:

INPUT_FID:输入要素的要素 ID

NEAR_FID:邻近要素的要素 ID

DISTANCE:输入要素与邻近要素之间的距离。此字段的值采用输入要素坐标系的 线性单位。

输入要素和邻近要素可以是同一数据集。在此情况下,如果输入要素和邻近要素是相同 的记录,将忽略这一结果,这样就不会报告与一个要素的距离是 0 个单位的要素本身。

任务2:编程实现点距离量算

开发环境

VS2015+ArcGIS Engine+C#

步骤

1.新建winform应用程序

2.添加axMapControl控件到当前窗口

3.添加菜单

4.编写菜单的点击事件

5.核心代码

            IFeatureLayer pfealayer = axMapControl1.get_Layer(0) as IFeatureLayer;
            IFeatureLayer pfealayer1 = axMapControl1.get_Layer(1) as IFeatureLayer;
            Geoprocessor gp = new Geoprocessor();
            gp.OverwriteOutput = true;
            ESRI.ArcGIS.AnalysisTools.PointDistance ptdis = new ESRI.ArcGIS.AnalysisTools.PointDistance();
            ptdis.in_features = pfealayer;
            ptdis.near_features = pfealayer1;
            ptdis.out_table = @"D:\课程\ArcGIS应用及开发技术\校园地理信息系统-集成结果\result";
            gp.Execute(ptdis, null);

6.程序运行完成,依然能实现上面的功能

二、要素操作

许多 GIS 软件包提供了在一个或者更多图层操作和管理要素的工具。当一种工具涉及两个地图图层时,图层必须基于相同的坐标系统。这些要素工具经常用于数据预处理和数据分析;然而,这些工具不会把输入图层的空间数据和属性数据组合到一个图层。在不同的GIS 软件中,尽管这些工具的名称不尽相同,但要素操作容易按图形执行。

1.融合

融合(Dissolve)就是把由相同属性数值的要素聚合起来,如图 1-4 所示。例如,我们可以按公路编号或州县把道路聚合到一起。融合(Dissolve)的一个重要应用是简化已分类的多边形图层。融合(Dissolve)可以消除不必要的边界,把具有相同属性值的相邻或不相
邻的多边形进行合并,并生成一幅以分类结果为属性值的新的较简单图层。例如,为了消除县图层的边界,可选择州名作为消除边界的属性,把县域人口作为聚合的属性,输出图层为有表示该州人口属性的州域图层。

                          

任务1:融合

基于一个或多个指定的属性聚合要素。例如,可以选取一个包含按县收集的销售数据的要素类,然后使用融合基于各县销售人员的名字创建一个包含毗连销售区的要素类。融合可通过移除同一销售人员所负责的各县之间的边界来创建销售区。指定融合字段具有相同值组
合的要素将聚合(融合)为单个要素。融合字段会被写入输出要素类。
1) 实验数据:/chp1/要素操作/融合/data
2) 实验步骤:
①在 ArcToolbox 中双击【数据管理工具】-【制图综合】-【融合】,打开【融合】对话框,如图 1-5 所示,其参数说明见表 1-2 所示。
②分别在【输入要素】、【输出要素类】栏中输入要融合的要素类和输出要素类的路径以及输出要素类名称。
③在【融合字段】列表框中选择分类基于的字段,选中字段“地区”前的复选框。

④单击【统计字段】下拉框,选择“Shape_Area”,然后单击【统计类型】下拉框,选
择“SUM”。
⑤默认选中【创建多部件】复选框。
⑥【取消线分割】复选框用于移除只有两条线共有的端点并将两条线合并为一条连续线。
共享公共端点的线不超过两条时,该公共端点为伪结点。
⑦单击【确定】按钮,运行工具,运行效果如图 1-6 和 1-7 所示。得到根据字段地区划
分的区域数据,同时对“Shape_Area”字段进行了统计,因而在新的要素类属性表中会
含有各地区的面积值。

                                                        

实验说明:
1)取消线分割参数(具有 DISSOLVE_LINES 和 UNSPLIT_LINES 两个选项)仅适用于线输入。如果指定了默认 DISSOLVE_LINES 选项,则线会被融合为单个要素。如果指定了UNSPLIT_LINES,则只将具有公共端点(称为伪结点)的两条线合并为一条连续线;
2)如果输入要素几何类型为点或多点,且创建多部件要素处于选中状态则输出将为多点要素类。否则,如果未选中创建多部件要素,则输出将为点要素类;
3)可使用各种统计对已通过融合而聚合的要素的属性进行汇总或描述。以“统计类型 + 下划线 + 输入字段名”为命名标准,将用来汇总属性的统计以单个字段的形式添加到输出要素类中。例如,如果对名为 POP 的字段使用 SUM 统计,则输出中将存在名为 SUM_POP的字段;

4)融合可在输出要素类中创建超大型要素。当融合字段中存在少量唯一值时或将所有要素融合为单个要素时尤其适用。超大型要素可能会引起处理或显示故障或降低在地图上进行绘制或编辑时的性能。如果融合输出在一台计算机上以最大尺寸创建要素,然后将此输出移动到一个可用内存较少的计算机上,也会出现问题。要避免这些潜在问题,可使用创建多部分(multipart)要素参数的 SINGLE_PART 选项将可能较大的多部分要素分割为多个较小要素。对于“融合”工具创建的超大型要素,可以使用切分工具来切割较大的要素,以解决处理、显示或性能上的问题;
5)空值将被排除在所有统计计算之外

                                                                         表 1-2 【融合】对话框参数说明

                                      

任务2:参照点距离量算的代码编程实现融合

步骤略

2.裁剪

裁剪(Clip)是将输入要素与裁剪要素重叠的部分提取出来,并形成一个新的数据文件的过程,如图 1-8 所示。裁剪是一个很有用的工具,如用于裁剪出与研究区域相应的新地图。输入图层可以是点、线或多边形图层,而裁剪图层也可以是点、线或多边形图层。输出图层
与输入图层的要素类型相同。

                             

任务1:裁剪

提取与裁剪要素相重叠的输入要素。此工具用于以其他要素类中的一个或多个要素作为模具来剪切掉要素类的一部分。在您想要创建一个包含另一较大要素类的地理要素子集的新要素类(也称为研究区域或感兴趣区域 (AOI))时,裁剪工具尤为有用。
1) 实验数据:/chp1/要素操作/裁剪/data
2) 实验步骤:
①在 ArcToolbox 中双击【分析工具】-【提取】-【裁剪】,打开【裁剪】对话框,如图
1-9 所示,其参数说明见表 1-3 所示

                                 

②在【裁剪】对话框中,输入【输入要素】、【裁剪要素数据】,指定输出要素类的保存路径和名称。
③在【XY 容差】文本框中输入容差值,单击【XY 容差】右边的下拉框,选择容差值的单位。
④单击【确定】按钮,完成要素裁剪操作,裁剪结果如图 1-10 所示。

实验说明: 
裁剪要素可以是点、线和面,具体取决于输入要素的类型。当输入要素为面时,裁剪要素也必须为面,如图 1-8 所示。当输入要素为线时,裁剪要素可以为线或面。用线要素裁剪线要素时,仅将重合的线或线段写入到输出要素中,如图 1-11 所示。当输入要素为点时,
裁剪要素可以为点、线或面。用点要素裁剪点要素时,仅将重合的点写入到输出中,如图1-12 所示。用线要素裁剪点要素时,仅将与线要素重合的点写入到输出要素中。输出要素类将包含输入要素的所有属性

3.分割

分割(Split)就是把输入图层分成两个或两个以上的图层,如图 1-13 所示。一个表示区域亚单元的分割图层被用作输入图层的分割模板。例如,国家林业局可用按地区将林业分布图层割开,使每个地区办公室都有自己的图层。

                                           

任务1:分割

分割就是按照分割区域将输入要素类分割成多个输出要素类。
1)实验数据:/chp1/要素操作/分割/data
2)实验步骤:
①在 ArcToolBox 中双击【分析工具】-【提取】-【分割】,打开【分割】对话框,如图 1-14 所示,其参数说明见表 1-4 所示。

                                

②在【分割】对话框中,输入【输入要素】、【分割要素】数据,在【分割字段】下拉框中选择对应的分割要素的字段名称,输入【目标工作空间】对应的工作空间。
③在【XY 容差】文本框中输入容差值,单击【XY 容差】右边的下拉框,选择容差值的单位。
④单击【确定】按钮,完成要素分割操作,分割结果如图 1-15 所示

实验说明:
1)分割要素数据集必须是面;
2)分割字段数据类型必须是字符型。其唯一值生成输出要素类的名称;分割字段的唯一值必须以有效字符开头。如果目标工作空间是文件地理数据库、个人地理数据库或ArcSDE地理数据库,则字段值必须以字母开头。像“300 degrees”这样以数字开头的字段值将导致错误。例外:Shapefile 名称可以使用数字开头;输出要素类的总数等于唯一分割字段值的数量,其范围为输入要素与分割要素的叠加部分;
3)每个输出要素类的要素属性表所包含的字段与输入要素属性表中的字段相同

                                                                                   表 1-4 【分割】参数说明

                             

任务2:编程实现分割

4.筛选

筛选(Select)就是生成一个含有用户定义的查询表达式的要素的新图层,如图 1-16 所示。例如,在一个样方图层中,以“林木”为选择表达式,生成一个显示林木的图层。

 任务1

筛选(Select)是从输入要素类中提取满足指定条件的要素,并将其存储为输出要素类中的过程。通常使用 SQL 表达式表示提取条件。
1)实验数据:/chp1/要素操作/筛选/data
2)实验步骤:
①在 ArcToolbox 中双击【分析工具】-【提取】-【筛选】,打开【筛选】对话框,如图1-17 所示,其参数说明见表 1-5 所示。
②在【筛选】对话框中,输入【输入要素】数据,指定输出要素类的保存路径和名称。
③在【表达式】文本框中,可直接输入表达式,也可以通过单击 按钮在弹出的【查询构建器】对话框中构建,如图 1-18 所示。在【查询构建器】对话框中,设置筛选要素的 SQL语句,单击【确定】按钮,返回【筛选】对话框。若表达式为空,表示不指定筛选条件,即
将全部输入要素保存到输出要素类中。
④点击【确定】按钮,完成要素筛选操作,筛选结果如图 1-19 所示

                                                  

                                                     

               

实验说明:
选择表达式或 SQL 表达式可使用查询构建器构建,也可直接输入;如果以图层作为输入要素并且未输入任何表达式,则仅将所选要素写入到输出要素类;如果以图层作为输入要素并且输入了表达式,则仅对所选要素执行表达式,并将所选集合中基于表达式的子集写入到输出要素类。

任务2:编程实现筛选

5.追加

追加(Append)把两个或多个图层数据拼接到一起,生成一个新图层,具有相同的要素和属性,如图 1-20 所示。例如,追加可把四幅输入图层拼到一起,而每幅都对应于 USGS的 7.5 分标准地形图幅。生成的输出地图可作为一个图层来进行数据查询或显示

任务1:追加

                                    

将多个输入数据集追加到现有目标数据集。输入数据集可以是点、线、面要素类、表、栅格、栅格目录、注记要素类或尺寸要素类。
1)实验数据:/chp1/要素操作/追加/data
2)实验步骤:
①在 ArcToolbox 中双击【数据管理工具】-【常规】-【追加】,打开【追加】对话框,如图 1-21 所示,其参数说明见表 1-6 所示。

                                                         

②在【追加】对话框中,输入【输入数据集】,输入两个或多个图层要素类。
③在【目标数据集】中,设置输出要素类的路径和名称。
④在【方案类型】中设置输入数据集的方案为“NO_TEST”,点击【确定】按钮,完成追加操作,筛选结果如图 1-22 所示。

                         

                     

实验说明: 
1)使用该工具,可将多个数据集中的新要素或其他数据添加至现有数据集;
2)该工具可将点、线、面要素类、表、栅格、栅格目录、注记要素类或尺寸要素类追加到现有的相同类型数据集中。例如,可将多个表追加到现有表中,或将多个栅格追加到现有栅格数据集中,但是不能将线要素类追加至点要素类中;
3)向目标数据集添加要素时,此工具不会打断要素。输入要素类和目标要素类中的所有要素都将在追加后保持原样,即使出现要素相互叠置情况也是如此;
4)如果输入数据集的任何字段与目标数据集的字段不匹配,将不会被映射到目标数据集,除非在“字段映射”控件中对映射进行了显式设置。由于输入数据集的数据被写入具有预定义方案(字段定义)的现有目标数据集中,因此“字段映射”控件不允许在目标数据集中添加或移除字段;
5)如果输入要素类和目标要素类的空间参考不匹配,“追加”工具会将输入要素类中的要素投影到目标要素类所使用的坐标系中;
6)此工具不执行边匹配,即不会对要素的几何进行调整;
7)可将地图图层用作输入数据集。如果图层具有选定内容,则“追加”工具只会使用所选记录(要素或表行);
8)此工具不能使用具有相同名称的多个输入图层。虽然 ArcMap 可显示具有相同名称的图层,但不得使用这些图层。要解决此限制,请使用工具对话框浏览按钮来浏览各输入数据集的完整路径;
9)要使用子类型参数,目标数据集必须已定义子类型字段且已分配子类型代码。在子类型参数中,提供子类型描述以将该子类型分配给已追加到目标数据集中的所有新数据

任务2:编程实现追加

猜你喜欢

转载自blog.csdn.net/lling0309/article/details/102565187