需要按顺序对数据库表中的邮政地址进行排序

时间:2011-11-29 10:28:44

标签: sorting geolocation geocoding street-address

我正在开发一个在其中包含邮政地址路由的Android应用。

我们希望对数据库表中的每个地址进行排序,以便为我们的驱动程序打印每个地址。当数据库表非常适合时,我们不想花时间自己对地址进行排序。

我正在考虑以某种方式在表格中创建一个主键,我们可以按升序轻松排序。这样可以轻松为驱动程序创建清单。

我正在研究并发现有一种名为WOEID(地球ID上的地方)的东西,我认为它代表一个地区,但我不确定它是否对我们有好处,因为同一社区的2个邮政地址可以使用相同的WOEID。

例如,这3个地址具有相同的WOEID:

100 Bowden St., Lowell, MA
131 Stedman St., Lowell, MA
50 Stromquest Ave., Lowell, MA

使用像WOEID这样的单个数字的概念对我们来说是完美的,但我们需要按顺序对这些地址进行排序,以便我们知道哪些地址彼此最接近。

也许有一个网站,我们可以用来从我们的应用程序发送请求,为他们提供邮政地址,网站将返回一个代表该地址的数字,我们的应用程序可以解析。

也许有办法将地理编码或纬度和经度数转换为我们可以使用的单个数字。

感谢。

2 个答案:

答案 0 :(得分:0)

当多个地址共享相同的WOEID时会出现问题?我不知道有多少资源可用,但是无法将这些数据提供给某些API(如Google地图)并计算从您的位置到该位置的距离?

如果你想避免谷歌,一个真正基本的方法可能是你自己做计算。 (虽然这更像是一种估计。)

然而,我觉得你想找到最佳路线而不是总距离所以我认为你的问题也与travelling salesman problem

有关。
  

给出一个城市列表及其成对距离,任务是   找到一次访问每个城市的最短旅程。

答案 1 :(得分:0)

我找到了一个允许我进行反向地理编码的网站。它返回纬度和经度。

我进行了一些实验,发现我可以将纬度和经度加在一起得到一个数字。由于给网站提供一个确切的地址,结果并不完全是我正在寻找的东西,我只给它一个街道和城市以及美国的州。然后我可以使用返回的纬度和经度,然后按数字升序对房屋地址进行排序。

例如,我们有许多非常网格的街道,因此添加纬度和经度的1个数字代表1个特定街道上的许多房屋。在一个街区的另一条街上我做了同样的事情。现在我所要做的只是列出数据库表中的所有内容,如下所示: 通过下拉菜单选择的城市,美国州也通过下拉菜单选择,然后是每个街道的地理编码数字,然后是家庭数字。

以下是我用于获取地理编码的网站以及示例街道地址:

http://where.yahooapis.com/geocode?q=stedman+st,+lowell,+ma