使用MySQL空间索引设计规范化数据库以获得5个最近邻居

时间:2011-03-11 19:51:45

标签: mysql geolocation geospatial

我将使用具有数据库空间索引的MySQL,然后我将从给定点(纬度/经度)查询5个最近邻居,这些点将是多米尼加共和国的兴趣点。一旦我得到5个最近的点,我将需要位置的名称,位置的类型,位置的地址和(纬度,长)每个点。

设计数据库的正确方法是什么?我在考虑做以下事情: 表:名称 列:ID,名称

表:类型 列:ID,类型

表:街道 栏目:ID,街道

表:街道号码 列:ID,街道号

表:自治市镇 专栏:ID,自治区

表:城市 列:ID,城市

表:Geopoint 列:纬度,经度,GeometryPoint

我错过了什么吗?任何建议。有谁知道我能读到的地方吗?这是一个学校项目,应该与移动应用程序一起使用,以向用户显示5个最近的兴趣点(加油站,餐馆,药房等),具体取决于他们选择的实际位置类型。

我可以在哪里获取数据?我的意思是有一种方法可以让我所有的街道名称,行政区,我的国家的城市,并把它放在我的数据库中。我认为我可以自己创造兴趣点。

2 个答案:

答案 0 :(得分:1)

首先,结构在标准化方面看起来很好。您可以通过Google搜索“数据库规范化规则”来阅读有关此主题的更多信息。但是你应该意识到,通过分离每个属性(Street-table,street-number-table等),你将获得复杂的查询。要获得“POI XY,Streetname 2,Somecity,lat = 42.4,long = 13.2”这样的结果,您必须至少加入四个表。如果表现不是问题,请继续; - )

您可以从openstreemap.org或geonames.org的某些poi中获取数据(如果有)

此致 马丁

答案 1 :(得分:0)

我知道这是一个家庭作业,但我建议不要使用MySQL空间 - 它没有实现大多数空间函数,它实现的只是绑定框实现。 我会推荐PostGIS,spatialLite或MongoDB空间。