Sha256: ce23ab0cce094112b1c11bc97fbcfb76e1acf3079268fae667fe12da33c32e87

Contents?: true

Size: 1.72 KB

Versions: 2

Compression:

Stored size: 1.72 KB

Contents

require 'json'

module OGR
  module LayerMixins
    # Methods not part of the C Layer API.
    module Extensions
      # @return [Array<OGR::Feature>]
      def features
        return [] if feature_count.zero?

        feature_list = feature_count.times.map do |i|
          feature(i)
        end

        @features = feature_list
      end

      # @return [OGR::Geometry] A convex hull geometry derived from a LineString
      #   that connects the 4 bounding box points (from the extent).
      def geometry_from_extent
        sr = spatial_reference
        geometry = OGR::Geometry.create(:wkbLineString)
        geometry.spatial_reference = sr

        geometry.add_point(extent.x_min, extent.y_min)
        geometry.add_point(extent.x_min, extent.y_max)
        geometry.add_point(extent.x_max, extent.y_max)
        geometry.add_point(extent.x_max, extent.y_min)
        geometry.add_point(extent.x_min, extent.y_min)

        geometry.convex_hull
      end

      # @return [Hash]
      def as_json(options = nil)
        {
          layer: {
            extent: extent.as_json(options),
            feature_count: feature_count,
            feature_definition: feature_definition.as_json(options),
            features: features.map(&:as_json),
            fid_column: fid_column,
            geometry_column: geometry_column,
            geometry_type: geometry_type,
            name: name,
            spatial_reference: spatial_reference ? spatial_reference.as_json(options) : nil,
            style_table: style_table ? style_table.as_json(options) : nil
          },
          metadata: nil # all_metadata
        }
      end

      # @return [String]
      def to_json(options = nil)
        as_json(options).to_json
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ffi-gdal-1.0.0.beta5 lib/ogr/layer_mixins/extensions.rb
ffi-gdal-1.0.0.beta4 lib/ogr/layer_mixins/extensions.rb