第五届全国大学生GIS应用技能大赛——实测数据检查与更新

目录

1. 案例背景

2. 出图展示

3. 数据说明

4. 要求

5. 步骤

5.1 空间纠正

5.2 更新数据

5.3 拓扑检查与修复

5.3.1 拓扑错误检查

5.3.2 拓扑错误修复

5.3.2.1 点错误修复

5.3.2.2 面错误修复

5.4 数据入库

5.5 最短路径分析

5.5.1 获取时间和长度数据

5.5.2 创建网络数据集

5.5.3 进行网络分析

6. 整饰出图


1. 案例背景

某市一块土地被开发为住宅小区,外业人员通过业务实地勘测,生成了中间数据,当在地图中显示时,发现不匹配。现在要求对数据进行检查、处理,并更新到数据库。请根据所学知识作答。

2. 出图展示

第五届全国大学生GIS应用技能大赛——实测数据检查与更新

3. 数据说明

①osm_landuse.shp:某市的土地利用数据数据。

②osm_buildings.shp:某市的建筑物数据。

③osm_roads.shp:某市的道路数据。

④osm_landuse_new.shp:某市新建住宅小区数据。

⑤osm_buildings_new.shp:某市新建住宅小区中的建筑物数据。

⑥osm_roads_new.shp:某市新建住宅小区中的道路数据。
 

4. 要求

(1)将osm_buildings_new.shp、osm_landuse_new.shp、osm_roads_new.shp的数据进行空间纠正,使其处于图中“正确”的位置。

(2)将osm_buildings_new.shp、osm_landuse_new.shp、osm_roads_new.shp更新到osm_buildings.shp、osm_landuse.shp、osm_roads.shp。

(3)对更新后的数据进行检查,并对检查出的错误进行统计,最后处理错误。需要检查的错误包括:

需要检查的错误

编号

拓扑错误

1

建筑物必须在宗地内部

2

建筑物不能压盖道路

(4)创建以osm命名的数据库,并对数据进行数据入库。

(5)假设在道路上行驶的速度为3m/s,请以osm_roads_new.shp为基础数据,建立包含距离成本和时间成本的网络数据集;并计算从ObjectID=73的建筑物到ObjectID=116的建筑物的最短路径。

(6)提交文件包括:地理数据库和技术文档。
         ①osm数据库,包含所有最终结果数据;
         ②步骤:包含数据处理的所有步骤的文档,尽可能附图说明;
         ③技术文档:应包括解题思路、解题过程说明和结果等内容。解题过程说明中,请尽可能附           图说明。

5. 步骤

5.1 空间纠正

首先,把所有的原始数据加载到 GeoScene Pro 软件中,如下图所示。

加载所有原始数据

然后,缩放到新建住宅小区的位置并查看需要进行空间纠正的数据,如下图所示。

查看新建住宅小区的位置和数据

由于我获取的原始数据已经是空间纠正后的数据,所以空间纠正这一步我就不做了。

空间纠正的方法和步骤我简单说明一下,为了演示空间纠正的操作方法和步骤我把其中两个建筑物选中并导出,命名为“正确位置”,然后对这两个建筑物稍微进行一些编辑(移动和旋转)使其位置与原始数据的位置错开,把编辑以后的建筑物位置当做是正确的建筑物位置,经过编辑的两个建筑物数据如下图所示。

正确位置数据

上述操作只是为了得到假设的位置正确的建筑物,然后演示如何把现有的建筑物位置经过空间纠正得到正确的空间位置。

首先,在编辑窗口下找到变换工具,如下图所示。

在编辑窗口下找到变换工具

然后,选择原始数据中的与正确位置相对应的一个建筑物,并按照建筑物的顶点依次添加位移链接,注意第一个点需要点在原始数据(也就是需要进行空间纠正的数据)上,第二个点需要点在具有正确空间位置的数据(也就是将要把原始数据纠正到的位置的数据)上,而且一定要把各链接的顶点相对应,否则纠正后的形状会严重变形。

添加好位移链接以后就可以点击“变换”按钮了,这样就可以把建筑物纠正道正确的空间位置了。纠正第二个建筑物以及纠正其他所有的建筑物的方法都与上述方法是一致的,具体操作如下图所示。

选择需要变换的要素并添加新链接

给第一个建筑物添加的新链接示意图

第一个建筑物空间纠正的结果

给第二个建筑物添加的新链接示意图

第二个建筑物空间纠正的结果

按照上述空间纠正的方法与步骤就可以完成第一问的空间纠正了,第一问到此结束。

5.2 更新数据

