Управление географической информацией с помощью хранилища данных GAE и объективизации

Я делаю веб-сайт о местах для посещения, используя java, gwt, gae, gwt-платформу и объективацию для хранилища данных и карт GWT V3 [github.com/twistedpair/GWT-Maps-V3-Api]. (Я не знаю, лучшее ли это решение, но пока я продвигаюсь, медленно, но хорошо :))

Вопрос: Что, по вашему мнению, может быть лучшим подходом для хранения широты и долготы места, чтобы впоследствии можно было искать места рядом с ним?

Я пытался сохранить долготу и широту в строки, используя лексикографический порядок, используя http://code.google.com/p/sappenin/source/browse/trunk/SappeninUtils/src/main/java/com/sappenin/util/BigDecimalStringCodec.java?r=146 Но мне не удалось заставить его работать, и, насколько я понимаю, мне придется запрашивать сначала широту, а затем долготу, и я думаю, что это не будет практично в все.

Я не знаю, лучше ли использовать GeoPt в моих объектах или только значения широты и долготы в виде двух строк или длинных (поскольку bigdecimal не поддерживается). Я думаю, что будет более или менее то же самое, потому что внутренне GeoPt один и тот же, два числа.

Я думаю, что лучшим подходом будет геомодель, но на питоне я начал проверять http://code.google.com/p/javageomodel/ Но у меня не получилось, проблема в том, что геомодель не для объективации. Я нашел подход javageomodel для объективации, но кажется довольно старым. [github.com/bfuster/javageomodel] Я бы попытался взять исходную javageomodel и попытаться изменить ее, но я хотел знать, знает ли кто-нибудь лучший способ сделать это.

Какой вариант вы рекомендуете? Возможно, сейчас, в 2012 году, есть очень простой способ сделать это, но я не смог его найти, и я округляю примерно неделю через Google.

Заранее спасибо за ваше мнение!

Я надеюсь, что вопрос более или менее ясен, потому что, как вы видите, у меня сейчас в голове огромный беспорядок, ;)


person Dani V.T.    schedule 14.04.2012    source источник
comment
просто совет, если вы планируете выпустить хобби-приложение, размещенное бесплатно на GAE, позаботьтесь о квотах. Операции чтения хранилища данных в приложении gwt с использованием карт Google могут привести к тому, что ваше приложение превысит квоту за очень короткое время, даже если почти никто :-(   -  person Overnuts    schedule 15.04.2012
comment
Спасибо за совет!, да, я уже видел, что все быстро растет и даже сайт не работает. Пока это финальный проект университета, и я уже сказал, что буду использовать эти технологии, но если это как-то заработает, мне придется внести довольно много изменений, чтобы попытаться потратить как можно меньше и заплатить меньше.   -  person Dani V.T.    schedule 15.04.2012
comment
Я получаю эту проблему, квоты были достигнуты только с активностью ботов! Так что я переписал вещи GAE на вещи tomcat/mysql, теперь приложение размещено дома :-)   -  person Overnuts    schedule 15.04.2012
comment
Вы должны сделать так, чтобы клиенты GWT выполняли геозапросы, если это возможно, чтобы это не увеличивало вашу квоту.   -  person koma    schedule 16.04.2012
comment
Я пытаюсь это сделать, я могу делать запросы геокодирования или запросы карт Google от клиента, но все же мне придется запрашивать мое хранилище данных, чтобы получить ближайшие места, :s, посмотрим, как пойдет, ;)   -  person Dani V.T.    schedule 16.04.2012


Ответы (1)


Вы можете найти пример использования геохеширования с GAE и Objectify здесь:

https://github.com/stickfigure/motomapia

Демо здесь:

http://www.motomapia.com/

Библиотека geohash находится здесь:

http://code.google.com/p/javageomodel/

person stickfigure    schedule 14.04.2012
comment
Привет, спс!, Я скачал еще этот проект и пару дней назад смотрел, но как я понял в нем сделан запрос к местам по геолокации (В wikimapia.java -> box()) к API wikimapia и внутри motomapia выполняется поиск позже по идентификатору в Places.java -> syncplaces (), а не по lat и lng, это то, что я пытаюсь. Это то, что я понял из кода, я не уверен, что что-то упустил :) - person Dani V.T.; 15.04.2012
comment
Посмотрите на код в DownloadServlet, который извлекает все места в ограниченной области для создания файла POI. - person stickfigure; 15.04.2012
comment
Я посмотрю там, выглядит красиво! Большое спасибо! - person Dani V.T.; 15.04.2012
comment
Привет, этому сообщению уже несколько лет, поэтому я хотел проверить, актуально ли это, или есть ли более новые примеры/образцы, которые вы могли бы порекомендовать. Просто нужно сохранить широту/долготу в объекте, а затем иметь возможность запрашивать все такие объекты с X-радиусом местоположения. Спасибо за постоянную помощь! - person Micro; 14.12.2016
comment
Взгляните на API поиска, в котором есть некоторые гео-возможности. Хранилище данных также имеет некоторую встроенную возможность обработки гео-запросов, но оно так и не стало общедоступным (или просто еще не стало). - person stickfigure; 15.12.2016
comment
@stickfigure Я пытаюсь держаться подальше от API поиска и работать только с объективацией / хранилищем данных ... Я взглянул на него, но предвижу технические / финансовые проблемы в будущем, связанные с его включением в мое приложение. Судя по моему исследованию, GeoHashing выглядит подходящим способом (Firebase тоже использует GeoHashing), но я не могу найти хороший пример для объектизации/хранилища данных. Я посмотрел на ваш ответ, но он говорит, что библиотека geohash устарела..? Есть ли у вас какие-либо советы о том, где я должен найти хороший пример GeoHashing + Datastore/objectify? Мотомапия по-прежнему лучшая? Спасибо! - person Micro; 15.12.2016
comment
Или мне просто задать новый вопрос в StackOverflow? - person Micro; 15.12.2016
comment
Честно говоря, я бы просто привык к API поиска, который сегодня готов к работе. Существует множество типов запросов, для которых хранилище данных не подходит. Обычно довольно легко синхронизировать подмножество данных со специализированным индексом, который позволяет выполнять более экзотические запросы. Я считаю API поиска очень полезным. Вы можете попросить Google получить доступ к функции геоиндекса, встроенной в хранилище данных (некоторое время назад они рекламировали альфа-тестеров в группе Google), но довольно долгое время это было очень тихо. - person stickfigure; 16.12.2016
comment
@stickfigure Спасибо за совет. После дополнительных исследований вы убедили меня использовать API поиска. Если Google выпустит гео-запросы к хранилищу данных, тогда я смогу легко переключиться. - person Micro; 16.12.2016
comment
Вы можете сделать поисковый API более привлекательным, обернув его в более удобный для человека интерфейс. Шаблоны построителей, которые они используют в общедоступном API, довольно утомительны. Если не считать самого API, средство поиска просто великолепно, а размер индекса в конечном итоге составляет ничтожную долю того размера, который должен храниться в хранилище данных в виде индексов. - person stickfigure; 18.12.2016