(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(下)----空间数据的编辑与处理(超超超详细!!!)

server/2024/12/20 9:08:06/

续上篇博客(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(上)----空间数据的编辑与处理(超超超详细!!!)-CSDN博客

继续更新

     

目录

什么是拓扑?

1.3.5道路拓扑检查与修正

(1)新建要素集:

(2)要素类至要素集:

(3)新建拓扑规则:

(4)拓扑修正:

首先是悬挂点修正

伪结点修正

相交错误的修正

数据入库

(1)新建文件地理数据库:

​编辑(2)要素类至要素类:


   本篇博客内容为道路拓扑检查与修正,有对本实验实验目的、实验介绍有不了解的,可以看下上篇博客。

        上篇博客有宝子私信我下载ArcGIS后出现了一个问题:空间校正那儿没有【设置校正数据】这一栏。

                这个问题其实我最开始也遇到了,大概是应该安装的时候有点问题,

        在这一步的时候要直接点击Cancel,有宝子点击OK,就会发生上诉情况,具体原因我也不知道,这也是我重装好几遍发现的。

解决方法就是,先删干净ArcGIS,包括注册表和文件夹残留,大家可以看看这篇文章,讲得很细

https://zhuanlan.zhihu.com/p/593618759

然后就还是按照上篇博客发的按照链接那样安装

ArcGIS10.8保姆式安装教程,超详细;附安装包_arcgis10.8安装教程-CSDN博客

只是注意在这个页面记得点击Cancel,而不是OK,大概就行了

然后回归主题,道路拓扑检查与修正,首先我来介绍下拓扑

什么是拓扑?

        说到拓扑,肯定很多人会想到拓扑学,拓扑学(Topology)原名叫做位置分析(Analysis situs),是研究图形(或集合)在连续变形下的不变的整体性质的一门几何学。由于早期研究的是直观拓扑学,因此人们又把这种研究连续变换下不变的性质的学科形象地称为“橡皮几何学”或“橡皮膜上的几何学”,也就是说橡皮膜在不被弄破的情况下,不管如何拉伸、压缩、扭转等变形而存在着某些不变的性质。因此,研究这些不变性成为拓扑学研究的中心课题。中文“拓扑学”一词最早由陈省身根据英文Topology音译而来。 

        拓扑学是几何学的一个分支,但是这种几何学又和通常的平面几何、立体几何不同。通常的平面几何或立体几何研究的对象是点、线、面之间的位置关系以及它们的度量性质。拓扑学对于研究对象的长短、大小、面积、体积等度量性质和数量关系都无关。

        举例来说,在通常的平面几何里,把平面上的一个图形搬到另一个图形上,如果完全重合,那么这两个图形叫做全等形。但是,在拓扑学里所研究的图形,在运动中无论它的大小或者形状都发生变化。在拓扑学里没有不能弯曲的元素,每一个图形的大小、形状都可以改变。例如,前面讲的欧拉在解决哥尼斯堡七桥问题的时候,他画的图形就不考虑它的大小、形状,仅考虑点和线的个数。

        什么是拓扑呢?拓扑研究的是几何图形的一些性质,它们在图形被弯曲、拉大、缩小或任意的变形下保持不变,只要在变形过程中不使原来不同的点重合为同一个点,又不产生新点。换句话说,这种变换的条件是:在原来图形的点与变换了图形的点之间存在着一一对应的关系,并且邻近的点还是邻近的点。这样的变换叫做拓扑变换。

        拓扑有一个形象说法——橡皮几何学。因为如果图形都是用橡皮做成的,就能把许多图形进行拓扑变换。例如一个橡皮圈能变形成一个圆圈或一个方圈。但是一个橡皮圈不能由拓扑变换成为一个阿拉伯数字8。因为不把圈上的两个点重合在一起,圈就不会变成8。拓扑变换的不变性、不变量还有很多,这里不再介绍。

1.3.5道路拓扑检查与修正


(1)新建要素集:

右键Data\1文件夹,新建文件数据库,命名为"Data"

        在新建地理数据库Data中创建Road要素数据集,导人已知数据坐标系“Xian_1980_3_Degree_GKZone_39”

        右键刚新建的文件地理数据库,选择新建--【要素数据集】

        选择要素数据集命名为”Road“,点击下一页

        在搜索框搜索”Xian_1980_3_Degree_GK_Zone_39“,点击选择该坐标系,点击下一步

        点击下一页、点击完成

(2)要素类至要素集:

        右键点击新建的【Road】要素数据集,点击【导入】--【要素类(单个)】

        输入要素选择【道路】,输出位置选择新创建的Road要素集,输出要素类填写【Roads】,点击确定,完成要素类至要素集操作。

(3)新建拓扑规则:

        点击【自定义】--【工具条】--【拓扑】,跳出拓扑工具条,以供后面拓扑搭建的使用

        右键点击【Road】要素类--【新建】--【拓扑】

输入拓扑名称为"Road_Topology",输入拓扑容差(T)为0.001,点击下一页

选择“道路”以参与到拓扑中的要素类,点击下一页

输入等级数为1,点击下一页

        点击【添加规则(A)】,依次添加“不能有悬挂点”、“不能有伪节点”、“不能相交”三条规则,点击下一页

确认新建拓扑信息无误后,点击完成拓扑构建

        打开拓扑工具条,选择”地块_Project“执行拓扑编辑,点击确定

        拓扑完成拓扑建立需要一点时间,有时候会卡住,啥都动不了,直接重启,再次打开,立即验证拓扑并加载拓扑图层。图中的点、线、面错误均以标出,说明拓扑建立无误。

(4)拓扑修正:

        点击拓扑工具条中的【错误检查器】,弹出错误显示框,选择【所有规则中的错误】,选择【错误】,点击立即搜索,错误列表中将显示道路中的所有拓扑错误

如何全部修正这些错误呢,下面我将一步步介绍:

首先是悬挂点修正

        选择【道路--不能有悬挂点】(下图还是所有错误,懒得改了),点击搜索,按住Ctrl键,一一选择这些悬挂点错误。

当数据点太多的时候,总是一一点击太过麻烦,有什么更便捷的方式吗?博主上网查过,可以通过编写一个Python脚本来自动化处理这些错误,ArcGIS支持Python脚本,可以利用arcpy模块来实现批量处理。我这里提供网上的一段代码,大家可以自行琢磨(一定不会运行成功,因为要改工作空间、拓扑名称、具体错误):

import arcpy# 设置工作空间
workspace = r"C:\path\to\your\geodatabase.gdb"
arcpy.env.workspace = workspace# 加载拓扑
topology = "YourTopologyName"# 获取所有错误
errors = arcpy.da.SearchCursor(topology + "\\Error", ["SHAPE@", "ERROR_TYPE"])# 处理每个错误
for row in errors:error_type = row[1]error_shape = row[0]if error_type == "Dangling Node":# 修复悬挂点错误arcpy.RepairGeometry_management(error_shape)elif error_type == "Pseudo Node":# 修复伪结点错误arcpy.Snap_edit(error_shape, [[error_shape, "VERTEX", 0.1]])elif error_type == "Intersection":# 修复相交错误arcpy.SplitLineAtPoint_management(error_shape, error_shape, "in_memory\\split_lines", "0.1")# 保存编辑
arcpy.SaveEdits_management()

        右键选择延伸

        选择延伸最大距离为1000,大部分点是100m内就行,但有部分点100m不够延伸,所有我选择的1000m,然后按Enter键

        大部分悬挂点都已修正,可以看见剩下的悬挂点都在道路边缘,考虑到道路边缘再次延伸会超出研究范围,故不考虑修正这些悬挂点。

        我们该如何规避这些道路边缘点呢?通过上网查阅,可以将剩下的悬挂点错误全选(ctrl一个一个选),然后右键,设置为异常,这样,这些点就不会出现在错误列表中。

伪结点修正

        选择【道路-不能有伪节点】,显示所有伪节点信息,点击【合并至最长的要素】

相交错误的修正

打开【编辑条】--【更多编辑工具】--【高级编辑】,打开高级编辑条,选择错误显示列表为【道路-不能相交】

        选择【道路-不能相交】,ctrl选择所有不能相交错误,右键点击【选择要素】

        点击高级编辑工具条中的【打断相交线】

        选择拓扑容差为0.001m,点击确定按钮

        完成所有错误修正后是,点击【所有规则中的错误】,点击【立即搜索】,发现并没有错误出现,如果还有,就继续按照上面说的三种修正错误方法修正,直至不显示任何错误为止。然后显示修正后的道路图层网,发现并没有其他问题,实验接近尾声(熬到头了),准备数据入库。

数据入库

看到这里,你应该意识到实验已经接近尾声。。。实则不然,后面还有很多实验等着你呢哈哈。。本博主将和你一起共进退。。。

废话不多说,对于数据入库,操作如下:

(1)新建文件地理数据库:

右键点击【地理空间数据库】文件夹,右键点击【新建】-【文件地理数据库】,并命名为“osm”



(2)要素类至要素类:

        右键点击osm.gdb,点击【导入】--【要素类(多个)】,打开“要素类至要素类”窗口,输人“Roads”要素,确定输出路径及名称(图1.27),点击【确定】,完成数据导人。

        【输入要素类】--【Road】--【Roads】--【添加】,确定输出位置为新建的osm.gdb文件,点击确定

        完成数据入库

        查看文件夹中文件无误

        至此,恭喜您已经完成了ArcGIS实验一 -- 空间数据的编辑与处理,记得点赞收藏+关注+评论本博主,我也会尽快更新后续实验,再见,可以睡觉了。

别忘了,点赞+关注+收藏+长评。。。。。。。。。。。。。。。。。。。。。。。。。。。。。


http://www.ppmy.cn/server/151664.html

相关文章

拒绝 Helm? 如何在 K8s 上部署 KRaft 模式 Kafka 集群?

首发:运维有术 今天分享的主题是:不使用 Helm、Operator,如何在 K8s 集群上手工部署一个开启 SASL 认证的 KRaft 模式的 Kafka 集群? 本文,我将为您提供一份全面的实战指南,逐步引导您完成以下关键任务&a…

MFC 应用程序语言切换

在开发多语言支持的 MFC 应用程序时,如何实现动态语言切换是一个常见的问题。在本文中,我们将介绍两种实现语言切换的方式,并讨论其优缺点。同时,我们还会介绍如何通过保存配置文件来记住用户的语言选择,以及如何在程序…

PugiXML,一个高效且简单的 C++ XML 解析库!

嗨,大家好!我是一行。今天要给大家介绍 PugiXML,这可是 C 里处理 XML 数据的得力助手。它能轻松地读取、修改和写入 XML 文件,就像一个专业的 XML 小管家,不管是解析配置文件,还是处理网页数据,…

QMainwindow的鼠标跟踪事件不触发问题

一、无边框窗口实现代码 1.1 头文件 class EtcTestTool : public QMainWindow {Q_OBJECTpublic:EtcTestTool(QWidget *parent Q_NULLPTR); private:void InitialUi();//... protected:void mousePressEvent(QMouseEvent*event)override;void mouseReleaseEvent(QMouseEvent*…

《机器学习》支持向量机

结构风险(Structural Risk)和经验风险(Empirical Risk) 在机器学习和统计学习理论中,结构风险(Structural Risk)和经验风险(Empirical Risk)是评估模型性能的两个重要概…

基于Spring Boot的校园数字化图书馆系统

一、系统背景与意义 随着高等教育规模的不断扩大,高校图书馆的藏书量和借阅量都在迅速增加,传统的图书管理方式已经难以满足现代图书馆的管理需求。因此,开发一个基于Spring Boot的校园数字化图书馆系统显得尤为重要。该系统能够实现对图书的…

maui开发成生安卓apk,运行提示该应用与此设备的CPU不兼容

在生成.NET MAUI安卓应用时遇到“该应用与此设备的CPU不兼容”的问题,确保你的.NET MAUI应用支持的Android目标框架与设备CPU架构相匹配。例如,如果你的应用是为ARM64架构编译的,而你的设备是x86架构,就会出现不兼容的问题。 一、…

Linux基础及命令复习

目录 简介--是什么;特点;应用场景;常见版本Linux安装部署--VMware虚拟机配置;Xshell、Xftp、finalShell远程工具VMware虚拟机安装中的常见问题虚拟机网络配置远程工具的使用 Linux的目录结构Linux根目录下的常见目录及作用 常用Linux命令帮助类命令man★文件目录类命令 pwd ls …