Как вы выполняете ГИС-запросы на Heroku, используя общую базу данных? - PullRequest
5 голосов
/ 05 августа 2010

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

Есть несколько вариантов, которые я исследовал:

  • Земельный вклад Postgresql , вероятно, наиболее близок к моим потребностям;однако я не нашел никаких признаков того, что это установлено на сервере базы данных heroku.
  • PostGIS - это наиболее часто рекомендуемое решение для ГИС, но у heroku оно не установлено, и поддержка heroku подтвердила, что они не намеренысделать это в ближайшем будущем.

Мне понадобится решение, которое работает с Rails3.

Если нет более подходящих вариантов, мне придется реализовать свою собственную haversineфункция, которая, конечно, похоже на изобретение колеса.Есть лучшие варианты?

Ответы [ 4 ]

8 голосов
/ 14 декабря 2010

Я бы сейчас (июль 2011) рекомендовал использовать геокодер

gem 'geocoder'

http://www.rubygeocoder.com/

Вы также можете использовать geokit-rails3, как я упоминал ранее, но он не завершен и не поддерживается.

gem 'geokit-rails3'

http://github.com/jlecour/geokit-rails3

3 голосов
/ 05 августа 2010

Geokit будет обрабатывать все вычисления расстояния, используя haversine, в базе данных. Также отлично работает с heroku и postgres. Настоятельно рекомендуем.

Geokit Gem Rails Интеграция Geokit

весь код взят с github

class Location < ActiveRecord::Base
  acts_as_mappable :default_units => :miles, 
                   :default_formula => :sphere, 
                   :distance_field_name => :distance,
                   :lat_column_name => :lat,
                   :lng_column_name => :lng
end


Store.find :all, :bounds=>[sw_point,ne_point]

bounds=Bounds.from_point_and_radius(home,5)
stores=Store.find :all, :include=>[:reviews,:cities] :bounds=>bounds
stores.sort_by_distance_from(home)
0 голосов
/ 11 февраля 2013

В Heroku (февраль 2013 г.) есть поддержка бета-уровня PostGIS. Полная информация доступна на их сайте (требуется авторизация): https://devcenter.heroku.com/articles/heroku-postgres-extensions-postgis-full-text-search#postgis

PostGIS:

добавляет поддержку географических объектов в объектно-реляционную базу данных PostgreSQL. По сути, PostGIS «пространственно активирует» сервер PostgreSQL, позволяя использовать его в качестве внутренней пространственной базы данных для географических информационных систем (ГИС)

Поддержка PostGIS v1.5 в Heroku Postgres находится в стадии бета-тестирования и может быть изменена в будущем.

0 голосов
/ 14 марта 2012

Postgis в настоящее время доступен в бета-версии (март 2012) https://addons.heroku.com/spacialdb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...