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.
@@ -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-p392 and JRuby 1.7.3
93
+ Tested on: MRI 1.9.3 / 2.0.0 and JRuby 1.7.3+
@@ -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,3 @@
1
+ module OGR
2
+ class FeatureServiceReader < UrlGeoJSONReader;end
3
+ end
@@ -0,0 +1,3 @@
1
+ module OGR
2
+ class GithubReader < UrlGeoJSONReader;end
3
+ 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
@@ -1,3 +1,3 @@
1
1
  module OGR
2
- VERSION = '0.0.1'
2
+ VERSION = '0.1.0.pre'
3
3
  end
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.1
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-04-11 00:00:00.000000000 Z
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: 1.8.23
152
+ rubygems_version: 2.0.3
146
153
  signing_key:
147
- specification_version: 3
154
+ specification_version: 4
148
155
  summary: Convenient access to OGR functionality from Ruby
149
156
  test_files: []