按照题目要求需要“将 osm_buildings_new.shp、osm_landuse_new.shp、osm_roads_new.shp 更新到 osm_buildings.shp、osm_landuse.shp、osm_roads.shp”,这里使用到的工具是“更新”工具。

打开“更新”工具,输入要素分别设置为面要素类型的 osm_buildings.shp 和 osm_landuse.shp,更新要素分别设置为 osm_buildings_new.shp 和 osm_landuse_new.shp,这样就可以更新这两个数据了,也就是把新建居住小区内的建筑物数据和新建居住小区内的土地利用数据分别合并到总的建筑物数据和总的土地利用数据中,如下图所示。

更新建筑物数据

建筑物更新结果

更新土地利用数据

土地利用数据更新结果

目前还有道路数据没有更新。这时发现在“更新”工具的输入要素框中无法输入线要素类型的道路数据,这是因为“更新”工具的功能是实现“计算输入要素和更新要素的几何交集。输入要素的属性和几何根据输出要素类中的更新要素来进行更新”。而线要素类型的道路数据是不会有交集的,因此也就无法用“更新”工具来计算了,如下图所示。

输入要素无法选择道路数据

更新工具的功能

现在还有一种方法可以实现更新道路数据,就是直接把新建居住小区内的道路数据复制到需要更新的总的道路数据中。

首先,选中新建居住小区内的道路数据,如下图所示。

选中新建居住小区内的道路数据

然后点击菜单栏的复制按钮,如下图所示。

点击复制

接下来选择“选择性粘贴”,需要注意的是在选择“选择性粘贴”之前需要清除所选内容,也就是取消选中状态,否则无法粘贴成功。

在“选择性粘贴”选项卡中切换到“图层”选项卡下,其中图层选择需要粘贴到的总的道路数据图层,最后点击确定即可,如下图所示。

选择性粘贴

选择粘贴至的图层为道路数据

粘贴好的结果

至此,已经实现了道路数据的更新,也完成了所有数据的更新任务,第二问就到此结束了。

5.3 拓扑检查与修复

5.3.1 拓扑错误检查

首先,新建一个文件地理数据库用来存放和拓扑检查与修复相关的所有数据,如下图所示。

新建一个名为拓扑的数据库

然后在该数据库下新建一个要素数据集,因为只有在要素数据集下才能创建拓扑。接着把上述更新完的三个数据导入到创建好的要素数据集下,如下图所示。

在拓扑数据库下新建一个要素数据集

导入完成

然后局可以在该数据集下新建拓扑了,要素类选项勾选三个需要进行拓扑查错的数据,如下图所示。

创建拓扑

要素类勾选三个需要进行拓扑查错的数据

然后按照题目要求添加相应的拓扑规则,但是会发现无论要素类1选择道路数据还是选择建筑物数据,都无法在软件现在有的拓扑规则中找到满足“建筑物不能压盖道路”这个要求的拓扑规则,如下图所示。

无法找到满足建筑物不能压盖道路的拓扑规则

我想到的解决方法是:先把面要素类型的建筑物数据转换成轮廓线,然后再添加合理的拓扑规则,因为软件中现有的线要素之间的拓扑规则“不能与其他要素相交”就可以满足题目的分析要求。

打开“要素转线”工具,输入要素设置为更新后的建筑物数据,转换结果如下图所示。

要素转线

转换好的建筑物轮廓线数据

然后按照上述方法重新创建拓扑(右键数据集然后点击新建拓扑),重新勾选需要进行拓扑检查的要素类,包括更新后的那三个数据和刚才转换的建筑物轮廓线数据,如下图所示。

重新选择需要进行拓扑检查的要素类

题目要求“建筑物必须在宗地内部”和“建筑物不能压盖道路”,根据这两个限制条件依次添加两个相应的拓扑规则,如下图所示。

添加的两条拓扑规则

然后查看创建拓扑的汇总信息,包括要素类和规则等,如下图所示。

查看汇总信息

接下来在编辑菜单栏下切换到刚才创建好的拓扑,然后把创建好的拓扑添加到地图中来,如下图所示。

编辑菜单下选择刚才创建的拓扑

把拓扑添加到图层中

然后就可以验证拓扑了,在目录中右键刚才创建的拓扑并点击验证,验证结果中被标记为红色(并不一定是红色,需要看内容列表中的拓扑图层是用什么符号和颜色来表示错误区域的)的区域就是与刚才添加的规则相冲突的区域,也就是存在拓扑错误的区域,如下图所示。

右键拓扑并点击验证

红色区域为存在拓扑错误的地方

