6

地理位置情報に基づいて検索を行うことができるという検索 API に関する GoogleIO トークの指示があります。

位置情報を保存する適切なフィールドが見つかりません。

特定の GPS 位置からの距離に基づいてクエリを発行できるように、地理位置情報をドキュメントに保存するにはどうすればよいですか?

4

1 に答える 1

7

2012 年 6 月 28 日、Google はGeoPoint クラスを Google App Engine Search API ライブラリに統合し、空間ポイントを検索可能にするという具体的な意図を持っていました。

ジオポイントは、検索ドキュメント内にジオフィールドとして保存されます。Google は、検索 API での GeoPoint の使用を概説するこのサポート ドキュメントを提供しています。

次の例では、GeoPoint を宣言し、それを検索ドキュメントの GeoField に割り当てます。これらの新しいクラスは、以下にリストされているものよりも多くの機能を提供しますが、このコードは、新しい空間検索機能の使用方法を基本的に理解するための出発点です.

GeoPoint が関連付けられたドキュメントの作成

## IMPORTS ##
from google.appengine.api import search

def CreateDocument(content, lat, long):
  geopoint = search.GeoPoint(lat, long)
  return search.Document(
    fields=[
            search.HtmlField(name='content', value=content),
            search.DateField(name='date', value=datetime.now().date())
            search.GeoField(name='location', value=geopoint)
           ])

GeoPoint ドキュメント フィールドの検索 (Search API ドキュメントから少し変更)

## IMPORTS ##
from google.appengine.api import search

ndx = search.Index(DOCUMENT_INDEX)
loc = (-33.857, 151.215)

query = "distance(location, geopoint(-33.857, 151.215)) < 4500"

loc_expr = "distance(location, geopoint(-33.857, 151.215))"

sortexpr = search.SortExpression(
  expression=loc_expr,
  direction=search.SortExpression.ASCENDING, default_value=4501)

search_query = search.Query(
  query_string=query,
  options=search.QueryOptions(
    sort_options=search.SortOptions(expressions=[sortexpr])))

results = index.search(search_query)
于 2012-06-28T12:54:32.323 に答える