ffi-geos 0.0.1.beta1 → 0.0.1.beta2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +7 -5
- data/VERSION +1 -1
- data/ffi-geos.gemspec +85 -0
- data/lib/buffer_params.rb +81 -0
- data/lib/ffi-geos.rb +273 -20
- data/lib/geometry.rb +22 -51
- data/lib/line_string.rb +5 -11
- data/lib/prepared_geometry.rb +30 -0
- data/lib/tools.rb +8 -0
- data/lib/utils.rb +22 -14
- data/test/geometry_tests.rb +125 -105
- data/test/prepared_geometry_tests.rb +56 -10
- data/test/utils_tests.rb +16 -11
- metadata +6 -4
data/README.rdoc
CHANGED
@@ -43,7 +43,13 @@ Ruby bindings along with the following enhancements and additions:
|
|
43
43
|
have been enhanced to take options Hashes allowing you to set per-write
|
44
44
|
settings.
|
45
45
|
|
46
|
-
|
46
|
+
* Geos::BufferParams class that allows for more extensive Geos::Geometry#buffer
|
47
|
+
options.
|
48
|
+
|
49
|
+
* Geos::PreparedGeometry class and Geos::Geometry#to_prepared method to
|
50
|
+
allow for prepared geometries and more efficient relationship testing.
|
51
|
+
|
52
|
+
== New Methods and Additions (not exhaustive)
|
47
53
|
|
48
54
|
=== Geos
|
49
55
|
|
@@ -73,8 +79,6 @@ Ruby bindings along with the following enhancements and additions:
|
|
73
79
|
|
74
80
|
=== Geos::Geometry
|
75
81
|
|
76
|
-
* Geos::Geometry#buffer_with_style
|
77
|
-
|
78
82
|
* Geos::Geometry#num_coordinates
|
79
83
|
|
80
84
|
* Geos::Geometry#union_cascaded. Geos::Geometry#union can also be called
|
@@ -118,8 +122,6 @@ Ruby bindings along with the following enhancements and additions:
|
|
118
122
|
|
119
123
|
* Geos::LineString#point_n
|
120
124
|
|
121
|
-
* Geos::LineString#buffer_single_sided
|
122
|
-
|
123
125
|
* Geos::LineString#closed?
|
124
126
|
|
125
127
|
=== Geos::WktWriter
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.1.
|
1
|
+
0.0.1.beta2
|
data/ffi-geos.gemspec
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{ffi-geos}
|
8
|
+
s.version = "0.0.1.beta2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["J Smith"]
|
12
|
+
s.date = %q{2011-05-11}
|
13
|
+
s.description = %q{An ffi wrapper for GEOS, a C++ port of the Java Topology Suite (JTS).}
|
14
|
+
s.email = %q{dark.panda@gmail.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"README.rdoc"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
"MIT-LICENSE",
|
20
|
+
"README.rdoc",
|
21
|
+
"Rakefile",
|
22
|
+
"VERSION",
|
23
|
+
"ffi-geos.gemspec",
|
24
|
+
"lib/buffer_params.rb",
|
25
|
+
"lib/coordinate_sequence.rb",
|
26
|
+
"lib/ffi-geos.rb",
|
27
|
+
"lib/geometry.rb",
|
28
|
+
"lib/geometry_collection.rb",
|
29
|
+
"lib/line_string.rb",
|
30
|
+
"lib/linear_ring.rb",
|
31
|
+
"lib/multi_line_string.rb",
|
32
|
+
"lib/multi_point.rb",
|
33
|
+
"lib/multi_polygon.rb",
|
34
|
+
"lib/point.rb",
|
35
|
+
"lib/polygon.rb",
|
36
|
+
"lib/prepared_geometry.rb",
|
37
|
+
"lib/strtree.rb",
|
38
|
+
"lib/tools.rb",
|
39
|
+
"lib/utils.rb",
|
40
|
+
"lib/wkb_reader.rb",
|
41
|
+
"lib/wkb_writer.rb",
|
42
|
+
"lib/wkt_reader.rb",
|
43
|
+
"lib/wkt_writer.rb",
|
44
|
+
"test/coordinate_sequence_tests.rb",
|
45
|
+
"test/geometry_tests.rb",
|
46
|
+
"test/misc_tests.rb",
|
47
|
+
"test/point_tests.rb",
|
48
|
+
"test/prepared_geometry_tests.rb",
|
49
|
+
"test/strtree_tests.rb",
|
50
|
+
"test/test_helper.rb",
|
51
|
+
"test/utils_tests.rb",
|
52
|
+
"test/wkb_reader_tests.rb",
|
53
|
+
"test/wkb_writer_tests.rb",
|
54
|
+
"test/wkt_reader_tests.rb",
|
55
|
+
"test/wkt_writer_tests.rb"
|
56
|
+
]
|
57
|
+
s.homepage = %q{http://github.com/dark-panda/ffi-geos}
|
58
|
+
s.require_paths = ["lib"]
|
59
|
+
s.rubygems_version = %q{1.7.2}
|
60
|
+
s.summary = %q{An ffi wrapper for GEOS, a C++ port of the Java Topology Suite (JTS).}
|
61
|
+
s.test_files = [
|
62
|
+
"test/coordinate_sequence_tests.rb",
|
63
|
+
"test/geometry_tests.rb",
|
64
|
+
"test/misc_tests.rb",
|
65
|
+
"test/point_tests.rb",
|
66
|
+
"test/prepared_geometry_tests.rb",
|
67
|
+
"test/strtree_tests.rb",
|
68
|
+
"test/test_helper.rb",
|
69
|
+
"test/utils_tests.rb",
|
70
|
+
"test/wkb_reader_tests.rb",
|
71
|
+
"test/wkb_writer_tests.rb",
|
72
|
+
"test/wkt_reader_tests.rb",
|
73
|
+
"test/wkt_writer_tests.rb"
|
74
|
+
]
|
75
|
+
|
76
|
+
if s.respond_to? :specification_version then
|
77
|
+
s.specification_version = 3
|
78
|
+
|
79
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
80
|
+
else
|
81
|
+
end
|
82
|
+
else
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
@@ -0,0 +1,81 @@
|
|
1
|
+
|
2
|
+
module Geos
|
3
|
+
class BufferParams
|
4
|
+
include Geos::Tools
|
5
|
+
|
6
|
+
attr_reader :ptr, :params
|
7
|
+
|
8
|
+
VALID_PARAMETERS = [
|
9
|
+
:quad_segs, :endcap, :join, :mitre_limit, :single_sided
|
10
|
+
].freeze
|
11
|
+
|
12
|
+
# The defaults for the params according to GEOS are as found in
|
13
|
+
# Geos::Constants::BUFFER_PARAMS_DEFAULTS. Note that when setting the
|
14
|
+
# :quad_segs value that you should set it before setting other values like
|
15
|
+
# :join and :mitre_limit, as GEOS contains logic concerning how the
|
16
|
+
# :quad_segs value affects these parameters and vice versa. For details,
|
17
|
+
# refer to src/operation/buffer/BufferParameters.cpp and the
|
18
|
+
# BufferParameters::setQuadrantSegments(int) method in the GEOS source
|
19
|
+
# code for details.
|
20
|
+
def initialize(params = {})
|
21
|
+
params = Geos::Constants::BUFFER_PARAM_DEFAULTS.merge(params)
|
22
|
+
|
23
|
+
ptr = FFIGeos.GEOSBufferParams_create_r(Geos.current_handle)
|
24
|
+
@ptr = FFI::AutoPointer.new(
|
25
|
+
ptr,
|
26
|
+
self.class.method(:release)
|
27
|
+
)
|
28
|
+
|
29
|
+
@params = {}
|
30
|
+
VALID_PARAMETERS.each do |param|
|
31
|
+
self.send("#{param}=", params[param])
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.release(ptr) #:nodoc:
|
36
|
+
FFIGeos.GEOSBufferParams_destroy_r(Geos.current_handle, ptr)
|
37
|
+
end
|
38
|
+
|
39
|
+
def endcap=(value)
|
40
|
+
check_enum_value(Geos::BufferCapStyles, value)
|
41
|
+
|
42
|
+
if bool_result(FFIGeos.GEOSBufferParams_setEndCapStyle_r(Geos.current_handle, ptr, value))
|
43
|
+
@params[:endcap] = symbol_for_enum(Geos::BufferCapStyles, value)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def join=(value)
|
48
|
+
check_enum_value(Geos::BufferJoinStyles, value)
|
49
|
+
|
50
|
+
if bool_result(FFIGeos.GEOSBufferParams_setJoinStyle_r(Geos.current_handle, ptr, value))
|
51
|
+
@params[:join] = symbol_for_enum(Geos::BufferJoinStyles, value)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def mitre_limit=(value)
|
56
|
+
if bool_result(FFIGeos.GEOSBufferParams_setMitreLimit_r(Geos.current_handle, ptr, value))
|
57
|
+
@params[:mitre_limit] = value
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def quad_segs=(value)
|
62
|
+
if bool_result(FFIGeos.GEOSBufferParams_setQuadrantSegments_r(Geos.current_handle, ptr, value))
|
63
|
+
@params[:quad_segs] = value
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def single_sided=(value)
|
68
|
+
if bool_result(FFIGeos.GEOSBufferParams_setSingleSided_r(Geos.current_handle, ptr, value ? 1 : 0))
|
69
|
+
@params[:single_sided] = value
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
VALID_PARAMETERS.each do |param|
|
74
|
+
self.class_eval(<<-EOF, __FILE__, __LINE__ + 1)
|
75
|
+
def #{param}
|
76
|
+
@params[:#{param}]
|
77
|
+
end
|
78
|
+
EOF
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
data/lib/ffi-geos.rb
CHANGED
@@ -37,6 +37,8 @@ module Geos
|
|
37
37
|
File.join(GEOS_BASE, 'point')
|
38
38
|
autoload :STRtree,
|
39
39
|
File.join(GEOS_BASE, 'strtree')
|
40
|
+
autoload :BufferParams,
|
41
|
+
File.join(GEOS_BASE, 'buffer_params')
|
40
42
|
autoload :Tools,
|
41
43
|
File.join(GEOS_BASE, 'tools')
|
42
44
|
autoload :Utils,
|
@@ -110,15 +112,31 @@ module Geos
|
|
110
112
|
:monovalent_endpoint, 4
|
111
113
|
])
|
112
114
|
|
115
|
+
Geos::GeometryTypes = enum(:geometry_type, [
|
116
|
+
:point, 0,
|
117
|
+
:line_string, 1,
|
118
|
+
:linear_ring, 2,
|
119
|
+
:polygon, 3,
|
120
|
+
:multi_point, 4,
|
121
|
+
:multi_line_string, 5,
|
122
|
+
:multi_polygon, 6,
|
123
|
+
:geometry_collection, 7
|
124
|
+
])
|
125
|
+
|
113
126
|
FFI_LAYOUT = {
|
114
127
|
#### Utility functions ####
|
115
128
|
:initGEOS_r => [
|
116
129
|
:pointer,
|
130
|
+
|
131
|
+
# notice callback
|
117
132
|
callback([ :string, :string ], :void),
|
133
|
+
|
134
|
+
# error callback
|
118
135
|
callback([ :string, :string ], :void)
|
119
136
|
],
|
120
137
|
|
121
138
|
:finishGEOS_r => [
|
139
|
+
# void, *handle
|
122
140
|
:void, :pointer
|
123
141
|
],
|
124
142
|
|
@@ -131,538 +149,715 @@ module Geos
|
|
131
149
|
],
|
132
150
|
|
133
151
|
:GEOSPolygonize_r => [
|
152
|
+
# *geom, *handle, **geoms, ngeoms
|
134
153
|
:pointer, :pointer, :pointer, :uint
|
135
154
|
],
|
136
155
|
|
137
156
|
:GEOSPolygonizer_getCutEdges_r => [
|
157
|
+
# *geom, *handle, **geoms, ngeoms
|
138
158
|
:pointer, :pointer, :pointer, :uint
|
139
159
|
],
|
140
160
|
|
141
161
|
:GEOSPolygonize_full_r => [
|
162
|
+
# *geom, *handle, *geom, **cuts, **dangles, **invalid
|
142
163
|
:pointer, :pointer, :pointer, :pointer, :pointer, :pointer
|
143
164
|
],
|
144
165
|
|
145
166
|
:GEOSGeom_createPoint_r => [
|
167
|
+
# *geom, *handle, *coord_seq
|
146
168
|
:pointer, :pointer, :pointer
|
147
169
|
],
|
148
170
|
|
149
171
|
:GEOSGeom_createEmptyPoint_r => [
|
172
|
+
# *geom, *handle
|
150
173
|
:pointer, :pointer
|
151
174
|
],
|
152
175
|
|
153
176
|
:GEOSGeom_createEmptyLineString_r => [
|
177
|
+
# *geom, *handle
|
154
178
|
:pointer, :pointer
|
155
179
|
],
|
156
180
|
|
157
181
|
:GEOSGeom_createLinearRing_r => [
|
182
|
+
# *geom, *handle, *coord_seq
|
158
183
|
:pointer, :pointer, :pointer
|
159
184
|
],
|
160
185
|
|
161
186
|
:GEOSGeom_createLineString_r => [
|
187
|
+
# *geom, *handle, *coord_seq
|
162
188
|
:pointer, :pointer, :pointer
|
163
189
|
],
|
164
190
|
|
165
191
|
:GEOSGeom_createPolygon_r => [
|
192
|
+
# *geom, *handle, *geom, **holes, nholes
|
166
193
|
:pointer, :pointer, :pointer, :pointer, :uint
|
167
194
|
],
|
168
195
|
|
169
196
|
:GEOSGeom_createEmptyPolygon_r => [
|
197
|
+
# *geom, *handle
|
170
198
|
:pointer, :pointer
|
171
199
|
],
|
172
200
|
|
173
201
|
:GEOSGeom_createCollection_r => [
|
174
|
-
|
202
|
+
# *geom, *handle, type, **geoms, ngeoms
|
203
|
+
:pointer, :pointer, :geometry_type, :pointer, :uint
|
175
204
|
],
|
176
205
|
|
177
206
|
:GEOSGeom_createEmptyCollection_r => [
|
178
|
-
|
207
|
+
# *geom, *handle, type
|
208
|
+
:pointer, :pointer, :geometry_type
|
179
209
|
],
|
180
210
|
#### /Utility functions ####
|
181
211
|
|
182
212
|
#### CoordinateSequence functions ####
|
183
213
|
:GEOSCoordSeq_create_r => [
|
214
|
+
# *coord_seq, *handle, size, dims
|
184
215
|
:pointer, :pointer, :uint, :uint
|
185
216
|
],
|
186
217
|
|
187
218
|
:GEOSCoordSeq_destroy_r => [
|
219
|
+
# void, *handle, *coord_seq
|
188
220
|
:void, :pointer, :pointer
|
189
221
|
],
|
190
222
|
|
191
223
|
:GEOSCoordSeq_clone_r => [
|
224
|
+
# *coord_seq, *handle, *coord_seq
|
192
225
|
:pointer, :pointer, :pointer
|
193
226
|
],
|
194
227
|
|
195
228
|
:GEOSCoordSeq_setX_r => [
|
229
|
+
# 0 on exception, *handle, *coord_seq, idx, val
|
196
230
|
:int, :pointer, :pointer, :uint, :double
|
197
231
|
],
|
198
232
|
|
199
233
|
:GEOSCoordSeq_setY_r => [
|
234
|
+
# 0 on exception, *handle, *coord_seq, idx, val
|
200
235
|
:int, :pointer, :pointer, :uint, :double
|
201
236
|
],
|
202
237
|
|
203
238
|
:GEOSCoordSeq_setZ_r => [
|
239
|
+
# 0 on exception, *handle, *coord_seq, idx, val
|
204
240
|
:int, :pointer, :pointer, :uint, :double
|
205
241
|
],
|
206
242
|
|
207
243
|
:GEOSCoordSeq_setOrdinate_r => [
|
244
|
+
# 0 on exception, *handle, *coord_seq, idx, dim, val
|
208
245
|
:int, :pointer, :pointer, :uint, :uint, :double
|
209
246
|
],
|
210
247
|
|
211
248
|
:GEOSCoordSeq_getX_r => [
|
249
|
+
# 0 on exception, *handle, *coord_seq, idx, (double *) val
|
212
250
|
:int, :pointer, :pointer, :uint, :pointer
|
213
251
|
],
|
214
252
|
|
215
253
|
:GEOSCoordSeq_getY_r => [
|
254
|
+
# 0 on exception, *handle, *coord_seq, idx, (double *) val
|
216
255
|
:int, :pointer, :pointer, :uint, :pointer
|
217
256
|
],
|
218
257
|
|
219
258
|
:GEOSCoordSeq_getZ_r => [
|
259
|
+
# 0 on exception, *handle, *coord_seq, idx, (double *) val
|
220
260
|
:int, :pointer, :pointer, :uint, :pointer
|
221
261
|
],
|
222
262
|
|
223
263
|
:GEOSCoordSeq_getOrdinate_r => [
|
264
|
+
# 0 on exception, *handle, *coord_seq, idx, dim, (double *) val
|
224
265
|
:int, :pointer, :pointer, :uint, :uint, :pointer
|
225
266
|
],
|
226
267
|
|
227
268
|
:GEOSCoordSeq_getSize_r => [
|
269
|
+
# 0 on exception, *handle, *coord_seq, (uint *) size
|
228
270
|
:int, :pointer, :pointer, :pointer
|
229
271
|
],
|
230
272
|
|
231
|
-
:GEOSNormalize_r => [
|
232
|
-
:int, :pointer, :pointer
|
233
|
-
],
|
234
|
-
|
235
273
|
:GEOSCoordSeq_getDimensions_r => [
|
274
|
+
# 0 on exception, *handle, *coord_seq, (uint *) size
|
236
275
|
:int, :pointer, :pointer, :pointer
|
237
276
|
],
|
238
277
|
#### /CoordinateSequence functions ####
|
239
278
|
|
240
279
|
#### Geometry functions ####
|
241
280
|
:GEOSGeom_destroy_r => [
|
281
|
+
# void, *handle, *geom
|
242
282
|
:void, :pointer, :pointer
|
243
283
|
],
|
244
284
|
|
245
285
|
:GEOSGeom_clone_r => [
|
286
|
+
# *geom, *handle, *geom
|
246
287
|
:pointer, :pointer, :pointer
|
247
288
|
],
|
248
289
|
|
249
290
|
:GEOSGeomTypeId_r => [
|
291
|
+
# type, *handle, *geom
|
250
292
|
:int, :pointer, :pointer
|
251
293
|
],
|
252
294
|
|
253
295
|
:GEOSGeomType_r => [
|
296
|
+
# type, *handle, *geom
|
254
297
|
:string, :pointer, :pointer
|
255
298
|
],
|
256
299
|
|
257
300
|
:GEOSGetSRID_r => [
|
301
|
+
# srid, *handle, *geom
|
258
302
|
:int, :pointer, :pointer
|
259
303
|
],
|
260
304
|
|
261
305
|
:GEOSSetSRID_r => [
|
306
|
+
# void, *handle, *geom, srid
|
262
307
|
:void, :pointer, :pointer, :int
|
263
308
|
],
|
264
309
|
|
265
310
|
:GEOSGeom_getDimensions_r => [
|
311
|
+
# dims, *handle, *geom
|
266
312
|
:int, :pointer, :pointer
|
267
313
|
],
|
268
314
|
|
269
315
|
:GEOSGetNumGeometries_r => [
|
316
|
+
# ngeoms, *handle, *geom
|
270
317
|
:int, :pointer, :pointer
|
271
318
|
],
|
272
319
|
|
273
320
|
:GEOSGetNumCoordinates_r => [
|
321
|
+
# numcoords, *handle, *geom
|
274
322
|
:int, :pointer, :pointer
|
275
323
|
],
|
276
324
|
|
277
325
|
:GEOSGeom_getCoordSeq_r => [
|
326
|
+
# *coord_seq, *handle, *geom
|
278
327
|
:pointer, :pointer, :pointer
|
279
328
|
],
|
280
329
|
|
281
330
|
:GEOSIntersection_r => [
|
331
|
+
# *geom, *handle, *geom_a, *geom_b
|
282
332
|
:pointer, :pointer, :pointer, :pointer
|
283
333
|
],
|
284
334
|
|
335
|
+
:GEOSBufferWithParams_r => [
|
336
|
+
# *geom, *handle, *geom, *oarams, width
|
337
|
+
:pointer, :pointer, :pointer, :pointer, :double
|
338
|
+
],
|
339
|
+
|
285
340
|
:GEOSBuffer_r => [
|
341
|
+
# *geom, *handle, *geom, width, quad_segs
|
286
342
|
:pointer, :pointer, :pointer, :double, :int
|
287
343
|
],
|
288
344
|
|
289
345
|
:GEOSBufferWithStyle_r => [
|
346
|
+
# *geom, *handle, *geom, width, quad_segs, buffer_cap_style, buffer_join_style, mitre_limit
|
290
347
|
:pointer, :pointer, :pointer, :double, :int, :buffer_cap_style, :buffer_join_style, :double
|
291
348
|
],
|
292
349
|
|
350
|
+
# Deprecated in GEOS 3.3.0.
|
293
351
|
:GEOSSingleSidedBuffer_r => [
|
352
|
+
# *geom, *handle, *geom, width, quad_segs, buffer_join_style, mitre_limit, is_left
|
294
353
|
:pointer, :pointer, :pointer, :double, :int, :buffer_join_style, :double, :int
|
295
354
|
],
|
296
355
|
|
356
|
+
:GEOSOffsetCurve_r => [
|
357
|
+
# *geom, *handle, *geom, width, quad_segs, buffer_join_style, mitre_limit
|
358
|
+
:pointer, :pointer, :pointer, :double, :int, :buffer_join_style, :double
|
359
|
+
],
|
360
|
+
|
297
361
|
:GEOSConvexHull_r => [
|
362
|
+
# *geom, *handle, *geom
|
298
363
|
:pointer, :pointer, :pointer
|
299
364
|
],
|
300
365
|
|
301
366
|
:GEOSDifference_r => [
|
367
|
+
# *geom, *handle, *geom_a, *geom_b
|
302
368
|
:pointer, :pointer, :pointer, :pointer
|
303
369
|
],
|
304
370
|
|
305
371
|
:GEOSSymDifference_r => [
|
372
|
+
# *geom, *handle, *geom_a, *geom_b
|
306
373
|
:pointer, :pointer, :pointer, :pointer
|
307
374
|
],
|
308
375
|
|
309
376
|
:GEOSBoundary_r => [
|
377
|
+
# *geom, *handle, *geom
|
310
378
|
:pointer, :pointer, :pointer
|
311
379
|
],
|
312
380
|
|
313
381
|
:GEOSUnion_r => [
|
382
|
+
# *geom, *handle, *geom_a, *geom_b
|
314
383
|
:pointer, :pointer, :pointer, :pointer
|
315
384
|
],
|
316
385
|
|
317
386
|
:GEOSUnaryUnion_r => [
|
387
|
+
# *geom, *handle, *geom
|
318
388
|
:pointer, :pointer, :pointer
|
319
389
|
],
|
320
390
|
|
391
|
+
# Deprecated in GEOS 3.3.0. Use GEOSUnaryUnion_r instead.
|
321
392
|
:GEOSUnionCascaded_r => [
|
393
|
+
# *geom, *handle, *geom
|
322
394
|
:pointer, :pointer, :pointer
|
323
395
|
],
|
324
396
|
|
325
397
|
:GEOSPointOnSurface_r => [
|
398
|
+
# *geom, *handle, *geom
|
326
399
|
:pointer, :pointer, :pointer
|
327
400
|
],
|
328
401
|
|
329
402
|
:GEOSGetCentroid_r => [
|
403
|
+
# *geom, *handle, *geom
|
330
404
|
:pointer, :pointer, :pointer
|
331
405
|
],
|
332
406
|
|
333
407
|
:GEOSEnvelope_r => [
|
408
|
+
# *geom, *handle, *geom
|
334
409
|
:pointer, :pointer, :pointer
|
335
410
|
],
|
336
411
|
|
337
412
|
:GEOSLineMerge_r => [
|
413
|
+
# *geom, *handle, *geom
|
338
414
|
:pointer, :pointer, :pointer
|
339
415
|
],
|
340
416
|
|
341
417
|
:GEOSSimplify_r => [
|
418
|
+
# *geom, *handle, *geom, tolerance
|
342
419
|
:pointer, :pointer, :pointer, :double
|
343
420
|
],
|
344
421
|
|
345
422
|
:GEOSTopologyPreserveSimplify_r => [
|
423
|
+
# *geom, *handle, *geom, tolerance
|
346
424
|
:pointer, :pointer, :pointer, :double
|
347
425
|
],
|
348
426
|
|
349
427
|
:GEOSGeom_extractUniquePoints_r => [
|
428
|
+
# *geom, *handle, *geom
|
350
429
|
:pointer, :pointer, :pointer
|
351
430
|
],
|
352
431
|
|
353
432
|
:GEOSSharedPaths_r => [
|
433
|
+
# *geom, *handle, *geom_a, *geom_b
|
354
434
|
:pointer, :pointer, :pointer, :pointer
|
355
435
|
],
|
356
436
|
|
357
437
|
:GEOSSnap_r => [
|
438
|
+
# *geom, *handle, *geom_a, *geom_b, tolerance
|
358
439
|
:pointer, :pointer, :pointer, :pointer, :double
|
359
440
|
],
|
360
441
|
|
361
442
|
:GEOSRelate_r => [
|
443
|
+
# string, *handle, *geom_a, *geom_b
|
362
444
|
:string, :pointer, :pointer, :pointer
|
363
445
|
],
|
364
446
|
|
365
447
|
:GEOSRelatePatternMatch_r => [
|
448
|
+
# (2 on exception, 1 on true, 2 on false), *handle, pattern_a, pattern_b
|
366
449
|
:char, :pointer, :string, :string
|
367
450
|
],
|
368
451
|
|
369
452
|
:GEOSRelatePattern_r => [
|
453
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b, pattern
|
370
454
|
:char, :pointer, :pointer, :pointer, :string
|
371
455
|
],
|
372
456
|
|
373
457
|
:GEOSRelateBoundaryNodeRule_r => [
|
458
|
+
# string, *handle, *geom_a, *geom_b, bnr
|
374
459
|
:string, :pointer, :pointer, :pointer, :relate_boundary_node_rule
|
375
460
|
],
|
376
461
|
|
377
462
|
:GEOSDisjoint_r => [
|
463
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
378
464
|
:char, :pointer, :pointer, :pointer
|
379
465
|
],
|
380
466
|
|
381
467
|
:GEOSTouches_r => [
|
468
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
382
469
|
:char, :pointer, :pointer, :pointer
|
383
470
|
],
|
384
471
|
|
385
472
|
:GEOSIntersects_r => [
|
473
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
386
474
|
:char, :pointer, :pointer, :pointer
|
387
475
|
],
|
388
476
|
|
389
477
|
:GEOSCrosses_r => [
|
478
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
390
479
|
:char, :pointer, :pointer, :pointer
|
391
480
|
],
|
392
481
|
|
393
482
|
:GEOSWithin_r => [
|
483
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
394
484
|
:char, :pointer, :pointer, :pointer
|
395
485
|
],
|
396
486
|
|
397
487
|
:GEOSContains_r => [
|
488
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
398
489
|
:char, :pointer, :pointer, :pointer
|
399
490
|
],
|
400
491
|
|
401
492
|
:GEOSOverlaps_r => [
|
493
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
402
494
|
:char, :pointer, :pointer, :pointer
|
403
495
|
],
|
404
496
|
|
405
497
|
:GEOSCovers_r => [
|
498
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
406
499
|
:char, :pointer, :pointer, :pointer
|
407
500
|
],
|
408
501
|
|
409
502
|
:GEOSCoveredBy_r => [
|
503
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
410
504
|
:char, :pointer, :pointer, :pointer
|
411
505
|
],
|
412
506
|
|
413
507
|
:GEOSEquals_r => [
|
508
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
414
509
|
:char, :pointer, :pointer, :pointer
|
415
510
|
],
|
416
511
|
|
417
512
|
:GEOSEqualsExact_r => [
|
513
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
418
514
|
:char, :pointer, :pointer, :pointer, :double
|
419
515
|
],
|
420
516
|
|
421
517
|
:GEOSisEmpty_r => [
|
518
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom
|
422
519
|
:char, :pointer, :pointer
|
423
520
|
],
|
424
521
|
|
425
522
|
:GEOSisValid_r => [
|
523
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom
|
426
524
|
:char, :pointer, :pointer
|
427
525
|
],
|
428
526
|
|
429
527
|
:GEOSisValidReason_r => [
|
528
|
+
# reason, *handle, *geom
|
430
529
|
:string, :pointer, :pointer
|
431
530
|
],
|
432
531
|
|
433
532
|
:GEOSisValidDetail_r => [
|
533
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom, flags, (string**) reasons, **geoms
|
434
534
|
:char, :pointer, :pointer, :int, :pointer, :pointer
|
435
535
|
],
|
436
536
|
|
437
537
|
:GEOSisSimple_r => [
|
538
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom
|
438
539
|
:char, :pointer, :pointer
|
439
540
|
],
|
440
541
|
|
441
542
|
:GEOSisRing_r => [
|
543
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom
|
442
544
|
:char, :pointer, :pointer
|
443
545
|
],
|
444
546
|
|
445
547
|
:GEOSHasZ_r => [
|
548
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom
|
446
549
|
:char, :pointer, :pointer
|
447
550
|
],
|
448
551
|
|
449
552
|
:GEOSisClosed_r => [
|
553
|
+
# (2 on exception, 1 on true, 2 on false), *handle, *geom
|
450
554
|
:char, :pointer, :pointer
|
451
555
|
],
|
452
556
|
|
453
557
|
:GEOSArea_r => [
|
558
|
+
# (0 on exception, 1 otherwise), *handle, *geom, (double *) area
|
454
559
|
:int, :pointer, :pointer, :pointer
|
455
560
|
],
|
456
561
|
|
457
562
|
:GEOSLength_r => [
|
563
|
+
# (0 on exception, 1 otherwise), *handle, *geom, (double *) length
|
458
564
|
:int, :pointer, :pointer, :pointer
|
459
565
|
],
|
460
566
|
|
461
567
|
:GEOSDistance_r => [
|
568
|
+
# (0 on exception, 1 otherwise), *handle, *geom_a, *geom_b, (double *) distance
|
462
569
|
:int, :pointer, :pointer, :pointer, :pointer
|
463
570
|
],
|
464
571
|
|
465
572
|
:GEOSHausdorffDistance_r => [
|
573
|
+
# (0 on exception, 1 otherwise), *handle, *geom_a, *geom_b, (double *) distance
|
466
574
|
:int, :pointer, :pointer, :pointer, :pointer
|
467
575
|
],
|
468
576
|
|
577
|
+
:GEOSHausdorffDistanceDensify_r => [
|
578
|
+
# (0 on exception, 1 otherwise), *handle, *geom_a, *geom_b, densifyFrac, (double *) distance
|
579
|
+
:int, :pointer, :pointer, :pointer, :double, :pointer
|
580
|
+
],
|
581
|
+
|
469
582
|
:GEOSGetGeometryN_r => [
|
583
|
+
# *geom, *handle, *geom, n
|
470
584
|
:pointer, :pointer, :pointer, :int
|
471
585
|
],
|
472
586
|
|
473
587
|
:GEOSGetNumInteriorRings_r => [
|
588
|
+
# rings, *handle, *geom
|
589
|
+
:int, :pointer, :pointer
|
590
|
+
],
|
591
|
+
|
592
|
+
:GEOSNormalize_r => [
|
593
|
+
# -1 on exception, *handle, *geom
|
474
594
|
:int, :pointer, :pointer
|
475
595
|
],
|
476
596
|
|
477
597
|
:GEOSGetInteriorRingN_r => [
|
598
|
+
# *geom, *handle, *geom, n
|
478
599
|
:pointer, :pointer, :pointer, :int
|
479
600
|
],
|
480
601
|
|
481
602
|
:GEOSGetExteriorRing_r => [
|
603
|
+
# *geom, *handle, *geom
|
482
604
|
:pointer, :pointer, :pointer
|
483
605
|
],
|
484
606
|
|
485
607
|
:GEOSGeomGetNumPoints_r => [
|
608
|
+
# numpoints, *handle, *geom
|
486
609
|
:int, :pointer, :pointer
|
487
610
|
],
|
488
611
|
|
489
612
|
:GEOSGeomGetX_r => [
|
613
|
+
# -1 on exception, *handle, *geom, *point
|
490
614
|
:int, :pointer, :pointer, :pointer
|
491
615
|
],
|
492
616
|
|
493
617
|
:GEOSGeomGetY_r => [
|
618
|
+
# -1 on exception, *handle, *geom, *point
|
494
619
|
:int, :pointer, :pointer, :pointer
|
495
620
|
],
|
496
621
|
|
497
622
|
:GEOSGeomGetPointN_r => [
|
623
|
+
# *point, *handle, *geom, n
|
498
624
|
:pointer, :pointer, :pointer, :int
|
499
625
|
],
|
500
626
|
|
501
627
|
:GEOSGeomGetStartPoint_r => [
|
628
|
+
# *point, *handle, *geom
|
502
629
|
:pointer, :pointer, :pointer
|
503
630
|
],
|
504
631
|
|
505
632
|
:GEOSGeomGetEndPoint_r => [
|
633
|
+
# *point, *handle, *geom
|
506
634
|
:pointer, :pointer, :pointer
|
507
635
|
],
|
508
636
|
#### /Geometry functions ####
|
509
637
|
|
510
638
|
#### STRtree functions ####
|
511
639
|
:GEOSSTRtree_create_r => [
|
640
|
+
# *tree, *handle, node_capacity
|
512
641
|
:pointer, :pointer, :size_t
|
513
642
|
],
|
514
643
|
|
515
644
|
:GEOSSTRtree_insert_r => [
|
645
|
+
# void, *handle, *tree, *geom, *void
|
516
646
|
:void, :pointer, :pointer, :pointer, :pointer
|
517
647
|
],
|
518
648
|
|
519
649
|
:GEOSSTRtree_query_r => [
|
650
|
+
# void, *handle, *tree, *geom, void query_callback((void *) item, (void *) user_data), (void *) user_data
|
520
651
|
:void, :pointer, :pointer, :pointer, callback([ :pointer, :pointer ], :void), :pointer
|
521
652
|
],
|
522
653
|
|
523
654
|
:GEOSSTRtree_iterate_r => [
|
655
|
+
# void, *handle, *tree, void query_callback((void *) item, (void *) user_data), (void *) user_data
|
524
656
|
:void, :pointer, :pointer, callback([ :pointer, :pointer ], :void), :pointer
|
525
657
|
],
|
526
658
|
|
527
659
|
:GEOSSTRtree_remove_r => [
|
660
|
+
# bool, *handle, *tree, *geom, (void *) item
|
528
661
|
:char, :pointer, :pointer, :pointer, :pointer
|
529
662
|
],
|
530
663
|
|
531
664
|
:GEOSSTRtree_destroy_r => [
|
665
|
+
# void, *handle, *tree
|
532
666
|
:void, :pointer, :pointer
|
533
667
|
],
|
534
668
|
#### /STRtree functions ####
|
535
669
|
|
536
670
|
#### PreparedGeometry functions ####
|
537
671
|
:GEOSPrepare_r => [
|
672
|
+
# *prepared, *handle, *geom
|
538
673
|
:pointer, :pointer, :pointer
|
539
674
|
],
|
540
675
|
|
541
676
|
:GEOSPreparedGeom_destroy_r => [
|
677
|
+
# void, *handle, *geom
|
542
678
|
:void, :pointer, :pointer
|
543
679
|
],
|
544
680
|
|
545
681
|
:GEOSPreparedContains_r => [
|
682
|
+
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
546
683
|
:char, :pointer, :pointer, :pointer
|
547
684
|
],
|
548
685
|
|
549
686
|
:GEOSPreparedContainsProperly_r => [
|
687
|
+
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
688
|
+
:char, :pointer, :pointer, :pointer
|
689
|
+
],
|
690
|
+
|
691
|
+
:GEOSPreparedCoveredBy_r => [
|
692
|
+
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
550
693
|
:char, :pointer, :pointer, :pointer
|
551
694
|
],
|
552
695
|
|
553
696
|
:GEOSPreparedCovers_r => [
|
697
|
+
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
698
|
+
:char, :pointer, :pointer, :pointer
|
699
|
+
],
|
700
|
+
|
701
|
+
:GEOSPreparedCrosses_r => [
|
702
|
+
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
703
|
+
:char, :pointer, :pointer, :pointer
|
704
|
+
],
|
705
|
+
|
706
|
+
:GEOSPreparedDisjoint_r => [
|
707
|
+
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
554
708
|
:char, :pointer, :pointer, :pointer
|
555
709
|
],
|
556
710
|
|
557
711
|
:GEOSPreparedIntersects_r => [
|
712
|
+
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
713
|
+
:char, :pointer, :pointer, :pointer
|
714
|
+
],
|
715
|
+
|
716
|
+
:GEOSPreparedOverlaps_r => [
|
717
|
+
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
718
|
+
:char, :pointer, :pointer, :pointer
|
719
|
+
],
|
720
|
+
|
721
|
+
:GEOSPreparedTouches_r => [
|
722
|
+
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
723
|
+
:char, :pointer, :pointer, :pointer
|
724
|
+
],
|
725
|
+
|
726
|
+
:GEOSPreparedWithin_r => [
|
727
|
+
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
558
728
|
:char, :pointer, :pointer, :pointer
|
559
729
|
],
|
560
730
|
#### /PreparedGeometry functions ####
|
561
731
|
|
562
732
|
#### WktReader functions ####
|
563
733
|
:GEOSWKTReader_create_r => [
|
734
|
+
# *wktr, *handle
|
564
735
|
:pointer, :pointer
|
565
736
|
],
|
566
737
|
|
567
738
|
:GEOSWKTReader_read_r => [
|
739
|
+
# *geom, *handle, *wktr, string
|
568
740
|
:pointer, :pointer, :pointer, :string
|
569
741
|
],
|
570
742
|
|
571
743
|
:GEOSWKTReader_destroy_r => [
|
744
|
+
# void, *handle, *wktr
|
572
745
|
:void, :pointer, :pointer
|
573
746
|
],
|
574
747
|
#### /WktReader functions ###
|
575
748
|
|
576
749
|
#### WktWriter functions ####
|
577
750
|
:GEOSWKTWriter_create_r => [
|
751
|
+
# *wktw, *handle
|
578
752
|
:pointer, :pointer
|
579
753
|
],
|
580
754
|
|
581
755
|
:GEOSWKTWriter_write_r => [
|
756
|
+
# string, *handle, *wktw, *geom
|
582
757
|
:string, :pointer, :pointer, :pointer
|
583
758
|
],
|
584
759
|
|
585
760
|
:GEOSWKTWriter_destroy_r => [
|
761
|
+
# void, *handle, *wktw
|
586
762
|
:void, :pointer, :pointer
|
587
763
|
],
|
588
764
|
|
589
765
|
:GEOSWKTWriter_setTrim_r => [
|
766
|
+
# void, *handle, *wktw, bool
|
590
767
|
:void, :pointer, :pointer, :char
|
591
768
|
],
|
592
769
|
|
593
770
|
:GEOSWKTWriter_setRoundingPrecision_r => [
|
771
|
+
# void, *handle, *wktw, precision
|
594
772
|
:void, :pointer, :pointer, :int
|
595
773
|
],
|
596
774
|
|
597
775
|
:GEOSWKTWriter_setOutputDimension_r => [
|
776
|
+
# void, *handle, *wktw, dimensions
|
598
777
|
:void, :pointer, :pointer, :int
|
599
778
|
],
|
600
779
|
|
601
780
|
:GEOSWKTWriter_getOutputDimension_r => [
|
781
|
+
# dimensions, *handle, *wktw
|
602
782
|
:int, :pointer, :pointer
|
603
783
|
],
|
604
784
|
|
605
785
|
:GEOSWKTWriter_setOld3D_r => [
|
786
|
+
# void, *handle, *wktw, bool
|
606
787
|
:void, :pointer, :pointer, :int
|
607
788
|
],
|
608
789
|
#### /WktWriter functions ####
|
609
790
|
|
610
791
|
#### WkbReader functions ####
|
611
792
|
:GEOSWKBReader_create_r => [
|
793
|
+
# *wkbr, *handle
|
612
794
|
:pointer, :pointer
|
613
795
|
],
|
614
796
|
|
615
797
|
:GEOSWKBReader_destroy_r => [
|
798
|
+
# void, *handle, *wkbr
|
616
799
|
:void, :pointer, :pointer
|
617
800
|
],
|
618
801
|
|
619
802
|
:GEOSWKBReader_read_r => [
|
803
|
+
# *geom, *handle, *wkbr, (unsigned char *) string, size_t
|
620
804
|
:pointer, :pointer, :pointer, :pointer, :size_t
|
621
805
|
],
|
622
806
|
|
623
807
|
:GEOSWKBReader_readHEX_r => [
|
808
|
+
# *geom, *handle, *wkbr, string, size_t
|
624
809
|
:pointer, :pointer, :pointer, :string, :size_t
|
625
810
|
],
|
626
811
|
#### /WkbReader functions ####
|
627
812
|
|
628
813
|
#### WkbWriter functions ####
|
629
814
|
:GEOSWKBWriter_create_r => [
|
815
|
+
# *wkbw, *handle
|
630
816
|
:pointer, :pointer
|
631
817
|
],
|
632
818
|
|
633
819
|
:GEOSWKBWriter_destroy_r => [
|
820
|
+
# void, *handle, *wkbw
|
634
821
|
:void, :pointer, :pointer
|
635
822
|
],
|
636
823
|
|
637
824
|
:GEOSWKBWriter_write_r => [
|
825
|
+
# (unsigned char *) string, *handle, *wkbw, *geom, *size_t
|
638
826
|
:pointer, :pointer, :pointer, :pointer, :pointer
|
639
827
|
],
|
640
828
|
|
641
829
|
:GEOSWKBWriter_writeHEX_r => [
|
830
|
+
# (unsigned char *) string, *handle, *wkbw, *geom, *size_t
|
642
831
|
:pointer, :pointer, :pointer, :pointer, :pointer
|
643
832
|
],
|
644
833
|
|
645
834
|
:GEOSWKBWriter_setOutputDimension_r => [
|
835
|
+
# void, *handle, *wkbw, dimensions
|
646
836
|
:void, :pointer, :pointer, :int
|
647
837
|
],
|
648
838
|
|
649
839
|
:GEOSWKBWriter_getOutputDimension_r => [
|
840
|
+
# dimensions, *handle, *wkbw
|
650
841
|
:int, :pointer, :pointer
|
651
842
|
],
|
652
843
|
|
653
844
|
:GEOSWKBWriter_getByteOrder_r => [
|
845
|
+
# byte_order, *handle, *wkbw
|
654
846
|
:byte_order, :pointer, :pointer
|
655
847
|
],
|
656
848
|
|
657
849
|
:GEOSWKBWriter_setByteOrder_r => [
|
850
|
+
# void, *handle, *wkbw, byte_order
|
658
851
|
:void, :pointer, :pointer, :byte_order
|
659
852
|
],
|
660
853
|
|
661
854
|
:GEOSWKBWriter_getIncludeSRID_r => [
|
855
|
+
# bool, *handle, *geom
|
662
856
|
:char, :pointer, :pointer
|
663
857
|
],
|
664
858
|
|
665
859
|
:GEOSWKBWriter_setIncludeSRID_r => [
|
860
|
+
# void, *handle, *geom, bool
|
666
861
|
:void, :pointer, :pointer, :char
|
667
862
|
],
|
668
863
|
#### /WkbWriter functions ####
|
@@ -670,24 +865,69 @@ module Geos
|
|
670
865
|
|
671
866
|
#### Linearref functions ####
|
672
867
|
:GEOSProject_r => [
|
868
|
+
# distance, *handle, *geom_a, *geom_b
|
673
869
|
:double, :pointer, :pointer, :pointer
|
674
870
|
],
|
675
871
|
|
676
872
|
:GEOSProjectNormalized_r => [
|
873
|
+
# distance, *handle, *geom_a, *geom_b
|
677
874
|
:double, :pointer, :pointer, :pointer
|
678
875
|
],
|
679
876
|
|
680
877
|
:GEOSInterpolate_r => [
|
878
|
+
# *geom, *handle, *geom, distance
|
681
879
|
:pointer, :pointer, :pointer, :double
|
682
880
|
],
|
683
881
|
|
684
882
|
:GEOSInterpolateNormalized_r => [
|
883
|
+
# *geom, *handle, *geom, distance
|
685
884
|
:pointer, :pointer, :pointer, :double
|
686
885
|
],
|
687
886
|
#### /Linearref functions ####
|
688
887
|
|
888
|
+
#### BufferParams functions ####
|
889
|
+
:GEOSBufferParams_create_r => [
|
890
|
+
# GEOSBufferParams*, *handle
|
891
|
+
:pointer, :pointer
|
892
|
+
],
|
893
|
+
|
894
|
+
:GEOSBufferParams_destroy_r => [
|
895
|
+
# void, *handle, *params
|
896
|
+
:void, :pointer, :pointer
|
897
|
+
],
|
898
|
+
|
899
|
+
:GEOSBufferParams_setEndCapStyle_r => [
|
900
|
+
# 0 on exception, *handle, *params, style
|
901
|
+
:int, :pointer, :pointer, :buffer_cap_style
|
902
|
+
],
|
903
|
+
|
904
|
+
:GEOSBufferParams_setJoinStyle_r => [
|
905
|
+
# 0 on exception, *handle, *params, style
|
906
|
+
:int, :pointer, :pointer, :buffer_join_style
|
907
|
+
],
|
908
|
+
|
909
|
+
:GEOSBufferParams_setMitreLimit_r => [
|
910
|
+
# 0 on exception, *handle, *params, mitre_limit
|
911
|
+
:int, :pointer, :pointer, :double
|
912
|
+
],
|
913
|
+
|
914
|
+
:GEOSBufferParams_setQuadrantSegments_r => [
|
915
|
+
# 0 on exception, *handle, *params, quad_segs
|
916
|
+
:int, :pointer, :pointer, :int
|
917
|
+
],
|
918
|
+
|
919
|
+
:GEOSBufferParams_setSingleSided_r => [
|
920
|
+
# 0 on exception, *handle, *params, bool
|
921
|
+
:int, :pointer, :pointer, :int
|
922
|
+
],
|
923
|
+
#### /BufferParams functions ####
|
924
|
+
|
689
925
|
#### Algorithms ####
|
926
|
+
# -1 if reaching P takes a counter-clockwise (left) turn
|
927
|
+
# 1 if reaching P takes a clockwise (right) turn
|
928
|
+
# 0 if P is collinear with A-B
|
690
929
|
:GEOSOrientationIndex_r => [
|
930
|
+
# int, *handle, Ax, Ay, Bx, By, Px, Py
|
691
931
|
:int, :pointer, :double, :double, :double, :double, :double, :double
|
692
932
|
]
|
693
933
|
#### /Algorithms ####
|
@@ -751,6 +991,7 @@ module Geos
|
|
751
991
|
create_multi_line_string
|
752
992
|
create_multi_polygon
|
753
993
|
create_geometry_collection
|
994
|
+
create_collection
|
754
995
|
|
755
996
|
create_empty_point
|
756
997
|
create_empty_line_string
|
@@ -759,6 +1000,7 @@ module Geos
|
|
759
1000
|
create_empty_multi_line_string
|
760
1001
|
create_empty_multi_polygon
|
761
1002
|
create_empty_geometry_collection
|
1003
|
+
create_empty_collection
|
762
1004
|
}.each do |m|
|
763
1005
|
self.class_eval <<-EOF
|
764
1006
|
def #{m}(*args)
|
@@ -768,25 +1010,26 @@ module Geos
|
|
768
1010
|
end
|
769
1011
|
end
|
770
1012
|
|
1013
|
+
# For backwards compatibility with older native GEOS bindings.
|
771
1014
|
module GeomTypes
|
772
|
-
GEOS_POINT =
|
773
|
-
GEOS_LINESTRING =
|
774
|
-
GEOS_LINEARRING =
|
775
|
-
GEOS_POLYGON =
|
776
|
-
GEOS_MULTIPOINT =
|
777
|
-
GEOS_MULTILINESTRING =
|
778
|
-
GEOS_MULTIPOLYGON =
|
779
|
-
GEOS_GEOMETRYCOLLECTION =
|
1015
|
+
GEOS_POINT = Geos::GeometryTypes[:point]
|
1016
|
+
GEOS_LINESTRING = Geos::GeometryTypes[:line_string]
|
1017
|
+
GEOS_LINEARRING = Geos::GeometryTypes[:linear_ring]
|
1018
|
+
GEOS_POLYGON = Geos::GeometryTypes[:polygon]
|
1019
|
+
GEOS_MULTIPOINT = Geos::GeometryTypes[:multi_point]
|
1020
|
+
GEOS_MULTILINESTRING = Geos::GeometryTypes[:multi_line_string]
|
1021
|
+
GEOS_MULTIPOLYGON = Geos::GeometryTypes[:multi_polygon]
|
1022
|
+
GEOS_GEOMETRYCOLLECTION = Geos::GeometryTypes[:geometry_collection]
|
780
1023
|
end
|
781
1024
|
|
782
1025
|
module VersionConstants
|
783
|
-
VERSION = File.read(File.join(GEOS_BASE, %w{ .. VERSION }))
|
1026
|
+
VERSION = File.read(File.join(GEOS_BASE, %w{ .. VERSION })).strip
|
784
1027
|
GEOS_JTS_PORT = Geos.jts_port
|
785
1028
|
GEOS_VERSION,
|
786
|
-
GEOS_VERSION_MAJOR, GEOS_VERSION_MINOR, GEOS_VERISON_PATCH,
|
1029
|
+
GEOS_VERSION_MAJOR, GEOS_VERSION_MINOR, GEOS_VERISON_PATCH, GEOS_VERSION_PRERELEASE,
|
787
1030
|
GEOS_CAPI_VERSION,
|
788
1031
|
GEOS_CAPI_VERSION_MAJOR, GEOS_CAPI_VERSION_MINOR, GEOS_CAPI_VERSION_PATCH =
|
789
|
-
if versions = Geos.version.scan(/^((\d+)\.(\d+)\.(\d+))-CAPI-((\d+)\.(\d+)\.(\d+))$/)
|
1032
|
+
if !(versions = Geos.version.scan(/^((\d+)\.(\d+)\.(\d+)((?:rc|beta|alpha)\d+)?)-CAPI-((\d+)\.(\d+)\.(\d+))$/)).empty?
|
790
1033
|
versions = versions[0]
|
791
1034
|
[
|
792
1035
|
versions[0],
|
@@ -794,17 +1037,27 @@ module Geos
|
|
794
1037
|
versions[2].to_i,
|
795
1038
|
versions[3].to_i,
|
796
1039
|
versions[4],
|
797
|
-
versions[5]
|
1040
|
+
versions[5],
|
798
1041
|
versions[6].to_i,
|
799
|
-
versions[7].to_i
|
1042
|
+
versions[7].to_i,
|
1043
|
+
versions[8].to_i
|
800
1044
|
]
|
801
1045
|
else
|
802
|
-
[]
|
1046
|
+
[ '0.0.0', 0, 0, 0, nil, '0.0.0', 0, 0, 0 ]
|
803
1047
|
end
|
804
1048
|
GEOS_CAPI_FIRST_INTERFACE = GEOS_CAPI_VERSION_MAJOR.to_i
|
805
1049
|
GEOS_CAPI_LAST_INTERFACE = GEOS_CAPI_VERSION_MAJOR.to_i + GEOS_CAPI_VERSION_MINOR.to_i
|
806
1050
|
end
|
807
1051
|
|
1052
|
+
module Constants
|
1053
|
+
BUFFER_PARAM_DEFAULTS = {
|
1054
|
+
:quad_segs => 8,
|
1055
|
+
:endcap => :round,
|
1056
|
+
:join => :round,
|
1057
|
+
:mitre_limit => 5.0
|
1058
|
+
}.freeze
|
1059
|
+
end
|
1060
|
+
|
808
1061
|
include GeomTypes
|
809
1062
|
include VersionConstants
|
810
1063
|
end
|