Sha256: a6584f134056428eda05907502d064aaac02d02fa591f8c95d45f6f97af5de89
Contents?: true
Size: 1.95 KB
Versions: 3
Compression:
Stored size: 1.95 KB
Contents
class SearchModel < GeoModel establish_connection(GEODB) LOCATE_MAX_COUNT = 50 self.abstract_class = true def self.query(fields, params) #return {:features => [], :quality => n} raise NotImplementedError.new end def self.locate(locations) #return {:features => []} raise NotImplementedError.new end def self.selection_topic nil end def self.selection_layer nil end #Generic location search with one search field def self.layer_locate(layer, search_field, locations) feature_class = layer.feature_class feature_class.where(search_field => locations).select(feature_class.primary_key).select(feature_class.extent_field).limit(LOCATE_MAX_COUNT).all end # "261,AU4998;261,AU4999" -> [["261","AU4998"],["261","AU4999"]] def self.search_locations(param) locations = param.split(';') locations.collect {|l| l.split(',') } end def self.soap_query(fields, soap_params, soap_action) #return {:feature => f, :hits => n, :quality => n, :template => str} #return {:features => [], :template => str} #return {:error => str} raise NotImplementedError.new end # calculate envelope of all features def self.envelope(features) unless features.empty? envelope = GeoRuby::SimpleFeatures::Geometry.from_hex_ewkb(features.first['extent']).envelope features.each do |feature| next if feature == features.first envelope.extend!(GeoRuby::SimpleFeatures::Geometry.from_hex_ewkb(feature['extent']).envelope) end envelope end end # calculate bbox of all features def self.bbox(features) envelope = envelope(features) [envelope.lower_corner.x, envelope.lower_corner.y, envelope.upper_corner.x, envelope.upper_corner.y] end # calculate center and scale for feature locations def self.map_center(features) env = envelope(features) scale = 500 #FIXME: use self.bbox instead of map_center [env.center.x, env.center.y, scale] end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
gb_mapfish_appserver-0.0.3 | app/models/search_model.rb |
gb_mapfish_appserver-0.0.2 | app/models/search_model.rb |
gb_mapfish_appserver-0.0.1 | app/models/search_model.rb |