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.
@@ -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: []