mapnik_legendary 0.3.0 → 0.4.0

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.
data/README.md CHANGED
@@ -9,25 +9,16 @@
9
9
 
10
10
  ## Installation
11
11
 
12
- In the future (i.e. when I make a packaged release) you'll be able to use rubygems. Until then:
12
+ You can install the gem from rubygems:
13
13
 
14
- `git clone https://github.com/gravitystorm/mapnik-legendary`
14
+ `gem install mapnik_legendary`
15
15
 
16
- If you want to install the gem locally, run
16
+ Alternatively, you can add the gem to your project's Gemfile
17
17
 
18
- ```
19
- gem build mapnik_legendary.gemspec
20
- gem install mapnik_legendary-0.x.x.gem
21
- ```
18
+ `gem mapnik_legendary`
22
19
 
23
20
  ## Running
24
21
 
25
- To run locally, without installing a gem, run:
26
-
27
- `ruby -Ilib bin/mapnik_legendary`
28
-
29
- If you've installed the gem, `mapnik_legendary` will be in your path.
30
-
31
22
  For full options, run
32
23
 
33
24
  `mapnik_legendary -h`
@@ -33,7 +33,7 @@ module MapnikLegendary
33
33
  map.layers.each do |l|
34
34
  layer_styles.push(name: l.name,
35
35
  style: l.styles.map { |s| s } # get them out of the collection
36
- )
36
+ )
37
37
  end
38
38
 
39
39
  docs = Docwriter.new
@@ -79,7 +79,19 @@ module MapnikLegendary
79
79
  i += 1
80
80
  filename = File.join(Dir.pwd, 'output', "#{id}-#{zoom}-#{i}.png")
81
81
  end
82
- map.render_to_file(filename, 'png256:t=2')
82
+ begin
83
+ map.render_to_file(filename, 'png256:t=2')
84
+ rescue RuntimeError => e
85
+ r = /^CSV Plugin: no attribute '(?<key>[^']*)'/
86
+ match_data = r.match(e.message)
87
+ if match_data
88
+ log.error "'#{match_data[:key]}' is a key needed for the '#{feature.name}' feature."
89
+ log.error "Try adding '#{match_data[:key]}' to the extra_tags list."
90
+ next
91
+ else
92
+ raise e
93
+ end
94
+ end
83
95
  docs.add File.basename(filename), feature.description
84
96
  end
85
97
 
@@ -37,7 +37,7 @@ module MapnikLegendary
37
37
  font_size 12
38
38
  text title, style: :bold, size: 24, align: :center
39
39
  move_down(40)
40
- data = Array.new
40
+ data = []
41
41
  image_scale = 0.5
42
42
  entries.each do |entry|
43
43
  data << { image: File.join(File.dirname(filename), entry[0]),
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module MapnikLegendary
4
+ # A wkt-based geometry that can be used for the legend feature.
4
5
  class Geometry
5
6
  def initialize(type, zoom, map)
6
7
  proj = Mapnik::Projection.new(map.srs)
@@ -19,10 +20,10 @@ module MapnikLegendary
19
20
  when 'point75' then "POINT(#{@max_x * 0.5} #{@max_y * 0.75})"
20
21
  when 'polygon' then "POLYGON((0 0, #{@max_x} 0, #{@max_x} #{@max_y}, 0 #{@max_y}, 0 0))"
21
22
  when 'linestring-with-gap' then "MULTILINESTRING((0 0, #{@max_x * 0.45} #{@max_y * 0.45}),(#{@max_x * 0.55} #{@max_y * 0.55},#{@max_x} #{@max_y}))"
22
- when 'polygon-with-hole' then "POLYGON((#{0.7 * @max_x} #{0.2 * @max_y}, #{0.9 * @max_x} #{0.9 * @max_y}" +
23
- ", #{0.3 * @max_x} #{0.8 * @max_y}, #{0.2 * @max_x} #{0.4 * @max_y}" +
24
- ", #{0.7 * @max_y} #{0.2 * @max_y}),( #{0.4 * @max_x} #{0.6 * @max_y}" +
25
- ", #{0.7 * @max_x} #{0.7 * @max_y}, #{0.6 * @max_x} #{0.4 * @max_y}" +
23
+ when 'polygon-with-hole' then "POLYGON((#{0.7 * @max_x} #{0.2 * @max_y}, #{0.9 * @max_x} #{0.9 * @max_y}" \
24
+ ", #{0.3 * @max_x} #{0.8 * @max_y}, #{0.2 * @max_x} #{0.4 * @max_y}" \
25
+ ", #{0.7 * @max_y} #{0.2 * @max_y}),( #{0.4 * @max_x} #{0.6 * @max_y}" \
26
+ ", #{0.7 * @max_x} #{0.7 * @max_y}, #{0.6 * @max_x} #{0.4 * @max_y}" \
26
27
  ", #{0.4 * @max_x} #{0.6 * @max_y}))"
27
28
  else "LINESTRING(0 0, #{@max_x} #{@max_y})"
28
29
  end
@@ -1,11 +1,14 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module MapnikLegendary
4
+ # convenience methods for handling tags
4
5
  class Tags
6
+ # Merges a list of extra keys into an existing hash of tags.
7
+ # The extra keys are each given a null value.
5
8
  def self.merge_nulls(tags, extras)
6
9
  tags = {} if tags.nil?
7
10
  extras = [] if extras.nil?
8
- Hash[extras.map { |t| [t, 'null'] }].merge(tags)
11
+ Hash[extras.map { |t| [t, nil] }].merge(tags)
9
12
  end
10
13
  end
11
14
  end
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module MapnikLegendary
4
- VERSION = '0.3.0'
4
+ VERSION = '0.4.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mapnik_legendary
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-08-13 00:00:00.000000000 Z
12
+ date: 2015-08-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mapnik