先来看一下面错误,如下图所示的区域,红色建筑物并没有在宗地内部,与题目要求的“建筑物必须在宗地内部”不符,因此按照之前添加的拓扑规则这里就是存在拓扑错误的区域。

没有在宗地内部的建筑物

打开线错误的属性表会发现是空的,这表明按照之前添加的拓扑规则不存在线错误。

线错误的属性表为空

然后查看点错误,先把地图缩放至点错误的范围,查看所有的点错误的位置,如下图所示。

所有的点错误

然后进一步查看点错误发现所有的点错误都是由道路从建筑物内部穿过造成的,如下图所示。

道路穿越建筑物了

道路穿越建筑物了

5.3.2 拓扑错误修复

5.3.2.1 点错误修复

上述已经阐明点错误是由道路穿越建筑物造成的,因此只需要想办法将穿越建筑物的道路删掉就可以了。针对不同的道路穿越建筑物的类型,修复拓扑错误的方法是不一样的,下面主要介绍两种常用的编辑工具来修复点错误。

第一个工具是“延伸或修剪”工具,如下图所示。

延伸或修剪工具

对于有一部分穿进建筑物而没有穿透建筑物的道路,可以使用“延伸或修剪”工具来删掉穿进建筑物的那部分道路。

首先打开“延伸或修剪”工具,选择一条需要修剪的道路,切换到“修剪”功能,如下图所示。

选择需要修剪的线要素

选择修剪

然后,把光标捕捉到建筑物的边界线上并点击一下鼠标就可以完成修剪了,如下图所示。

修剪之前道路穿过了建筑物

把光标捕捉到建筑物的边界线上面并左键单击完成修剪

修剪完成

修剪完成后发现代表点错误的红色点标记还是存在,那是因为还没有重新验证拓扑。右键单击数据集下的拓扑并点击“验证”,验证完成后就会发现原来的那个点错误已经没有了,如下图所示。

重新验证拓扑

原来的那个点错误已经没有了

第二种要介绍的工具是“分割”工具,如下图所示。

分割工具

有一些道路是直接穿透了建筑物,并且是一整条道路而非打散的道路,想要直接删除这一条道路就会把没有穿越建筑物的道路也删除掉,显然是不能这么做的,这时就需要使用到“分割”工具了。

首先打开“分割”工具,选中一条需要分割的道路,然后把光标定位到需要分割道路的地方,也就是道路穿越建筑物的点(点错误标记的点),并左键单击一下鼠标就可以在该点处把道路分割,分割完成后再把建筑物内部的道路删除掉就可以了,如下图所示。

选择需要分割的道路

分割之前的穿越建筑物的道路

分割操作已完成

分割的结果

选中穿越建筑物的道路并删除

删除了穿越建筑物的道路

同理,现在需要重新验证拓扑才能查看原来的点错误是否已经被修复了,如下图所示。

重新验证拓扑

原来的那个点错误已经没有了

按照上述的方法依次修复所有的点错误,最后验证拓扑,直到所有的点错误都被成功修复,如下图所示。

成功修复了所有的点错误

点错误属性表已经为空
5.3.2.2 面错误修复

对于面错误的类型我觉得可以分为两类:第一类是建筑物完全位于宗地范围以外;第二类是建筑物大部分位于宗地内部,只有一小部分超出了宗地边界线。这两类面错误如下图所示。

完全位于宗地以外的建筑物

大部分位于宗地以内的建筑物

对于第一类面错误可以认为是违章建筑物,没有在允许的宗地范围内建造,理应拆除,因此这类建筑物的拓扑错误修复方法就是直接删掉即可。

对于第二类面错误可以认为是由测量误差和其他误差导致的拓扑错误,那些建筑物理应全部位于宗地内部,因此对于这类建筑物的拓扑修复方法就是通过编辑使它们位于宗地内部。

首先删掉违章建筑物,然后重新验证拓扑,如下图所示。

只剩下大部分位于宗地内部的面错误了

接下来使用编辑工具中的“移动”工具来把大部分位于宗地内部的面错误移动到完全位于宗地内部 。“移动”工具如下图所示。

移动工具

打开“移动”工具,首先选择一个需要移动的建筑物,然后把该建筑物拖动到完全位于宗地内部,移动完成后保存编辑,如下图所示。

选择需要移动的建筑物

把所选建筑物移动到宗地内部

保存编辑内容

移动好的结果

这时发现原来的那个面错误仍然存在,现在需要重新验证拓扑,重新验证拓扑以后就会发现原来的那个面错误已经没有了,如下图所。

重新验证拓扑

原来的那个面错误已经没有了

