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, MultiLineStringMethods, PointMethods 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 RGeo::Geos.factory and RGeo::Cartesian.simple_factory for details. Unsupported options are ignored.



27
28
29
30
31
32
33
# File 'lib/rgeo/cartesian/interface.rb', line 27

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.



117
118
119
# File 'lib/rgeo/cartesian/interface.rb', line 117

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.

:uses_lenient_assertions

If set to true, assertion checking is disabled. This includes simplicity checking on LinearRing, and validity checks on Polygon and MultiPolygon. This may speed up creation of certain objects, at the expense of not doing the proper checking for OGC compliance. Default is false.

:wkt_parser

Configure the parser for WKT. The value is a hash of configuration parameters for WKRep::WKTParser.new. Default is the empty hash, indicating the default configuration for WKRep::WKTParser.

:wkb_parser

Configure the parser for WKB. The value is a hash of configuration parameters for WKRep::WKBParser.new. Default is the empty hash, indicating the default configuration for WKRep::WKBParser.

:wkt_generator

Configure the generator for WKT. The value is a hash of configuration parameters for WKRep::WKTGenerator.new. Default is {:convert_case => :upper}.

:wkb_generator

Configure the generator for WKT. The value is a hash of configuration parameters for WKRep::WKTGenerator.new. Default is the empty hash, indicating the default configuration for WKRep::WKBGenerator.



105
106
107
# File 'lib/rgeo/cartesian/interface.rb', line 105

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.



130
131
132
# File 'lib/rgeo/cartesian/interface.rb', line 130

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