nkjoyboy
路人甲
路人甲
  • 注册日期2004-06-06
  • 发帖数114
  • QQ
  • 铜币447枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2066回复:8

发现很少有人讨论geodatabase

楼主#
更多 发布于:2004-06-07 10:52
<P>各位大侠,做GIS系统不是应该从构建geodatabase开始的吗,为啥我没看到有人在讨论它呢?如果要建geodatabase,是否需要老老实实的用UML建模啊?望各位不吝赐教!</P>
喜欢0 评分0
做人要厚道
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2004-06-07 17:39
<P>以前也发过点关于geodatabse的说明,geodatabase是个不可少的工具,uml偶想如果建立海量数据库是很必要的,希望继续讨论</P>
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
2楼#
发布于:2004-06-07 17:42
<P align=center><FONT face=黑体 size=3>什么是Geodatabase</FONT></P><P 25px" align=left><b><FONT face=Arial><EM> </EM>1</FONT>、引言</b>
随着<FONT face=Arial>ESRI ArcGIS 8</FONT>系列<FONT face=Arial>GIS</FONT>平台软件的推出,我们发现,当谈到空间数据模型和格式的时候,多了一个原来不曾出现的新词:<FONT face=Arial>Geodatabase</FONT>。从字面意义上讲,我们可以将“<FONT face=Arial>Geodatabase</FONT>”拆分为“<FONT face=Arial>Geo</FONT>”和“<FONT face=Arial>database</FONT>”两部分。其中,“<FONT face=Arial>Geo</FONT>”,即“<FONT face=Arial>Geography</FONT>”——“地理”,与“<FONT face=Arial>database</FONT>”——“数据库”连在一起,就是“<FONT face=Arial>Geodatabase</FONT>”——“地理数据库”。“地理数据库”给了我们一个对<FONT face=Arial>Geodatabase</FONT>极为直观的解释,同时,也给了我们一个较大的、较容易混淆的想象空间。在<FONT face=Arial>ARC/INFO 7.X</FONT>以前,空间数据是以<FONT face=Arial>Coverage</FONT>、<FONT face=Arial>TIN</FONT>、<FONT face=Arial>GRID</FONT>等格式表达和管理的,这些数据格式与<FONT face=Arial>Geodatabase</FONT>是一种什么样的关系?<FONT face=Arial>Geodatabase</FONT>可以取代它们吗?<FONT face=Arial>Geodatabase</FONT>更好吗?好在哪里?拓扑关系在<FONT face=Arial>Geodatabase</FONT>中是如何处理的?等等问题。下面本文将就这些问题进行探讨。</P><P 25px" align=left><b><FONT face=Arial>2</FONT>、<FONT face=Arial>COVERAGE</FONT>、<FONT face=Arial>SDE 3 LAYER</FONT>和<FONT face=Arial>Geodatabase<EM>
</EM>a</FONT>、什么是<FONT face=Arial>Geodatabase?</FONT></b><FONT face=Arial>
Geodatabase</FONT>是<FONT face=Arial>ArcInfo 8</FONT>引入的一个全新的空间数据模型,是建立在<FONT face=Arial>DBMS</FONT>之上的统一的、智能化的空间数据库。所谓“统一”,在于<FONT face=Arial>Geodatabase</FONT>之前所有的空间数据模型都不能在一个同一的模型框架下对<FONT face=Arial>GIS</FONT>通常所处理和表达的地理空间要素,如:矢量、栅格、三维表面、网络、地址等,进行统一的描述。而<FONT face=Arial>Geodatabase</FONT>做到了这一点。所谓“智能化”,是指在<FONT face=Arial>Geodatabase</FONT>模型中,地理空间要素的表达较之以往的模型更接近于我们对现实事物对象的认识和表述方式。<FONT face=Arial>Geodatabase</FONT>中引入了地理空间要素的行为、规则和关系,当处理<FONT face=Arial>Geodatabase</FONT>中的要素时,对其基本的行为和必须满足的规则,我们无需通过程序编码;对其特殊的行为和规则,则可以通过要素扩展进行客户化定义。这是其它任何空间数据模型都做不到的。</P><P 25px" align=left><b><FONT face=Arial>b</FONT>、<FONT face=Arial>COVERAGE</FONT>及其局限性
</b><FONT face=Arial>COVERAGE</FONT>数据模型:
<FONT face=Arial>Coverage</FONT>数据模型在<FONT face=Arial>GIS</FONT>界可谓家喻户晓。它源自<FONT face=Arial>ESRI</FONT>于<FONT face=Arial>1981</FONT>年推出的第一个商业化<FONT face=Arial>GIS</FONT>软件——<FONT face=Arial>ARC/INFO</FONT>。在此之前,计算机化的图形表示,主要是源自通用的<FONT face=Arial>CAD</FONT>软件。在<FONT face=Arial>CAD</FONT>的数据模型中,点、线、面等几何要素以二进制形式保存于文件中,相关的注记、颜色、线型等属性也跟几何数据放在一起。当我们从信息系统的角度来审视这些<FONT face=Arial>CAD</FONT>数据模型时,发现其对于空间数据的信息描述和分析有着致命的弱点。而<FONT face=Arial>ARC/INFO</FONT>的<FONT face=Arial>Coverage</FONT>数据模型,则通过以下两个方面的优势,确立了它在此后近二十年的时间里的空间数据模型标准的地位:</P><BLOCKQUOTE><P 25px" align=left><FONT face=Arial>* </FONT>空间数据与属性数据关联。空间数据放在建立了索引的二进制文件中,属性数据则放在<FONT face=Arial>DBMS</FONT>表(<FONT face=Arial>TABLES</FONT>)里面,二者以公共的标识编码关连。
<FONT face=Arial>* </FONT>矢量数据间的拓扑关系得以保存。由此拓扑关系信息,我们可以得知多边形是哪些弧段(线)组成、弧段(线)由哪些点组成、两条弧段(线)是否相连以及一条弧段(线)的左或右多边形是谁?这就是通常所说的“平面拓扑”。</P></BLOCKQUOTE><P 25px" align=left><FONT face=Arial>Coverage</FONT>数据模型中,我们可以扩展和定义属性表,还可以定义属性表和外部数据库之间的关系。同时,由于当时计算机硬件速度和数据库技术的水平所限,不太可能将空间数据直接存入数据库。<FONT face=Arial>Coverage</FONT>直接建立和存储拓扑关系的思想,正好在当时的条件下使得<FONT face=Arial>GIS</FONT>得以实现较高的空间数据采集精度、存储效率和空间分析能力。</P><P 25px" align=left>但是,在新的技术条件下,<FONT face=Arial>COVERAGE</FONT>的这些优点是否还能得以保持?答案是否定的。那是因为,用<FONT face=Arial>COVERAGE</FONT>模型,在数据采集、编辑时,<FONT face=Arial>ArcInfo</FONT>可以严格地检查多边形是否封闭、是否存在悬挂节点等,以保证建立正确的拓扑关系。但是,如果我们不以逐点、逐线追踪的方式进行空间数据“数字化”,而是按面向对象的方式,明确地输入点、线或面类型的空间要素对象,这样的检查就可以由系统自动保证了。此为其一。</P><P 25px" align=left><FONT face=Arial>COVERAGE</FONT>用点、线、面相互关联的拓扑结构记录空间数据,对于多边形的公共边,它不会重复存储,因而节省存储空间。这在内外存介质价格昂贵的年代,是十分突出的优点。随着硬件价格呈几何级数的下降,我们已不再将存储空间的节省与否作为考虑问题的重心。此为其二。</P><P 25px" align=left>对于象邻接、连通和包含等空间分析功能,基于拓扑关系记录是一种不错的选择。但现在的计算机运算能力已经有了成千上万倍的提高,在普通配置的<FONT face=Arial>PC</FONT>机上,已经可以实时地通过计算直接获得分析结果。此为其三。</P><P 25px" align=left>由此看来,<FONT face=Arial>COVERAGE</FONT>模型可取的方面,有的已经可以不再继续作为强调的因素,有的可以找到代替的、同时也是高效的途径来完成。</P><P 25px" align=left><FONT face=Arial>COVERAGE</FONT>的局限性:
计算机软硬件水平的迅速提高,使我们有可能重新考虑<FONT face=Arial>COVERAGE</FONT>数据模型的局限性。“面向对象”的技术和方法已日趋成熟,并在计算机软件设计、工程应用和项目开发等领域得到日益广泛的采纳。这促使我们从“面向对象”的角度去看<FONT face=Arial>COVERAGE</FONT>,我们发现,<FONT face=Arial>COVERAGE</FONT>数据模型有一个明显的缺陷:空间数据不能很好地与其行为相对应。现实世界中不同的领域对象被强行地抽象成了“点”、“线”、“面”等简单空间要素。我们无法区别对待同是“点”类型的“电杆”和“水井”。在<FONT face=Arial>COVERAGE</FONT>数据模型中,我们可以将“电杆”和“水井”同样定义为“点”,因而也可以有同样的操作——“移动”。现实世界中,“移动电杆”是个合理的动作,而“移动水井”则显得牵强。如果我们能将“电杆”和“水井”表达成两个不同的空间要素类,它们各自有不同的“行为”,则不会出现“移动水井”这样不合理的操作。对于“线”和“面”类型的空间要素,我们同样可以列举出大量类似的例子。</P><P 25px" align=left>当然,我们可以通过“二次开发”,用程序来定义和处理不同“空间对象”的不同操作,把矛盾和困难“后推”,交到不得不解决问题的应用开发阶段去完成。按“面向对象”的观点,更好的办法应该是将空间要素与其行为相关联,建立“空间对象”或“地理对象”模型。而这正是<FONT face=Arial>Coverage</FONT>力所不能及的。</P><P 25px" align=left>以文件方式保存空间数据,而将属性数据放在另外的<FONT face=Arial>DBMS</FONT>系统中。这种方式对于日益趋向企业级和社会级的<FONT face=Arial>GIS</FONT>应用而言,已很难适应。海量数据的管理、并发操作、安全控制和访问效率等,都是我们将目光转向<FONT face=Arial>Geodatabase</FONT>的原因。</P><P 25px" align=left><b><FONT face=Arial>C</FONT>、<FONT face=Arial>SDE 3.X</FONT>的<FONT face=Arial>Layers
</FONT></b><FONT face=Arial>ArcSDE 8</FONT>的前一个版本——<FONT face=Arial>SDE 3.X</FONT>。在<FONT face=Arial>SDE 3.X</FONT>中还没有<FONT face=Arial>Geodatabase</FONT>的概念,其空间数据模型是将空间数据组织到互不关联的若干要素层——<FONT face=Arial>LAYERS</FONT>中。<FONT face=Arial>LAYER</FONT>是一组要素的集合,对应<FONT face=Arial>DBMS</FONT>的若干表(<FONT face=Arial>TABLES</FONT>)。<FONT face=Arial>LAYER</FONT>中存放的是简单空间要素,如:点、线、面等。用户须自行建立不同空间要素类之间的关系,空间要素的行为和规则则要在应用程序中另行开发。另外,象<FONT face=Arial>TIN</FONT>、<FONT face=Arial>GRID</FONT>、<FONT face=Arial>IMAGE</FONT>、<FONT face=Arial>Network</FONT>、参数曲线等空间对象,在<FONT face=Arial>SDE 3.X</FONT>数据模型中尚不能表达。 </P><P 25px" align=left><b><FONT face=Arial>3</FONT>、<FONT face=Arial>Geodatabase</FONT>的体系结构<EM>
</EM><FONT face=Arial>a</FONT>、<FONT face=Arial>Geodatabase</FONT>模型结构 <FONT face=Arial>* </FONT>对象类(<FONT face=Arial>Object class</FONT>)</b>
在<FONT face=Arial>Geodatabase</FONT>中,对象类是一种特殊的类,它没有空间特征,其实例为可关联某种特定行为的表记录(<FONT face=Arial>Row in table</FONT>)。如:某块地的主人。在“地块”和“主人”之间,可以定义某种关系。</P><P 25px" align=left><FONT face=Arial>* </FONT>要素类(<FONT face=Arial>Feature class</FONT>)
同类空间要素的集合即为要素类。如:河流、道路、植被、用地、电缆等。要素类之间可以独立存在,也可具有某种关系。当不同的要素类之间存在关系时,我们将其组织到一个要素数据集(<FONT face=Arial>Feature dataset</FONT>)中。</P><P 25px" align=left><FONT face=Arial>* </FONT>要素数据集(<FONT face=Arial>Feature dataset</FONT>)
要素数据集由一组具有相同空间参考(<FONT face=Arial>Spatial Reference</FONT>)的要素类组成。
将不同的要素类放到一个要素数据集下的理由可能很多,但一般而言,在以下三种情况下,我们考虑将不同的要素类组织到一个要素数据集中:</P><BLOCKQUOTE><P 25px" align=left>专题归类表示——当不同的要素类属于同一范畴。如:全国范围内某种比例尺的水系数据,其点、线、面类型的要素类可组织为同一个要素数据集。
创建几何网络——在同一几何网络中充当连接点和边的各种要素类,须组织到同一要素数据集中。如:配电网络中,有各种开关、变压器、电缆等,它们分别对应点或线类型的要素类,在配电网络建模时,我们要将其全部考虑到配电网络对应的几何网络模型中去。此时,这些要素类就必须放在同一要素数据集下。
考虑平面拓扑(<FONT face=Arial>Planar topologies</FONT>)——共享公共几何特征的要素类,如:用地、水系、行政区界等。当移动其中的一个要素时,其公共的部分也要求一起移动,并保持这种公共边关系不变。此种情况下,我们得将这些要素类放到同一个要素数据集下。</P></BLOCKQUOTE><P 25px" align=left><FONT face=Arial>* </FONT>关系类(<FONT face=Arial>Relationship class</FONT>)
定义两个不同的要素类或对象类之间的关联关系。例如:我们可以定义房主和房子之间的关系,房子和地块之间的关系等。</P><P 25px" align=left><FONT face=Arial>* </FONT>几何网络(<FONT face=Arial>Geometric network</FONT>)
几何网络是在若干要素类的基础上建立的一种新的类。定义几何网络时,我们指定哪些要素类加入其中,同时指定其在几何网络中扮演什么角色。如:定义一个供水网络,我们指定同属一个要素数据集的“阀门”、“泵站”、“接头”对应的要素类加入其中,并扮演“连接(<FONT face=Arial>junction</FONT>)”的角色;同时,我们指定同属一个要素数据集的“供水干管”、“供水支管”和“入户管”等对应的要素类加入供水网络,由其扮演“边(<FONT face=Arial>edge</FONT>)”的角色。</P><P 25px" align=left><FONT face=Arial>* Domains
</FONT>定义属性的有效取值范围。可以是连续的变化区间,也可以是离散的取值集合。</P><P 25px" align=left><FONT face=Arial>* Validation rules
</FONT>对要素类的行为和取值加以约束的规则。如:规定不同管径的水管要连接,必须通过一个合适的转接头。规定一块地可以有一到三个主人。</P><P 25px" align=left><FONT face=Arial>* Raster Datasets
</FONT>用于存放栅格数据。可以支持海量栅格数据,支持影像镶嵌,可通过建立“金字塔”索引,并在使用时指定可视范围提高检索和显示效率。</P><P 25px" align=left><FONT face=Arial>* TIN Datasets
TIN</FONT>是<FONT face=Arial>ARC/INFO</FONT>非常经典的数据模型,用不规则分布的采样点的采样值(通常是高程值,也可以是任意其它类型的值)构成的不规则三角集合。用于表达地表形状或其它类型的空间连续分布特征。在<FONT face=Arial>ArcGIS 8.1</FONT>版中,<FONT face=Arial>TIN</FONT>存放在<FONT face=Arial>Coverage</FONT>的<FONT face=Arial>workspace</FONT>中。</P><P 25px" align=left><FONT face=Arial>* Locators
</FONT>定位器(<FONT face=Arial>Locator</FONT>)是定位参考和定位方法的组合,对不同的定位参考,用不同的定位方法进行定位操作。所谓定位参考,不同的定位信息有不同的表达方法,在<FONT face=Arial>geodatabase</FONT>中,有四中定位信息:地址编码、<FONT face=Arial><X,Y></FONT>、地名及邮编、路径定位。定位参考数据放在数据库表中,定位器根据该定位参考数据在地图上生成空间定位点。详细的阐述,请参见《<FONT face=Arial>Modeling Our World</FONT>》之第<FONT face=Arial>11</FONT>章:<FONT face=Arial>Finding Locations</FONT>。 </P><P 25px" align=left><b><FONT face=Arial>4</FONT>、长事务处理和版本管理<EM>
</EM></b>长期以来,在<FONT face=Arial>GIS</FONT>的应用中一直存在两个困扰我们的问题:<FONT face=Arial>1</FONT>、<FONT face=Arial>GIS</FONT>空间数据编辑过程相关的长事务处理;<FONT face=Arial>2</FONT>、空间数据的时序变化如何记录。<FONT face=Arial>ArcSDE</FONT>提供了一种全新的空间数据版本管理方法(<FONT face=Arial>Versioning</FONT>),为彻底解决这些问题提供了一条有效途径。</P><P 25px" align=left>基于空间数据的编辑工作很少向在银行存取一笔钱或在股市上完成一笔交易那么快捷,往往需要较长的时间(数小时、数天、甚至数月)才能结束。例如:城市国土规划部门的批地过程,电信资源管理部门的数据更新维护过程等。对于这种长事务处理过程,<FONT face=Arial>ArcSDE</FONT>的版本管理机制允许用户在事务处理的任何阶段创建自己的数据“版本”。值得注意的是,这些“版本”并非空间数据的完整拷贝,而是一些反映版本间数据变化的增量信息。针对相同的空间范围,甚至对同一空间要素,不同的用户可以同时进行各自的修改操作,而不必将其事先锁定起来。在版本提交或合并时,系统将自动检测到可能的冲突并给出警示,结合<FONT face=Arial>ArcInfo</FONT>或<FONT face=Arial>ArcEditor</FONT>,系统提供对话框帮助用户解决该冲突。这种机制对于需要多人、多部门协同完成的工作流而言,非常有效。</P><P 25px" align=left>类似于“宗地”、“规划方案”这样的空间数据,随时间而发生变化,同时又必须记录并能随时检索到每次的变化,是其突出的特征。<FONT face=Arial>ArcSDE</FONT>通过对不同的数据变化生成不同的“版本”来完成对数据变化的跟踪。只要指定某一版本(名称),就可得到当时的空间数据,并可在此基础上进一步进行操作。从而达到对历史数据进行记录和管理的目的。 </P><P 25px" align=left><b><FONT face=Arial>5</FONT>、<FONT face=Arial>Geodatabase</FONT>优势何在?<EM>
</EM></b>从前面的阐述中我们可以看到,相对于其他的空间数据模型而言,<FONT face=Arial>Geodatabase</FONT>有其明显的优势:</P><BLOCKQUOTE><P 25px" align=left><FONT face=Arial>* </FONT>在同一数据库中统一管理各种类型的空间数据;
<FONT face=Arial>* </FONT>空间数据的录入和编辑更加准确。这得益于空间要素的合法性规则检查。
<FONT face=Arial>* </FONT>空间数据更面向实际的应用领域。不在是无意义的点、线、面,而代之以电杆、光缆和用地等。
<FONT face=Arial>* </FONT>可以表达空间数据之间的相互关系。
<FONT face=Arial>* </FONT>可以更好地制图。对不同的空间要素,我们可定义不同的“绘制”方法,而不受限于<FONT face=Arial>ArcInfo</FONT>等客户端应用已经给出的工具。
<FONT face=Arial>* </FONT>空间数据的表示更为精确。除了可用折线方式以外,还可用圆弧、椭圆弧和<FONT face=Arial>Bezier</FONT>曲线描述空间数据的空间几何特征。
<FONT face=Arial>* </FONT>可管理连续的空间数据,无需分幅、分块。
<FONT face=Arial>* </FONT>支持空间数据的版本管理和多用户并发操作。 </P></BLOCKQUOTE><P 25px" align=left><FONT face=Arial>Geodatabase</FONT>是<FONT face=Arial>ESRI</FONT>对空间数据建模理论、方法及其实现技术的划时代贡献,其体系结构和设计思想博大精深,非常具有学习、研究和使用的价值。仅通过本文,读者不可能对<FONT face=Arial>Geodatabase</FONT>有完整透彻的了解。好在在<FONT face=Arial>ArcGIS 8</FONT>的软件资料中,随附了一本《<FONT face=Arial>Modeling Our World</FONT>》,是阐述<FONT face=Arial>Geodatabase</FONT>设计和实现思想的杠鼎之作,值得<FONT face=Arial>GIS</FONT>研究和应用开发工作者作为案头必备。</P>
举报 回复(0) 喜欢(0)     评分
nkjoyboy
路人甲
路人甲
  • 注册日期2004-06-06
  • 发帖数114
  • QQ
  • 铜币447枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2004-06-07 20:59
