首页 理论教育 《空间数据库实验教程》拓扑数据示例

《空间数据库实验教程》拓扑数据示例

时间:2023-08-29 理论教育 版权反馈
【摘要】:导入拓扑数据后,可以用Map-Builder建立相应的拓扑主题,图3-21是采用MapBuilder向导的默认参数创建的一个USSTATESTHEMES主题,其预览显示如图所示。对于拓扑关系的处理,可以采用Oracle Spatial提供的工具包进行编程处理,如果理解了这几个表之间的关系,也可以对这些数据表进行操纵。从上面的阐述可以看出,理解Oracle Spatial的拓扑数据模型的关键在于了解这些数据表及其字段属性之间的相互关联关系。

《空间数据库实验教程》拓扑数据示例

这里以MVDEMO中的USSTATES拓扑数据为例。导入拓扑数据后,可以用Map-Builder建立相应的拓扑主题,图3-21是采用MapBuilder向导的默认参数创建的一个USSTATESTHEMES主题,其预览显示如图所示。上面显示了美国所有的州。

美国州拓扑数据表主要包含USSTATES_NODE$、USSTATES_EDGE$、USSTATES_FACE$、USSTATES_RELATION$、USSTATES_HISTRORY$、TOPO_US_STATES六个数据表,其中最后一个是要素表。对于拓扑关系的处理,可以采用Oracle Spatial提供的工具包进行编程处理,如果理解了这几个表之间的关系,也可以对这些数据表进行操纵。对于查询操作可以这样做,但对于写操作并不推荐这种做法,原因是写操作涉及到元数据维护,也不是这六个表能够完成的。下面看一个应用例子:查询与Texas州邻接州的名称。可以调用SDO_TOPO.GET_TOPO_OBJECT进行编程处理,也可以自定义查询来处理。Code_3_6显示了实现后一种方式的代码。代码如下:

图3-21 MapBuilder显示的拓扑数据示例

这里定义了一个非常复杂的游标,其主要思路是topo_us_states数据表中找到Texas州对应的tg_id和tg_layer_id,然后根据查询结果再在usstates_relation$中查询所有构成Texas州要素的topo_id和topo_type,然后根据查询结果在usstates_edge$中查询得到所有与Texas州共边的面ID(Texas州可能是公用边的左面,也可能是公用边的右面),接着在usstates_relation$中查询具有相应面ID的tg_id,最后根据得到的tg_id的集合在topo_us_states中查询得到相应州的名称。从上面的阐述可以看出,理解Oracle Spatial的拓扑数据模型的关键在于了解这些数据表及其字段属性之间的相互关联关系。运行输出的结果为:

Arkansas

Louisiana(www.xing528.com)

New Mexico

Oklahoma

图3-22显示的结果与查询的结果是一致的。需要注意的是,这里没有考虑面的ID为负数的情况,如果要考虑这种情况需要进一步了解程序开发知识,这个问题留待读者自行完成。

图3-22 与Texas州相邻的州

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

我要反馈