【问题标题】:Database layout for an application with geocoding features using geokit使用 geokit 的具有地理编码功能的应用程序的数据库布局
【发布时间】:2010-06-14 21:13:16
【问题描述】:

我正在开发一个房地产网络目录,并希望使用 geokit gem 对每个广告进行地理编码。 我的问题是,如果我想按国家、所选国家的城市、行政区域或所选城市最近的地铁站进行搜索,那么从性能点来看,最好的数据库布局是什么。可用的国家、城市、行政区域和地铁站应由目录管理员定义,并且必须通过地理编码进行验证。

我想出了单表:

  create_table "geo_locations", :force => true do |t|
    t.integer "geo_location_id"                     #parent geo location (ex. country is parent geo location of city  
    t.string  "country",             :null => false #necessary for any geo location
    t.string  "city",                               #not null for city geo location and it's children
    t.string  "administrative_area"                 #not null for administrative_area geo location and it's children
    t.string  "thoroughfare_name"                   #not null for metro station or street name geo location and it's children
    t.string  "premise_number"                      #house number
    t.float   "lng",                 :null => false 
    t.float   "lat",                 :null => false
    t.float   "bound_sw_lat",        :null => false
    t.float   "bound_sw_lng",        :null => false
    t.float   "bound_ne_lat",        :null => false
    t.float   "bound_ne_lng",        :null => false
    t.integer "mappable_id"
    t.string  "mappable_type"
    t.string  "type"                                #country, city, administrative area, metro station or address 
  end

最终地理位置是地址,它包含在地图上放置房地产广告标记的所有必要信息。但我仍然停留在搜索功能上。

任何帮助将不胜感激。

【问题讨论】:

    标签: ruby-on-rails ruby database-design geolocation geokit


    【解决方案1】:

    您可能想看看 Thinking Sphinx,它内置了对地理搜索的支持。我就是这样做的:

    class Company < ActiveRecord::Base
        define_index do
            indexes :name, :sortable => true
            has 'RADIANS(lat)',  :as => :latitude,  :type => :float
            has 'RADIANS(lng)', :as => :longitude, :type => :float
        end
    end
    # Searching for companies, sort by closest first
    Company.search "bananas", :geo => [lat, lng], :order => "@geodist ASC, @relevance DESC"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 2011-07-23
      相关资源
      最近更新 更多