深入FDO----FDO概念

本文介绍了FDOAPI中关键的数据和操作概念,如要素、模式、几何属性等,以及命令、表达式、过滤器等操作相关概念,为理解FDOAPI提供基础。

在介绍FDO API的用法之前,我们需要了解一些FDO的基本概念,这些概念无论对FDO的理解,还是后续章节的理解都非常重要。

 数据相关的概念

1) 要素(Feature)

要素是对自然界中对象的一种抽象,它直接或间接关联于某个地理位置,例如道路、地块等。一个空间要素具有一个或多个几何属性,例如一个道路要素可以被表示为一条线,一个消防龙头可以被表示为一个点。一个非空间要素没有几何属性,但是关联与一个空间要素,例如一个道路要素包含了一个人行道要素,而人行道要素被定义为一个非空间要素。

2) 模式(Schema)

模式是对真实世界中的对象建模时所使用的数据类型的逻辑描述,它是一种元数据,是数据源中数据的类型模型,例如一个用于对城市道路建模的模式包含了一个“道路”的要素类,这个类具有一个“名称”的属性,要素类“道路”的定义和它的关联类组成了一个模式。

3) 模式覆盖(Schema Override)

模式覆盖包含了覆盖默认的模式映射的规则,例如默认情况下关系数据库类型的FDO Provider会将一个要素类映射到一个相同名称的表,模式覆盖可以将要素类映射到一个不同名称的表,例如映射要素类“pole”到“telco_pol”。

4) 模式映射(Schema Mapping)

模式映射描述了模式元素和数据源物理对象之间的对应关系,例如OSGeo FDO Provider for MySQL将每个要素类映射为MySQL数据库中的一个表。每种FDO Provider的数据物理结构不尽相同,所以模式映射的方式也不尽相同,但是每一种FDO Provider都定义了默认的模式映射方式,通过制定模式覆盖(Schema Override)可以覆盖默认的模式映射方式。

5) 模式元素(Schema Element)

一个模式是由一个模式元素的集合所组成的,一个模式要素定义了一种特定类型的数据,例如一个要素类、一个属性或一个关联(Association)。模式元素之间通过继承和聚合关联起来。

6) 类类型(Class Type)

一个类型是FDO类定义类FdoClassDefinition的一个实例,用于代表空间要素或非空间要素的属性。由于FDO中的类和面向对象编程语言中的类具有相同的名称,非常容易造成误解,所以在本书中我们尽量使用要素类这个概念,但是大家要明白类和要素类并不是同一个概念。

7) 要素类(Feature Class)

要素类是一种用于描述真实世界中对象的模式要素,它包含了一个类名和零个或多个几何属性定义,描述了对象实例的数据类型。

8) 属性(Property)

一个属性是一个类的一个特性,一个类包含了一个或多个属性,例如要素类“道路”有属性“名称”、“车道数目”、“位置”等。一个属性具有某种特定的数据类型,它可以是一个简单数据类型,例如字符串或数值,也可以是由类所定义的复杂数据类型,例如类型“地址”,它由属性“街道名称”、“门牌号”和“街道类型”所定义。FDO支持五种类型的属性:关联(Association)属性、数据(Data)类型、几何(Geometric)属性、对象(Object)属性和光栅(Raster)属性。

9) 关联属性(Association Property)

FDO API中,类FdoAssociationPropertyDefinition用于对两个类之间的对等关系进行建模,它类似于数据库中两个表之间通过主键和外键所建立的关联关系,支持基数(Cardinality)设置(一对一或一对多)、级联锁定(Cascading Locks)、删除规则(Delete Rules)等。FDO的过滤器(Filter)可以基于关联属性,通过FdoIFeatureReader::GetObject(…)方法可以读取关联属性。

10) 数据属性(Data Property)

数据属性是一种非空间类型的属性,数据属性的实例可以包含一个类型为booleanbytedate/timedecimalsingledoubleInt16Int32Int64BLOB(二进制大堆型)CLOB(字符大对象)的值。

11) 维度(Dimensionality)

FDO中包含两种类型的维度,即形状维度和坐标维度。形状(Shape)维度由枚举类型FdoGeometricType所定义,FDO支持点(Point)、线(Line)、面(Surface)、实体(Solid)四种类型的形状,它们的形状维度分别为0123。坐标维度由枚举类型FdoDimensionality所定义,它定义了XYXYZXYMXYZM四种类型的坐标维度。

