Oracle 10g Spatial:
创建拓扑有两种方式:
1.从edge、node、face数据创建。
2.从spatial geometry数据创建。
会创建一套表:<topology-name>_EDGE$、<topology-name>_FACE$、<topology-name>_HISTORY$。
历史信息表只记录edge或face被分割/合并的信息。表结构:
TOPO_TX_ID 拓扑事务ID
TOPO_SEQUENCE 事务中编辑操作的顺序号
TOPOLOGY 包含被编辑对象的拓扑ID
TOPO_ID 拓扑元素ID
TOPO_TYPE 拓扑类型
TOPO_OP 拓扑操作:I插入,D删除
PARENT_ID 对于插入操作是派生当前拓扑元素的父元素ID;对于删除操作,是结果拓扑元素ID。
创建网络有两种基本方法:
1. 让spatial执行大多数操作。使用CREATE_<network-type>_NETWORK过程,会自动创建必要的网络数据模型表并且插入适当的元数据信息到xxx_SDO_NETWORK_METADATA视图。默认的表名为:<network-name>_NODE$、<network-name>_LINK$、<network-name>_PATH$和 <network-name>_PLINK$。默认的成本列名为COST,默认的几何图元列名为GEOMETRY。
2. 自己创建必要的network表并且更新network元数据。
网络数据模型相关概念:
1. node:表示关心的对象。
2. link/edge/segment:两个node之间的关系。可以是有向或无向;无向网络中,所有link是双向的。
3. network:是一组node和link。
4. logical network:只包含连接关系,没有图形信息。用于网络分析。
5. spatial network:包含连接关系和图形信息。可以是SDO network、LRS network或topo geometry network。在一个LRS网络中,每个node包括一个图形元素ID和一个度量值;每个link包括一个图形元素ID和起始和终结的度量值。
6. feature:是网络应用程序中连接到一个node或link所关心的对象。例如交通网络中,feature可能包括出口和交叉口(node),以及高速公路和街道(link)。
7. cost:是关联到node或link,用于计算最小成本路径的非负数值。例如你可以指定驱车时间或者驱车距离作为link的成本因素。
8. duration:是关联到node或link,用于指定node或link的时间值的非负数值。
9. state:ACTIVE或INACTIVE的字符串属性。用于指明node或link是否被网络分析函数考虑。
10. type:用户自定义的node或link类型。
11. reachable nodes:从一个给定node可达的所有node。
12. degree:连接某个node的link数。in-degree表明入站link数,out-degree表明出站link数。
13. spanning tree:连接graph的所有node是一颗树(没有重复)。minimum cost spanning tree用于计算最小总成本。
网络应用例子:
1. 道路网络
通常道路网络中重要的操作是查找从起点到终点的路径,最小化移动的路程或时间。可能还有其他的路径计算约束,比如通过特定的地标,或者避开特定的交叉口。
2. 铁路(地铁)网络
地铁网络中重要的操作是查找从某个站点可达的所有站点;查找两个指定站点中的停站数;查找两个站点间的通行时间。
3. 设施网络
例如电力和电缆网络,通常需配置为最小成本。重要的操作为根据必要的服务质量,使用最低的成本确定两个节点之间的连接。另外重要操作包括连通性分析,例如,自来水网络中供水站点停水影响的区域。
4. 生物化学网络
生化网络用于表现生命有机体之间的反应和规则。例如新陈代谢路径是酶反应的相关网络。基因、蛋白质、化学化合物是node,node之间的反应是link。重要的操作包括计算路径和node的度数(link数)。
网络层次
某些网络应用需要不同层次抽象的表现。网络层次可以通过给node和link设定不同的层次级别来表达多层抽象,低层和高层抽象可以有父子关系。
网络约束
网络约束为网络分析计算中的限制。例如,道路中的单行道或禁止左转标志;或者驾驶路线中不包括收费路段。
网络编辑和分析
把网络或者网络的某个层次装载到网络内存对象编辑和分析。(对于内存和CPU负载是个压力,应该会对数据库服务带来影响)
网络数据模型表
由一个node表和一个link表组成。
node表结构:
NODE_ID 节点在网络中的唯一ID
NODE_NAME 节点的名字
NODE_TYPE 用户自定义类型字符串描述
ACTIVE Y或N
PARTITION_ID 保留给将来使用
<node_geometry_column>或GEOM_ID和MEASURE 对于逻辑网络,不使用该列
<node_cost_column> 成本值
HIERARCHY_LEVEL 只用于层次网络:网络层次号
PARENT_NODE_ID 只用于层次网络:此节点的父节点
link表结构:
LINK_ID link在网络中的唯一ID
LINK_NAME link名字
START_NODE_ID 起始node的ID
END_NODE_ID 终止node的ID
LINK_TYPE 用户自定义类型字符串描述
ACTIVE Y或N
LINK_LEVEL 优先级别(高优先级在计算时先考虑)
<link_geometry_column>或GEOM_ID、START_MEASURE和END_MEASURE
<link_cost_column> 成本值 (如果双向成本不同,有限制)
PARENT_LINK_ID 父link的ID
BIDIRECTED Y双向;N单向(从起始到终止节点)
path表:
每个网络可以有一个path表,用于存储网络分析的结果。一个path是一个link的有序序列。对于每个path表,必须创建一个关联的path-link表。
path-link表:
PATH_ID、LINK_ID、SEQ_NO描述了path和link的关系。
使用路径引擎的用户必须在其schema中有下列表:
EDGE/NODE/PARTITION/SIGN_POST
EDGE中存储了道路等级、长度、限速等信息;SIGN_POST表保存用来生成驾驶方向的信号信息。