<P>很好懂,很全面的材料。谢谢总统!</P>
<P>我准备用Visio试试建模,到时还要向各位版主和版友请教,^_^。</P>
做人要厚道
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
4楼#
发布于:2004-06-08 06:04
希望继续交流,偶等着你<img src="images/post/smile/dvbbs/em07.gif" />
举报 回复(0) 喜欢(0)     评分
lemon_nj
路人甲
路人甲
  • 注册日期2004-02-29
  • 发帖数57
  • QQ
  • 铜币122枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2004-06-08 13:35
Visio企业版建模的例子有没有呀?找了好久没找到,只下了个专业版的,据说不能用于GEODATABASE建模,只有企业版方可!
举报 回复(0) 喜欢(0)     评分
wangcheng
路人甲
路人甲
  • 注册日期2004-06-06
  • 发帖数141
  • QQ39308652
  • 铜币110枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2004-06-08 13:55
<P>厉害啊。。<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em06.gif" /><img src="images/post/smile/dvbbs/em07.gif" />~~~~~~~~~~~~~~~~~~~~~~~~</P><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
举报 回复(0) 喜欢(0)     评分
nkjoyboy
路人甲
路人甲
  • 注册日期2004-06-06
  • 发帖数114
  • QQ
  • 铜币447枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2004-06-08 14:09
<P>我装了个Visio for Enterprise Architects ,据说包含Visio 2002 Standard 和 Visio 2002 Professional 的全部功能,但好像还是不行。UML无法转为XML文档,郁闷。是不是Visio for Enterprise Architects 还不是企业版啊?</P>
做人要厚道
举报 回复(0) 喜欢(0)     评分
yijia2003
路人甲
路人甲
  • 注册日期2004-01-18
  • 发帖数57
  • QQ
  • 铜币414枚
  • 威望0点
  • 贡献值0点
  • 银元0个
8楼#
发布于:2004-06-12 15:32
3x
举报 回复(0) 喜欢(0)     评分
游客

返回顶部