12) 几何属性(Geometric Property)

一个几何属性的实例包含了代表一个几何对象,几何属性的定义指定了几何对象的形状和坐标维度。一个几何属性定义允许同时支持多种形状,例如一个几何属性对象可以是一个点,另外一个可以是一条线,默认情况下几何属性定义允许四种形状的任意结合。不过有些数据源并不具备能力,例如每个SHP文件只支持一种类型的几何对象,如果一个SHP文件中存放了点数据,就不可以存放线、面或实体数据。所有几何属性的实例必须具有相同的坐标维度,默认的坐标维度为XY

13) 几何对象(Geometry)

几何对象有一个系列坐标值所组成,枚举FdoGeometryType定义了几何对象的类型。目前,FDO并不支持实体(Solid)类型的几何对象。

l  Point

l  LineString:由一个或多个相连的线段所组成的集合。

l  CurveString:由相连的线段或圆弧所组成的集合。

l  Polygon:由一个外环和零个或多个内环所组成的面,每个环都是闭合的,并且由一些相连的线段所组成。

l  CurvePolygon:由一个外环和零个或多个内环所组成的面,每个环都是闭合的,并且由一些相连的线段或圆弧所组成。

l  MultiPoint:多个点。

l  MultiLineString:多个LineString

l  MultiCurveString:多个CurveString

l  MultiPolygon:多个Polygon

l  MultiCurvePolygon:多个CurvePolygon

l  MultiGeometry:一个异构的几何对象集合,这个集合中可以包含以上任何类型的几何对象。

上述许多类型的几何对象都是使用到了线段和圆弧,线段由两个坐标值所定义,代表一段直线段,圆弧由三个坐标值所定义,第一个点和第三个点代表圆弧的起点和终点,第二个点代表圆弧段的中间点。FDO将线段和圆弧统称为弧线段(Curve Segment)

调用方法FdoIConnection::GetGeometryCapabilities()可以得到某个FDO Provider所支持的几何对象类型和坐标维度。

14) 对象属性(Object Property)

对象属性是一种复杂类型的属性,由一个类定义所定义,它可以用作一个类的属性,也可以用于定义另一个对象属性,例如在介绍属性时我们提到类型“地址”就是一个对象属性,它由三个属性“街道名称”、“门牌号”和“街道类型”所组成。一个对象属性的值既可以是一个对象,也可以是一个对象集合,例如“地块”要素类中“地址”属性的值是单个对象,“电子设备”要素类中“检查记录”属性的值是一个集合,包含多个对象。

15) 光栅属性(Raster Property)

光栅属性定义了处理一张光栅图像所需的信息,例如每个像素多少个比特,图像的像素高度和宽度等。

16) 空间上下文(Spatial Context)

空间上下文描述了坐标系、单位、空间范围等要素的元数(Metadata)任何几何对象必须关联与一个空间向下文。

 操作相关的概念

1) 命令(Command)

一个FDO命令代表了一种针对数据源的操作,例如Select命令用于查询要素,UpdateDelete命令用于更新要素。FDO预定义了一系列命令用于执行一些通用的、常见的操作,每种FDO Provider也可以自定义一些新的命令以执行和Provider相关的操作。

2) 表达式(Expression)

表达式用于创建一个过滤器,它是过滤器或一个更大的表达式的子句,例如过滤器“Lanes>=4 and PavementType= 'Asphalt'”由两个表达式组成。

3) 过滤器(Filter)

过滤器用于选择数据源中的数据的一个子集,例如我们可以定义一个过滤器,选择要素类“道路”中在某个位置200米范围内两个车道的所有道路要素。许多FDO命令需要指定一个过滤器,例如Select命令使用过滤器查询符合过滤条件的所有要素,Delete命令使用过滤器删除符合过滤条件的所有要素。

4) (Lock)

在更新数据源中的数据时,用户可以锁定这些数据,获得修改它们的控制权,避免其他用户修改这些数据。FDO支持两种类型的锁:事务锁和持久化锁。事务锁是一种临时锁,它只有在事务提交和回滚之前发挥作用;持久化锁会一直发挥作用直到用户对这些数据解锁。

5) 事务(Transaction)

一个事务是指由一系列数据操作组成的一个完整的逻辑过程,它具有如下特性:

原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:在事务开始之前和事务结束以后,数据的完整性限制没有被破坏。

隔离性:两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。

