ffi-geos 1.2.0 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rubocop.yml +4851 -0
- data/.travis.yml +24 -9
- data/FUNDING.yml +2 -0
- data/Gemfile +12 -16
- data/Guardfile +6 -8
- data/MIT-LICENSE +1 -1
- data/README.rdoc +2 -20
- data/Rakefile +4 -2
- data/ffi-geos.gemspec +13 -14
- data/lib/ffi-geos.rb +342 -244
- data/lib/ffi-geos/buffer_params.rb +9 -20
- data/lib/ffi-geos/coordinate_sequence.rb +351 -65
- data/lib/ffi-geos/geometry.rb +267 -191
- data/lib/ffi-geos/geometry_collection.rb +74 -12
- data/lib/ffi-geos/interrupt.rb +11 -16
- data/lib/ffi-geos/line_string.rb +157 -33
- data/lib/ffi-geos/linear_ring.rb +2 -3
- data/lib/ffi-geos/multi_line_string.rb +1 -2
- data/lib/ffi-geos/multi_point.rb +0 -1
- data/lib/ffi-geos/multi_polygon.rb +0 -1
- data/lib/ffi-geos/point.rb +70 -15
- data/lib/ffi-geos/polygon.rb +124 -21
- data/lib/ffi-geos/prepared_geometry.rb +11 -12
- data/lib/ffi-geos/strtree.rb +64 -77
- data/lib/ffi-geos/tools.rb +16 -19
- data/lib/ffi-geos/utils.rb +36 -60
- data/lib/ffi-geos/version.rb +1 -3
- data/lib/ffi-geos/wkb_reader.rb +4 -9
- data/lib/ffi-geos/wkb_writer.rb +15 -20
- data/lib/ffi-geos/wkt_reader.rb +2 -5
- data/lib/ffi-geos/wkt_writer.rb +20 -31
- data/sonar-project.properties +16 -0
- data/test/.rubocop.yml +36 -0
- data/test/coordinate_sequence_tests.rb +322 -52
- data/test/geometry_collection_tests.rb +388 -4
- data/test/geometry_tests.rb +466 -121
- data/test/interrupt_tests.rb +9 -12
- data/test/line_string_tests.rb +213 -25
- data/test/linear_ring_tests.rb +1 -3
- data/test/misc_tests.rb +28 -30
- data/test/multi_line_string_tests.rb +0 -2
- data/test/point_tests.rb +158 -2
- data/test/polygon_tests.rb +283 -2
- data/test/prepared_geometry_tests.rb +8 -11
- data/test/strtree_tests.rb +14 -15
- data/test/test_helper.rb +75 -51
- data/test/tools_tests.rb +1 -4
- data/test/utils_tests.rb +85 -76
- data/test/wkb_reader_tests.rb +18 -18
- data/test/wkb_writer_tests.rb +15 -22
- data/test/wkt_reader_tests.rb +1 -4
- data/test/wkt_writer_tests.rb +8 -17
- metadata +11 -7
data/.travis.yml
CHANGED
@@ -1,17 +1,32 @@
|
|
1
1
|
cache: bundler
|
2
2
|
sudo: false
|
3
3
|
language: ruby
|
4
|
+
dist: trusty
|
5
|
+
|
4
6
|
rvm:
|
5
|
-
- 2.
|
6
|
-
- 2.
|
7
|
-
- 2.
|
8
|
-
-
|
9
|
-
|
10
|
-
matrix:
|
11
|
-
allow_failures:
|
12
|
-
- rvm: rbx-3
|
13
|
-
- rvm: jruby-19mode
|
7
|
+
- '2.7'
|
8
|
+
- '2.6'
|
9
|
+
- '2.5'
|
10
|
+
- jruby-head
|
11
|
+
|
14
12
|
addons:
|
15
13
|
apt:
|
16
14
|
packages:
|
17
15
|
- libgeos-c1
|
16
|
+
sonarcloud:
|
17
|
+
organization: "dark-panda"
|
18
|
+
token:
|
19
|
+
secure: UiS3BU1SUSbIynvaup+3w9NNa85mH3lXSa+iCQx9luhp5Nc5Zg4xedycfGylCzpr6D6vRRH3gYefafitcvjS8LbhtNd2Z4oezp2T4fRt8W387HJ3wIcRkyOwBhmQqt/SiPiQr/rkDE9VomelLe7RSkelfAQQvpka5TMzc4wKYd4=
|
20
|
+
|
21
|
+
git:
|
22
|
+
depth: false
|
23
|
+
|
24
|
+
before_install:
|
25
|
+
- gem install bundler
|
26
|
+
|
27
|
+
before_script:
|
28
|
+
- bundle exec rubocop --format=json > rubocop-report.json || true
|
29
|
+
|
30
|
+
script:
|
31
|
+
- bundle exec rake test
|
32
|
+
- sonar-scanner
|
data/FUNDING.yml
ADDED
data/Gemfile
CHANGED
@@ -1,25 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
source 'https://rubygems.org'
|
2
4
|
|
3
5
|
gemspec
|
4
6
|
|
5
|
-
gem
|
6
|
-
gem
|
7
|
-
gem
|
8
|
-
gem
|
7
|
+
gem 'guard'
|
8
|
+
gem 'guard-minitest'
|
9
|
+
gem 'minitest'
|
10
|
+
gem 'minitest-reporters'
|
11
|
+
gem 'rake'
|
12
|
+
gem 'rdoc'
|
13
|
+
gem 'rubocop', require: false
|
14
|
+
gem 'simplecov', '~> 0.17.0', require: false
|
9
15
|
|
10
16
|
platforms :rbx do
|
11
|
-
gem 'rubysl', '~> 2.0'
|
12
17
|
gem 'rubinius-developer_tools'
|
18
|
+
gem 'rubysl', '~> 2.0'
|
13
19
|
end
|
14
20
|
|
15
|
-
|
16
|
-
if RUBY_VERSION >= '1.9'
|
17
|
-
gem "simplecov"
|
18
|
-
gem "guard"
|
19
|
-
gem 'guard-minitest'
|
20
|
-
end
|
21
|
-
|
22
|
-
if File.exists?('Gemfile.local')
|
23
|
-
instance_eval File.read('Gemfile.local')
|
24
|
-
end
|
25
|
-
|
21
|
+
instance_eval File.read('Gemfile.local') if File.exist?('Gemfile.local')
|
data/Guardfile
CHANGED
@@ -1,17 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
|
2
|
-
guard 'minitest', :
|
3
|
-
watch(%r
|
3
|
+
guard 'minitest', test_folders: 'test', test_file_patterns: '*_tests.rb' do
|
4
|
+
watch(%r{^test/(.+)_tests\.rb})
|
4
5
|
|
5
6
|
watch(%r{^lib/(.*/)?([^/]+)\.rb$}) do |m|
|
6
7
|
"test/#{m[2]}_tests.rb"
|
7
8
|
end
|
8
9
|
|
9
|
-
watch(%r
|
10
|
-
|
10
|
+
watch(%r{^test/test_helper\.rb}) do
|
11
|
+
'test'
|
11
12
|
end
|
12
13
|
end
|
13
14
|
|
14
|
-
if File.
|
15
|
-
instance_eval File.read('Guardfile.local')
|
16
|
-
end
|
17
|
-
|
15
|
+
instance_eval File.read('Guardfile.local') if File.exist?('Guardfile.local')
|
data/MIT-LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -7,15 +7,8 @@
|
|
7
7
|
* GEOS version 3.3.0 or greater. GEOS 3.2.2 and below will work to an extent,
|
8
8
|
but some features and methods will be disabled or missing.
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
* Ruby MRI 1.9.3, 2.0+, 2.1+, 2.2+
|
13
|
-
* Ruby MRI 1.8.7 works but as Ruby 1.8 is no longer being maintained, there's
|
14
|
-
no guarantee this will continue in the future and is therefore no longer
|
15
|
-
being tested with the same rigour as more modern versions of Ruby.
|
16
|
-
* Rubinius 2
|
17
|
-
* JRuby 1.6+, with the exception of versions of JRuby prior to 1.6.3 as per
|
18
|
-
below. This includes both 1.8 and 1.9 modes.
|
10
|
+
We currently test on Travis CI using the current releases of MRI that are
|
11
|
+
maintained. See `.travis.yml` for a list. We also test against jruby-head.
|
19
12
|
|
20
13
|
=== JRuby Notes
|
21
14
|
|
@@ -74,17 +67,6 @@ Ruby bindings along with the following enhancements and additions:
|
|
74
67
|
entire GEOS C API is represented in ffi-geos along with all sorts of useful
|
75
68
|
convenience methods and geometry conversion and manipulation methods.
|
76
69
|
|
77
|
-
* *NEW IN ffi-geos 1.0.0* -- all errors thrown by ffi-geos are now instances of
|
78
|
-
Geos::Error or subclasses thereof. Geos::Error itself is a descendant
|
79
|
-
of RuntimeError as is the case with the native Geos extension. This means
|
80
|
-
that code like rescue RuntimeError should still work but you can now
|
81
|
-
further capture more precise error types by capturing errors like
|
82
|
-
Geos::Error, Geos::ParseError, etc.
|
83
|
-
|
84
|
-
* *NEW IN ffi-geos 1.0.0* -- new methods for Geom::Geometry#voronoi_diagram,
|
85
|
-
Geos::MultiLineString#closed? and Geos::Geometry#clip_by_rect when using
|
86
|
-
GEOS 3.5.0+.
|
87
|
-
|
88
70
|
== Thanks
|
89
71
|
|
90
72
|
* Daniel Azuma for the testing and JRuby help.
|
data/Rakefile
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
|
2
3
|
# -*- ruby -*-
|
3
4
|
|
@@ -7,18 +8,19 @@ require 'rake/testtask'
|
|
7
8
|
require 'rdoc/task'
|
8
9
|
require 'bundler/gem_tasks'
|
9
10
|
|
10
|
-
|
11
|
+
$LOAD_PATH.push File.expand_path(File.dirname(__FILE__), 'lib')
|
11
12
|
|
12
13
|
version = Geos::VERSION
|
13
14
|
|
14
15
|
desc 'Test GEOS interface'
|
15
16
|
Rake::TestTask.new(:test) do |t|
|
17
|
+
t.libs << "#{File.dirname(__FILE__)}/test"
|
16
18
|
t.test_files = FileList['test/**/*_tests.rb']
|
17
19
|
t.verbose = !!ENV['VERBOSE_TESTS']
|
18
20
|
t.warning = !!ENV['WARNINGS']
|
19
21
|
end
|
20
22
|
|
21
|
-
task :
|
23
|
+
task default: :test
|
22
24
|
|
23
25
|
begin
|
24
26
|
desc 'Build docs'
|
data/ffi-geos.gemspec
CHANGED
@@ -1,26 +1,25 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require File.expand_path('
|
3
|
+
require File.expand_path('lib/ffi-geos/version', __dir__)
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
|
-
s.name =
|
6
|
+
s.name = 'ffi-geos'
|
7
7
|
s.version = Geos::VERSION
|
8
8
|
|
9
|
-
s.required_rubygems_version = Gem::Requirement.new(
|
10
|
-
s.authors = [
|
11
|
-
s.description =
|
9
|
+
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
10
|
+
s.authors = ['J Smith']
|
11
|
+
s.description = 'An ffi wrapper for GEOS, a C++ port of the Java Topology Suite (JTS).'
|
12
12
|
s.summary = s.description
|
13
|
-
s.email =
|
14
|
-
s.license =
|
13
|
+
s.email = 'dark.panda@gmail.com'
|
14
|
+
s.license = 'MIT'
|
15
15
|
s.extra_rdoc_files = [
|
16
|
-
|
16
|
+
'README.rdoc'
|
17
17
|
]
|
18
|
-
s.files = `git ls-files`.split(
|
18
|
+
s.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
|
19
19
|
s.executables = s.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
20
20
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
21
|
-
s.homepage =
|
22
|
-
s.require_paths = [
|
21
|
+
s.homepage = 'http://github.com/dark-panda/ffi-geos'
|
22
|
+
s.require_paths = ['lib']
|
23
23
|
|
24
|
-
s.add_dependency(
|
24
|
+
s.add_dependency('ffi', ['>= 1.0.0'])
|
25
25
|
end
|
26
|
-
|
data/lib/ffi-geos.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# encoding: UTF-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
require 'ffi'
|
@@ -51,38 +50,36 @@ module Geos
|
|
51
50
|
|
52
51
|
module FFIGeos
|
53
52
|
def self.search_paths
|
54
|
-
@search_paths ||=
|
53
|
+
@search_paths ||= \
|
55
54
|
if ENV['GEOS_LIBRARY_PATH']
|
56
|
-
[
|
55
|
+
[ENV['GEOS_LIBRARY_PATH']]
|
57
56
|
elsif FFI::Platform::IS_WINDOWS
|
58
57
|
ENV['PATH'].split(File::PATH_SEPARATOR)
|
59
58
|
else
|
60
|
-
[
|
59
|
+
['/usr/local/{lib64,lib}', '/opt/local/{lib64,lib}', '/usr/{lib64,lib}', '/usr/lib/{x86_64,i386}-linux-gnu']
|
61
60
|
end
|
62
|
-
end
|
63
61
|
end
|
64
62
|
|
65
63
|
def self.find_lib(lib)
|
66
64
|
if ENV['GEOS_LIBRARY_PATH'] && File.file?(ENV['GEOS_LIBRARY_PATH'])
|
67
65
|
ENV['GEOS_LIBRARY_PATH']
|
68
66
|
else
|
69
|
-
Dir.glob(search_paths.map
|
67
|
+
Dir.glob(search_paths.map do |path|
|
70
68
|
File.expand_path(File.join(path, "#{lib}.#{FFI::Platform::LIBSUFFIX}{,.?}"))
|
71
|
-
|
69
|
+
end).first
|
72
70
|
end
|
73
71
|
end
|
74
72
|
|
75
73
|
def self.geos_library_path
|
76
|
-
@geos_library_path ||=
|
74
|
+
@geos_library_path ||= \
|
77
75
|
# On MingW the libraries have version numbers
|
78
76
|
find_lib('{lib,}geos_c{,-?}')
|
79
|
-
end
|
80
77
|
end
|
81
78
|
|
82
79
|
# For backwards compatibility with older ffi-geos versions where this
|
83
80
|
# used to return an Array.
|
84
81
|
def self.geos_library_paths
|
85
|
-
[
|
82
|
+
[geos_library_path]
|
86
83
|
end
|
87
84
|
|
88
85
|
extend ::FFI::Library
|
@@ -147,896 +144,1000 @@ module Geos
|
|
147
144
|
# Initialization and cleanup
|
148
145
|
|
149
146
|
# deprecated in GEOS 3.5.0+
|
150
|
-
:
|
147
|
+
initGEOS_r: [
|
151
148
|
:pointer,
|
152
149
|
|
153
150
|
# notice callback
|
154
|
-
callback([
|
151
|
+
callback([:string, :string], :void),
|
155
152
|
|
156
153
|
# error callback
|
157
|
-
callback([
|
154
|
+
callback([:string, :string], :void)
|
158
155
|
],
|
159
156
|
|
160
|
-
:
|
157
|
+
finishGEOS_r: [
|
161
158
|
# void, *handle
|
162
159
|
:void, :pointer
|
163
160
|
],
|
164
161
|
# / deprecated in GEOS 3.5.0+
|
165
162
|
|
166
163
|
# GEOS 3.5.0+
|
167
|
-
:
|
164
|
+
GEOS_init_r: [:pointer],
|
168
165
|
|
169
|
-
:
|
166
|
+
GEOSContext_setNoticeMessageHandler_r: [
|
170
167
|
# void, *handle, callback, *void
|
171
|
-
:void, :pointer, callback([
|
168
|
+
:void, :pointer, callback([:string, :string], :void), :pointer
|
172
169
|
],
|
173
170
|
|
174
|
-
:
|
171
|
+
GEOSContext_setErrorMessageHandler_r: [
|
175
172
|
# void, *handle, callback, *void
|
176
|
-
:void, :pointer, callback([
|
173
|
+
:void, :pointer, callback([:string, :string], :void), :pointer
|
177
174
|
],
|
178
175
|
|
179
|
-
:
|
176
|
+
GEOS_finish_r: [
|
180
177
|
# void, *handle
|
181
178
|
:void, :pointer
|
182
179
|
],
|
183
180
|
# / GEOS 3.5.0+
|
184
181
|
|
185
|
-
:
|
182
|
+
GEOS_interruptRegisterCallback: [
|
186
183
|
:pointer,
|
187
184
|
callback([], :void)
|
188
185
|
],
|
189
186
|
|
190
|
-
:
|
187
|
+
GEOS_interruptRequest: [
|
191
188
|
:void
|
192
189
|
],
|
193
190
|
|
194
|
-
:
|
191
|
+
GEOS_interruptCancel: [
|
195
192
|
:void
|
196
193
|
],
|
197
194
|
|
198
|
-
:
|
195
|
+
GEOSversion: [
|
199
196
|
:string
|
200
197
|
],
|
201
198
|
|
202
|
-
:
|
199
|
+
GEOSjtsport: [
|
203
200
|
:string
|
204
201
|
],
|
205
202
|
|
206
|
-
:
|
203
|
+
GEOSPolygonize_r: [
|
207
204
|
# *geom, *handle, **geoms, ngeoms
|
208
205
|
:pointer, :pointer, :pointer, :uint
|
209
206
|
],
|
210
207
|
|
211
|
-
:
|
208
|
+
GEOSPolygonize_valid_r: [
|
212
209
|
# *geom, *handle, **geoms, ngeoms
|
213
210
|
:pointer, :pointer, :pointer, :uint
|
214
211
|
],
|
215
212
|
|
216
|
-
:
|
213
|
+
GEOSBuildArea_r: [
|
214
|
+
# *geom, *handle, *geom
|
215
|
+
:pointer, :pointer, :pointer
|
216
|
+
],
|
217
|
+
|
218
|
+
GEOSMakeValid_r: [
|
219
|
+
# *geom, *handle, *geom
|
220
|
+
:pointer, :pointer, :pointer
|
221
|
+
],
|
222
|
+
|
223
|
+
GEOSPolygonizer_getCutEdges_r: [
|
224
|
+
# *geom, *handle, **geoms, ngeoms
|
225
|
+
:pointer, :pointer, :pointer, :uint
|
226
|
+
],
|
227
|
+
|
228
|
+
GEOSPolygonize_full_r: [
|
217
229
|
# *geom, *handle, *geom, **cuts, **dangles, **invalid
|
218
230
|
:pointer, :pointer, :pointer, :pointer, :pointer, :pointer
|
219
231
|
],
|
220
232
|
|
221
|
-
:
|
233
|
+
GEOSGeom_createPoint_r: [
|
222
234
|
# *geom, *handle, *coord_seq
|
223
235
|
:pointer, :pointer, :pointer
|
224
236
|
],
|
225
237
|
|
226
|
-
:
|
238
|
+
GEOSGeom_createEmptyPoint_r: [
|
227
239
|
# *geom, *handle
|
228
240
|
:pointer, :pointer
|
229
241
|
],
|
230
242
|
|
231
|
-
:
|
243
|
+
GEOSGeom_createEmptyLineString_r: [
|
232
244
|
# *geom, *handle
|
233
245
|
:pointer, :pointer
|
234
246
|
],
|
235
247
|
|
236
|
-
:
|
248
|
+
GEOSGeom_createLinearRing_r: [
|
237
249
|
# *geom, *handle, *coord_seq
|
238
250
|
:pointer, :pointer, :pointer
|
239
251
|
],
|
240
252
|
|
241
|
-
:
|
253
|
+
GEOSGeom_createLineString_r: [
|
242
254
|
# *geom, *handle, *coord_seq
|
243
255
|
:pointer, :pointer, :pointer
|
244
256
|
],
|
245
257
|
|
246
|
-
:
|
258
|
+
GEOSGeom_createPolygon_r: [
|
247
259
|
# *geom, *handle, *geom, **holes, nholes
|
248
260
|
:pointer, :pointer, :pointer, :pointer, :uint
|
249
261
|
],
|
250
262
|
|
251
|
-
:
|
263
|
+
GEOSGeom_createEmptyPolygon_r: [
|
252
264
|
# *geom, *handle
|
253
265
|
:pointer, :pointer
|
254
266
|
],
|
255
267
|
|
256
|
-
:
|
268
|
+
GEOSGeom_createCollection_r: [
|
257
269
|
# *geom, *handle, type, **geoms, ngeoms
|
258
270
|
:pointer, :pointer, :geometry_type, :pointer, :uint
|
259
271
|
],
|
260
272
|
|
261
|
-
:
|
273
|
+
GEOSGeom_createEmptyCollection_r: [
|
262
274
|
# *geom, *handle, type
|
263
275
|
:pointer, :pointer, :geometry_type
|
264
276
|
],
|
265
277
|
#### /Utility functions ####
|
266
278
|
|
267
279
|
#### CoordinateSequence functions ####
|
268
|
-
:
|
280
|
+
GEOSCoordSeq_create_r: [
|
269
281
|
# *coord_seq, *handle, size, dims
|
270
282
|
:pointer, :pointer, :uint, :uint
|
271
283
|
],
|
272
284
|
|
273
|
-
:
|
285
|
+
GEOSCoordSeq_destroy_r: [
|
274
286
|
# void, *handle, *coord_seq
|
275
287
|
:void, :pointer, :pointer
|
276
288
|
],
|
277
289
|
|
278
|
-
:
|
290
|
+
GEOSCoordSeq_clone_r: [
|
279
291
|
# *coord_seq, *handle, *coord_seq
|
280
292
|
:pointer, :pointer, :pointer
|
281
293
|
],
|
282
294
|
|
283
|
-
:
|
295
|
+
GEOSCoordSeq_setX_r: [
|
284
296
|
# 0 on exception, *handle, *coord_seq, idx, val
|
285
297
|
:int, :pointer, :pointer, :uint, :double
|
286
298
|
],
|
287
299
|
|
288
|
-
:
|
300
|
+
GEOSCoordSeq_setY_r: [
|
289
301
|
# 0 on exception, *handle, *coord_seq, idx, val
|
290
302
|
:int, :pointer, :pointer, :uint, :double
|
291
303
|
],
|
292
304
|
|
293
|
-
:
|
305
|
+
GEOSCoordSeq_setZ_r: [
|
294
306
|
# 0 on exception, *handle, *coord_seq, idx, val
|
295
307
|
:int, :pointer, :pointer, :uint, :double
|
296
308
|
],
|
297
309
|
|
298
|
-
:
|
310
|
+
GEOSCoordSeq_setOrdinate_r: [
|
299
311
|
# 0 on exception, *handle, *coord_seq, idx, dim, val
|
300
312
|
:int, :pointer, :pointer, :uint, :uint, :double
|
301
313
|
],
|
302
314
|
|
303
|
-
:
|
315
|
+
GEOSCoordSeq_getX_r: [
|
304
316
|
# 0 on exception, *handle, *coord_seq, idx, (double *) val
|
305
317
|
:int, :pointer, :pointer, :uint, :pointer
|
306
318
|
],
|
307
319
|
|
308
|
-
:
|
320
|
+
GEOSCoordSeq_getY_r: [
|
309
321
|
# 0 on exception, *handle, *coord_seq, idx, (double *) val
|
310
322
|
:int, :pointer, :pointer, :uint, :pointer
|
311
323
|
],
|
312
324
|
|
313
|
-
:
|
325
|
+
GEOSCoordSeq_getZ_r: [
|
314
326
|
# 0 on exception, *handle, *coord_seq, idx, (double *) val
|
315
327
|
:int, :pointer, :pointer, :uint, :pointer
|
316
328
|
],
|
317
329
|
|
318
|
-
:
|
330
|
+
GEOSCoordSeq_getOrdinate_r: [
|
319
331
|
# 0 on exception, *handle, *coord_seq, idx, dim, (double *) val
|
320
332
|
:int, :pointer, :pointer, :uint, :uint, :pointer
|
321
333
|
],
|
322
334
|
|
323
|
-
:
|
335
|
+
GEOSCoordSeq_getSize_r: [
|
324
336
|
# 0 on exception, *handle, *coord_seq, (uint *) size
|
325
337
|
:int, :pointer, :pointer, :pointer
|
326
338
|
],
|
327
339
|
|
328
|
-
:
|
340
|
+
GEOSCoordSeq_getDimensions_r: [
|
329
341
|
# 0 on exception, *handle, *coord_seq, (uint *) size
|
330
342
|
:int, :pointer, :pointer, :pointer
|
331
343
|
],
|
344
|
+
|
345
|
+
GEOSCoordSeq_isCCW_r: [
|
346
|
+
# 0 on exception, *handle, *coord_seq, (char *) value
|
347
|
+
:int, :pointer, :pointer, :pointer
|
348
|
+
],
|
332
349
|
#### /CoordinateSequence functions ####
|
333
350
|
|
334
351
|
#### Geometry functions ####
|
335
|
-
:
|
352
|
+
GEOSGeom_destroy_r: [
|
336
353
|
# void, *handle, *geom
|
337
354
|
:void, :pointer, :pointer
|
338
355
|
],
|
339
356
|
|
340
|
-
:
|
357
|
+
GEOSGeom_clone_r: [
|
341
358
|
# *geom, *handle, *geom
|
342
359
|
:pointer, :pointer, :pointer
|
343
360
|
],
|
344
361
|
|
345
|
-
:
|
362
|
+
GEOSGeomTypeId_r: [
|
346
363
|
# type, *handle, *geom
|
347
364
|
:int, :pointer, :pointer
|
348
365
|
],
|
349
366
|
|
350
|
-
:
|
367
|
+
GEOSGeomType_r: [
|
351
368
|
# type, *handle, *geom
|
352
369
|
:string, :pointer, :pointer
|
353
370
|
],
|
354
371
|
|
355
|
-
:
|
372
|
+
GEOSGetSRID_r: [
|
356
373
|
# srid, *handle, *geom
|
357
374
|
:int, :pointer, :pointer
|
358
375
|
],
|
359
376
|
|
360
|
-
:
|
377
|
+
GEOSSetSRID_r: [
|
361
378
|
# void, *handle, *geom, srid
|
362
379
|
:void, :pointer, :pointer, :int
|
363
380
|
],
|
364
381
|
|
365
|
-
:
|
382
|
+
GEOSGeom_getDimensions_r: [
|
366
383
|
# dims, *handle, *geom
|
367
384
|
:int, :pointer, :pointer
|
368
385
|
],
|
369
386
|
|
370
|
-
:
|
387
|
+
GEOSGetNumGeometries_r: [
|
371
388
|
# ngeoms, *handle, *geom
|
372
389
|
:int, :pointer, :pointer
|
373
390
|
],
|
374
391
|
|
375
|
-
:
|
392
|
+
GEOSGetNumCoordinates_r: [
|
376
393
|
# numcoords, *handle, *geom
|
377
394
|
:int, :pointer, :pointer
|
378
395
|
],
|
379
396
|
|
380
|
-
:
|
397
|
+
GEOSGeom_getCoordSeq_r: [
|
381
398
|
# *coord_seq, *handle, *geom
|
382
399
|
:pointer, :pointer, :pointer
|
383
400
|
],
|
384
401
|
|
385
|
-
:
|
402
|
+
GEOSIntersection_r: [
|
386
403
|
# *geom, *handle, *geom_a, *geom_b
|
387
404
|
:pointer, :pointer, :pointer, :pointer
|
388
405
|
],
|
389
406
|
|
390
|
-
:
|
407
|
+
GEOSIntersectionPrec_r: [
|
408
|
+
# *geom, *handle, *geom_a, *geom_b, precision
|
409
|
+
:pointer, :pointer, :pointer, :pointer, :double
|
410
|
+
],
|
411
|
+
|
412
|
+
GEOSBufferWithParams_r: [
|
391
413
|
# *geom, *handle, *geom, *params, width
|
392
414
|
:pointer, :pointer, :pointer, :pointer, :double
|
393
415
|
],
|
394
416
|
|
395
|
-
:
|
417
|
+
GEOSBuffer_r: [
|
396
418
|
# *geom, *handle, *geom, width, quad_segs
|
397
419
|
:pointer, :pointer, :pointer, :double, :int
|
398
420
|
],
|
399
421
|
|
400
|
-
:
|
422
|
+
GEOSBufferWithStyle_r: [
|
401
423
|
# *geom, *handle, *geom, width, quad_segs, buffer_cap_style, buffer_join_style, mitre_limit
|
402
424
|
:pointer, :pointer, :pointer, :double, :int, :buffer_cap_style, :buffer_join_style, :double
|
403
425
|
],
|
404
426
|
|
405
427
|
# Deprecated in GEOS 3.3.0.
|
406
|
-
:
|
428
|
+
GEOSSingleSidedBuffer_r: [
|
407
429
|
# *geom, *handle, *geom, width, quad_segs, buffer_join_style, mitre_limit, is_left
|
408
430
|
:pointer, :pointer, :pointer, :double, :int, :buffer_join_style, :double, :int
|
409
431
|
],
|
410
432
|
|
411
|
-
:
|
433
|
+
GEOSOffsetCurve_r: [
|
412
434
|
# *geom, *handle, *geom, width, quad_segs, buffer_join_style, mitre_limit
|
413
435
|
:pointer, :pointer, :pointer, :double, :int, :buffer_join_style, :double
|
414
436
|
],
|
415
437
|
|
416
|
-
:
|
438
|
+
GEOSConvexHull_r: [
|
417
439
|
# *geom, *handle, *geom
|
418
440
|
:pointer, :pointer, :pointer
|
419
441
|
],
|
420
442
|
|
421
|
-
:
|
443
|
+
GEOSDifference_r: [
|
422
444
|
# *geom, *handle, *geom_a, *geom_b
|
423
445
|
:pointer, :pointer, :pointer, :pointer
|
424
446
|
],
|
425
447
|
|
426
|
-
:
|
448
|
+
GEOSDifferencePrec_r: [
|
449
|
+
# *geom, *handle, *geom_a, *geom_b, precision
|
450
|
+
:pointer, :pointer, :pointer, :pointer, :double
|
451
|
+
],
|
452
|
+
|
453
|
+
GEOSSymDifference_r: [
|
427
454
|
# *geom, *handle, *geom_a, *geom_b
|
428
455
|
:pointer, :pointer, :pointer, :pointer
|
429
456
|
],
|
430
457
|
|
431
|
-
:
|
458
|
+
GEOSSymDifferencePrec_r: [
|
459
|
+
# *geom, *handle, *geom_a, *geom_b, precision
|
460
|
+
:pointer, :pointer, :pointer, :pointer, :double
|
461
|
+
],
|
462
|
+
|
463
|
+
GEOSBoundary_r: [
|
432
464
|
# *geom, *handle, *geom
|
433
465
|
:pointer, :pointer, :pointer
|
434
466
|
],
|
435
467
|
|
436
|
-
:
|
468
|
+
GEOSUnion_r: [
|
437
469
|
# *geom, *handle, *geom_a, *geom_b
|
438
470
|
:pointer, :pointer, :pointer, :pointer
|
439
471
|
],
|
440
472
|
|
441
|
-
:
|
473
|
+
GEOSUnionPrec_r: [
|
474
|
+
# *geom, *handle, *geom_a, *geom_b, precision
|
475
|
+
:pointer, :pointer, :pointer, :pointer, :double
|
476
|
+
],
|
477
|
+
|
478
|
+
GEOSCoverageUnion_r: [
|
442
479
|
# *geom, *handle, *geom
|
443
480
|
:pointer, :pointer, :pointer
|
444
481
|
],
|
445
482
|
|
446
|
-
:
|
483
|
+
GEOSUnaryUnion_r: [
|
484
|
+
# *geom, *handle, *geom
|
485
|
+
:pointer, :pointer, :pointer
|
486
|
+
],
|
487
|
+
|
488
|
+
GEOSUnaryUnionPrec_r: [
|
489
|
+
# *geom, *handle, *geom, precision
|
490
|
+
:pointer, :pointer, :pointer, :double
|
491
|
+
],
|
492
|
+
|
493
|
+
GEOSNode_r: [
|
447
494
|
# *geom, *handle, *geom
|
448
495
|
:pointer, :pointer, :pointer
|
449
496
|
],
|
450
497
|
|
451
498
|
# Deprecated in GEOS 3.3.0. Use GEOSUnaryUnion_r instead.
|
452
|
-
:
|
499
|
+
GEOSUnionCascaded_r: [
|
453
500
|
# *geom, *handle, *geom
|
454
501
|
:pointer, :pointer, :pointer
|
455
502
|
],
|
456
503
|
|
457
|
-
:
|
504
|
+
GEOSPointOnSurface_r: [
|
458
505
|
# *geom, *handle, *geom
|
459
506
|
:pointer, :pointer, :pointer
|
460
507
|
],
|
461
508
|
|
462
|
-
:
|
509
|
+
GEOSClipByRect_r: [
|
463
510
|
# *geom, *handle, *geom, xmin, ymin, xmax, ymax
|
464
511
|
:pointer, :pointer, :pointer, :double, :double, :double, :double
|
465
512
|
],
|
466
513
|
|
467
|
-
:
|
514
|
+
GEOSGetCentroid_r: [
|
468
515
|
# *geom, *handle, *geom
|
469
516
|
:pointer, :pointer, :pointer
|
470
517
|
],
|
471
518
|
|
472
|
-
:
|
519
|
+
GEOSMinimumBoundingCircle_r: [
|
520
|
+
# *geom, *handle, *geom, *double radius, **geom center
|
521
|
+
:pointer, :pointer, :pointer, :pointer, :pointer
|
522
|
+
],
|
523
|
+
|
524
|
+
GEOSEnvelope_r: [
|
473
525
|
# *geom, *handle, *geom
|
474
526
|
:pointer, :pointer, :pointer
|
475
527
|
],
|
476
528
|
|
477
|
-
:
|
529
|
+
GEOSLineMerge_r: [
|
478
530
|
# *geom, *handle, *geom
|
479
531
|
:pointer, :pointer, :pointer
|
480
532
|
],
|
481
533
|
|
482
|
-
:
|
534
|
+
GEOSGeom_getXMin_r: [
|
535
|
+
# 0 on exception, *handle, (double *) value
|
536
|
+
:int, :pointer, :pointer, :pointer
|
537
|
+
],
|
538
|
+
|
539
|
+
GEOSGeom_getXMax_r: [
|
540
|
+
# 0 on exception, *handle, (double *) value
|
541
|
+
:int, :pointer, :pointer, :pointer
|
542
|
+
],
|
543
|
+
|
544
|
+
GEOSGeom_getYMin_r: [
|
545
|
+
# 0 on exception, *handle, (double *) value
|
546
|
+
:int, :pointer, :pointer, :pointer
|
547
|
+
],
|
548
|
+
|
549
|
+
GEOSGeom_getYMax_r: [
|
550
|
+
# 0 on exception, *handle, (double *) value
|
551
|
+
:int, :pointer, :pointer, :pointer
|
552
|
+
],
|
553
|
+
|
554
|
+
GEOSSimplify_r: [
|
483
555
|
# *geom, *handle, *geom, tolerance
|
484
556
|
:pointer, :pointer, :pointer, :double
|
485
557
|
],
|
486
558
|
|
487
|
-
:
|
559
|
+
GEOSTopologyPreserveSimplify_r: [
|
488
560
|
# *geom, *handle, *geom, tolerance
|
489
561
|
:pointer, :pointer, :pointer, :double
|
490
562
|
],
|
491
563
|
|
492
|
-
:
|
564
|
+
GEOSGeom_extractUniquePoints_r: [
|
493
565
|
# *geom, *handle, *geom
|
494
566
|
:pointer, :pointer, :pointer
|
495
567
|
],
|
496
568
|
|
497
|
-
:
|
569
|
+
GEOSSharedPaths_r: [
|
498
570
|
# *geom, *handle, *geom_a, *geom_b
|
499
571
|
:pointer, :pointer, :pointer, :pointer
|
500
572
|
],
|
501
573
|
|
502
|
-
:
|
574
|
+
GEOSSnap_r: [
|
503
575
|
# *geom, *handle, *geom_a, *geom_b, tolerance
|
504
576
|
:pointer, :pointer, :pointer, :pointer, :double
|
505
577
|
],
|
506
578
|
|
507
|
-
:
|
579
|
+
GEOSDelaunayTriangulation_r: [
|
508
580
|
# *geom, *handle, *geom, tolerance, only_edges
|
509
581
|
:pointer, :pointer, :pointer, :double, :int
|
510
582
|
],
|
511
583
|
|
512
|
-
:
|
584
|
+
GEOSVoronoiDiagram_r: [
|
513
585
|
# *geom, *handle, *geom, *envelope, tolerance, only_edges
|
514
586
|
:pointer, :pointer, :pointer, :pointer, :double, :int
|
515
587
|
],
|
516
588
|
|
517
|
-
:
|
589
|
+
GEOSRelate_r: [
|
518
590
|
# string, *handle, *geom_a, *geom_b
|
519
591
|
:string, :pointer, :pointer, :pointer
|
520
592
|
],
|
521
593
|
|
522
|
-
:
|
594
|
+
GEOSRelatePatternMatch_r: [
|
523
595
|
# (2 on exception, 1 on true, 2 on false), *handle, pattern_a, pattern_b
|
524
596
|
:char, :pointer, :string, :string
|
525
597
|
],
|
526
598
|
|
527
|
-
:
|
599
|
+
GEOSRelatePattern_r: [
|
528
600
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b, pattern
|
529
601
|
:char, :pointer, :pointer, :pointer, :string
|
530
602
|
],
|
531
603
|
|
532
|
-
:
|
604
|
+
GEOSRelateBoundaryNodeRule_r: [
|
533
605
|
# string, *handle, *geom_a, *geom_b, bnr
|
534
606
|
:string, :pointer, :pointer, :pointer, :relate_boundary_node_rule
|
535
607
|
],
|
536
608
|
|
537
|
-
:
|
609
|
+
GEOSDisjoint_r: [
|
538
610
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
539
611
|
:char, :pointer, :pointer, :pointer
|
540
612
|
],
|
541
613
|
|
542
|
-
:
|
614
|
+
GEOSTouches_r: [
|
543
615
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
544
616
|
:char, :pointer, :pointer, :pointer
|
545
617
|
],
|
546
618
|
|
547
|
-
:
|
619
|
+
GEOSIntersects_r: [
|
548
620
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
549
621
|
:char, :pointer, :pointer, :pointer
|
550
622
|
],
|
551
623
|
|
552
|
-
:
|
624
|
+
GEOSCrosses_r: [
|
553
625
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
554
626
|
:char, :pointer, :pointer, :pointer
|
555
627
|
],
|
556
628
|
|
557
|
-
:
|
629
|
+
GEOSWithin_r: [
|
558
630
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
559
631
|
:char, :pointer, :pointer, :pointer
|
560
632
|
],
|
561
633
|
|
562
|
-
:
|
634
|
+
GEOSContains_r: [
|
563
635
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
564
636
|
:char, :pointer, :pointer, :pointer
|
565
637
|
],
|
566
638
|
|
567
|
-
:
|
639
|
+
GEOSOverlaps_r: [
|
568
640
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
569
641
|
:char, :pointer, :pointer, :pointer
|
570
642
|
],
|
571
643
|
|
572
|
-
:
|
644
|
+
GEOSCovers_r: [
|
573
645
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
574
646
|
:char, :pointer, :pointer, :pointer
|
575
647
|
],
|
576
648
|
|
577
|
-
:
|
649
|
+
GEOSCoveredBy_r: [
|
578
650
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
579
651
|
:char, :pointer, :pointer, :pointer
|
580
652
|
],
|
581
653
|
|
582
|
-
:
|
654
|
+
GEOSEquals_r: [
|
583
655
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
584
656
|
:char, :pointer, :pointer, :pointer
|
585
657
|
],
|
586
658
|
|
587
|
-
:
|
659
|
+
GEOSEqualsExact_r: [
|
588
660
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom_a, *geom_b
|
589
661
|
:char, :pointer, :pointer, :pointer, :double
|
590
662
|
],
|
591
663
|
|
592
|
-
:
|
664
|
+
GEOSisEmpty_r: [
|
593
665
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom
|
594
666
|
:char, :pointer, :pointer
|
595
667
|
],
|
596
668
|
|
597
|
-
:
|
669
|
+
GEOSisValid_r: [
|
598
670
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom
|
599
671
|
:char, :pointer, :pointer
|
600
672
|
],
|
601
673
|
|
602
|
-
:
|
674
|
+
GEOSisValidReason_r: [
|
603
675
|
# reason, *handle, *geom
|
604
676
|
:string, :pointer, :pointer
|
605
677
|
],
|
606
678
|
|
607
|
-
:
|
679
|
+
GEOSisValidDetail_r: [
|
608
680
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom, flags, (string**) reasons, **geoms
|
609
681
|
:char, :pointer, :pointer, :int, :pointer, :pointer
|
610
682
|
],
|
611
683
|
|
612
|
-
:
|
684
|
+
GEOSisSimple_r: [
|
613
685
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom
|
614
686
|
:char, :pointer, :pointer
|
615
687
|
],
|
616
688
|
|
617
|
-
:
|
689
|
+
GEOSisRing_r: [
|
618
690
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom
|
619
691
|
:char, :pointer, :pointer
|
620
692
|
],
|
621
693
|
|
622
|
-
:
|
694
|
+
GEOSHasZ_r: [
|
623
695
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom
|
624
696
|
:char, :pointer, :pointer
|
625
697
|
],
|
626
698
|
|
627
|
-
:
|
699
|
+
GEOSisClosed_r: [
|
628
700
|
# (2 on exception, 1 on true, 2 on false), *handle, *geom
|
629
701
|
:char, :pointer, :pointer
|
630
702
|
],
|
631
703
|
|
632
|
-
:
|
704
|
+
GEOSArea_r: [
|
633
705
|
# (0 on exception, 1 otherwise), *handle, *geom, (double *) area
|
634
706
|
:int, :pointer, :pointer, :pointer
|
635
707
|
],
|
636
708
|
|
637
|
-
:
|
709
|
+
GEOSLength_r: [
|
638
710
|
# (0 on exception, 1 otherwise), *handle, *geom, (double *) length
|
639
711
|
:int, :pointer, :pointer, :pointer
|
640
712
|
],
|
641
713
|
|
642
|
-
:
|
714
|
+
GEOSDistance_r: [
|
643
715
|
# (0 on exception, 1 otherwise), *handle, *geom_a, *geom_b, (double *) distance
|
644
716
|
:int, :pointer, :pointer, :pointer, :pointer
|
645
717
|
],
|
646
718
|
|
647
|
-
:
|
719
|
+
GEOSDistanceIndexed_r: [
|
648
720
|
# (0 on exception, 1 otherwise), *handle, *geom_a, *geom_b, (double *) distance
|
649
721
|
:int, :pointer, :pointer, :pointer, :pointer
|
650
722
|
],
|
651
723
|
|
652
|
-
:
|
724
|
+
GEOSHausdorffDistance_r: [
|
725
|
+
# (0 on exception, 1 otherwise), *handle, *geom_a, *geom_b, (double *) distance
|
726
|
+
:int, :pointer, :pointer, :pointer, :pointer
|
727
|
+
],
|
728
|
+
|
729
|
+
GEOSHausdorffDistanceDensify_r: [
|
653
730
|
# (0 on exception, 1 otherwise), *handle, *geom_a, *geom_b, densifyFrac, (double *) distance
|
654
731
|
:int, :pointer, :pointer, :pointer, :double, :pointer
|
655
732
|
],
|
656
733
|
|
657
|
-
:
|
734
|
+
GEOSNearestPoints_r: [
|
658
735
|
# (NULL on exception, pointer to CoordinateSequence otherwise), *handle, *geom, *geom
|
659
736
|
:pointer, :pointer, :pointer, :pointer
|
660
737
|
],
|
661
738
|
|
662
|
-
:
|
739
|
+
GEOSGetGeometryN_r: [
|
663
740
|
# *geom, *handle, *geom, n
|
664
741
|
:pointer, :pointer, :pointer, :int
|
665
742
|
],
|
666
743
|
|
667
|
-
:
|
744
|
+
GEOSGetNumInteriorRings_r: [
|
668
745
|
# rings, *handle, *geom
|
669
746
|
:int, :pointer, :pointer
|
670
747
|
],
|
671
748
|
|
672
|
-
:
|
749
|
+
GEOSNormalize_r: [
|
673
750
|
# -1 on exception, *handle, *geom
|
674
751
|
:int, :pointer, :pointer
|
675
752
|
],
|
676
753
|
|
677
|
-
:
|
754
|
+
GEOSGetInteriorRingN_r: [
|
678
755
|
# *geom, *handle, *geom, n
|
679
756
|
:pointer, :pointer, :pointer, :int
|
680
757
|
],
|
681
758
|
|
682
|
-
:
|
759
|
+
GEOSGetExteriorRing_r: [
|
683
760
|
# *geom, *handle, *geom
|
684
761
|
:pointer, :pointer, :pointer
|
685
762
|
],
|
686
763
|
|
687
|
-
:
|
764
|
+
GEOSGeomGetNumPoints_r: [
|
688
765
|
# numpoints, *handle, *geom
|
689
766
|
:int, :pointer, :pointer
|
690
767
|
],
|
691
768
|
|
692
|
-
:
|
769
|
+
GEOSGeomGetX_r: [
|
693
770
|
# -1 on exception, *handle, *geom, *point
|
694
771
|
:int, :pointer, :pointer, :pointer
|
695
772
|
],
|
696
773
|
|
697
|
-
:
|
774
|
+
GEOSGeomGetY_r: [
|
698
775
|
# -1 on exception, *handle, *geom, *point
|
699
776
|
:int, :pointer, :pointer, :pointer
|
700
777
|
],
|
701
778
|
|
702
|
-
:
|
779
|
+
GEOSGeomGetZ_r: [
|
703
780
|
# -1 on exception, *handle, *geom, *point
|
704
781
|
:int, :pointer, :pointer, :pointer
|
705
782
|
],
|
706
783
|
|
707
|
-
:
|
784
|
+
GEOSGeomGetPointN_r: [
|
708
785
|
# *point, *handle, *geom, n
|
709
786
|
:pointer, :pointer, :pointer, :int
|
710
787
|
],
|
711
788
|
|
712
|
-
:
|
789
|
+
GEOSGeomGetStartPoint_r: [
|
713
790
|
# *point, *handle, *geom
|
714
791
|
:pointer, :pointer, :pointer
|
715
792
|
],
|
716
793
|
|
717
|
-
:
|
794
|
+
GEOSGeomGetEndPoint_r: [
|
718
795
|
# *point, *handle, *geom
|
719
796
|
:pointer, :pointer, :pointer
|
720
797
|
],
|
721
798
|
|
722
|
-
:
|
799
|
+
GEOSGeom_setPrecision_r: [
|
723
800
|
# *geom, *hande, *geom, grid_size, int flags
|
724
801
|
:pointer, :pointer, :pointer, :double, :int
|
725
802
|
],
|
726
803
|
|
727
|
-
:
|
804
|
+
GEOSGeom_getPrecision_r: [
|
728
805
|
# precision, *hande, *geom
|
729
806
|
:double, :pointer, :pointer
|
730
807
|
],
|
731
808
|
|
732
|
-
:
|
809
|
+
GEOSMinimumRotatedRectangle_r: [
|
733
810
|
# *geom, *handle, *geom
|
734
811
|
:pointer, :pointer, :pointer
|
735
812
|
],
|
736
813
|
|
737
|
-
:
|
814
|
+
GEOSMinimumClearance_r: [
|
738
815
|
# 0 on success, *handle, *geom, *clearance
|
739
816
|
:int, :pointer, :pointer, :pointer
|
740
817
|
],
|
741
818
|
|
742
|
-
:
|
819
|
+
GEOSMinimumClearanceLine_r: [
|
743
820
|
# *geom, *handle, *geom
|
744
821
|
:pointer, :pointer, :pointer
|
745
822
|
],
|
746
823
|
|
747
|
-
:
|
824
|
+
GEOSMaximumInscribedCircle_r: [
|
825
|
+
# *geom, *handle, *geom, tolerance
|
826
|
+
:pointer, :pointer, :pointer, :double
|
827
|
+
],
|
828
|
+
|
829
|
+
GEOSLargestEmptyCircle_r: [
|
830
|
+
# *geom, *handle, *geom, *geom, tolerance
|
831
|
+
:pointer, :pointer, :pointer, :pointer, :double
|
832
|
+
],
|
833
|
+
|
834
|
+
GEOSMinimumWidth_r: [
|
748
835
|
# *geom, *handle, *geom
|
749
836
|
:pointer, :pointer, :pointer
|
750
837
|
],
|
838
|
+
|
839
|
+
GEOSReverse_r: [
|
840
|
+
# *geom, *handle, *geom
|
841
|
+
:pointer, :pointer, :pointer
|
842
|
+
],
|
843
|
+
|
844
|
+
GEOSFrechetDistance_r: [
|
845
|
+
# (0 on exception, 1 otherwise), *handle, *geom_a, *geom_b, (double *) distance
|
846
|
+
:int, :pointer, :pointer, :pointer, :pointer
|
847
|
+
],
|
848
|
+
|
849
|
+
GEOSFrechetDistanceDensify_r: [
|
850
|
+
# (0 on exception, 1 otherwise), *handle, *geom_a, *geom_b, densifyFrac, (double *) distance
|
851
|
+
:int, :pointer, :pointer, :pointer, :double, :pointer
|
852
|
+
],
|
751
853
|
#### /Geometry functions ####
|
752
854
|
|
753
855
|
#### STRtree functions ####
|
754
|
-
:
|
856
|
+
GEOSSTRtree_create_r: [
|
755
857
|
# *tree, *handle, node_capacity
|
756
858
|
:pointer, :pointer, :size_t
|
757
859
|
],
|
758
860
|
|
759
|
-
:
|
861
|
+
GEOSSTRtree_insert_r: [
|
760
862
|
# void, *handle, *tree, *geom, *void
|
761
863
|
:void, :pointer, :pointer, :pointer, :pointer
|
762
864
|
],
|
763
865
|
|
764
|
-
:
|
866
|
+
GEOSSTRtree_query_r: [
|
765
867
|
# void, *handle, *tree, *geom, void query_callback((void *) item, (void *) user_data), (void *) user_data
|
766
|
-
:void, :pointer, :pointer, :pointer, callback([
|
868
|
+
:void, :pointer, :pointer, :pointer, callback([:pointer, :pointer], :void), :pointer
|
767
869
|
],
|
768
870
|
|
769
|
-
:
|
871
|
+
GEOSSTRtree_iterate_r: [
|
770
872
|
# void, *handle, *tree, void query_callback((void *) item, (void *) user_data), (void *) user_data
|
771
|
-
:void, :pointer, :pointer, callback([
|
873
|
+
:void, :pointer, :pointer, callback([:pointer, :pointer], :void), :pointer
|
772
874
|
],
|
773
875
|
|
774
|
-
:
|
876
|
+
GEOSSTRtree_remove_r: [
|
775
877
|
# bool, *handle, *tree, *geom, (void *) item
|
776
878
|
:char, :pointer, :pointer, :pointer, :pointer
|
777
879
|
],
|
778
880
|
|
779
|
-
:
|
881
|
+
GEOSSTRtree_destroy_r: [
|
780
882
|
# void, *handle, *tree
|
781
883
|
:void, :pointer, :pointer
|
782
884
|
],
|
783
885
|
|
784
|
-
:
|
886
|
+
GEOSSTRtree_nearest_generic_r: [
|
785
887
|
# *void, *handle, *tree, *item, *item_envelope, int distance_callback(*item_1, *item_2, *double, void *user_data), *user_data
|
786
|
-
:pointer, :pointer, :pointer, :pointer, :pointer, callback([
|
888
|
+
:pointer, :pointer, :pointer, :pointer, :pointer, callback([:pointer, :pointer, :pointer, :pointer], :int), :pointer
|
787
889
|
],
|
788
890
|
#### /STRtree functions ####
|
789
891
|
|
790
892
|
#### PreparedGeometry functions ####
|
791
|
-
:
|
893
|
+
GEOSPrepare_r: [
|
792
894
|
# *prepared, *handle, *geom
|
793
895
|
:pointer, :pointer, :pointer
|
794
896
|
],
|
795
897
|
|
796
|
-
:
|
898
|
+
GEOSPreparedGeom_destroy_r: [
|
797
899
|
# void, *handle, *geom
|
798
900
|
:void, :pointer, :pointer
|
799
901
|
],
|
800
902
|
|
801
|
-
:
|
903
|
+
GEOSPreparedContains_r: [
|
802
904
|
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
803
905
|
:char, :pointer, :pointer, :pointer
|
804
906
|
],
|
805
907
|
|
806
|
-
:
|
908
|
+
GEOSPreparedContainsProperly_r: [
|
807
909
|
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
808
910
|
:char, :pointer, :pointer, :pointer
|
809
911
|
],
|
810
912
|
|
811
|
-
:
|
913
|
+
GEOSPreparedCoveredBy_r: [
|
812
914
|
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
813
915
|
:char, :pointer, :pointer, :pointer
|
814
916
|
],
|
815
917
|
|
816
|
-
:
|
918
|
+
GEOSPreparedCovers_r: [
|
817
919
|
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
818
920
|
:char, :pointer, :pointer, :pointer
|
819
921
|
],
|
820
922
|
|
821
|
-
:
|
923
|
+
GEOSPreparedCrosses_r: [
|
822
924
|
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
823
925
|
:char, :pointer, :pointer, :pointer
|
824
926
|
],
|
825
927
|
|
826
|
-
:
|
928
|
+
GEOSPreparedDisjoint_r: [
|
827
929
|
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
828
930
|
:char, :pointer, :pointer, :pointer
|
829
931
|
],
|
830
932
|
|
831
|
-
:
|
933
|
+
GEOSPreparedIntersects_r: [
|
832
934
|
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
833
935
|
:char, :pointer, :pointer, :pointer
|
834
936
|
],
|
835
937
|
|
836
|
-
:
|
938
|
+
GEOSPreparedOverlaps_r: [
|
837
939
|
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
838
940
|
:char, :pointer, :pointer, :pointer
|
839
941
|
],
|
840
942
|
|
841
|
-
:
|
943
|
+
GEOSPreparedTouches_r: [
|
842
944
|
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
843
945
|
:char, :pointer, :pointer, :pointer
|
844
946
|
],
|
845
947
|
|
846
|
-
:
|
948
|
+
GEOSPreparedWithin_r: [
|
847
949
|
# (2 on exception, 1 on true, 0 on false), *handle, *prepared, *geom
|
848
950
|
:char, :pointer, :pointer, :pointer
|
849
951
|
],
|
850
952
|
#### /PreparedGeometry functions ####
|
851
953
|
|
852
954
|
#### WktReader functions ####
|
853
|
-
:
|
955
|
+
GEOSWKTReader_create_r: [
|
854
956
|
# *wktr, *handle
|
855
957
|
:pointer, :pointer
|
856
958
|
],
|
857
959
|
|
858
|
-
:
|
960
|
+
GEOSWKTReader_read_r: [
|
859
961
|
# *geom, *handle, *wktr, string
|
860
962
|
:pointer, :pointer, :pointer, :string
|
861
963
|
],
|
862
964
|
|
863
|
-
:
|
965
|
+
GEOSWKTReader_destroy_r: [
|
864
966
|
# void, *handle, *wktr
|
865
967
|
:void, :pointer, :pointer
|
866
968
|
],
|
867
969
|
#### /WktReader functions ###
|
868
970
|
|
869
971
|
#### WktWriter functions ####
|
870
|
-
:
|
972
|
+
GEOSWKTWriter_create_r: [
|
871
973
|
# *wktw, *handle
|
872
974
|
:pointer, :pointer
|
873
975
|
],
|
874
976
|
|
875
|
-
:
|
977
|
+
GEOSWKTWriter_write_r: [
|
876
978
|
# string, *handle, *wktw, *geom
|
877
979
|
:string, :pointer, :pointer, :pointer
|
878
980
|
],
|
879
981
|
|
880
|
-
:
|
982
|
+
GEOSWKTWriter_destroy_r: [
|
881
983
|
# void, *handle, *wktw
|
882
984
|
:void, :pointer, :pointer
|
883
985
|
],
|
884
986
|
|
885
|
-
:
|
987
|
+
GEOSWKTWriter_setTrim_r: [
|
886
988
|
# void, *handle, *wktw, bool
|
887
989
|
:void, :pointer, :pointer, :char
|
888
990
|
],
|
889
991
|
|
890
|
-
:
|
992
|
+
GEOSWKTWriter_setRoundingPrecision_r: [
|
891
993
|
# void, *handle, *wktw, precision
|
892
994
|
:void, :pointer, :pointer, :int
|
893
995
|
],
|
894
996
|
|
895
|
-
:
|
997
|
+
GEOSWKTWriter_setOutputDimension_r: [
|
896
998
|
# void, *handle, *wktw, dimensions
|
897
999
|
:void, :pointer, :pointer, :int
|
898
1000
|
],
|
899
1001
|
|
900
|
-
:
|
1002
|
+
GEOSWKTWriter_getOutputDimension_r: [
|
901
1003
|
# dimensions, *handle, *wktw
|
902
1004
|
:int, :pointer, :pointer
|
903
1005
|
],
|
904
1006
|
|
905
|
-
:
|
1007
|
+
GEOSWKTWriter_setOld3D_r: [
|
906
1008
|
# void, *handle, *wktw, bool
|
907
1009
|
:void, :pointer, :pointer, :int
|
908
1010
|
],
|
909
1011
|
#### /WktWriter functions ####
|
910
1012
|
|
911
1013
|
#### WkbReader functions ####
|
912
|
-
:
|
1014
|
+
GEOSWKBReader_create_r: [
|
913
1015
|
# *wkbr, *handle
|
914
1016
|
:pointer, :pointer
|
915
1017
|
],
|
916
1018
|
|
917
|
-
:
|
1019
|
+
GEOSWKBReader_destroy_r: [
|
918
1020
|
# void, *handle, *wkbr
|
919
1021
|
:void, :pointer, :pointer
|
920
1022
|
],
|
921
1023
|
|
922
|
-
:
|
1024
|
+
GEOSWKBReader_read_r: [
|
923
1025
|
# *geom, *handle, *wkbr, (unsigned char *) string, size_t
|
924
1026
|
:pointer, :pointer, :pointer, :pointer, :size_t
|
925
1027
|
],
|
926
1028
|
|
927
|
-
:
|
1029
|
+
GEOSWKBReader_readHEX_r: [
|
928
1030
|
# *geom, *handle, *wkbr, string, size_t
|
929
1031
|
:pointer, :pointer, :pointer, :string, :size_t
|
930
1032
|
],
|
931
1033
|
#### /WkbReader functions ####
|
932
1034
|
|
933
1035
|
#### WkbWriter functions ####
|
934
|
-
:
|
1036
|
+
GEOSWKBWriter_create_r: [
|
935
1037
|
# *wkbw, *handle
|
936
1038
|
:pointer, :pointer
|
937
1039
|
],
|
938
1040
|
|
939
|
-
:
|
1041
|
+
GEOSWKBWriter_destroy_r: [
|
940
1042
|
# void, *handle, *wkbw
|
941
1043
|
:void, :pointer, :pointer
|
942
1044
|
],
|
943
1045
|
|
944
|
-
:
|
1046
|
+
GEOSWKBWriter_write_r: [
|
945
1047
|
# (unsigned char *) string, *handle, *wkbw, *geom, *size_t
|
946
1048
|
:pointer, :pointer, :pointer, :pointer, :pointer
|
947
1049
|
],
|
948
1050
|
|
949
|
-
:
|
1051
|
+
GEOSWKBWriter_writeHEX_r: [
|
950
1052
|
# (unsigned char *) string, *handle, *wkbw, *geom, *size_t
|
951
1053
|
:pointer, :pointer, :pointer, :pointer, :pointer
|
952
1054
|
],
|
953
1055
|
|
954
|
-
:
|
1056
|
+
GEOSWKBWriter_setOutputDimension_r: [
|
955
1057
|
# void, *handle, *wkbw, dimensions
|
956
1058
|
:void, :pointer, :pointer, :int
|
957
1059
|
],
|
958
1060
|
|
959
|
-
:
|
1061
|
+
GEOSWKBWriter_getOutputDimension_r: [
|
960
1062
|
# dimensions, *handle, *wkbw
|
961
1063
|
:int, :pointer, :pointer
|
962
1064
|
],
|
963
1065
|
|
964
|
-
:
|
1066
|
+
GEOSWKBWriter_getByteOrder_r: [
|
965
1067
|
# byte_order, *handle, *wkbw
|
966
1068
|
:byte_order, :pointer, :pointer
|
967
1069
|
],
|
968
1070
|
|
969
|
-
:
|
1071
|
+
GEOSWKBWriter_setByteOrder_r: [
|
970
1072
|
# void, *handle, *wkbw, byte_order
|
971
1073
|
:void, :pointer, :pointer, :byte_order
|
972
1074
|
],
|
973
1075
|
|
974
|
-
:
|
1076
|
+
GEOSWKBWriter_getIncludeSRID_r: [
|
975
1077
|
# bool, *handle, *geom
|
976
1078
|
:char, :pointer, :pointer
|
977
1079
|
],
|
978
1080
|
|
979
|
-
:
|
1081
|
+
GEOSWKBWriter_setIncludeSRID_r: [
|
980
1082
|
# void, *handle, *geom, bool
|
981
1083
|
:void, :pointer, :pointer, :char
|
982
1084
|
],
|
983
1085
|
#### /WkbWriter functions ####
|
984
1086
|
|
985
|
-
|
986
1087
|
#### Linearref functions ####
|
987
|
-
:
|
1088
|
+
GEOSProject_r: [
|
988
1089
|
# distance, *handle, *geom_a, *geom_b
|
989
1090
|
:double, :pointer, :pointer, :pointer
|
990
1091
|
],
|
991
1092
|
|
992
|
-
:
|
1093
|
+
GEOSProjectNormalized_r: [
|
993
1094
|
# distance, *handle, *geom_a, *geom_b
|
994
1095
|
:double, :pointer, :pointer, :pointer
|
995
1096
|
],
|
996
1097
|
|
997
|
-
:
|
1098
|
+
GEOSInterpolate_r: [
|
998
1099
|
# *geom, *handle, *geom, distance
|
999
1100
|
:pointer, :pointer, :pointer, :double
|
1000
1101
|
],
|
1001
1102
|
|
1002
|
-
:
|
1103
|
+
GEOSInterpolateNormalized_r: [
|
1003
1104
|
# *geom, *handle, *geom, distance
|
1004
1105
|
:pointer, :pointer, :pointer, :double
|
1005
1106
|
],
|
1006
1107
|
#### /Linearref functions ####
|
1007
1108
|
|
1008
1109
|
#### BufferParams functions ####
|
1009
|
-
:
|
1110
|
+
GEOSBufferParams_create_r: [
|
1010
1111
|
# GEOSBufferParams*, *handle
|
1011
1112
|
:pointer, :pointer
|
1012
1113
|
],
|
1013
1114
|
|
1014
|
-
:
|
1115
|
+
GEOSBufferParams_destroy_r: [
|
1015
1116
|
# void, *handle, *params
|
1016
1117
|
:void, :pointer, :pointer
|
1017
1118
|
],
|
1018
1119
|
|
1019
|
-
:
|
1120
|
+
GEOSBufferParams_setEndCapStyle_r: [
|
1020
1121
|
# 0 on exception, *handle, *params, style
|
1021
1122
|
:int, :pointer, :pointer, :buffer_cap_style
|
1022
1123
|
],
|
1023
1124
|
|
1024
|
-
:
|
1125
|
+
GEOSBufferParams_setJoinStyle_r: [
|
1025
1126
|
# 0 on exception, *handle, *params, style
|
1026
1127
|
:int, :pointer, :pointer, :buffer_join_style
|
1027
1128
|
],
|
1028
1129
|
|
1029
|
-
:
|
1130
|
+
GEOSBufferParams_setMitreLimit_r: [
|
1030
1131
|
# 0 on exception, *handle, *params, mitre_limit
|
1031
1132
|
:int, :pointer, :pointer, :double
|
1032
1133
|
],
|
1033
1134
|
|
1034
|
-
:
|
1135
|
+
GEOSBufferParams_setQuadrantSegments_r: [
|
1035
1136
|
# 0 on exception, *handle, *params, quad_segs
|
1036
1137
|
:int, :pointer, :pointer, :int
|
1037
1138
|
],
|
1038
1139
|
|
1039
|
-
:
|
1140
|
+
GEOSBufferParams_setSingleSided_r: [
|
1040
1141
|
# 0 on exception, *handle, *params, bool
|
1041
1142
|
:int, :pointer, :pointer, :int
|
1042
1143
|
],
|
@@ -1046,21 +1147,21 @@ module Geos
|
|
1046
1147
|
# -1 if reaching P takes a counter-clockwise (left) turn
|
1047
1148
|
# 1 if reaching P takes a clockwise (right) turn
|
1048
1149
|
# 0 if P is collinear with A-B
|
1049
|
-
:
|
1150
|
+
GEOSOrientationIndex_r: [
|
1050
1151
|
# int, *handle, Ax, Ay, Bx, By, Px, Py
|
1051
1152
|
:int, :pointer, :double, :double, :double, :double, :double, :double
|
1052
1153
|
]
|
1053
1154
|
#### /Algorithms ####
|
1054
|
-
}
|
1155
|
+
}.freeze
|
1055
1156
|
|
1056
1157
|
begin
|
1057
1158
|
ffi_lib(geos_library_path)
|
1058
1159
|
|
1059
|
-
FFI_LAYOUT.each do |
|
1160
|
+
FFI_LAYOUT.each do |func, ary|
|
1060
1161
|
ret = ary.shift
|
1061
1162
|
begin
|
1062
|
-
|
1063
|
-
attach_function(
|
1163
|
+
class_eval do
|
1164
|
+
attach_function(func, ary, ret)
|
1064
1165
|
end
|
1065
1166
|
rescue FFI::NotFoundError
|
1066
1167
|
# that's okay
|
@@ -1069,9 +1170,8 @@ module Geos
|
|
1069
1170
|
|
1070
1171
|
# Checks to see if we actually have the GEOS library loaded.
|
1071
1172
|
FFIGeos.GEOSversion
|
1072
|
-
|
1073
1173
|
rescue LoadError, NoMethodError
|
1074
|
-
raise LoadError
|
1174
|
+
raise LoadError, "Couldn't load the GEOS CAPI library."
|
1075
1175
|
end
|
1076
1176
|
end
|
1077
1177
|
|
@@ -1093,13 +1193,11 @@ module Geos
|
|
1093
1193
|
def notice_handler=(method_or_block)
|
1094
1194
|
@notice_handler = method_or_block
|
1095
1195
|
FFIGeos.GEOSContext_setNoticeMessageHandler_r(@ptr, @notice_handler, nil)
|
1096
|
-
@notice_handler
|
1097
1196
|
end
|
1098
1197
|
|
1099
1198
|
def error_handler=(method_or_block)
|
1100
1199
|
@error_handler = method_or_block
|
1101
1200
|
FFIGeos.GEOSContext_setErrorMessageHandler_r(@ptr, @error_handler, nil)
|
1102
|
-
@error_handler
|
1103
1201
|
end
|
1104
1202
|
|
1105
1203
|
def notice_handler(&block)
|
@@ -1113,11 +1211,11 @@ module Geos
|
|
1113
1211
|
end
|
1114
1212
|
|
1115
1213
|
def reset_notice_handler
|
1116
|
-
self.notice_handler =
|
1214
|
+
self.notice_handler = method(:default_notice_handler)
|
1117
1215
|
end
|
1118
1216
|
|
1119
1217
|
def reset_error_handler
|
1120
|
-
self.error_handler =
|
1218
|
+
self.error_handler = method(:default_error_handler)
|
1121
1219
|
end
|
1122
1220
|
|
1123
1221
|
# Deprecated initialization and teardown...
|
@@ -1125,8 +1223,8 @@ module Geos
|
|
1125
1223
|
def initialize
|
1126
1224
|
@ptr = FFI::AutoPointer.new(
|
1127
1225
|
FFIGeos.initGEOS_r(
|
1128
|
-
@notice_handler =
|
1129
|
-
@error_handler =
|
1226
|
+
@notice_handler = method(:default_notice_handler),
|
1227
|
+
@error_handler = method(:default_error_handler)
|
1130
1228
|
),
|
1131
1229
|
self.class.method(:release)
|
1132
1230
|
)
|
@@ -1136,28 +1234,25 @@ module Geos
|
|
1136
1234
|
FFIGeos.finishGEOS_r(ptr)
|
1137
1235
|
end
|
1138
1236
|
|
1139
|
-
|
1140
|
-
@notice_handler
|
1141
|
-
end
|
1237
|
+
attr_reader :notice_handler
|
1142
1238
|
|
1143
|
-
|
1144
|
-
@error_handler
|
1145
|
-
end
|
1239
|
+
attr_reader :error_handler
|
1146
1240
|
end
|
1147
1241
|
|
1148
1242
|
private
|
1243
|
+
|
1149
1244
|
def default_notice_handler(*args)
|
1150
1245
|
# no-op
|
1151
1246
|
end
|
1152
1247
|
|
1153
1248
|
def default_error_handler(*args)
|
1154
|
-
raise Geos::GEOSException
|
1249
|
+
raise Geos::GEOSException, args[0] % args[1]
|
1155
1250
|
end
|
1156
1251
|
end
|
1157
1252
|
|
1158
1253
|
class << self
|
1159
1254
|
def version
|
1160
|
-
@version ||= FFIGeos.GEOSversion
|
1255
|
+
@version ||= FFIGeos.GEOSversion.strip
|
1161
1256
|
end
|
1162
1257
|
|
1163
1258
|
def jts_port
|
@@ -1202,7 +1297,7 @@ module Geos
|
|
1202
1297
|
elsif Geos::Constants::SRID_COPY_POLICIES.include?(policy)
|
1203
1298
|
Thread.current[:ffi_geos_srid_copy_policy] = policy
|
1204
1299
|
else
|
1205
|
-
raise ArgumentError
|
1300
|
+
raise ArgumentError, "Invalid SRID policy #{policy} (must be one of #{Geos::Constants::SRID_COPY_POLICIES})"
|
1206
1301
|
end
|
1207
1302
|
end
|
1208
1303
|
|
@@ -1216,7 +1311,7 @@ module Geos
|
|
1216
1311
|
elsif Geos::Constants::SRID_COPY_POLICIES.include?(policy)
|
1217
1312
|
@srid_copy_policy_default = policy
|
1218
1313
|
else
|
1219
|
-
raise ArgumentError
|
1314
|
+
raise ArgumentError, "Invalid SRID policy #{policy} (must be one of #{Geos::Constants::SRID_COPY_POLICIES})"
|
1220
1315
|
end
|
1221
1316
|
end
|
1222
1317
|
|
@@ -1241,11 +1336,11 @@ module Geos
|
|
1241
1336
|
create_empty_collection
|
1242
1337
|
create_empty_linear_ring
|
1243
1338
|
}.each do |m|
|
1244
|
-
|
1339
|
+
class_eval(<<-RUBY, __FILE__, __LINE__ + 1)
|
1245
1340
|
def #{m}(*args)
|
1246
1341
|
Geos::Utils.#{m}(*args)
|
1247
1342
|
end
|
1248
|
-
|
1343
|
+
RUBY
|
1249
1344
|
end
|
1250
1345
|
end
|
1251
1346
|
|
@@ -1268,38 +1363,38 @@ module Geos
|
|
1268
1363
|
GEOS_CAPI_VERSION,
|
1269
1364
|
GEOS_CAPI_VERSION_MAJOR, GEOS_CAPI_VERSION_MINOR, GEOS_CAPI_VERSION_PATCH,
|
1270
1365
|
GEOS_SVN_REVISION =
|
1271
|
-
|
1272
|
-
|
1273
|
-
|
1274
|
-
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1279
|
-
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1366
|
+
if !(versions = Geos.version.scan(/^
|
1367
|
+
((\d+)\.(\d+)\.(\d+)((?:dev|rc|beta|alpha)\d*)?)
|
1368
|
+
-CAPI-
|
1369
|
+
((\d+)\.(\d+)\.(\d+))
|
1370
|
+
(?:\s+r?(\h+))?
|
1371
|
+
$/x)).empty?
|
1372
|
+
versions = versions[0]
|
1373
|
+
[
|
1374
|
+
versions[0],
|
1375
|
+
versions[1].to_i,
|
1376
|
+
versions[2].to_i,
|
1377
|
+
versions[3].to_i,
|
1378
|
+
versions[4],
|
1379
|
+
versions[5],
|
1380
|
+
versions[6].to_i,
|
1381
|
+
versions[7].to_i,
|
1382
|
+
versions[8].to_i,
|
1383
|
+
versions[9]&.to_i
|
1384
|
+
]
|
1385
|
+
else
|
1386
|
+
['0.0.0', 0, 0, 0, nil, '0.0.0', 0, 0, 0]
|
1387
|
+
end
|
1293
1388
|
GEOS_CAPI_FIRST_INTERFACE = GEOS_CAPI_VERSION_MAJOR.to_i
|
1294
1389
|
GEOS_CAPI_LAST_INTERFACE = GEOS_CAPI_VERSION_MAJOR.to_i + GEOS_CAPI_VERSION_MINOR.to_i
|
1295
1390
|
end
|
1296
1391
|
|
1297
1392
|
module Constants
|
1298
1393
|
BUFFER_PARAM_DEFAULTS = {
|
1299
|
-
:
|
1300
|
-
:
|
1301
|
-
:
|
1302
|
-
:
|
1394
|
+
quad_segs: 8,
|
1395
|
+
endcap: :round,
|
1396
|
+
join: :round,
|
1397
|
+
mitre_limit: 5.0
|
1303
1398
|
}.freeze
|
1304
1399
|
|
1305
1400
|
SRID_COPY_POLICIES = [
|
@@ -1317,7 +1412,7 @@ module Geos
|
|
1317
1412
|
|
1318
1413
|
class IndexBoundsError < Error
|
1319
1414
|
def initialize(*)
|
1320
|
-
super(
|
1415
|
+
super('Index out of bounds')
|
1321
1416
|
end
|
1322
1417
|
end
|
1323
1418
|
|
@@ -1330,6 +1425,9 @@ module Geos
|
|
1330
1425
|
class ParseError < Error
|
1331
1426
|
end
|
1332
1427
|
|
1428
|
+
class InvalidGeometryError < Error
|
1429
|
+
end
|
1430
|
+
|
1333
1431
|
include GeomTypes
|
1334
1432
|
include VersionConstants
|
1335
1433
|
end
|