【发布时间】:2012-10-20 22:28:51
【问题描述】:
我很困惑,也很累,无法找到上面的技巧。实际上,我有一个数据库表,其中包含六个字段 id、Sratlatitude、Startlongitude、EndLatitude、EndLongitude 和用户名。现在我想在数据库中查询
SELECT * FROM LOCATIONS(table name) WHERE USERS BETWEEN STARTING POINT(InputedStartlatitude and InputedStartlongitude) AND ENDING POINT(InputedEndlatitude and InputedEndlongitude);例如:USERXXX 输入起点(InputedStartlatitude = 18.9647 and InputedStartlongitude = 72.8258) = 孟买和终点(InputedEndlatitude = 18.9647 和 InputedEndlongitude = 72.8258)= 德里。现在他想使用 Inutedlatitudes 和 Inputedlongitudes 搜索这条输入路线(行驶方向)之间有多少用户。搜索查询将触发到 mysql 数据库,并从存储的从孟买到德里之间的开始和结束纬度和经度进行比较。
我找到了一个解决方案,例如对数据库进行查询:
SELECT * FROM lOCATIONS(tablename) WHERE (InputStartLatitude >= StartLatitude and IntartLongitude >= StartLong) and (InputEndLatitude <= EndLatitude and InuteEndLongitude <= EndLongitude);
但是我在上面的查询中遇到了一些问题。 下面是一些地方的坐标。请看:
开始和结束坐标为红色。起点是:Porbandar,终点是:Mumbai。现在的问题是,我面临的问题是,当我尝试搜索 Porbandar 到 Mumbai 之间的城市时,由于我的查询,并非所有城市都实际位于行驶方向。在我的查询中,我只调用了那些城市,它们是如何大于开始经纬度和小于结束纬度和经度的。但这里孟买的纬度和经度几乎低于所有城市。那么如何进行正确的搜索查询呢?
希望我已经很好地解释了上述情况。
任何回复都会对我很有帮助。
我在客户端使用 php-mysql 作为后端和 android。
【问题讨论】:
-
欢迎来到 SO。这是一个非常有趣的问题。你能澄清
BETWEEN的意思吗?您是否正在寻找位于起点和终点之间的大圆路线路径 30 公里范围内的地点?您是否正在寻找位于由起点和终点定义的经纬度边界框内的位置?您的起点和终点是否足够接近,以至于由 lat-long 的线性插值确定的路径是一个足够的近似值(在印度可能是这样,但在挪威却不是)?请澄清您的问题。 -
“之间”是什么意思?这些位置是否都在 `latStart
-
谢谢 Ollie Jones 和 Jpsy,我正在更新我的问题,请回来查看,希望这次你能理解。
-
对不起Himanshu,但您的编辑并没有使它更清晰。我的理解是,您的数据库为每个用户保存四倍的地理位置(StartLat、StartLong、EndLat、EndLong),并且用户可以动态输入另一个四倍的数据(InputStartLat、InputStartLong、InputEndLat、InputEndLong),您可以从中输入将计算谷歌地图行车路线。但是您仍然无法通过“介于”来定义您所理解的内容。必须将 db-quadruple 哪些数学或算法属性视为在 input-quadruple 的点“之间”?
-
"BETWEEN" 表示它不是任何特殊词,但将其视为英语我想告诉您:当用户时
标签: php android mysql google-maps gps