Class: Geos::PreparedGeometry

Inherits:
Object
  • Object
show all
Includes:
Tools
Defined in:
lib/ffi-geos/prepared_geometry.rb

Constant Summary

Constants included from GeomTypes

GeomTypes::GEOS_GEOMETRYCOLLECTION, GeomTypes::GEOS_LINEARRING, GeomTypes::GEOS_LINESTRING, GeomTypes::GEOS_MULTILINESTRING, GeomTypes::GEOS_MULTIPOINT, GeomTypes::GEOS_MULTIPOLYGON, GeomTypes::GEOS_POINT, GeomTypes::GEOS_POLYGON

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Tools

#bool_result, #cast_geometry_ptr, #check_enum_value, #check_geometry, #pick_srid_according_to_policy, #pick_srid_from_geoms, #symbol_for_enum

Constructor Details

#initialize(geom, auto_free = true) ⇒ PreparedGeometry

Returns a new instance of PreparedGeometry.



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/ffi-geos/prepared_geometry.rb', line 11

def initialize(geom, auto_free = true)
  check_geometry(geom)

  @ptr = FFI::AutoPointer.new(
    FFIGeos.GEOSPrepare_r(Geos.current_handle, geom.ptr),
    auto_free ? self.class.method(:release) : self.class.method(:no_release)
  )
  @geometry = geom

  if !auto_free
    @ptr.autorelease = false
  end
end

Instance Attribute Details

#geometryObject (readonly)

Returns the value of attribute geometry.



7
8
9
# File 'lib/ffi-geos/prepared_geometry.rb', line 7

def geometry
  @geometry
end

#ptrObject (readonly)

Returns the value of attribute ptr.



7
8
9
# File 'lib/ffi-geos/prepared_geometry.rb', line 7

def ptr
  @ptr
end

Class Method Details

.no_release(ptr) ⇒ Object

:nodoc:



25
26
# File 'lib/ffi-geos/prepared_geometry.rb', line 25

def self.no_release(ptr) #:nodoc:
end

.release(ptr) ⇒ Object

:nodoc:



28
29
30
# File 'lib/ffi-geos/prepared_geometry.rb', line 28

def self.release(ptr) #:nodoc:
  FFIGeos.GEOSPreparedGeom_destroy_r(Geos.current_handle, ptr)
end

Instance Method Details

#contains?(geom) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
35
# File 'lib/ffi-geos/prepared_geometry.rb', line 32

def contains?(geom)
  check_geometry(geom)
  bool_result(FFIGeos.GEOSPreparedContains_r(Geos.current_handle, self.ptr, geom.ptr))
end

#contains_properly?(geom) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
40
# File 'lib/ffi-geos/prepared_geometry.rb', line 37

def contains_properly?(geom)
  check_geometry(geom)
  bool_result(FFIGeos.GEOSPreparedContainsProperly_r(Geos.current_handle, self.ptr, geom.ptr))
end

#covered_by?(geom) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
45
# File 'lib/ffi-geos/prepared_geometry.rb', line 42

def covered_by?(geom)
  check_geometry(geom)
  bool_result(FFIGeos.GEOSPreparedCoveredBy_r(Geos.current_handle, self.ptr, geom.ptr))
end

#covers?(geom) ⇒ Boolean

Returns:

  • (Boolean)


47
48
49
50
# File 'lib/ffi-geos/prepared_geometry.rb', line 47

def covers?(geom)
  check_geometry(geom)
  bool_result(FFIGeos.GEOSPreparedCovers_r(Geos.current_handle, self.ptr, geom.ptr))
end

#crosses?(geom) ⇒ Boolean

Returns:

  • (Boolean)


52
53
54
55
# File 'lib/ffi-geos/prepared_geometry.rb', line 52

def crosses?(geom)
  check_geometry(geom)
  bool_result(FFIGeos.GEOSPreparedCrosses_r(Geos.current_handle, self.ptr, geom.ptr))
end

#disjoint?(geom) ⇒ Boolean

Returns:

  • (Boolean)


57
58
59
60
# File 'lib/ffi-geos/prepared_geometry.rb', line 57

def disjoint?(geom)
  check_geometry(geom)
  bool_result(FFIGeos.GEOSPreparedDisjoint_r(Geos.current_handle, self.ptr, geom.ptr))
end

#intersects?(geom) ⇒ Boolean

Returns:

  • (Boolean)


62
63
64
65
# File 'lib/ffi-geos/prepared_geometry.rb', line 62

def intersects?(geom)
  check_geometry(geom)
  bool_result(FFIGeos.GEOSPreparedIntersects_r(Geos.current_handle, self.ptr, geom.ptr))
end

#overlaps?(geom) ⇒ Boolean

Returns:

  • (Boolean)


67
68
69
70
# File 'lib/ffi-geos/prepared_geometry.rb', line 67

def overlaps?(geom)
  check_geometry(geom)
  bool_result(FFIGeos.GEOSPreparedOverlaps_r(Geos.current_handle, self.ptr, geom.ptr))
end

#touches?(geom) ⇒ Boolean

Returns:

  • (Boolean)


72
73
74
75
# File 'lib/ffi-geos/prepared_geometry.rb', line 72

def touches?(geom)
  check_geometry(geom)
  bool_result(FFIGeos.GEOSPreparedTouches_r(Geos.current_handle, self.ptr, geom.ptr))
end

#within?(geom) ⇒ Boolean

Returns:

  • (Boolean)


77
78
79
80
# File 'lib/ffi-geos/prepared_geometry.rb', line 77

def within?(geom)
  check_geometry(geom)
  bool_result(FFIGeos.GEOSPreparedWithin_r(Geos.current_handle, self.ptr, geom.ptr))
end