grassgis 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1,22 +1,22 @@
1
- require "bundler/gem_tasks"
2
-
3
- require 'rake/testtask'
4
- Rake::TestTask.new(:test) do |test|
5
- test.libs << 'lib' << 'test'
6
- test.pattern = 'test/**/test_*.rb'
7
- test.verbose = true
8
- end
9
-
10
- require 'rdoc/task'
11
- Rake::RDocTask.new do |rdoc|
12
- version = GrassGis::VERSION
13
-
14
- rdoc.rdoc_dir = 'rdoc'
15
- rdoc.title = "GrassGis #{version}"
16
- rdoc.main = "README.md"
17
- rdoc.rdoc_files.include('README*')
18
- rdoc.rdoc_files.include('lib/**/*.rb')
19
- rdoc.markup = 'markdown' if rdoc.respond_to?(:markup)
20
- end
21
-
22
- task :default => :test
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rake/testtask'
4
+ Rake::TestTask.new(:test) do |test|
5
+ test.libs << 'lib' << 'test'
6
+ test.pattern = 'test/**/test_*.rb'
7
+ test.verbose = true
8
+ end
9
+
10
+ require 'rdoc/task'
11
+ Rake::RDocTask.new do |rdoc|
12
+ version = GrassGis::VERSION
13
+
14
+ rdoc.rdoc_dir = 'rdoc'
15
+ rdoc.title = "GrassGis #{version}"
16
+ rdoc.main = "README.md"
17
+ rdoc.rdoc_files.include('README*')
18
+ rdoc.rdoc_files.include('lib/**/*.rb')
19
+ rdoc.markup = 'markdown' if rdoc.respond_to?(:markup)
20
+ end
21
+
22
+ task :default => :test
data/Vagrantfile CHANGED
@@ -1,18 +1,18 @@
1
- # -*- mode: ruby -*-
2
- # vi: set ft=ruby :
3
-
4
- Vagrant.configure(2) do |config|
5
- config.vm.box = "ubuntu/trusty32"
6
-
7
- config.vm.provision "shell", inline: <<-SHELL
8
- sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable
9
- sudo add-apt-repository -y ppa:grass/grass-stable
10
- sudo apt-get update -y
11
- sudo apt-get install -y grass7
12
- sudo apt-get install -y grass7-dev
13
- sudo apt-get install -y build-essential
14
- sudo apt-get install -y ruby-dev
15
- sudo apt-get install -y libsqlite3-dev
16
- sudo gem install bundler
17
- SHELL
18
- end
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ Vagrant.configure(2) do |config|
5
+ config.vm.box = "ubuntu/trusty32"
6
+
7
+ config.vm.provision "shell", inline: <<-SHELL
8
+ sudo add-apt-repository -y ppa:ubuntugis/ubuntugis-unstable
9
+ sudo add-apt-repository -y ppa:grass/grass-stable
10
+ sudo apt-get update -y
11
+ sudo apt-get install -y grass7
12
+ sudo apt-get install -y grass7-dev
13
+ sudo apt-get install -y build-essential
14
+ sudo apt-get install -y ruby-dev
15
+ sudo apt-get install -y libsqlite3-dev
16
+ sudo gem install bundler
17
+ SHELL
18
+ end
data/grassgis.gemspec CHANGED
@@ -1,28 +1,28 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'grassgis/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "grassgis"
8
- spec.version = GrassGis::VERSION
9
- spec.authors = ["Javier Goizueta"]
10
- spec.email = ["jgoizueta@gmail.com"]
11
- spec.summary = %q{Support for scripting GRASS GIS in Ruby}
12
- spec.description = %q{Support for scripting GRASS GIS in Ruby.}
13
- spec.homepage = "https://github.com/jgoizueta/grassgis"
14
- spec.license = "MIT"
15
-
16
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
20
-
21
- spec.add_dependency "sys_cmd", "~> 1.1"
22
-
23
- spec.add_development_dependency "bundler", "~> 1.9"
24
- spec.add_development_dependency "rake"
25
- spec.add_development_dependency "minitest", "~> 5.4"
26
-
27
- spec.required_ruby_version = '>= 1.9.3'
28
- end
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'grassgis/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "grassgis"
8
+ spec.version = GrassGis::VERSION
9
+ spec.authors = ["Javier Goizueta"]
10
+ spec.email = ["jgoizueta@gmail.com"]
11
+ spec.summary = %q{Support for scripting GRASS GIS in Ruby}
12
+ spec.description = %q{Support for scripting GRASS GIS in Ruby.}
13
+ spec.homepage = "https://github.com/jgoizueta/grassgis"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "sys_cmd", "~> 1.1"
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.9"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "minitest", "~> 5.4"
26
+
27
+ spec.required_ruby_version = '>= 1.9.3'
28
+ end
@@ -23,7 +23,7 @@ module GrassGis
23
23
  config[:png_auto_write] = true unless config.key?(:png_auto_write)
