图 4.1
在这个表中,
street_name 表示街道名字
id 表示街道编号(主键)唯一识别街道。注意:此时的街道和实际街道有所差别。因为判断用户输入点是否在街道上的问题这个算法的需要,这里所存的街道和实际街道有所差别,如果一条道路有弯路,那么从从拐点切断,存成若干直路。下面在判断点是否在街道上时,将详细说明。
e1id 表示街道起始端的编号。我们将给每个表中存储的街道端点取一个编号
e2id 表示街道末端编号。起始端和末端都有设计者自己定义。
e12 表示从e1id到e2id的距离(这里是一个权值,并不是只实际的路长,但是与实际路径成正比的,如果无法直接从e1id到达e2id那么e12将设置为一个最大值,比如10000)
e21 表示从e2id到e1id的距离(这里是一个权值,并不是只实际的路长,但是与实际路径成正比的。如果无法直接从e2id到达e1id那么e21将设置为一个最大值,比如10000)
路口信息表crossing 中各属性关系如图4.2所示。
图 4.2
在这个表中
crossing_name 表示路口的名字
id 表示路口的编号(主键)唯一区别于其他路口
jingdu 表示该路口的经度值
weidu 表示该路口的纬度值
为了能方便算法更好的从数据库获取信息,做了2个视图
第一个视图(street_crossing)是将街道和其2个端点连起来,成为一个完整的路 如4.3所示
图4.3
这个视图建立的语法如下:
SELECT dbo.street.street_name, crossing1.crossing_name AS f, crossing1.jingdu AS j1,
crossing1.751com.cn
dbo.crossing crossing1 ON dbo.street.e1id = crossing1.id INNER JOIN
dbo.crossing crossing2 ON dbo.street.e2id = crossing2.id
在这个视图中,第一个属性列street_name表示街道的名字,f表示街道的起始端点,j1表示起始端点f的经度值,w1表示起始端点f的纬度值,b表示街道的终端点,j2表示终端点b的经度值,w2表示终端点b的纬度值。id表示街道的编号(主键),唯一区别街道,e1id表示该街道起始端点f的编号,e2id表示该街道终端点b的编号。
第二个视图(road)是更详尽的现实街道和路口所以的关系截图如 4.4 所示
图 4.4
这个视图建立的语法如下
SELECT dbo.street.street_name, crossing1.crossing_name AS f, crossing1.jingdu AS j1,
crossing1.weidu AS w1, dbo.street.e2id, crossing2.crossing_name AS b,
crossing2.jingdu AS j2, crossing2.weidu AS w2, dbo.street.e12, dbo.street.e21,
dbo.street.id, dbo.street.e1id
FROM dbo.street INNER JOIN
dbo.crossing crossing1 ON dbo.street.e1id = crossing1.id INNER JOIN
dbo.crossing crossing2 ON dbo.street.e2id = crossing2.id
在这个视图中,第一个属性列street_name表示街道的名字,f表示街道的起始端点,j1表示起始端点f的经度值,w1表示起始端点f的纬度值,e2id表示该街道终端点b的编号。b表示街道的终端点,j2表示终端点b的经度值,w2表示终端点b的纬度值。e12表示从起始端点f到终端点b的权值。e21表示从终端点b到起始端点f的权值。id表示街道的编号(主键),唯一区别街道,e1id表示该街道起始端点f的编号
<< 上一页 [11] [12] [13] [14] [15] [16] [17] [18] 下一页