Module: OGR::GeometryMixins::Extensions
- Included in:
- OGR::Geometry
- Defined in:
- lib/ogr/extensions/geometry/extensions.rb
Instance Method Summary collapse
- #!=(other) ⇒ Object
- #collection? ⇒ Boolean
- #container? ⇒ Boolean
- #curve? ⇒ Boolean
- #invalid? ⇒ Boolean
- #surface? ⇒ Boolean
- #to_vector(file_name, driver, layer_name: "vectorized_geometry", spatial_reference: nil) ⇒ Object
-
#utm_zone ⇒ Integer
The number of the UTM zone this geometry belongs to.
Instance Method Details
#!=(other) ⇒ Object
43 44 45 |
# File 'lib/ogr/extensions/geometry/extensions.rb', line 43 def !=(other) !equals?(other) end |
#collection? ⇒ Boolean
52 53 54 |
# File 'lib/ogr/extensions/geometry/extensions.rb', line 52 def collection? false end |
#container? ⇒ Boolean
29 30 31 |
# File 'lib/ogr/extensions/geometry/extensions.rb', line 29 def container? self.class.ancestors.include? OGR::GeometryTypes::Container end |
#curve? ⇒ Boolean
34 35 36 |
# File 'lib/ogr/extensions/geometry/extensions.rb', line 34 def curve? self.class.ancestors.include? OGR::GeometryTypes::Curve end |
#invalid? ⇒ Boolean
48 49 50 |
# File 'lib/ogr/extensions/geometry/extensions.rb', line 48 def invalid? !valid? end |
#surface? ⇒ Boolean
39 40 41 |
# File 'lib/ogr/extensions/geometry/extensions.rb', line 39 def surface? self.class.ancestors.include? OGR::GeometryTypes::Surface end |
#to_vector(file_name, driver, layer_name: "vectorized_geometry", spatial_reference: nil) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/ogr/extensions/geometry/extensions.rb', line 56 def to_vector(file_name, driver, layer_name: "vectorized_geometry", spatial_reference: nil) driver = OGR::Driver.by_name(driver) data_source = driver.create_data_source(file_name) log "Creating layer #{layer_name}, type: #{type}" layer = data_source.create_layer(layer_name, geometry_type: type, spatial_reference: spatial_reference) # field = FieldDefinition.new('Name', :OFTString) # field.width = 32 raise OGR::InvalidLayer, "Unable to create layer '#{layer_name}'." unless layer feature = layer.create_feature(layer_name) feature.geometry = self data_source end |
#utm_zone ⇒ Integer
Returns The number of the UTM zone this geometry belongs to.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/ogr/extensions/geometry/extensions.rb', line 9 def utm_zone return unless spatial_reference self_as4326 = if spatial_reference. == "4326" self else # NOTE: #clone here has overridden Ruby's clone and calls OGR_G_Clone; # it's important to do this and clone.tap { |as4326| as4326.transform_to!(OGR::SpatialReference.new.import_from_epsg(4326)) } end self_as4326 = self_as4326.buffer(0) unless valid? return unless self_as4326.point_on_surface.x ((self_as4326.point_on_surface.x + 180) / 6.to_f).floor + 1 end |