该路线图的数据库设计

时间:2014-03-11 04:49:16

标签: mysql oracle google-maps database-design uml

我在考虑路线图的数据库架构,并考虑最好的模型。我脑海中有以下问题需要解决,如

Do streets s1 and s2 intersect?
Get all streets adjacent to point of interest p.

OR 

Get the distance between entrance e1 and exit e2 on highway h.
Get the shortest route from intersection i1 to intersection i2.

我认为表名应该

roads and streets, including highways
governmental regions: states, counties, and local municipalities of cities, towns, villages

我在数据库建模方面有很强的专业知识,但这是我第一次创建这样的架构,在这方面有任何帮助

根据SO规则,OP必须付出一些努力,我已经看到了一些similar questions这就是我在模式中寻求帮助的原因。

2 个答案:

答案 0 :(得分:0)

您需要知道道路是否相交。该问题的答案应该在您的数据库模型中。 这是你可以拥有的最重要的问题。

我想说你需要围绕十字路口组织你的信息。在GIS位置(x,y)的交叉点处出现哪种类型的道路?

道路只有一张桌子,但每条道路可以是不同类型的。有时道路可以是不同类型的道路,但具有相同的交通规则。为了在模型中获得这种区别,我将区分道路类型和有效道路类型。

数据模型的第一个入口是:http://www.osgeo.org/

编辑:请查看该网站上此链接的示例: http://live.osgeo.org/en/index.html 您可以下载一个分发版,使您可以测试不同的开源地理空间软件。 这可能正是您正在寻找的: http://mapguide.osgeo.org/

答案 1 :(得分:0)

  • 您需要拥有节点和边缘 - 用于内部解决您的任务。 (简短的方式等)
  • 您需要将您所讲述的道路,街道和区域从内部模型转换为人类语言。此外,不要忘记点对象:巴士站,十字路口,房屋入口,电话亭,商店atd。
  • 因此,您需要两个模型,一个结构和一组方法来进行翻译。

内部模特:

Table: NODE           Table: EDGE
Id                    Id
place(REGION.Id)      Start(Node.Id)
                      End (Node.Id)
                      Length
                      road (ROAD.Id) (to what road belongs)

外模:

Table: ROAD           Table: Crossroad              Table:REGION
Id                    point (NODE.Id)               Id
Level                 Id                            Name  
Name                                                Level
                                                    Parent (REGION.Id)