首页 理论教育 空间数据库实验教程中的网络模型程序包与应用示例

空间数据库实验教程中的网络模型程序包与应用示例

时间:2023-08-29 理论教育 版权反馈
【摘要】:针对网络模型的程序包主要有两个:SDO_NET和SDO_NET_MEM。SDO_NET程序包提供了数据库服务器端创建、访问和管理网络的一系列子程序。SDO_NET_MEM程序包通过一个网络内存对象,提供了网络对象编辑和网络分析功能。SDO_NET可以归纳为以下几个逻辑分组。sdo_net.create_node_tablesdo_net.create_link_tablesdo_net.create_path_tablesdo_net.create_path_link_tablesdo_net.create_lrs_table网络对象有效性检验。SDO_NET_MEM.NODE与ORACLE.SPATIAL.NETWORK.NODE类相关联。

空间数据库实验教程中的网络模型程序包与应用示例

针对网络模型的程序包主要有两个:SDO_NET和SDO_NET_MEM。SDO_NET程序包提供了数据库服务器端创建、访问和管理网络的一系列子程序。SDO_NET_MEM程序包通过一个网络内存对象(也叫缓存对象),提供了网络对象编辑和网络分析功能。

(1)SDO_NET可以归纳为以下几个逻辑分组。

(a)创建网络。

sdo_net.create_sdo_network

sdo_net.create_lrs_network

sdo_net.create_topo_network

sdo_net.create_logical_network

(b)拷贝和删除网络。

sdo_net.copy_network

sdo_net.drop_network

(c)创建网络数据表

sdo_net.create_node_table

sdo_net.create_link_table

sdo_net.create_path_table

sdo_net.create_path_link_table

sdo_net.create_lrs_table

(d)网络对象有效性检验。

sdo_net.validate_network

sdo_net.validate_node_schema

sdo_net.validate_link_schema

sdo_net.validate_path_schema

sdo_net.validate_lrs_schema

(e)信息获取。

sdo_net.get_child_links

sdo_net.get_child_nodes

sdo_net.get_geometry_type

sdo_net.get_in_links

sdo_net.get_link_cost_column

sdo_net.get_link_direction

sdo_net.get_link_geom_column

sdo_net.get_link_geometry

sdo_net.get_link_table_name

sdo_net.get_lrs_geom_column

sdo_net.get_lrs_link_geometry

sdo_net.get_lrs_node_geometry

sdo_net.get_lrs_table_name

sdo_net.get_network_type

sdo_net.get_no_of_hierarchy_levels

sdo_net.get_no_of_links

sdo_net.get_no_of_nodes

sdo_net.get_node_degree

sdo_net.get_node_geom_column

sdo_net.get_node_geometry

sdo_net.get_node_in_degree

sdo_net.get_node_out_degree

sdo_net.get_node_table_name

sdo_net.get_out_links

sdo_net.get_path_geom_column

sdo_net.get_path_table_name

sdo_net.is_hierarchical

sdo_net.is_logical

sdo_net.is_spatial

sdo_net.lrs_geometry_network

sdo_net.network_exists

sdo_net.sdo_geometry_network

sdo_net.topo_geometry_network(www.xing528.com)

(2)SDO_NET_MEM程序包可分为以下几个逻辑分组。

(a)SDO_NET_MEM.NETWORK_MANAGER和ORACLE.SPATIAL.NETWORK.NETWORKMANAGER类相关联。它提供了删除网络内存对象和执行网络分析的功能。

(b)SDO_NET_MEM.NETWORK与ORACLE.SPATIAL.NETWORK.NETWORK类相关联。它提供了添加和删除节点、链路和路径的功能。

(c)SDO_NET_MEM.NODE与ORACLE.SPATIAL.NETWORK.NODE类相关联。它提供了节点属性的获取与设置功能。

在这里不讨论每个过程或函数的详细参数和用法,关于每个函数的详细说明请参考Oracle相关开发说明文档Oracle®Spatial Topology and Network Data Models Developer′s Guide。这里结合示例(在第1章中构建的NDMDEMO),通过演示如何新建网络并进行最短路径分析来说明如何应用这些程序包。代码如下:

在Code_3_7中,显示了如何新建网络。首先删除网络对象,然后删除ROADS网络的节点表、链路表、路径表和路径-链路表,这样做主要是为了防止ROADS网络的相关表已经在数据库中存在了;其次调用sdo_net.create_sdo_network()函数新建空间网络,这样系统会自动帮我们在数据库中新建数据表:roads_node$、roads_link$、roads_path$和roads_plink$;然后把hillsborough_network_node$中的所有节点拷贝到数据表roads_node$中,把hillsborough_network_link$中层次为1的链路拷贝到roads_link$中;最后将元数据插入相应数据表,检查新建网络的有效性。代码如下:

在Code_3_8中显示了如何利用最短路径函数计算两个节点之间的最短路径。步骤为:①代码中设置内存网络缓存大小为51210241024;②列举数据库中的所有网络;③将ROADS网络读入内存;④调用shortest_path()函数计算节点1到节点20之间的最短路径,得到路径ID;⑤输出组成该路径的所有节点ID和链路ID;⑥设置该路径名称,计算其几何对象,并将该路径添加到内存网络中;⑦将内存网络写回数据库,并删掉内存网络对象。其输出结果如下:

ROADS

TRUE

path found:1

Link traversed:

Link 145477104 57.4599940801886

Link 145477100 718.206822785963

Link 145477148 1717.91051954225

Link 145477099 149.829299163315

Link 145482380 443.646567644931

Link 145482379 16.026067601548

Link 145477034 48.6850306722499

Link 145477036 1803.35368873608

Link 145477038 75.2753768316038

Link 145477040 63.3881526812395

Link 145477106 553.210368538399

Link 145477129 980.817115797283

Link 145477042 281.8928291947

Link 145477044 745.701102093955

Link 145477046 37.9646023070001

Link 145477048 831.428781256439

Link 145477047 140.823729638124

Link 145476983 562.794926564542

Link 145476982 1562.12502548642

Link 145476956 421.745971789507

Node traversed:

Node 1 0

Node 4 0

Node 16 0

Node 59 0

Node 56 0

Node 54 0

Node 53 0

Node 51 0

Node 42 0

Node 44 0

Node 45 0

Node 48 0

Node 57 0

Node 60 0

Node 64 0

Node 65 0

Node 46 0

Node 40 0

Node 31 0

Node 13 0

Node 20 0

执行后,会发现在数据表roads_path$中多了一行记录,其path_id为1;在数据表roads_plink$中出现了20行数据,记录的是组成该路径的20个顺次链路。至于网络分析的其他函数或过程的使用流程和方法与此类似,在此不再一一讨论。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