对于这种类型的建筑物还有一种修复方法就是使用“编辑折点”工具把位于宗地外面的建筑物折点删掉,这样做的结果就是只保留位于宗地内部的建筑物,就相当于把超出宗地范围的那部分建筑物给拆除了。这样做当然可以修复面错误,但是这种情况再现实世界基本上不存在。要么全拆,要么全不拆,不可能把建筑物的某一部分拆除而保留另一部分,这里只是为了完成题目要求,不需要考虑这么多现实因素。当然也许还有更好的修复方法,可以自行探索。

打开“编辑折点”工具,首先选择需要编辑折点的建筑物,然后删除宗地外面的折点,完成编辑折点后保留编辑结果并重新验证拓扑,会发现原来的那个面错误已经没有了,如下图所示。

编辑折点工具

选择需要编辑折点的建筑物

删除宗地外面的折点

编辑折点已完成

重新验证拓扑

原来的那个面错误已经没有了

按照上述的方法与步骤依次修复其他的所有面错误,然后再重新验证拓扑,直到所有的面错误都被成功修复,如下图所示。

全图已经没有任何拓扑错误了

面错误属性表现在已经为空

5.4 数据入库

首先新建一个文件地理数据库命名为“osm”,然后把经过上述处理得到的数据导入到该数据库中,如下图所示。

新建一个文件地理数据库命名为osm

数据入库

数据入库的结果

5.5 最短路径分析

5.5.1 获取时间和长度数据

首先利用“按属性选择”工具选择出 ObjectID=73 的建筑物和 ObjectID=116 的建筑物,如下图所示。

按属性选择出73号和116号建筑物

选择的结果

由于题目要求“建立包含距离成本和时间成本的网络数据集”,因此现在需要给道路数据的属性表中添加两个字段,一个是“时间”字段,另一个是“长度”字段。虽然道路数据的属性表找那个已经有了一个名为“Shape_Length”的字段,但是这个字段的值貌似并不是道路的长度,所以为了保险起见需要重新计算道路的长度,然后再利用已知的3m/s的速度和道路长度来求出“时间”字段的值,如下图所示。

给道路数据添加双精度的时间和长度字段

计算长度字段

计算时间字段的值

时间和长度字段的计算结果

其中道路长度的单位是米,速度的单位是米每秒,所以这里计算出来的时间的单位是秒,时间单位秒在后续的时间成本设置中会使用到。

题目要求“以osm_roads_new.shp为基础数据”进行最短路径分析,而“osm_roads_new.shp”数据是“某市新建住宅小区中的道路数据”,根本无法到达 ObjectID=73 的建筑物和 ObjectID=116 的建筑物,因此我认为题目有可能是有问题的。

居住小区内的道路无法到达起始点和目的地点

要么把起始点和目的地点的建筑物换成新建住宅小区范围内的两个建筑物,要么把“以osm_roads_new.shp为基础数据”改为“以(更新后的)osm_roads.shp为基础数据”,只有这样才能使道路能够到达起始点和目的地点,进而才能够进行最短路径分析。我这里就把网络分析的基础数据改成“更新后的osm_roads.shp”数据进行操作。

5.5.2 创建网络数据集

首先,在osm数据库下新建要素数据集,然后把“更新后的osm_roads.shp”数据导入到创建好的要素数据集中,如下图所示。

在数据库下新建要素数据集

创建要素数据集

导入数据

然后在已经导入数据的要素数据集下创建网络数据集,如下图所示。

在要素数据集下新建网络数据集

创建网络数据集

然后打开网络数据集的属性窗口,按照如下的参数来设置网络数据集的属性。

打开网络数据集属性窗口

新建时间成本

设置长度成本的字段脚本的字段

设置时间成本的赋值器类型为字段脚本

设置时间成本字段脚本的字段

设置好的时间成本的赋值器

设置好的距离成本的赋值器

设置好了网络数据集的属性以后就可以构建网络数据集了,只有利用道路数据构建好了相应的网络数据集才可以进行网络分析,如下图所示。

构建网络数据集

构建网络数据集

构建好的网络数据集

5.5.3 进行网络分析

接下来就可以创建网络分析中的路径分析图层了,如下图所示。

创建网络分析中的路径分析图层

创建好的路径分析图层

然后分别在 ObjectID=73 的建筑物和 ObjectID=116 的建筑物那里创建两个停靠点,如下图所示。

创建停靠点

创建好的停靠点

最后,点击运行就可以得到符合题目要求的最短路径了,如下图所示。

点击运行

分析出来的路径结果

6. 整饰出图

第五届全国大学生GIS应用技能大赛——实测数据检查与更新

 

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值