#gis #geocoding
#гис #геокодирование
Вопрос:
Пожалуйста, не стесняйтесь исправлять любые пропущенные слова в этом сообщении, поскольку я не знаком с такими областями, я использую слова в меру своих знаний, но они, вероятно, ошибочны.
Итак, вот что я хочу сделать:
Похищение и торговля детьми — довольно серьезная проблема в Китае, мой друг говорил со мной сегодня днем, идея отдельного приложения на iOS и Android для выполнения этой задачи, пользователи могут делать снимки, загружать их вместе со своим местоположением GPS в базу данных, и приложение также может отображатьинформация, которая находится в БД, в виде аннотаций на карте.
И мой вопрос:
В приложении, когда пользователь отправляет новое сообщение, которое включает фотографии, местоположение GPS, любые заметки, в базу данных.
Затем мы переключаемся на просмотр карты, нам нужно будет получить информацию для текущего уровня масштабирования / масштабирования, поэтому
как я должен хранить эту информацию в БД, в каком формате?
и
существуют ли какие-либо инструменты с открытым исходным кодом, которые могут анализировать информацию для данного уровня bb box / масштабирования и возвращать XML-файл, чтобы я мог взять и использовать его для отображения информации?
— Я нашел GeoServer, есть ли лучшие для моего использования? Мне действительно нужно это только для генерации XML-файлов на основе уровня bb box / zoom.
Я бы предположил, что размещение инструмента (он называется geocoder?) На Google App Engine / Amazon Ec2 является наиболее идеальным, не знаю много для db, возможно, Amazon Simple DB?
Спасибо!
Ответ №1:
Существует ряд инструментов с открытым исходным кодом, которые могут помочь — например, вы можете посмотреть GeoDjango, который может использовать базу данных PostGIS geo — но, честно говоря, для этого приложения вам не нужно ничего гео-специфичного:
-
Вы будете получать координаты GPS в широте / долготе, поэтому, предположительно, в вашей базе данных будет таблица с двумя столбцами,
latitude
иlongitude
. -
Чтобы выполнить поиск в ограничительной рамке, все, что вам нужно, это минимум / максимум для долготы и широты (которые вам сможет предоставить любая веб-карта). Как только у вас это будет, почти любая база данных SQL будет поддерживать такой запрос:
SELECT * FROM records WHERE latitude >= $min_lat AND latitude <= $max_lat AND longitude >= $min_lon AND longitude <= $max_lon;
Это дает вам список записей, которые попадают в ваш ограничивающий прямоугольник.
-
Теперь вы можете использовать любое промежуточное программное обеспечение, которое вам нравится — систему CMS, такую как Django или Drupal, пользовательский PHP-скрипт и т. Д. — Чтобы преобразовать результирующий набор в формат XML или JSON.
Географические базы данных выполняют множество функций, которые реляционным базам данных сделать нелегко, например, поиск точек в радиусе или точек в наборе полигонов. Но вам это не нужно для вашего приложения — любая система с базовыми функциями запросов к базе данных должна предоставить вам то, что вам нужно.
Комментарии:
1. Спасибо за информацию. Я также хочу иметь возможность группировать значки для отображения на карте, скажем, если в данном местоположении их 100, при более низком уровне масштабирования мне нужен кластер, только при увеличении я отображаю несколько небольших кластеров или один значок, есть идеи, как это сделатьэто?