ffi-ogr 0.0.1 → 0.1.0.pre
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 +7 -0
- data/README.md +12 -1
- data/lib/ffi-ogr.rb +28 -0
- data/lib/ffi-ogr/feature_service_reader.rb +3 -0
- data/lib/ffi-ogr/github_reader.rb +3 -0
- data/lib/ffi-ogr/url_geo_json_reader.rb +22 -0
- data/lib/ffi-ogr/version.rb +1 -1
- metadata +32 -25
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4b9dde86c53cf560c92a01c1d443f9beac5ec1b5
|
4
|
+
data.tar.gz: ad9969a5ca379d9595dd13ae5428ca747718f2f3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c83069cc2d02ec53ce2b9d6864aa79388044a68e65cd007fedfdbf3ef8a513be7b566fdec58357501681adf5eec5df3b5181dbfd02fc27e7ba26511f7a3bbcc1
|
7
|
+
data.tar.gz: efaa386893615bffed98d19ed34a31fd4ab1d5071c6137823e709652968d09b35d9540eb0144b2eb71db2211596ee048e187e420c22ca4ed267d0af9c08323b4
|
data/README.md
CHANGED
@@ -3,6 +3,17 @@ ffi-ogr
|
|
3
3
|
|
4
4
|
To run: `bin/ogr_console`
|
5
5
|
|
6
|
+
To read from a known file type (currently SHP, JSON/GeoJSON, raw Github GeoJSON URL, Esri Feature Service URL):
|
7
|
+
|
8
|
+
```ruby
|
9
|
+
data = OGR.read('https://raw.github.com/colemanm/hurricanes/master/fl_2004_hurricanes.geojson')
|
10
|
+
=> #<OGR::DataSource:0x007fb830aa3af8 @ptr=#<FFI::AutoPointer address=0x007fb8311ab990>>
|
11
|
+
|
12
|
+
# output to SHP file
|
13
|
+
data.to_shp '/~Desktop/github_to_shp.shp'
|
14
|
+
=> nil
|
15
|
+
```
|
16
|
+
|
6
17
|
To read a shapefile:
|
7
18
|
|
8
19
|
```ruby
|
@@ -79,4 +90,4 @@ A writer may also be inferred by file extension (currently works for shp and jso
|
|
79
90
|
writer = OGR::Writer.from_file_type '~/Documents/shapefiles/my_new.shp'
|
80
91
|
```
|
81
92
|
|
82
|
-
Tested on: MRI 1.9.3
|
93
|
+
Tested on: MRI 1.9.3 / 2.0.0 and JRuby 1.7.3+
|
data/lib/ffi-ogr.rb
CHANGED
@@ -13,6 +13,9 @@ module OGR
|
|
13
13
|
autoload :GenericReader, File.join(OGR_BASE, 'generic_reader')
|
14
14
|
autoload :ShpReader, File.join(OGR_BASE, 'shp_reader')
|
15
15
|
autoload :GeoJSONReader, File.join(OGR_BASE, 'geo_json_reader')
|
16
|
+
autoload :UrlGeoJSONReader, File.join(OGR_BASE, 'url_geo_json_reader')
|
17
|
+
autoload :FeatureServiceReader, File.join(OGR_BASE, 'feature_service_reader')
|
18
|
+
autoload :GithubReader, File.join(OGR_BASE, 'github_reader')
|
16
19
|
autoload :Writer, File.join(OGR_BASE, 'writer')
|
17
20
|
autoload :GenericWriter, File.join(OGR_BASE, 'generic_writer')
|
18
21
|
autoload :ShpWriter, File.join(OGR_BASE, 'shp_writer')
|
@@ -315,6 +318,18 @@ module OGR
|
|
315
318
|
def gdal_version
|
316
319
|
FFIOGR.GDALVersionInfo('RELEASE_NAME')
|
317
320
|
end
|
321
|
+
|
322
|
+
def get_available_drivers
|
323
|
+
drivers = []
|
324
|
+
count = FFIOGR.OGRGetDriverCount
|
325
|
+
|
326
|
+
for i in 0...count
|
327
|
+
drivers << FFIOGR.OGR_Dr_GetName(FFIOGR.OGRGetDriver(i))
|
328
|
+
end
|
329
|
+
|
330
|
+
drivers
|
331
|
+
end
|
332
|
+
alias_method :drivers, :get_available_drivers
|
318
333
|
|
319
334
|
def to_binary(data)
|
320
335
|
buf = FFI::MemoryPointer.new(:char, value.size)
|
@@ -325,5 +340,18 @@ module OGR
|
|
325
340
|
def string_to_pointer(str)
|
326
341
|
FFI::MemoryPointer.from_string(str)
|
327
342
|
end
|
343
|
+
|
344
|
+
def read(source)
|
345
|
+
case source
|
346
|
+
when /http:|https:/
|
347
|
+
UrlGeoJSONReader.new.read source
|
348
|
+
when /.shp/
|
349
|
+
ShpReader.new.read source
|
350
|
+
when /.json|.geojson/
|
351
|
+
GeoJSONReader.new.read source
|
352
|
+
else
|
353
|
+
raise RuntimeError.new("Could not determine file type based on input")
|
354
|
+
end
|
355
|
+
end
|
328
356
|
end
|
329
357
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'securerandom'
|
3
|
+
require 'faraday'
|
4
|
+
|
5
|
+
module OGR
|
6
|
+
class UrlGeoJSONReader < GeoJSONReader
|
7
|
+
def read(url, writeable=false)
|
8
|
+
file_name = "#{SecureRandom.urlsafe_base64}.json"
|
9
|
+
remote_json = Faraday.get(url).body
|
10
|
+
|
11
|
+
File.open(file_name, 'wb') do |f|
|
12
|
+
f.write(remote_json)
|
13
|
+
end
|
14
|
+
|
15
|
+
data_source = super(file_name, writeable)
|
16
|
+
|
17
|
+
FileUtils.rm(file_name)
|
18
|
+
|
19
|
+
data_source
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/ffi-ogr/version.rb
CHANGED
metadata
CHANGED
@@ -1,78 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ffi-ogr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0.pre
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Scooter Wadsworth
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-09-01 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: ffi
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 1.6.0
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 1.6.0
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: multi_json
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- - '
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: 1.7.2
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- - '
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: 1.7.2
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: faraday
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.8.7
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.8.7
|
46
55
|
- !ruby/object:Gem::Dependency
|
47
56
|
name: rake
|
48
57
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
58
|
requirements:
|
51
|
-
- -
|
59
|
+
- - '>='
|
52
60
|
- !ruby/object:Gem::Version
|
53
61
|
version: '0'
|
54
62
|
type: :development
|
55
63
|
prerelease: false
|
56
64
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
65
|
requirements:
|
59
|
-
- -
|
66
|
+
- - '>='
|
60
67
|
- !ruby/object:Gem::Version
|
61
68
|
version: '0'
|
62
69
|
- !ruby/object:Gem::Dependency
|
63
70
|
name: rspec
|
64
71
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
72
|
requirements:
|
67
|
-
- -
|
73
|
+
- - '>='
|
68
74
|
- !ruby/object:Gem::Version
|
69
75
|
version: '0'
|
70
76
|
type: :development
|
71
77
|
prerelease: false
|
72
78
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
79
|
requirements:
|
75
|
-
- -
|
80
|
+
- - '>='
|
76
81
|
- !ruby/object:Gem::Version
|
77
82
|
version: '0'
|
78
83
|
description: FFI wrapper for OGR
|
@@ -89,6 +94,7 @@ files:
|
|
89
94
|
- lib/ffi-ogr/data_source.rb
|
90
95
|
- lib/ffi-ogr/envelope.rb
|
91
96
|
- lib/ffi-ogr/feature.rb
|
97
|
+
- lib/ffi-ogr/feature_service_reader.rb
|
92
98
|
- lib/ffi-ogr/generic_reader.rb
|
93
99
|
- lib/ffi-ogr/generic_writer.rb
|
94
100
|
- lib/ffi-ogr/geo_json.rb
|
@@ -97,6 +103,7 @@ files:
|
|
97
103
|
- lib/ffi-ogr/geometry.rb
|
98
104
|
- lib/ffi-ogr/geometry_collection.rb
|
99
105
|
- lib/ffi-ogr/geometry_collection_25d.rb
|
106
|
+
- lib/ffi-ogr/github_reader.rb
|
100
107
|
- lib/ffi-ogr/layer.rb
|
101
108
|
- lib/ffi-ogr/line_string.rb
|
102
109
|
- lib/ffi-ogr/line_string_25d.rb
|
@@ -118,32 +125,32 @@ files:
|
|
118
125
|
- lib/ffi-ogr/shp_writer.rb
|
119
126
|
- lib/ffi-ogr/spatial_reference.rb
|
120
127
|
- lib/ffi-ogr/tools.rb
|
128
|
+
- lib/ffi-ogr/url_geo_json_reader.rb
|
121
129
|
- lib/ffi-ogr/version.rb
|
122
130
|
- lib/ffi-ogr/writer.rb
|
123
131
|
- lib/ffi-ogr.rb
|
124
132
|
homepage: https://github.com/scooterw/ffi-ogr
|
125
133
|
licenses:
|
126
134
|
- MIT
|
135
|
+
metadata: {}
|
127
136
|
post_install_message:
|
128
137
|
rdoc_options: []
|
129
138
|
require_paths:
|
130
139
|
- lib
|
131
140
|
required_ruby_version: !ruby/object:Gem::Requirement
|
132
|
-
none: false
|
133
141
|
requirements:
|
134
|
-
- -
|
142
|
+
- - '>='
|
135
143
|
- !ruby/object:Gem::Version
|
136
144
|
version: 1.9.2
|
137
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
|
-
none: false
|
139
146
|
requirements:
|
140
|
-
- -
|
147
|
+
- - '>='
|
141
148
|
- !ruby/object:Gem::Version
|
142
149
|
version: 1.3.6
|
143
150
|
requirements: []
|
144
151
|
rubyforge_project:
|
145
|
-
rubygems_version:
|
152
|
+
rubygems_version: 2.0.3
|
146
153
|
signing_key:
|
147
|
-
specification_version:
|
154
|
+
specification_version: 4
|
148
155
|
summary: Convenient access to OGR functionality from Ruby
|
149
156
|
test_files: []
|