24
24
  config[:gnuplot] ||= 'gnuplot -persist'
25
25
  config[:gui] ||= 'wxpython'
26
- config[:pyhton] ||= 'python'
26
+ config[:python] ||= 'python'
27
27
 
28
28
  config[:errors] ||= :raise
29
29
  config[:echo] = :commands unless config.key?(:echo)
@@ -1,4 +1,4 @@
1
- module GrassGis
2
- class Error < StandardError
3
- end
4
- end
1
+ module GrassGis
2
+ class Error < StandardError
3
+ end
4
+ end
@@ -1,53 +1,53 @@
1
- module GrassGis
2
- class Location
3
- def initialize(context)
4
- @context = context
5
- @configuration = @context.configuration
6
- @gisdbase = @configuration[:gisdbase]
7
- @location = @configuration[:location]
8
- @path = File.join(@gisdbase, @location)
9
- end
10
-
11
- attr_reader :path
12
-
13
- def to_s
14
- @location
15
- end
16
-
17
- def exists?
18
- File.directory?(@path)
19
- end
20
-
21
- def create!(options = {})
22
- raise Error, "Location #{@location} already exists" if exists?
23
- raise Error, "A file with the same name #{@location} exists" if File.exists?(@path)
24
- raise Error, "GRASSDBASE doesn't exist" unless File.directory?(@gisdbase)
25
- epsg = options[:epsg]
26
- limits = options[:limits]
27
- desc = options[:desc]
28
- raise Error, "An EPSG code is needed to define a new loaction" unless epsg
29
- @context.g.proj '-t', epsg: epsg, location: @location
30
- permanent = permanent_path
31
- if desc
32
- desc_file = File.join(permanent, 'MYNAME')
33
- File.write desc_file, desc
34
- end
35
- if limits
36
- w, s, e, n = limits
37
- res = options[:res]
38
- # @context.g.mapset mapset: 'PERMANENT', location: @location
39
- @context.change_mapset 'PERMANENT'
40
- @context.g.region w: w, s: s, e: e, n: n, res: res
41
- FileUtils.cp File.join(permanent, 'WIND'), File.join(permanent, 'DEFAULT_WIND')
42
- end
43
- end
44
-
45
- def mapset_path(mapset)
46
- File.join(@path, mapset)
47
- end
48
-
49
- def permanent_path
50
- mapset_path('PERMANENT')
51
- end
52
- end
53
- end
1
+ module GrassGis
2
+ class Location
3
+ def initialize(context)
4
+ @context = context
5
+ @configuration = @context.configuration
6
+ @gisdbase = @configuration[:gisdbase]
7
+ @location = @configuration[:location]
8
+ @path = File.join(@gisdbase, @location)
9
+ end
10
+
11
+ attr_reader :path
12
+
13
+ def to_s
14
+ @location
15
+ end
16
+
17
+ def exists?
18
+ File.directory?(@path)
19
+ end
20
+
21
+ def create!(options = {})
22
+ raise Error, "Location #{@location} already exists" if exists?
23
+ raise Error, "A file with the same name #{@location} exists" if File.exists?(@path)
24
+ raise Error, "GRASSDBASE doesn't exist" unless File.directory?(@gisdbase)
25
+ epsg = options[:epsg]
26
+ limits = options[:limits]
27
+ desc = options[:desc]
28
+ raise Error, "An EPSG code is needed to define a new loaction" unless epsg
29
+ @context.g.proj '-t', epsg: epsg, location: @location
30
+ permanent = permanent_path
31
+ if desc
32
+ desc_file = File.join(permanent, 'MYNAME')
33
+ File.write desc_file, desc
34
+ end
35
+ if limits
36
+ w, s, e, n = limits
37
+ res = options[:res]
38
+ # @context.g.mapset mapset: 'PERMANENT', location: @location
39
+ @context.change_mapset 'PERMANENT'
40
+ @context.g.region w: w, s: s, e: e, n: n, res: res
41
+ FileUtils.cp File.join(permanent, 'WIND'), File.join(permanent, 'DEFAULT_WIND')
42
+ end
43
+ end
44
+
45
+ def mapset_path(mapset)
46
+ File.join(@path, mapset)
47
+ end
48
+
49
+ def permanent_path
50
+ mapset_path('PERMANENT')
51
+ end
52
+ end
53
+ end
@@ -1,31 +1,31 @@
1
- module GrassGis
2
- class Mapset
3
- def initialize(context)
4
- @context = context
5
- @configuration = @context.configuration
6
- @location = Location.new(@context)
7
- @mapset = @configuration[:mapset]
8
- @path = File.join(@location.path, @mapset)
9
- end
10
-
11
- attr_reader :path
12
-
13
- def to_s
14
- @mapset
15
- end
16
-
17
- def exists?
18
- File.directory?(@path)
19
- end
20
-
21
- def create!(options = {})
22
- raise Error, "Mapset #{@mapset} already exists" if exists?
23
- raise Error, "A file with the same name #{@mapset} exists" if File.exists?(@path)
24
- raise Error, "Location doesn't exist" unless @location.exists?
25
- # @context.g.mapet '-c', mapset: @mapset, location: @location.to_s, dbase: @configuration[:gisdbase]
26
- FileUtils.mkdir_p @path
27
- permanent = @location.permanent_path
28
- FileUtils.cp File.join(permanent, 'DEFAULT_WIND'), File.join(@path, 'WIND')
29
- end
30
- end
31
- end
1
+ module GrassGis
2
+ class Mapset
3
+ def initialize(context)
4
+ @context = context
5
+ @configuration = @context.configuration
6
+ @location = Location.new(@context)
7
+ @mapset = @configuration[:mapset]
8
+ @path = File.join(@location.path, @mapset)
9
+ end
10
+
11
+ attr_reader :path
12
+
13
+ def to_s
14
+ @mapset
15
+ end
16
+
17
+ def exists?
18
+ File.directory?(@path)
19
+ end
20
+
21
+ def create!(options = {})
22
+ raise Error, "Mapset #{@mapset} already exists" if exists?
23
+ raise Error, "A file with the same name #{@mapset} exists" if File.exists?(@path)
24
+ raise Error, "Location doesn't exist" unless @location.exists?
25
+ # @context.g.mapet '-c', mapset: @mapset, location: @location.to_s, dbase: @configuration[:gisdbase]
26
+ FileUtils.mkdir_p @path
27
+ permanent = @location.permanent_path
28
+ FileUtils.cp File.join(permanent, 'DEFAULT_WIND'), File.join(@path, 'WIND')
29
+ end
30
+ end
31
+ end
@@ -1,73 +1,73 @@
1
- module GrassGis
2
-
3
- # Generate and execute GRASS commands
4
- #
5
- # r = GrassGis::Module.new('r')
6
- # r.resamp.stats '-n', input: "map1@mapset1", output: "map2"
7
- #
8
- # To execute a command without arguments, +run+ must be invoked explicitly:
9
- #
10
- # g = GrassGis::Module.new('g')
11
- # g.region.run
12
- #
13
- class Module
14
- def initialize(id, options = {})
15
- @id = id.to_s
16
- @parent = options[:parent]
17
- @context = options[:context]
18
- end
19
-
20
- def name
21
- if @parent
22
- "#{@parent.name}.#{@id}"
23
- else
24
- @id
25
- end
26
- end
27
-
28
- # Executes the command (with given arguments)
29
- # returns a SysCmd object (with status, status_value, output, error_output methods)
30
- def run(*args)
31
- stdin = nil
32
- cmd = SysCmd.command name do
33
- args.each do |arg|
34
- case arg
35
- when Hash
36
- arg.each do |key, value|
37
- next if value.nil?
38
- case value
39
- when Array
40
- value = value*","
41
- when String
42
- if value.include?("\n")
43
- raise "Cannot pass multiple options through STDIN" if stdin
44
- stdin = Support.unindent(value)
45
- value = "-"
46
- input stdin
47
- end
48
- end
49
- option key.to_s, equal_value: value
50
- end
51
- else
52
- option arg
53
- end
54
- end
55
- end
56
- if @context
57
- @context.execute cmd
58
- end
59
- cmd
60
- end
61
-
62
- def method_missing(method, *args)
63
- m = Module.new(method, parent: self, context: @context)
64
- if args.size > 0
65
- m.run *args
66
- else
67
- m
68
- end
69
- end
70
-
71
- end
72
-
73
- end
1
+ module GrassGis
2
+
3
+ # Generate and execute GRASS commands
4
+ #
5
+ # r = GrassGis::Module.new('r')
6
+ # r.resamp.stats '-n', input: "map1@mapset1", output: "map2"
7
+ #
8
+ # To execute a command without arguments, +run+ must be invoked explicitly:
9
+ #
10
+ # g = GrassGis::Module.new('g')
11
+ # g.region.run
12
+ #
13
+ class Module
14
+ def initialize(id, options = {})
15
+ @id = id.to_s
16
+ @parent = options[:parent]
17
+ @context = options[:context]
18
+ end
19
+
20
+ def name
21
+ if @parent
22
+ "#{@parent.name}.#{@id}"
23
+ else
24
+ @id
25
+ end
26
+ end
27
+
28
+ # Executes the command (with given arguments)
29
+ # returns a SysCmd object (with status, status_value, output, error_output methods)
30
+ def run(*args)
31
+ stdin = nil
32
+ cmd = SysCmd.command name do
33
+ args.each do |arg|
34
+ case arg
35
+ when Hash
36
+ arg.each do |key, value|
37
+ next if value.nil?
38
+ case value
39
+ when Array
40
+ value = value*","
41
+ when String
42
+ if value.include?("\n")
43
+ raise "Cannot pass multiple options through STDIN" if stdin
44
+ stdin = Support.unindent(value)
45
+ value = "-"
46
+ input stdin
47
+ end
48
+ end
49
+ option key.to_s, equal_value: value
50
+ end
51
+ else
52
+ option arg
53
+ end
54
+ end
55
+ end
56
+ if @context
57
+ @context.execute cmd
58
+ end
59
+ cmd
60
+ end
61
+
62
+ def method_missing(method, *args)
63
+ m = Module.new(method, parent: self, context: @context)
64
+ if args.size > 0
65
+ m.run *args
66
+ else
67
+ m
68
+ end
69
+ end
70
+
71
+ end
72
+
73
+ end
@@ -1,26 +1,26 @@
1
- module GrassGis
2
- module Support
3
- module_function
4
-
5
- def unindent(text, indent = nil)
6
- text = text.gsub(/\t/, ' '*8)
7
- mx = text.scan(/^ *[^\n\r]/)
8
- .flatten
9
- .map{ |s| s[-1,1]==' ' ? nil : (s.size-1) }
10
- .compact.min
11
- if mx && mx>0
12
- text.gsub!(/^ {1,#{mx}}/, "")
13
- end
14
- lines = text.split(/\r?\n/)
15
- if lines.first.strip.empty? || lines.last.strip.empty?
16
- lines.shift while lines.first.strip.empty?
17
- lines.pop while lines.last.strip.empty?
18
- end
19
- if indent
20
- indent = ' ' * indent if indent.kind_of?(Numeric)
21
- lines = lines.map { |line| "#{indent}#{line}" }
22
- end
23
- lines.join("\n")
24
- end
25
- end
26
- end
1
+ module GrassGis
2
+ module Support
3
+ module_function
4
+
5
+ def unindent(text, indent = nil)
6
+ text = text.gsub(/\t/, ' '*8)
7
+ mx = text.scan(/^ *[^\n\r]/)
8
+ .flatten
9
+ .map{ |s| s[-1,1]==' ' ? nil : (s.size-1) }
10
+ .compact.min
11
+ if mx && mx>0
12
+ text.gsub!(/^ {1,#{mx}}/, "")
13
+ end
14
+ lines = text.split(/\r?\n/)
15
+ if lines.first.strip.empty? || lines.last.strip.empty?
16
+ lines.shift while lines.first.strip.empty?
17
+ lines.pop while lines.last.strip.empty?
18
+ end
19
+ if indent
20
+ indent = ' ' * indent if indent.kind_of?(Numeric)
21
+ lines = lines.map { |line| "#{indent}#{line}" }
22
+ end
23
+ lines.join("\n")
24
+ end
25
+ end
26
+ end
@@ -1,3 +1,3 @@
1
- module GrassGis
2
- VERSION = "0.4.1"
3
- end
1
+ module GrassGis
2
+ VERSION = "0.4.2"
3
+ end
data/lib/grassgis.rb CHANGED
@@ -1,8 +1,8 @@
1
- require 'sys_cmd'
2
- require 'grassgis/version'
3
- require 'grassgis/error'
4
- require 'grassgis/support'
5
- require 'grassgis/module'
6
- require 'grassgis/location'
7
- require 'grassgis/mapset'
8
- require 'grassgis/context'
1
+ require 'sys_cmd'
2
+ require 'grassgis/version'
3
+ require 'grassgis/error'
4
+ require 'grassgis/support'
5
+ require 'grassgis/module'
6
+ require 'grassgis/location'
7
+ require 'grassgis/mapset'
8
+ require 'grassgis/context'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grassgis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Javier Goizueta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-06 00:00:00.000000000 Z
11
+ date: 2015-08-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sys_cmd
@@ -109,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  version: '0'
110
110
  requirements: []
111
111
  rubyforge_project:
112
- rubygems_version: 2.4.8
112
+ rubygems_version: 2.2.2
113
113
  signing_key:
114
114
  specification_version: 4
115
115
  summary: Support for scripting GRASS GIS in Ruby