在大多数情况下,人们会误以为地理数据库只是一种地理空间格式,允许您执行空间查询。这真是令人难以置信的简化。
哎呀,我以前常常会自己犯这个错误-直到有一天,我听到Scott Morehouse解释了GeoDatabase背后的原理。他是能够以非常抽象的方式思考,从高处上升然后又很快下降,非常实用,从而避免建筑宇航员遇到问题的人之一。
要了解什么是GeoDatabase,您需要查看信息模型的定义:
软件工程中的信息模型是概念,关系,约束,规则和操作的表示,用于为选定的话语领域指定数据语义。它可以为域上下文提供信息需求的可共享,稳定和有组织的结构。
GeoDatabase只是支持地理概念的信息模型的ESRI定义。例如,此信息模型支持诸如拓扑之类的概念;以及与之关联的所有规则,操作和数据语义(例如,允许重叠的内容,拆分后发生的事情,编辑如何影响共享同一边的其他功能,等等)。
ESRI GeoDatabase信息模型有多种实现方式,可以分为两种:
单用户地理数据库:
- 个人地理数据库:建立在“ .mdb” MS Access格式之上。
- FileGDB:建立在ESRI创建的专有格式(“ .gdb”文件夹)之上
多用户地理数据库(又名企业地理数据库):
这些是ArcSDE中间件支持的数据源。
- PostgreSQL的
- SQL服务器
- 甲骨文
- DB2
- Informix
- 等等
ArcSDE的目的也被误解了。“ SDE”经常与GeoDatabase混淆-在最坏的情况下,这些术语可以互换使用;一个可怕的错误。过去,ArcSDE(当时简称为SDE)被创建为充当数据抽象层。您可以从Scott Morehouse(1999)的一本非常古老的USENET新闻中找到ArcSDE的简单描述。该帖子的一则片段说:
SDE将空间处理推迟到DBMS。如果基础数据库系统根本没有空间支持,则SDE将实现所有空间功能。如果基础数据库具有某些功能,则SDE将实现某些功能,并将其余功能交给数据库引擎。为了获得最佳性能并利用核心数据库技术,我们尝试将尽可能多的功能推迟到数据库中使用。
这意味着与基础数据源进行交互时,GeoDatabase使用ArcSDE,但它对GeoDatabase抽象一无所知,例如关系,域,地形,地籍结构,逻辑示意图数据集等。它只是用来简化各种底层数据存储的编程。
这就是为什么如果要处理GeoDatabase级别的抽象,然后尝试通过ArcSDE(通过API或arcsde命令行可执行文件)执行操作,则可能会遇到问题。(我可以把这句话扩大吗??)
至于每个不同的GeoDatabase实现限制,它通常取决于基础存储。
个人GDB受到2GB mdb(访问)限制的约束。FileGDB并没有此问题,因为它是为了摆脱此限制并与UNIX兼容而创建的。
Personal GDB和FileGDB都是单用户。所以您没有任何版本控制。GDB复制是在版本控制的基础上实现的,因此它仅是所有多用户地理数据库(ArcSDE数据源)的功能。
拓扑,注释,表示形式类,域,地形等都是不需要多用户支持的GeoDatabase概念,因此可在GeoDatabase信息模型的所有实现中使用。
至于每个GDB实现的用法,取决于您的需求。因此,对于大多数(但不是全部)用例,都有一种GeoDatabase。
我希望这一点很清楚。