注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

naigeer的知识库

不断学习,用知识武装头脑,用头脑创造未来!

 
 
 

日志

 
 

[转载]Geodatabase讲义(二)  

2009-04-14 10:47:50|  分类: ArcGIS开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

15 Geodatabase类型

geodatabase类型

Geodatabase是一个容器用于存储数据集集合。它有三种类型:

1、File Geodatabases—以文件系统中的文件夹存储。每个数据集以一个文件被存储,可达到TB级。与personal geodatabases相比,推荐使用这种类型。

2、Personal Geodatabases—所有的数据集被存储在一个Microsoft的Access数据文件中,它的容量限制为2GB。

3、ArcSDE Geodatabases—使用Oracle, Microsoft SQL Server, IBM DB2,IBM Informix存储在一个关系数据库中。这个多用户的geodatabase需要ArcSDE的使用,在容量和用户数量上没有限制。

三种类型geodatabase的比较:

 

 

 

 

File geodatabases personal geodatabases

File和Personal geodatabase,对所有的ArcGIS用户都是免费使用的,支持geodatabase的全部信息模型。这包括拓扑、栅格目录、网络数据集、表面数据集、地址定位器等。File和Personal geodatabase被设计为由一个单独的用户编辑,不支持geodatabase版本。对于file

Geodatabase,可以有多个编辑者同时进行编辑,只要是他们编辑不同的要素数据集、独立要素类或者表。

File geodatabase是在ArcGIS9.2版本中新发布的一种新的geodatabase类型。它的目标是:

提供所有用户一个广泛可用、简单和可伸缩的geodatabase解决方案;

提供一个跨操作系统的简便的geodatabase;

提高处理大数据集的能力;

提供了优越的性能和可伸缩性;

使用一个有效的数据结构,它对数据存储和性能是最优化的;

Personal geodatabases从ArcGIS8.0版本开始就被ArcGIS使用,使用Microsoft的 Access数据结构(mdb file)。它们支持的geodatabase容量限制在2GB或者小于2GB。但是,有效的数据库大小是比较小的,大概在250MB-500 MB之间,超过这个范围之后,数据库性能将开始降低。Personal geodatabases也仅在Microsoft的Windows操作系统上被支持。

由于多个原因,ArcGIS将继续支持personal geodatabases。但是,它也高度推荐使用file geodatabase。对于基于文件数据集的GIS项目使用file geodatabase是理想的,对于比较小的工作组,使用personal geodatabases比较理想。

ArcSDE geodatabases

当需要一个可以由多个用户同时编辑和使用的多用户geodatabase,ArcSDE geodatabase是一个好的解决方案。它添加了管理一个共享、多用户geodatabase,以及基于版本的GIS工作流的能力。利用企业级的关系数据库的功能是ArcSDE geodatabase的最大优势。

ArcSDE geodatabase使用多种DBMS存储模型(IBM DB2, Informix, Oracle, 和SQL Server)。ArcSDE geodatabases主要被用于工作组、部门和企业范围。它们利用基本的DBMS体系支持:

及其大、连续的GIS数据库;

多个并发用户;

长事务和版本工作流;

支持GIS数据管理的关系数据库;

通过许多ArcSDE geodatabase的实现,已经发现DBMSs在加载和删除大二进制对象类型的数据很有效。另外,GIS数据库的容量和支持的用户数量比GIS文件系统大得多。

 

ArcGIS中访问和使用ArcSDE有三种级别

ArcSDE geodatabases包括Personal ArcSDE geodatabase、Workgroup ArcSDE geodatabase和Enterprise ArcSDE geodatabase三个级别。ArcSDE geodatabase的功能可以在以下的ESRI软件产品中获得:

Personal ArcSDE included with ArcEditor and ArcInfo:从ArcGIS9.2开始,ArcEditor 和ArcInfo包括免费的Microsoft SQL Server Express database。这些软件也包括ArcSDE的功能支持同时有三个连接的Personal ArcSDE geodatabase-其中一个可以编辑数据。

SQL Server Express限制在一个CPU上运行,使用1GB的内存。SQL Server Express最大的数据库限制在4GB。

Personal ArcSDE geodatabase提供了在ArcEditor 和ArcInfo中使用SQL Server Express管理ArcSDE geodatabases的功能。

