Как хранить и искать GeoData в AppEngine? - PullRequest
7 голосов
/ 04 июня 2010

В моем приложении я хочу сохранить географические данные (долгота и широта).Тогда я хочу спросить, "какое место находится в этом регионе".SQL-подобный запрос не может быть использован, поскольку в GQL текст ссылки

«фильтры неравенства разрешены только для одного свойства»базу данных и запросить их с помощью GQL?

Ответы [ 2 ]

7 голосов
/ 04 июня 2010

Я успешно использовал проект с открытым исходным кодом geomodel для хранения и запроса данных широты и долготы в хранилище данных App Engine. Он использует geohash для включения запросов к одному свойству, он доступен как для Python, так и для Java, и, поскольку он является открытым исходным кодом, вы можете изменить код в соответствии с вашим конкретным случаем.

Стоит также отметить, что в Google I / O было объявлено пару недель назад, что хранилище данных когда-нибудь (надеюсь, скоро) предоставит собственную поддержку геопространственных и датовых запросов, используя внутреннюю кривую Гильберта. Это позволило бы быстро запрашивать ограничивающий прямоугольник или даже в произвольных многоугольных запросах. Вы можете посмотреть видео этого разговора онлайн для более подробной информации, это довольно интересное обсуждение.

0 голосов
/ 04 июня 2010

Вы можете использовать Geohash , чтобы закодировать широту и долготу в одну строку, а затем просто использовать восходящий и нисходящий индекс свойства, чтобы найти ближайшие совпадения.

...