到目前网上有关GIS系统资料很少,而WebGIS这块,不各道大家都用什么,我这里用的是MapGuide 做GIS的显现,后台用的MapWindow 做图层,及管道网的搭建,这是将用页面显示的地理管道信息,
现在碰到一个问题: 用FDO连接SDF文件报一个错误,求助一些GIS高手们,
整理效果是这样的,在这里也将会在博客上发一些有关GIS系统项目中相关技术点,及问题点文章,给大家
1.1.1. FDO的数据结构
Feature(要素): 要素是对现实世界物体的抽象。一个要素直接或间接的关联地理位置信息。一个空间要素具有一个或多个几何属性,比如,一条道路可以抽象为一条曲线,一个消防栓可以抽象为一个点;非空间要素没有几何信息,但它与一个具有几何信息的空间要素相关联,比如一条道路可以包含一个人行道,人行道就是没有几何信息的非空间要素。
Schema(数据框架):Schema是对用于建模现实世界的数据结构的描述。Schema不是数据本身,而是描述数据的数据(即元数据)。例如,一个用于建模城市道路的Schema包含了一个道路类,一个道路类又包含了“名称”属性等,对道路的定义和其他相关的类构成了该Schema。实际应用中,可以将Schema理解为一个与要素相关联的表结构。
FeatureClass(要素类):同类要素的集合构成一个要素类。一个要素类具有相同的Schema,它包含一个名称和一系列属性的定义,包含0个或多个几何属性。
Property(属性):一个要素类包含若干属性的定义。每条属性都有特定的类型,可以是一个简单类型,如string, double等,也可以是一个复杂类型,如地址(地址本身又由一系属性构成比如街名,门牌号等)。
Data Property(数据属性):数据属性是非空间属性。一条数据属性的值可以是以下类型:boolean, byte, date/time, decimal, single, double, Int16, Int32, Int64, string, binary large object, character large object等。
Geometric Property(几何属性):几何属性是一个对象类型,描述要素的几何信息。一个几何属性可以限制为只使用一种形状,如点,也可以使用多种维数形状,如一个对象是点状,而另一个对象是线状。形状的组合也是允许的。默认的几何属性可以表示点、线、面、体中的任何一种。
一个几何属性只可以有一种坐标维数。默认为XY。另有Z值和M值可选。
Geometry(几何形状):几何形状由一系列XY或XYZ坐标点定义。几何形状具体有以下几种类型:
- Point 点
- 线 (一个或多个连接起来的线段, 由一系列顶点的位置定义)
- 曲线 (一个互相连接起来的线段和圆弧段的集合)
- 多边形 (一个具有外边界的表面,可以有0个或多个内环; 内环是闭合的, 连接起来的线段, 由一系列顶点的位置定义)
- 曲线多边形 (一个具有外边界的表面,可以有0个或多个内环; 内环是闭合的, 连接起来的曲线)
- 多重点 (多个点,可以是不相交的)
- 多重线 (多条线,可以是不相交的)
- 多重曲线(多个曲线, 可以是不相交的)
- 多重多边线 (多个多边形, 可以是不相交的)
- 多重曲线多边形 (多个曲线多边形,可以是不相交的)
- 多重几何形状 (包含多种几何形状的集合, 可以是不相交的)
目前FDO还不支持“实体”类型(即三维形状)。
FdoIConnection::GetGeometryCapabilities()可以用来查询特定的数据提供程序是否支持指定的形状类型和坐标维数。
Object Property(对象属性):对象属性是一种复杂的属性类型,可以包含若干个基本类型或对象类型。如前面提到的地址类型就是一个复杂类型。
Spatial Context(空间参考):空间参考是用于描述要素集合的基本元数据和参数信息。空间参考一般包括坐标系的定义,椭球参数,单位,空间范围等。
Data Store(数据存储):数据存储是一个存放对象的容器。数据存储可以包含具有一种Schma或多种Schma的数据(与具体的provider有关)。
1.1.2. FDO数据操作
Command(命令):FDO使用命令的方式对要素进行各种操作,包括访问、更新、查询、分析等。每一个命令对象执行一种特定类型的操作。数据提供程序可以对现有的命令进行扩展并可以增加针对该Provider的新命令。命令执行针对一个特定的连接,也可以被包含在一个事务中处理。
Expression(表达式):表达式用于构造一个过滤器。一个表达式可以是一个过滤器或者一个大表达式的从句。
Filter(过滤器):过滤器用于程序识别数据存储中对象的子集。例如,可以用一个过滤器识别出200米范围内的所有包含2个干球道的道路类型的要素,很多FDO命令使用过滤器来对特定的要素进行操作。
Locking(锁定):用户可以通过锁定排除其他用户对数据的使用,并对该数据进行更新。锁定分为事务锁定和持续锁定。事务锁定是临时的、只在事务范围内生效的锁定。持续锁定一直保持锁定状态,直到用户解除锁定,或其他授权的用户解除锁定。
Transaction(事务):事务使用一定的方式对数据进行更改。对数据存储的更改会被记录在事务的属性里。例如,原子属性表示所有更改是否发生。对数据存储来说,事务把一系列命令当作一个独立的,不可分割的(原子的)更改。所有的命令或者全部执行成功,或者全部取消。程序通过提交让一系列操作生效,或者通过回滚让一系列操作取消。数据存储会自动检测一个事务中执行失败的命令,并自动进行回滚操作。事务具有以下属性:
Atomic(原子的): 一个事务中命令产生的所有更改是否发生。
Consistent(连续的):在保证系统设定参数稳定和其他数据完整性规则的前提下,事务使数据存储保持一个连续的状态,即每一步更改都对外可见。
Isolated(孤立的):事务在提交前,被该用户所作的更改对其他用户不可见。
Durable(持久的):事务成功提交后,会被保存在硬盘上,无论程序损坏还是处理失败,所作更改都不会丢失。