module RGeo::Cartesian

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.

Public Class Methods

factory(opts_={}) click to toggle source
Alias for: preferred_factory
factory_generator(defaults_={}) click to toggle source
preferred_factory(opts_={}) click to toggle source

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 ::simple_factory for details. Unsupported options are ignored.

# File lib/rgeo/cartesian/interface.rb, line 61
def preferred_factory(opts_={})
  if ::RGeo::Geos.supported?
    ::RGeo::Geos.factory(opts_)
  else
    simple_factory(opts_)
  end
end
Also aliased as: factory
preferred_factory_generator(defaults_={}) click to toggle source

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.

# File lib/rgeo/cartesian/interface.rb, line 153
def preferred_factory_generator(defaults_={})
  ::Proc.new{ |c_| preferred_factory(defaults_.merge(c_)) }
end
Also aliased as: factory_generator
simple_factory(opts_={}) click to toggle source

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 RGeo::Feature::Geometry#intersects? are not implemented for most types.

  • Relational constructors such as RGeo::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 RGeo::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 RGeo::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 RGeo::WKRep::WKTGenerator.new. Default is {:convert_case => :upper}.

:wkb_generator

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

# File lib/rgeo/cartesian/interface.rb, line 140
def simple_factory(opts_={})
  Cartesian::Factory.new(opts_)
end
simple_factory_generator(defaults_={}) click to toggle source

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.

# File lib/rgeo/cartesian/interface.rb, line 167
def simple_factory_generator(defaults_={})
  ::Proc.new{ |c_| simple_factory(defaults_.merge(c_)) }
end