持久性:在事务完成以后,该事务对数据所作的更改便持久地保存在数据库之中,并不会被回复。

以恒浪网站整合系统为核心,完美整合风讯(Foosun)+动网(DVBBS)+OBLOG博客(OBLOG)。它具有恒浪网站整合系统的强大整合功能;风讯网站内容管理系统完善的信息管理和发布管理功能;动网论坛的强大论坛功能;OBLOG的强大日志功能。 一、整合文件完整包安装步骤:   1程序下载,下载以后,安装在根目录(推荐安装在根目录)   2修改数据库路径或名称:请修改conn文件夹里的config.asp的数据库路径和名称。 3登陆后台进行恒浪整合设置。本地登陆恒浪后台:   http://127.0.0.1/manage/admin_login.asp用户名:admin密码:admin888 管理认证码初始值为“HoWave”,为确保安全,请尽快修改manage/Admin_ManageCode里的ManageCode的值。   4首先修改网站密钥设置为复杂字符,十位以上,接着修改后台密钥设置为复杂字符也是十位以上,不能与网站密钥相同。如果目标系统与恒浪整合系统不在同一空间请手动设置目标系统的inc/upiconfig.asp的网站密钥的后台密钥与恒浪整合系统设置对应密钥相同的值。 5修改manage目录地址。默认是“manage/”,若你需要更改manage名称和路径,请相应修改,如放到二级目录ABC(推荐放在根目录下),则应填写为“ABC/manage/”   6修改前台和后台接口路径。 第一种情况:你的整合目标系统都在同一空间,那么设置格式如下以动易和论坛为例,假设动易接口inteface.asp放在根目录下,则接口路径为“/interface.asp”,论坛接口文件放在二级目录bbs下,接口路径为“/bbs/interfac.asp” 第二种情况:你的整合目标系统和恒浪整合系统不在同一空间(跨域名),那么前台接口路径就要填写完整的接口路径地址如:http://bbs.abc.com/interface.asp,并手动修改该系统的inc/upiconfig.asp的hl_Url为你的主站地址,Manage_Url为恒浪整合系统的manage目录地址,修改link的值为2,并删除<!--#includefile='../../manage/conn/HL_Datalink.asp'-->这一行代码,否则会出错。    7针对博客的激活,若站点开了二级域名,多域名,则需要进行以下的操作,若没有开启二级域名或本地测试或者没有整合博客则可跳过此步骤。 首先要解释什么叫域名?比如你的网址是http://www.ABC.com那么ABC.com则为你的顶级域名。 二级域名则是你的顶级名前加字符和'.'所组成的。如http://bbs.ABC.com,http://blog.ABC.com 那么在你设置了二级域名之后,需要修改的是 1、manage目录下的inc/Upiconfig.asp设\u7f6eConstDomainname='\u4f60\u7684\u9876\u7ea7\u57df\u540d' 2、修改blog里的inc/upiconfig.asp设\u7f6eConstDomainname='\u4f60\u7684\u9876\u7ea7\u57df\u540d' 把constlink=1改为constlink=2 把<!--#includefile='../../manage/conn/hl_datalink.asp'-->删掉 修改你的HL_URL为你的主站的URL地址 检查你的SecurityKEy,AdminSecurityKey的值是否与恒浪后台设置的值一致。    二、下载接口文件覆盖或升级接口安装步骤 请先检查你要整合的目标系统的版本与恒浪提供的接口系统的版本和更新时间相同,若不相同请升级相应的版本. 升级说明: 对于已经下载使用V4.05build0609版本的用户,只需将更新文件覆盖回原文件即可!   1 下载完整的接口文件包,里面应包含有该系统的接口文件interface.asp/a_interface.asp,inc/upiconfig.asp这些是恒浪整合的系统文件,其余的是对该系统修改的文件。     2 把接口文件夹的文件复制到对应的目标系统根目录下覆盖。   3 进入管理后台进行接口路径设置。   4 一般BBS,Blog默认是安装二级目录/bbs,/blog,如果不是二级目录,那么就要修改该系统的inc/upiconfig.asp的设置。这里以论坛和博客作为例子,假设将论坛作为根目录,博客放在根目录下的二级目录blog,则首先要在恒浪整合后台设置好相应的路径,接着需要修改论坛的inc/upiconfig.asp,将<!--#includefile='../../manage/conn/HL_Datalink.asp'-->改成<!--#includefile='../manage/conn/HL_Datalink.as
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值