内容简介
     本书是世界级Oracle S patial专家Ravi K othuri、Albert Godfrind和Euro Beinat的力作,旨在向您提供空间信息管理方面的概念知识和实用技能,帮助您成为该领域的专家。书中涵盖了Oracle 数据库中空间信息管理的所有内容。主要阐述了空间信息管理的主要概念,Oracle Spatial的架构,以及大量用于管理空间数据的函数和操作。详细描述了Oracle Spatial所提供的用于存储、检索、分析和可视化空间信息的工具。本书还提供了丰富的样本数据、例子和提示,以帮助读者方便地将上述概念和工具结合到实际应用中。 全书结构合理清晰,内容全面丰富,示例贴近实际,适用于所有DBA和应用系统开发人员。◆ 提供了空间信息管理方面的概念知识和实用技能,帮助您成为该领域的专家。◆ 以范例为教学与讲解的主线,是学习管理Spatial Data的最佳教材。◆ 详尽的程序注释与清楚的概念说明,让Oracle Spatial程序设计的技巧一览无余。
各种组织越来越多地发现它们的信息资产的绝大部分都包含有空间信息成分。例如,客户、货物、工厂、员工、竞争对手的位置等。合理地运用这些信息对减少运营成本、提高生产效率和提高服务质量是非常重要的。开发利用空间信息所带来的效益是显而易见的,并且许多组织正在研究获取这些效益的不同方式。 我们已经参与了许多将空间信息管理用于公共和私营组织的项目。写这本书的想法来源于这些项目以及和参与这些项目的软件开发者和设计师关于空间信息的讨论。我们注意到,成功的空间信息管理项目所需的知识和技能与经常参与大型IT和数据库开发的技术人员的一般背景有明显的差距。 这些人员中的绝大多数都有着不同领域的背景,如数据库技术、Java、C++、PL/SQL、数据模型、安全性、可用性和可扩展性。然而,只有少数人有空间信息管理方面的经验。对于大多数人来说,使用空间数据是一项全新的工作。我们很容易发现,像空间对象、地理编码和地图投影法等术语对大多数人来说都很陌生(当然,空间信息管理并不是处理来自空间探测器的信号的)。像Google Maps和Google Earth这样的工具已经向大多数用户介绍了少数这些概念,但是大多数空间技术仍是一个深奥的题目。 空间技术知识的缺乏看来是一种普遍情况。即使在广泛的Oracle专家社区中,Oracle Spatial技术对多数人来说也还是一个相对较新的领域。对于我们这些工作在ICT、空间信息学、管理学和传统地理学、地图学之间接口的人来说,对这个差距的认识尤其明显。这个差距对私营组织和政府组织传播空间信息管理形成了一个明显的障碍,而这些私营组织和政府组织对空间应用的需求却在稳步增长。此外,尽管地理信息系统(GIS)通常作为一个独立系统被广泛地应用于管理空间数据,但绝大多数的空间数据都存储在企业数据库中。通过向这些数据库中添加空间智能,我们或许能帮助组织发现它的一个最大的未开发的新增值库。 Oracle Spatial 已经成为给数据库提供空间智能的最稳定的解决方法之一。除了广泛安装的Oracle 数据库之外,Oracle Spatial 就像管理其他数据类型一样管理空间数据,因此原则上有经验的数据库开发者和设计师会很容易地扩展到空间信息管理领域。使用MapViewer技术,Oracle Spatial 同样使商业应用中地图的创建和集成变得容易。 尽管有大量的关于空间信息管理和GIS的可用书籍,但仍缺乏一些适用于无任何空间信息管理背景的Oracle 开发者或设计师的有用资料。这导致了过于简单地使用Oracle Spatial以及一些忽视Oracle Spatial强大功能的非理想的实现。除用户参考指南外,大多关于Oracle Spatial的知识分散在一些技术文章中,更有甚者,分散在具有专业知识和精通工具的人的大脑中。 我们写这本书的动机是给开发者和设计师提供一个参考源,引导他们掌握Oracle Spatial并使他们的技能达到专业水准。这本书不能取代技术参考。相反,它给出了概念、例子、案例研究和技巧来帮助你充分理解Oracle Spatial 的潜能,并以更高的水平使用它。我们不希望本书只是让你熟悉Oracle Spatial,我们希望你成为Oracle Spatial专家。 本书涵盖的内容 本书涵盖了Oracle数据库中空间信息管理的所有内容。尤其是: ● 介绍了空间信息管理的主要概念以及它们怎样与数据库概念和工具相关联。 ● 描述了Oracle Spatial所提供的用于存储、检索、分析和可视化空间信息的工具。 ● 介绍了例子、应用和案例研究,帮助你很方便地将上述概念和工具结合到你的应用中。 虽然大多数概念上的讨论一般都具有有效性,但本书是介绍空间信息管理—— Oracle Database 11g产品的最新版本。 书中各章节着重介绍了Oracle Spatial技术在电子商务中的应用。与这些应用相关的所有特性都将进行详细的讨论,并附有本书提供的基于样本数据的可运行例子。附录涵盖了与高度专业化的GIS应用相关的题目,并为每个题目提供了一个总体的概述,要想了解细节,请参考Oracle文档。 以下是本书每章所包含的主要内容: ● 安装:前言之后的下一节,将描述如何安装Oracle Spatial和运行本书中代码例子所需的实例模式(schema)。然后描述特定的电子商务应用以及本书许多例子都用到的相关数据集。所使用的数据包括地图数据(例如,州的边界、河流、建设区),地理编码数据(例如,用x、y坐标表示的地址列表),网络数据(例如,用于计算旅行距离和提供导航说明的公路网络)和特定应用中的数据(包含客户、商店/分店和竞争对手表的集合)。这些数据涵盖了美国的部分地区,如华盛顿、旧金山,以及使用典型的美国术语和符号(如县(county)、州际公路(interstate)等)。但这并不失一般性—— 同样的例子可用于任何类似的数据集。 ● 第1章:空间信息管理:本章描述了如何在不同的行业部门中使用空间信息以及概述了管理空间/位置信息所需的典型功能。我们用一个选址例子来阐述空间信息管理的不同方面:用合适的类型表示和存储空间数据以及对存储的空间数据的分析功能。然后讨论使空间信息管理成为可能的系统,比如,GIS以及它的演化版本。最后介绍使用Oracle Spatial进行空间管理的好处。 ● 第2章:Oracle Spatial概述:Oracle Spatial技术套件使得Oracle中的空间信息管理成为可能。这一章包括该套件的概述、架构以及功能。概述中包含了对Oracle Spatial不同特性的简明描述,包括使用SDO_GEOMETRY进行存储、使用空间操作符进行分析以及使用Oracle MapViewer进行可视化。我们也阐述了这个功能是如何被产品化为Oracle不同版本中的组件。最后,我们介绍了典型的Oracle Spatial安装过程。 ● 第3章:Location-Enabling你的应用程序:在这一章中,我们考虑怎样用位置信息扩大现有的应用表。为此,我们介绍了一个在本书其他部分的例子中也用到的电子商务应用。还描述了在Oracle表中存储地理数据时需考虑的几种设计选择。Location-enabling一个应用程序需要对元数据表进行适当的填充以便在空间表上进行空间处理。本章最后介绍了填充元数据的细节。 ● 第4章:SDO_GEOMETRY数据类型:本章着重介绍如何使用Oracle中的SDO_ GEOMETRY数据类型来对位置信息进行存储和建模。这个类型能存储各种各样的空间数据类型,如点、线串、多边形、面和立方体等几何体。我们详细介绍了SDO_GEOMETRY的结构以及如何用它的不同属性和值来存储不同类型的几何体数据。然后我们展示了怎样通过为几何体构建SDO_GEOMETRY对象,来对道路、地产边界和城市建筑物进行建模。 ● 第5章:空间数据的加载、传输和验证:在这一章中,我们描述了填充含有SDO_ GEOMETRY列的Oracle表的不同方法。这些表可能是电子商务应用中的一部分,或是CAD/CAM、GIS、GPS、无线或者远程信息处理应用中的表。我们解释了怎样使用Oracle Import工具导入本书中的数据。也描述了其他的一些用于在Oracle数据库和/或其他格式之间传输数据的工具、函数/程序。最后,我们介绍了怎样验证已载入的SDO_GEOMETRY对象和如何更正一些无效的对象。 ● 第6章:地理编码:本章涵盖了Oracle Spatial中地理编码器的功能。首先我们通过介绍地理编码概念和地理编码过程来理解从地址到Oracle Spatial对象的转化。然后我们讨论如何建立一个数据目录使得你的应用程序可以进行地理编码。该目录用于对一个指定的地址推断和确定其位置。最后,通过使用Oracle中地理编码器的不同函数或API,介绍了如何将位置列添加到应用数据中。 ● 第7章:在应用程序中操作SDO_GEOMETRY:高级应用程序开发人员经常需要在他们的应用程序中访问和操作空间对象。本章介绍如何在程序语言,如PL/SQL和Java中操作SDO_GEOMETRY类型,同时也简要介绍了一下C和Pro*C。通过大量的代码示例,我们还研究了怎样对几何体进行读取、解码、构建和写入。 ● 第8章:空间索引和操作符:在这一章和下一章中,我们将描述如何使用空间信息执行邻近分析(proximity analysis)。这一章专注于空间索引和空间操作符。空间索引保证了执行邻近分析查询的有效响应时间。本章中介绍空间索引的概念和它们的创建。然后我们描述了Oracle Spatial所支持的用于对索引表执行空间分析的不同的空间操作符。概述了它们的语法和语义并且详细介绍了不同的操作符。还介绍了能保证空间操作符得到快速评价的秘诀。本章最后讨论了对大型空间存储很有用的一些高级空间索引特性。 ● 第9章:几何处理函数:本章讨论了几何处理函数,简称为空间函数。与空间操作符相比,这些函数不需要空间索引,而且能提供比带有空间索引的空间操作符更详细的分析。它们还可以出现在SQL语句的SELECT列表和WHERE子句中。我们会依次讨论每个空间函数,包括它们的一些使用技巧。 ● 第10章:网络建模:本章介绍了对空间数据进行建模的另一种方法:基于网络概念的方法。当我们需要计算如路径、旅行距离或基于旅行时间的邻近时,网络是一种很有用的信息建模方法。我们首先描述了建立网络的一般概念和术语,然后讨论了Oracle Network Data Model及其数据结构,最后详细描述了怎样在Oracle中创建一个网络以及如何进行网络分析。 ● 第11章:路由引擎:这一章介绍了Oracle的路由引擎。你还将学习怎样使用Oracle的路由引擎来获得从起始地址到目标地址的详尽的行车路线。 ● 第12章:使用MapViewer定义地图:MapViewer是Oracle中用来可视化存储在空间数据库中的空间信息的工具,它是Oracle应用服务器(Oracle Application Server)的一部分。本章描述了MapViewer并介绍了基本的制图概念,如主题、样式规则和用户控制。我们还介绍了如何安装、部署和配置MapViewer,以及如何构建地图并用Map Builder定义工具把它们存储在数据库中。 ● 第13章:在应用程序中使用地图:这一章展示了如何将创建于空间数据之上的地图集成到商务应用中。我们还展示了怎样利用最近出台的Oracle Maps技术来支持无缝浏览体验和改进地图应用的性能。 ● 第14章:应用实例:在这一章,我们将运用本书所阐述的大部分技术和工具来创建一个集成了空间分析和可视化的简单应用,并展示和剖析这个应用。该应用包含地图和数据显示、地图功能(放大、面板等),地理编码、空间分析和路由功能。我们会介绍这个应用是如何设计和编码的,并评估实现该应用主要特性的部分源代码。完整的源代码可从Apress网站和本书合作站点http://www.Tupwk.com.cn/downpage上下载,详见随后的“安装”部分。 ● 第15章:案例研究:通过描述5个案例,本章阐述了如何使用Oracle Spatial来存储、分析、可视化和集成商务和政府应用中的空间数据。BusNet案例阐述了如何使用Oracle Spatial来管理伦敦的公共汽车网络。P-Info案例描述了一个可为外勤警官提供location-enabled信息访问的系统。荷兰的有害物质风险仓库案例展示了如何使用Oracle Spatial来为一个危险化学品仓库提供空间功能。美国地质调查局(USGS)的全国土地覆盖可视化分析工具(National Land Cover Visualization and Analysis Tool)表明了怎样使用Oracle Spatial为美国的土地覆盖栅格数据提供访问支持。MilitaryHOMEFRONT案例描述了如何使用Oracle Spatial来存储和访问兴趣点、进行地理编码和路由操作。 ● 第16章:秘诀、常见失误和常见错误:本章描述了一些在location-enabling你的应用程序中有用的秘诀。我们也讨论了一些应用程序开发人员常犯的且很容易避免的失误。最后,我们给出了一些在location-enabling你的应用程序中经常遇到的错误以及如何应对这些错误。 ● 附录A:其他一些空间分析函数:除了第8章和第9章所描述的分析函数之外,本附录介绍了一些针对特殊商务分析需要的分析函数。这些函数可以进行基于瓦片的分析、邻接分析和聚类分析。 ● 附录B:线性参考:线性参考广泛应用于交通运输和公用事业行业。它使用一个参数(度量)在一个线性特性上通过与某些已知点(如起始点)的关系来标识一个对象的位置。本附录首先介绍了线性参考的概念和最常见的一些操作。然后讨论了SDO_LRS程序包,其中包含操作线性参考几何体的所有函数。 ● 附录C:Oracle数据库中的拓扑数据模型:在一些应用如土地管理中,分享和更新多个空间对象间的边界是很普遍的。由于对共享边界的更新,这个过程可能导致数据的不一致。本附录描述了另外一种模型,即拓扑数据模型(Topology Data Model),用于对共享几何体特性的有效管理。我们还介绍了Oracle Spatial中的拓扑建模和在拓扑数据模型上操作的功能。 ● 附录D:Oracle中的栅格数据存储:在本附录中,我们简单地讨论了如何在Oracle Spatial中存储栅格对象。本附录介绍了SDO_GEORASTER数据类型并探讨了怎样在Oracle的数据库中存储栅格数据,也描述了如何操作GeoRaster对象。 ● 附录E:在Oracle中使用点云和TIN进行建模:在本附录中,我们简单地描述了如何在Oracle Spatial中存储大型点集(通常来源于激光扫描)。本附录介绍了新的SDO_POINT_CLOUD数据类型,用于对这些大型点集进行有效存储和检索。最后描述了SDO_TIN数据类型,用来为这些大型点集创建不规则三角网。 本书并没有重复用户指南和安装指南的内容。当你阅读本书时,尤其是运行例子时,强烈推荐你把这些指南放在手边。因为有些情况下,我们会让你从用户或者安装指南中获取细节。完整的Oracle数据库和Oracle应用服务器文档可从Oracle技术网站上找到。与本书相关的Oracle 11g手册如下: ● Oracle Spatial用户指南和参考(Oracle Spatial User’s Guide and Reference) ● Oracle应用服务器,MapViewer用户指南(Oracle Application Server,MapViewer User’s Guide) ● Oracle Spatial拓扑和网络数据模型开发者指南(Oracle Spatial Topology and Network Data Models Developer’s Guide) ● Oracle Spatial地理栅格开发者指南(Oracle Spatial GeoRaster Developer’s Guide) ● Oracle Spatial Java API参考(Oracle Spatial Java API Reference) 本书读者对象 本书的主要读者是熟悉Oracle技术的应用程序开发人员,他们想通过空间信息增强他们的应用。他们通常了解数据库设计、PL/SQL、Java等,但对空间数据和地理信息系统不太了解(甚至一无所知)。 这本书也将吸引对数据库技术的高级特性感兴趣的Oracle通用技术用户。本书逐步介绍了空间信息领域并引导读者从基本的概念到复杂的分析和案例研究。它具有实际动手的风格、丰富的例子和实用的信息。 本书为开发人员开辟了新的应用领域并且促使他们在现有的应用里集成空间方面。同时,如果仅因为本书是全面介绍Oracle Spatial的第一本书的话,本书也应该吸引GIS程序员和用户。本书实际上涵盖了Oracle地理空间技术的所有范围—— 即数据库(Oracle Spatial和Locator)和Oracle应用服务器(MapViewer和路由器)。 如果你是PL/SQL和数据库技术方面的新手,那么我们建议你在读本书之前先花一些时间去熟悉对象关系数据库的语言和主要概念。这本书并非只针对完全的初学者。但另一方面,本书并不假定读者有任何关于空间信息管理的知识。 一旦你开始使用这本书,我们确信你将发现它对建立运行良好的、空间信息增强的应用非常有价值。 版权和不承担责任的声明 Oracle是一个已经注册了的商标,还有Oracle9i、10g、11g。Oracle iAS(应用服务器)和Oracle Spatial也是Oracle公司的商标。 本书中提到的所有其他的公司和产品名仅用于识别目的,它们有可能是其拥有者的商标。 本书中使用的数据专门用于说明本书中的概念,其他任何方式的使用并不被授权。如果没有作者的书面同意,数据集是不能被全部或部分地传递、改变或者修改的。特别地,对NAVTEQ提供的在本书中使用的样例数据,我们推荐你阅读一下最终用户许可协议。这个协议可从获取。通过安装和使用本书提供的数据,你将隐含地同意本协议的条款。 原始代码和数据的作者、出版社和公司不承担由使用本书里的数据而引起的任何后果。作者和出版商并不保证数据是完整的、及时更新的或者正确的。 本书中的大多数图片是基于来自NAVTEQ和DCW的数据并使用Oracle MapViewer而生成的。数据所有者拥有数据的版权。