Workgroup ArcSDE included with ArcGIS Server for Workgroups: ArcGIS Server的Workgroups级别包括支持SQL Server Express。在这个级别上的ArcSDE,可以在任何数量的用户和编辑者上使用SQL Server Express,只要他们被配置所支持。

对于personal ArcSDE,使用ArcEditor或者ArcInfo创建、执行和管理workgroup ArcSDE geodatabases。可以使用SQL Server Express在ArcCatalog中建立和管理这些workgroup ArcSDE geodatabases。不需要额外的数据库管理技术。

在这里,可以认为ArcGIS Server的Workgroups级别是ArcEditor或者ArcInfo的扩展,帮助管理和服务workgroup ArcSDE geodatabases。

Enterprise ArcSDE included with ArcGIS Server for Enterprises:这是传统的ArcSDE技术,它运行在Oracle, SQL Server, IBM DB2, 和IBM Informix,可达到任何容量和任何数量用户的数据库,运行在任何大小和配置的计算机上。

ArcSDEDBMS的事务框架上提出长和短事务处理

ArcSDE geodatabase包括对一个多用户geodatabase的编辑和更新的高级支持。随着GIS日益增加的用户和对来自一组传感器数据的管理的需要,GIS对事务管理的需要变得更加重要。在GIS中,长事务的需求更多。

通常,GIS用户具有特殊的事务处理需求,其中一个就是跨长时间的(不仅是几秒或者几分钟,有时几个小时,甚至几天和几个月)。

另外,GIS中一个单独的编辑会话可能包括多个表中的多条记录的变化。用户需要undo和redo操作。用户在他们提交变化时,需要对待每个编辑会话为一个单独的事务。甚至,编辑通常必须是在一个与中央、共享数据库断开的环境中执行的。

在一个多用户的数据库中,GIS事务必须与DBMSs的短事务框架协调。ArcSDE通过管理高层次、复杂的GIS事务在这些操作中扮演一个关键角色。

ArcSDE以delta records在数据库中存储这些变化的信息;使用版本分离多个编辑会话;支持复杂事务、自动历史数据归档和历史查询。

16 常见geodatabase的任务

创建和操作geodatabase的主要任务包括以下:

设计一个geodatabase;

建立一个geodatabase;

加载数据集和栅格到geodatabase中;

用高级数据类型扩展要素类;

用域、关联和子类型扩展表;

扩展栅格数据集;

加载和维护geodatabase中每个数据集的数据;

管理geodatabase的更新和事务;

管理File或者Personal geodatabase;

管理ArcSDE geodatabase。

 

 

 

 

 

 

 

 

 

第2章    Geodatabase体系结构

21 Geodatabase体系结构

用户通常认为geodatabase是地理信息的物理存储,但从根本来说,是使用DBMS或文件来存储的。除了作为数据集集合的一个物理实例,每个geodatabase还有其他关键方面特征。

1、 geodatabase有一个广泛的信息模型来表达和管理地理信息。这个信息模型的实现是通过一系列简单数据表,这些表是存储在要素类、栅格数据集和属性表中的。另外,高级的GIS数据对象通过增加GIS行为、规则来管理空间完整性,以及增加工具来处理要素、栅格和属性表的大量的空间关系。

geodatabase的software logic提供了通用的application logic,贯穿整个ArcGIS,用

于访问和处理各种数据格式的地理数据。无疑,它是支持geodatabase的,并且支持shapefiles, CAD 文件, TIN's, grids, CAD 数据, imagery, 还有其他大量的GIS数据源。

geodatabase具有一个事务处理模型来管理GIS的数据工作流。

22 Geodatabase基于关系原则存储

用户倾向于认为DBMS本质上是开放的,这是因为关系数据模型的简易性和灵活性,使得它能支持广泛的应用。

Geodatabase的存储模型是以DBMS原则为基础,利用了一系列简单却基本的关系数据库概念。DBMS(File geodatabase 的文件系统)提供了简单而又合适的数据模型存储和操作表。

包括以下的关键概念:

数据被组织为表

表包含行

表中所有的行具有相同的列

每一列具有一个类型,如integer, decimal number, character, date等等。

关系类用于一个表中的行和另一个表中的行发生关联,这是以每个表中都有一个公

