gpt4 book ai didi

mysql - 如何将世界各地的所有地理位置存储在数据库中?

转载 作者:可可西里 更新时间:2023-11-01 08:44:54 24 4
gpt4 key购买 nike

我在一个旅游网站工作,我需要存储游客去过的旅游景点。我需要地点表中的地点是唯一的,以便我可以知道特定地点等的受欢迎程度。我还需要存储所有国家、州、城市,因为我不能依赖用户输入。数据库是MySQL。查看可用于此类位置的数据集,我发现存在跨国家/地区嵌套城市的问题,这些城市可能使用省、州、县等。

所以,我的问题是如何设计模式以便我可以存储所有位置。我正在考虑为国家、州、城市和地点制作表格。spots 表将包含 spot_name、cityId、stateId、countryId 和一些具有经度和纬度边界的字段。这样我就可以根据地理位置识别相同的地点。

但同样,由于州/省/县等问题,此解决方案将不起作用。您能否建议如何构建架构并使用正确的数据为其播种,以便将对用户输入的依赖性降到最低。

最佳答案

您应该使用地理空间数据库,因为这样您就可以将国家和州等位置存储为空间实体,从而可以正确确定嵌套。

如果您不能使用,您可以使用普通表格中的字符串模拟地理空间位置,方法是将世界划分为网格,然后递归地分割网格的每个正方形。

例如把世界分成9个正方形,从左上到右下依次编号为1-9。这些大方 block 中的任何东西都只有一个数字引用。然后将每个正方形分成 9,任何处于此级别的东西都有一个 2 位数的引用。所以 11 是左上角的方 block ,99 是右下角的方 block 。

重复此过程,直到获得所需的精度。单个功能可能有一个 10 位长的引用 5624357899 但你会知道这将在任何更大的功能中,它是更少的数字,以相同的字符串开头,如 5624357。所以你的国家会有更少的数字,因为它们更大,但你的个别位置会更多,因为它们更小且定位更准确。

这只会给你一个大致的位置(并且对于细长的特征是不利的)但可能足够合适

第一个网格看起来像这样:

______________________________
| | | |
| 1 | 2 | 3 |
| | | |
|_________|_________|_________|
| | | |
| 4 | 5 | 6 |
| | | |
|_________|_________|_________|
| | | |
| 7 | 8 | 9 |
| | | |
|_________|_________|_________|

第二轮看起来像这样(为简单起见,只完成了第一个方 block ):

______________________________
|11|12 |13| | |
|---------| 2 | 3 |
|14|15 |16| | |
|---------| | |
|17|18 |19| | |
|_________|_________|_________|
| | | |
| 4 | 5 | 6 |
| | | |
|_________|_________|_________|
| | | |
| 7 | 8 | 9 |
| | | |
|_________|_________|_________|

你重复这个过程,直到你有足够好的近似值来满足你的目的。

关于mysql - 如何将世界各地的所有地理位置存储在数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31563638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com