【发布时间】:2017-04-22 19:40:16
【问题描述】:
问题一:
我正在将 Google Datastore(Java 客户端库)与 App Engine Flex 结合使用,并且我正在存储位置数据。我想查询矩形区域内的位置列表。
我的位置实体如下所示:
Location
- lat (eg. -56.1)
- long (eg. 45.6)
Google 数据存储区在查询不同属性的多个不等式方面存在限制,因此我无法像这样使用 GQL 进行查询:
SELECT * FROM Location WHERE lat <= @maxLat AND lat >= @minLat AND long <= @maxLong AND long >= @minLong
其中maxLat、minLat、maxLong 和minLong 表示搜索位置的边界矩形。
目前我只使用一个过滤器进行查询:
SELECT * FROM Location WHERE lat <= @maxLat AND lat >= @minLat
从返回的结果中,我也过滤掉了经度范围内的结果。有没有更好的方法可以在不采用这种策略的情况下做到这一点?
问题 2:
如果我将纬度/经度组合存储为谷歌数据存储中的地理点,我如何检查纬度和经度?
例如,如果位置是这样存储的:
Location
- location (Geopoint)
我无法使用 Java 客户端库过滤 Geopoint 中的纬度/经度。
SELECT * FROM Location WHERE location.long <= @maxLong
Datastore Geopoint 属性是否有解决方法?
【问题讨论】:
标签: google-cloud-datastore gql