Module: RGeo::Cartesian

Defined in:
lib/rgeo/cartesian.rb,
lib/rgeo/cartesian/factory.rb,
lib/rgeo/cartesian/analysis.rb,
lib/rgeo/cartesian/interface.rb,
lib/rgeo/cartesian/bounding_box.rb,
lib/rgeo/cartesian/calculations.rb,
lib/rgeo/cartesian/feature_classes.rb,
lib/rgeo/cartesian/feature_methods.rb

Overview

The Cartesian module is a gateway to implementations that use the Cartesian (i.e. flat) coordinate system. It provides convenient access to Cartesian factories such as the Geos implementation and the simple Cartesian implementation. It also provides a namespace for Cartesian-specific analysis tools.

Defined Under Namespace

Modules: Analysis, GeometryMethods, LineStringMethods Classes: BoundingBox, Factory, GeometryCollectionImpl, LineImpl, LineStringImpl, LinearRingImpl, MultiLineStringImpl, MultiPointImpl, MultiPolygonImpl, PointImpl, PolygonImpl, Segment

Class Method Summary collapse

Class Method Details

.preferred_factory(opts_ = {}) ⇒ Object Also known as: factory

Creates and returns a cartesian factory of the preferred Cartesian implementation.

The actual implementation returned depends on which ruby interpreter is running and what libraries are available. RGeo will try to provide a fully-functional and performant implementation if possible. If not, the simple Cartesian implementation will be returned. In practice, this means it returns a Geos implementation if available; otherwise it falls back to the simple implementation.

The given options are passed to the factory’s constructor. What options are available depends on the particular implementation. See Geos::factory and Cartesian::simple_factory for details. Unsupported options are ignored.



60
61
62
63
64
65
66
# File 'lib/rgeo/cartesian/interface.rb', line 60

def preferred_factory(opts_={})
  if ::RGeo::Geos.supported?
    ::RGeo::Geos.factory(opts_)
  else
    simple_factory(opts_)
  end
end

.preferred_factory_generator(defaults_ = {}) ⇒ Object Also known as: factory_generator

Returns a Feature::FactoryGenerator that creates preferred factories. The given options are used as the default options.

A common case for this is to provide the :srs_database as a default. Then, the factory generator need only be passed an SRID and it will automatically fetch the appropriate Proj4 and CoordSys objects.



127
128
129
# File 'lib/rgeo/cartesian/interface.rb', line 127

def preferred_factory_generator(defaults_={})
  ::Proc.new{ |c_| preferred_factory(defaults_.merge(c_)) }
end

.simple_factory(opts_ = {}) ⇒ Object

Returns a factory for the simple Cartesian implementation. This implementation provides all SFS 1.1 types, and also allows Z and M coordinates. It does not depend on external libraries, and is thus always available, but it does not implement many of the more advanced geometric operations. These limitations are:

  • Relational operators such as Feature::Geometry#intersects? are not implemented for most types.

  • Relational constructors such as Feature::Geometry#union are not implemented for most types.

  • Buffer and convex hull calculations are not implemented for most types. Boundaries are available except for GeometryCollection.

  • Length calculations are available, but areas are not. Distances are available only between points.

  • Equality and simplicity evaluation are implemented for some but not all types.

  • Assertions for polygons and multipolygons are not implemented.

Unimplemented operations may raise Error::UnsupportedOperation if invoked.

Options include:

:srid

Set the SRID returned by geometries created by this factory. Default is 0.

:proj4

The coordinate system in Proj4 format, either as a CoordSys::Proj4 object or as a string or hash representing the proj4 format. Optional.

:coord_sys

The coordinate system in OGC form, either as a subclass of CoordSys::CS::CoordinateSystem, or as a string in WKT format. Optional.

:srs_database

Optional. If provided, the value should be an implementation of CoordSys::SRSDatabase::Interface. If both this and an SRID are provided, they are used to look up the proj4 and coord_sys objects from a spatial reference system database.

:has_z_coordinate

Support a Z coordinate. Default is false.

:has_m_coordinate

Support an M coordinate. Default is false.



114
115
116
# File 'lib/rgeo/cartesian/interface.rb', line 114

def simple_factory(opts_={})
  Cartesian::Factory.new(opts_)
end

.simple_factory_generator(defaults_ = {}) ⇒ Object

Returns a Feature::FactoryGenerator that creates simple factories. The given options are used as the default options.

A common case for this is to provide the :srs_database as a default. Then, the factory generator need only be passed an SRID and it will automatically fetch the appropriate Proj4 and CoordSys objects.



141
142
143
# File 'lib/rgeo/cartesian/interface.rb', line 141

def simple_factory_generator(defaults_={})
  ::Proc.new{ |c_| simple_factory(defaults_.merge(c_)) }
end