【发布时间】:2010-04-03 00:17:47
【问题描述】:
我将兴趣点 (POI) 存储在 PostgreSQL 数据库中,并通过 PHP 脚本将它们检索到 Android 应用程序。为了减少互联网使用,我希望我的移动应用程序知道当前显示区域附近是否有任何点。
我的想法是存储包含已检索到的所有点的矩形的边界(换句话说:已检索到的最西部的左侧(西)最近点,已检索到的最北上方(北)的最近点等)当屏幕的任何边缘超出此范围时,我将进行下一个查询。
目前我可以使用以下方法检索“单屏”(当前显示的地图所覆盖的区域)中的点:
SELECT * FROM ch WHERE loc <@ (box '((".-$latSpan.", ".$lonSpan."),(".$latSpan.", ".-$lonSpan."))' + point '".$loc."')
现在我需要知道每个方向上四个最远的点,然后才能检索接下来的四个“更远”的点。
是否有可能直接从 PostgreSQL 获取这些点(或框)(可能使用一些“聚合点到框”功能)?
【问题讨论】:
-
您确定框中的值的顺序吗?看起来您在 X(水平)坐标中存储纬度极值 (N/S),在 Y(垂直)坐标中存储经度。我希望这个盒子是
box( (-longSpan, latSpan), (longSpan, -latSpan))。
标签: php sql postgresql geometry