ffi-geos 1.2.0 → 2.2.0
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.
- 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
|