共的列为基础的。

关系完整性规则存在于所有表中。如,每一行总是有相同的列,一个域为每一列指

定了有效值或者值范围等等。

对ArcSDE geodatabases来说,还有大量其他的DBMS功能可以应用:

SQL,一系列关系函数和操作符可以用于操作表和表中的元素。

SQL操作符同时被设计为可以处理普通的关系数据类型,如integers, decimal

numbers, dates, 和 characters。

 

例如,一个要素类以DBMS表的形式存储。每一行代表一个要素,每一行中列描述了该要素的各种特征或属性,表中的某一列存储了该要素的几何形状(如point, line或polygon coordinates)。在上面的实例中,shape字段存储了polygon形状。

在DBMS中大量的列类型用于shape字段。可以是典型的binary large object (BLOB)类型或者是扩展的空间类型,它们能够被一些DBMS所支持。如,ESRI提供了一个空间列类型用于在ArcSDE geodatabases存储要素,支持这种类型的关系数据库有Oracle, IBM DB2, 和Informix。

SQL操作表中的行、列。这些列类型(numbers, characters, dates, BLOB's, spatial types等等)在SQL代数中被认为是对象。DBMS管理这些简单的数据类型和表,同时其他应用逻辑实现更复杂的对象行为和完整性约束。

在关系数据库管理系统中实现更高层次的对象和行为

    开发人员为了实现更高层次的具有行为和逻辑的对象,就需要写应用程序代码去实现它。如,一个组织可能实现如下名为EMPLOYEES的表:

 

上面的表是一个简单的关系数据表,包含行和列。每一列的数据都隶属一个独特的数据类型,如character、date和number,DBMS就是在这个数据类型层次上操作信息的。

然而,简单的给一个DBMS增加这些信息,不会使DBMS变成一个payroll或employee管理信息系统。增加一列名为“Dollars”用于存储带两位小数的数值,并不意味着将一个DBMS变为一个帐务清算系统。要实现这些需要更高层次的应用逻辑。

实现支持雇佣行为的逻辑例子是雇用、实现薪水增长、员工辞职、晋升和奖金管理。业务对象被建模为雇员和他们的姓名、薪水和雇用日期,为了实现这些对象的行为和完整性需要更复杂的和聚焦的应用逻辑。

相似的业务对象也普遍应用于GIS。如,topologies, networks, linear referencing systems, raster catalogs, annotations, terrains, map layers等等,都是高级对象用于实现GIS的行为。

对于其他的DBMS应用,具有空间属性类型的表是对他们自己的GIS应用是不够的。简单的DBMS列类型和geodatabase应用对象如topologies对建立地理信息系统是必须的。

23 应用逻辑属于什么?

用户可以用很多方法实现这种高层次的逻辑。例如,应用逻辑可以按如下被实现:

DBMS中的Stored procedures和database triggers;

扩展DBMS的数据类型;

建立一个单独的应用逻辑层用于操作表中的行和列类型。

在过去的二十年中不计其数的DBMS实现已经证明使用应用逻辑层对于高级应用是一

个明智的选择。如,通用的customer information systems (CIS), enterprise resource planning (ERP) systems和帐务清算包都是在应用逻辑层实现了高级的应用,它提供了更多的开放性和可扩展性,高性能操作,丰富的工具包和大大的灵活性。

用户通过应用逻辑层与系统交互,执行版本管理,实现大量的操作,仅在focused activities中使用SQL。

分离的应用逻辑层置于数据层之上允许相同的逻辑被应用于DBMS,files或其他的数据存储格式。这使得这种体系结构更开放。如,在ArcGIS中geodatabase的应用逻辑层也可以用于读取和操作所有的地理数据源CAD data, shapefiles, MapInfo data, Intergraph GeoMedia files等等。

24 Geodatabaseobject-relational的结构

Geodatabase采用两层结构:数据存储层和应用层。数据存储层是将GIS数据存储为File、XML、DBMS等多种格式,而应用层则是维护数据的高级逻辑和行为,例如Feature Classes、Raster Dataset、Topology、Network、Address Locators等等。

多层的geodatabase体系结构有时被称为object-relational模型。

 

Geodatabase管理地理数据集的功能由ArcGIS软件和DBMS共同实现。管理地理数据集功能的某些方面,如disk-based存储,属性类型的定义,查询处理及多用户版本处理都被委托给了DBMS。GIS应用程序保留了一些功能,如定义具体DBMS的schema,用于表达各种各样的datasets和domain-specific逻辑,以保持基本记录的完整性和有效性。

实际上,DBMS作为一种存储地理数据集的实现机制而被使用。但是,DBMS并没有完全定义地理数据的语义。因此可以认为:geodatabase采用两层体系结构,数据存储层和应用层,在数据存储层实现数据存储和检索,在应用层实现高层数据完整性和信息处理。

在其他高级DBMS应用中geodatabase也可以通过这种两层应用结构而实现。Geodatabase对象在DBMS表中以行的形式存储,要素行为由geodatabase应用逻辑提供。

所有的ArcGIS应用与geodatabase的这种通用的GIS对象模型通信,而不是实际的基于SQL的DBMS instance。Geodatabase软件组件实现了这种通用模型的行为和完整性规则,并转换数据请求到合适的物理数据库设计。ArcSDE软件提供了ArcGIS和DBMS之间的一个通用网关。

25 Geodatabase在关系数据库存储

    在geodatabase的核心是标准的关系数据库模式(一系列DBMS表、列类型、索引等等)。这种简易的物理存储与宿主在应用逻辑层的高层应用相协调,并受它们的控制,应用层可以是ArcGIS Desktop、嵌入式ArcGIS engine logic、或者ArcGIS server。

这些应用中都包含用于定义通用GIS信息模型的geodatabase对象,并且为所有的GIS应用程序和用户所共享。Geodatabase对象的目的就是暴露高层GIS应用模型给客户端,选择合适的存储模型存储应用模型的具体实现细节,如存储在标准的DBMS表中、file geodatabases, 和 XML 。

Geodatabase的存储包括基于每个地理数据集的schema和rule,还有简单的空间数据和属性数据的表存储。

Geodatabase的schema包含定义、完整性规则和地理数据集的行为。这些具体包括要素的properties、topologies, networks, raster catalogs, relationships, domains等等。Schema保存在DBMS的geodatabase元数据表集合中,这些元数据定义了地理信息的完整性和行为。

空间表达要么以矢量要素或栅格数据集的形式用传统的二维表来存储。例如,一个DBMS表可以存储一个要素类,表中每一行代表一个要素。每一行的Shape列都保存了geometry或者是要素的shape,shape列通常保存的geometry是这两种列类型中的一种:

BLOB column type

spatial column type,如果DBMS支持它

要素类是相同类型要素的集合,具有相同的几何类型,如点、线或多边形,具有相同的属性列集合,要素类通常可以由一个独立的表管理。

栅格和影像数据集同样也由关系表存储和管理。栅格数据通常比较大,存储的时候需要一个Side Table来存储,将栅格数据集切为小片,或者Blocks,存储在Raster表中,通过Side表的每一行记录去记录栅格中的每一个Block。

列类型存储矢量和栅格的geometry随着数据库的不同而不同。当一个DBMS支持空间类型扩展时,geodatabase可以使用这些类型来存储空间几何形状。ESRI也参与了很多扩展空间SQL,如作为SQL 3 MM Spatial和OGC Simple Features SQL specifications的主要创作者。ESRI不仅关注支持独立的Oracle Spatial types,同时也支持这些类型,使用DBMS的标准来存储geodatabase。

目前,支持geodatabase的含有空间类型的DBMS有三种:

使用ESRI 的spatial type的Oracle或Oracle Spatial type

使用Spatial Extender Geometry Object的IBM DB2

使用Spatial DataBlade Geometry Object 的Informix。

26 Geodatabase的事务管理

事务是对数据库变动的记录块。GIS 数据库, 像其它数据库应用一样, 必须支持执行数据完整性和应用行为的更新事务。在很多情况下,用户可以使用DBMS的事务处理框架来管理数据编辑和geodatabase的更新。

但是,GIS用户普遍有具体的专业事务处理要求,其中最重要的就是这些事务要跨越很长的时间(有时是几天和几个月)。

另外,大多数GIS编辑包括协调(orchestrating)多个表中的多行变化和以单独的统一的事务管理这些变化,用户需要能够撤销或重做这些变化。编辑过程可以跨越几个小时甚至几天。通常编辑过程必须是在与中央共享的数据库断开的状态下进行操作的。

由于GIS工作流过程可以跨越几天或几个月,GIS数据库必须为日常的操作保持持续地可用,每个用户可能有共享GIS数据库的个人视图或状态。在一个多用户的数据库中,GIS事务必须由DBMS的短事务处理框架管理。ArcSDE在简单DBMS事务处理框架管理高层次、复杂的GIS事务的操作中,扮演着关键的角色。

在很多情况下,GIS用户选择长事务工作流是必须的,这样才有可能多用户的DBMS的使用和用ArcSDE来管理中央数据库的更新。下面是一些需要使用长事务处理模型的GIS数据编辑工作流的例子:

Multiple edit sessions-一个单独的GIS数据库更新需要大量的变动,这些变动跨越

多个编辑过程,可能是几天或几个星期。

Multi-user editing-多个用户通常需要同时编辑更新相同的空间要素。每个用户都

需要操作私人化的数据库状态,只关注个人的更新情况而忽略其他用户的更新。最后,各个用户提交各自的更新并与其他用户协调更新以确认更新,解决所有冲突。

Checkout/check-in transactions-给特定区域或地区的某个计算机签出(check out)

数据库的一部分通常是必要的,它在与数据库断开的状态下进行信息的更新操作,这种情况可能持续几天甚至几个星期的,这些更新最后必须提交到中央数据库。

History-有时候保存一个GIS数据库每一个要素的历史版本是很有利的,甚至是

在一个特定版本已经被更新后,保存retired和changed要素的复本在一个历史文档数据中或追踪一个独立要素的历史,例如,在一个国家地图数据库中parcel lineage的更新。

Transfer of change-only updates-企业级的数据库和空间数据基础设施的信息被组

织内或跨组织共享的,它们合作实现更新操作通过互联网以定义明确的XML达到共享。

Distributed geographic database replicas-一个区域数据库可能是某一特定地理区域

的中央GIS数据库的部分拷贝。定期地,两个数据库必须通过交换更新以达到同步。

Loosely coupled replication across DBMS's-通常地,GIS数据必须在一系列数据库

复本(replicas)中保持同步,每一个复本操作其本地的数据库进行更新。这些数据库只有定期地通过互联网连接。更新按照预定的原则从一个数据库复本转移到其他的数据库复本,保持它们内容的同步。大多数情况下,DBMS是不同的,例如,可以在SQL Server, Oracle, 和IBM DB2进行复制数据集。

Geodatabase的事务模型――版本

Geodatabase管理一些GIS工作流的机制就是保持多个状态,并且保证地理信息、规则和行为的完整性。从字面意思来理解,版本就是记录独立要素或对象的修改、增加和删除的各种状态。每一个版本就是明确记录了每一个要素或对象的行状态,同时还包括一些重要的事务处理信息。任何数量的用户可以同时操作和管理多个版本。

版本可以使所有的事务处理随着时间以数据库的一系列变化而记录。这意味着各个用户都可以操作geodatabase的多个视图或状态。它的目标就是开放的、高性能的多用户访问。例如,系统必须高速运行,并且必须支持含有成千上万的记录的数据集在数千个用户并发访问时的使用。

Geodatabase基于版本的事务模型相对简单――更新被记录在变化的表中。

版本在两个delta tables明确地记录了geodatabase对象状态:Adds table和Deletes table。简单的查询用于对任何想要的geodatabase状态进行视图;例如,实时对一个点的数据库状态进行视图或特定用户的当前的编辑版本。

ArcSDE在版本化的geodatabase应用中扮演着关键的角色,用于提供对同一或不同的DBMS的长事务管理。

 

上面是一个例子,一个parcel(number 45)被更新为parcel(number 47)。利用版本,原来的parcel被保存在Deletes table中,新的parcel被保存在Adds table中。其他的版本信息被记录到meta tables中,如时间和更新序列、版本名称、每一个更新的state ID。每一个版本都有其安全措施和访问优先权。

大量的更新会不利于每个版本的,当用户编辑数据时,他们需要连接操作更新的版本。当用户准备与其他的用户共享更新时,就需要执行冲突协调和提交编辑操作,保存在更新版本中的编辑将被提交到默认(Default)的版本,在对冲突的解决方案中确认和协调那些潜在的冲突。

27 Geodatabase XML

Geodatabase XML

Geodatabase XML代表了ESRI的geodatabase和外部系统之间的开放的信息交换机制。ESRI以XML specification公开了全部的geodatabase的schema和content,并且提供了实现例子解释用户如何在不同类型的系统中共享数据更新。

地理信息的XML交换很简单地使用了geodatabase XML specification。外部应用程序可以接受的XML data streams包括以下几种:

交换完全无损数据集;

交换简单要素集(如shapefile 的交换);

通过使用XML streams在geodatabase和外部的数据结构之间传递更新和变化,实

现change-only记录的交换;

Geodatabase XML不仅是所有ArcGIS用户,也是外部用户共享数据的最基本的交换机制。

在ArcGIS中可以创建三种类型的XML documents:a Workspace document, a RecordSet document, 和 a Data Changes document。

Geodatabase 的XML workspace document

XML workspace document保存了一个geodatabase中所有内容或其子集。XML workspace document包含了所有的schema信息,数据是随意的。

XML workspace document用于共享schema信息,交换数据集和它们的所有内容,交换数据集和与它们相关的所有数据元素。

Schema、relationship和behavior信息作为WorkispaceDefinition section的部分导出,包括简单的用户要素数据、网络和拓扑、网络连接性和拓扑规则、简单的复合关系类和其他任何与地理数据集相关联的信息。因此,所有与geodatabase相关联的行为被存储,当XML documents被导入时被再创建。

XML workspace document包含两个元素:WorkspaceDefinition 和 WorkspaceData。

 

使用WorkspaceDefinition 和 WorkspaceData,XML workspace document可以包含geodatabase的schema。与实际数据分开的定义提供了一些好处。一个软件代理仅能读取workspace document的定义部分了解它所包含的,使数据部分可选,workspace document仅能用于转换schema信息。

对表和要素类的来说,在定义部分中数据元素的名称和数据部分中的表数据名称是一致对应的。其他数据集,如topologies, geometric networks, 或 要素数据集,仅在定义部分中出现(它们不能导出数据)。

Geodatabase的RecordSet document

Geodatabase的RecordSet document用于从一个独立要素类或表中以简单要素或表记录导出为行集合。

导出到一个RecordSet document相当于导出到一个shapefile文件。行集合以记录被导出,并且没有附加的geodatabase-related信息被写到输出文件。

例如,topologies和其他要素数据集信息将不会被导出,关系类也不会被导出。

 

 

GeodatabaseXML Data Changes document

作为geodatabase事务和版本管理的一部分,用户需要共享和操作change-only记录集。XML Data Changes document用于共享geodatabase之间、geodatabase和外部系统之间的变化和更新。要做到如此仅能通过分发变化,可以通过geodatabase的版本追踪这些变化。

ArcGIS的离线编辑框架允许将数据库中的数据签出到一个单独的geodatabase中,然后在与父数据库断开连接的状态下对数据进行编辑。一旦编辑完成,就可以导出变化(并不是所有的数据)到XML file。这个XML file可以随后用于签入变化到父数据库中。

这也是geodatabase replication关键的一部分。

XML Data Changes document的基础信息是UpdateGram,在UpdateGram中只有变化可以作为XML document被传递。

 

在ArcCatalog和Geoprocessing中使用geodatabase XML

在ArcGIS中,ArcCatalog和 Geoprocessing框架包含大量的功能,用于导入和导出地理数据。在ArcGIS中,用户可以用Geodatabase XML执行的操作包含以下几种:

共享geodatabase的 schemas;

复制整个geodatabase或其子集,如要素数据集和所有相关的信息集合;

复制独立的要素类,表或栅格数据;

跨多个geodatabase 复本同步其内容。

例如,使用ArcCatalog,通过在一个geodatabase或要素类上单击右键,创建一个XML

Workspace Document,这个Document可以用于共享一个geodatabase 的schema或者复制其内容、规则和行为到另外一个geodatabase。

 

在ArcGIS中,使用geoprocessing,也可以执行一些操作实现跨geodatabase同步和共享变化。

  评论这张
 
阅读(378)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017