Class: RGeo::GeoJSON::Feature
- Inherits:
 - 
      Object
      
        
- Object
 - RGeo::GeoJSON::Feature
 
 
- Includes:
 - ConversionMethods, DelegateToGeometry
 
- Defined in:
 - lib/rgeo/geo_json/entities.rb
 
Overview
This is a GeoJSON wrapper entity that corresponds to the GeoJSON “Feature” type. It is an immutable type.
This is the default implementation that is generated by RGeo::GeoJSON::EntityFactory. You may replace this implementation by writing your own entity factory. Note that an alternate Feature implementation need not subclass or even duck-type this class. the entity factory mediates all interaction between the GeoJSON engine and features.
Instance Attribute Summary collapse
- 
  
    
      #geometry  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the geometry contained in this feature, which may be nil.
 
Instance Method Summary collapse
- 
  
    
      #==(other)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Two features are equal if their geometries, IDs, and properties are all equal.
 - 
  
    
      #eql?(other)  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Two features are equal if their geometries, IDs, and properties are all equal.
 - 
  
    
      #feature_id  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the ID for this feature, which may be nil.
 - #hash ⇒ Object
 - 
  
    
      #initialize(geometry, id = nil, properties = {})  ⇒ Feature 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
Create a feature wrapping the given geometry, with the given ID and properties.
 - #inspect ⇒ Object
 - 
  
    
      #keys  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Gets an array of the known property keys in this feature.
 - 
  
    
      #properties  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns a copy of the properties for this feature.
 - 
  
    
      #property(key)  ⇒ Object 
    
    
      (also: #[])
    
  
  
  
  
  
  
  
  
  
    
Gets the value of the given named property.
 - #to_s ⇒ Object
 
Methods included from ConversionMethods
Constructor Details
#initialize(geometry, id = nil, properties = {}) ⇒ Feature
Create a feature wrapping the given geometry, with the given ID and properties.
      53 54 55 56 57 58 59 60  | 
    
      # File 'lib/rgeo/geo_json/entities.rb', line 53 def initialize(geometry, id = nil, properties = {}) @geometry = geometry @id = id @properties = {} properties.each do |k, v| @properties[k.to_s] = v end end  | 
  
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class RGeo::GeoJSON::DelegateToGeometry
Instance Attribute Details
#geometry ⇒ Object (readonly)
Returns the geometry contained in this feature, which may be nil.
      91 92 93  | 
    
      # File 'lib/rgeo/geo_json/entities.rb', line 91 def geometry @geometry end  | 
  
Instance Method Details
#==(other) ⇒ Object
Two features are equal if their geometries, IDs, and properties are all equal. This method uses the == operator to test geometry equality, which may behave differently than the eql? method.
      86 87 88  | 
    
      # File 'lib/rgeo/geo_json/entities.rb', line 86 def ==(other) other.is_a?(Feature) && @geometry == other.geometry && @id == other.feature_id && @properties == other.instance_variable_get(:@properties) end  | 
  
#eql?(other) ⇒ Boolean
Two features are equal if their geometries, IDs, and properties are all equal. This method uses the eql? method to test geometry equality, which may behave differently than the == operator.
      78 79 80  | 
    
      # File 'lib/rgeo/geo_json/entities.rb', line 78 def eql?(other) other.is_a?(Feature) && @geometry.eql?(other.geometry) && @id.eql?(other.feature_id) && @properties.eql?(other.instance_variable_get(:@properties)) end  | 
  
#feature_id ⇒ Object
Returns the ID for this feature, which may be nil.
      94 95 96  | 
    
      # File 'lib/rgeo/geo_json/entities.rb', line 94 def feature_id @id end  | 
  
#hash ⇒ Object
      70 71 72  | 
    
      # File 'lib/rgeo/geo_json/entities.rb', line 70 def hash @geometry.hash + @id.hash + @properties.hash end  | 
  
#inspect ⇒ Object
      62 63 64  | 
    
      # File 'lib/rgeo/geo_json/entities.rb', line 62 def inspect "#<#{self.class}:0x#{object_id.to_s(16)} id=#{@id.inspect} geom=#{@geometry ? @geometry.as_text.inspect : 'nil'}>" end  | 
  
#keys ⇒ Object
Gets an array of the known property keys in this feature.
      111 112 113  | 
    
      # File 'lib/rgeo/geo_json/entities.rb', line 111 def keys @properties.keys end  | 
  
#properties ⇒ Object
Returns a copy of the properties for this feature.
      99 100 101  | 
    
      # File 'lib/rgeo/geo_json/entities.rb', line 99 def properties @properties.dup end  | 
  
#property(key) ⇒ Object Also known as: []
Gets the value of the given named property. Returns nil if the given property is not found.
      105 106 107  | 
    
      # File 'lib/rgeo/geo_json/entities.rb', line 105 def property(key) @properties[key.to_s] end  | 
  
#to_s ⇒ Object
      66 67 68  | 
    
      # File 'lib/rgeo/geo_json/entities.rb', line 66 def to_s inspect end  |