ffi-ogr 0.0.1 → 0.1.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|