module OGR::Geometry::RttopoExtensions

Methods for {{OGR::Geometry}}s that use rttopo to operate on themselves.

@see postgis.net/docs/doxygen/2.1/da/de7/librttopo_8h_af8d208cf4c0bb7c9f96c75bddc6c498a.html#af8d208cf4c0bb7c9f96c75bddc6c498a

Public Instance Methods

make_valid() click to toggle source

Uses rttopo’s make_valid to make the current geometry valid.

@return [OGR::Geometry] Returns a new geometry, based on the

rttopo_make_valid call.
# File lib/ogr/extensions/geometry/rttopo_extensions.rb, line 17
def make_valid
  ctx = FFI::Rttopo.rtgeom_init FFI::MemoryPointer::NULL, FFI::MemoryPointer::NULL, FFI::MemoryPointer::NULL
  geom = FFI::Rttopo.rtgeom_from_wkb(ctx, to_wkb, wkb_size, false)
  valid_geom = FFI::Rttopo.rtgeom_make_valid(ctx, geom)
  valid_wkb_size = FFI::MemoryPointer.new(:size_t)
  valid_wkb_ptr = FFI::Rttopo.rtgeom_to_wkb(ctx, valid_geom, FFI::Rttopo::RTWKB_EXTENDED, valid_wkb_size)
  valid_wkb = valid_wkb_ptr.read_bytes(valid_wkb_size.read_int)

  FFI::Rttopo.rtfree ctx, geom
  FFI::Rttopo.rtfree ctx, valid_geom
  FFI::Rttopo.rtfree ctx, valid_wkb_ptr
  FFI::Rttopo.rtgeom_finish ctx
  OGR::Geometry.create_from_wkb(valid_wkb)
end