我在手机上本地创建了一个用于应用程序的SQL数据库,然后以相同的格式将信息上传到服务器上的数据库。在表格中,我将GPS坐标结构化为一个字符串,在纬度和经度之间有一个标签。回顾一下,将数据库结构化使得纬度和经度在两个单独的列中作为类型加倍更有意义(看起来它在搜索和排序方面表现更好)。
如果将字符串转换为两个双打纬度和经度列,排序会更快吗?甚至可以用这种格式搜索GPS坐标:“x.xxxx y.yyyy”?有没有更好的方法在SQL表中对GPS坐标进行排序/存储以进行搜索?
回想起来,我希望我能更仔细地计划好这一点。我知道计划可以节省你很多时间。好吧,我想这适用于此。
答案 0 :(得分:2)
是的,你应该为lat / lon使用单独的列。
浮点表示可能是也可能不是一个好主意;在搜索精确坐标时,这不会太好。当寻找一系列值时,浮点就可以了
根据表的大小和查询模式,您可以考虑为性能创建索引。
答案 1 :(得分:2)
您可以使用microdegrees将值有效地存储为整数。
int lat = (int)(location.getLatitude() * 1000000);
int lon = (int)(location.getLongitude() * 1000000);
如果您稍后要添加MapView,可以获得奖励,因为Android Maps API在GeoPoint中使用相同的数字格式
答案 2 :(得分:0)
是的,如果您需要在计算中分别使用这两个数字,则应单独保存。
如果您不关心数字的准确性,请使用Double
类型,但警告数字会被存储为近似值,而不是它们出现的位置。
如果您需要输入输入作为输入,请尝试使用Decimal
或Numeric
作为输入。
此处提供更多信息:MYSQL precision math