mapnik 0.2.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/.autotest +35 -0
- data/.yardopts +1 -0
- data/Gemfile +14 -0
- data/LICENSE +19 -0
- data/Manifest.txt +172 -0
- data/README.rdoc +107 -0
- data/Rakefile +43 -0
- data/demo/data/COPYRIGHT.txt +3 -0
- data/demo/data/TM_WORLD_BORDERS_SIMPL_0.3_MOD.dbf +0 -0
- data/demo/data/TM_WORLD_BORDERS_SIMPL_0.3_MOD.prj +1 -0
- data/demo/data/TM_WORLD_BORDERS_SIMPL_0.3_MOD.shp +0 -0
- data/demo/data/TM_WORLD_BORDERS_SIMPL_0.3_MOD.shx +0 -0
- data/demo/data/boundaries.dbf +0 -0
- data/demo/data/boundaries.prj +1 -0
- data/demo/data/boundaries.sbx +0 -0
- data/demo/data/boundaries.shp +0 -0
- data/demo/data/boundaries.shx +0 -0
- data/demo/data/boundaries_l.dbf +0 -0
- data/demo/data/boundaries_l.prj +1 -0
- data/demo/data/boundaries_l.sbx +0 -0
- data/demo/data/boundaries_l.shp +0 -0
- data/demo/data/boundaries_l.shx +0 -0
- data/demo/data/ontdrainage.dbf +0 -0
- data/demo/data/ontdrainage.prj +1 -0
- data/demo/data/ontdrainage.sbx +0 -0
- data/demo/data/ontdrainage.shp +0 -0
- data/demo/data/ontdrainage.shx +0 -0
- data/demo/data/popplaces.dbf +0 -0
- data/demo/data/popplaces.prj +1 -0
- data/demo/data/popplaces.sbx +0 -0
- data/demo/data/popplaces.shp +0 -0
- data/demo/data/popplaces.shx +0 -0
- data/demo/data/qcdrainage.dbf +0 -0
- data/demo/data/qcdrainage.prj +1 -0
- data/demo/data/qcdrainage.sbx +0 -0
- data/demo/data/qcdrainage.shp +0 -0
- data/demo/data/qcdrainage.shx +0 -0
- data/demo/data/roads.dbf +0 -0
- data/demo/data/roads.prj +1 -0
- data/demo/data/roads.sbx +0 -0
- data/demo/data/roads.shp +0 -0
- data/demo/data/roads.shx +0 -0
- data/demo/data/test/charplacement.dbf +0 -0
- data/demo/data/test/charplacement.shp +0 -0
- data/demo/data/test/charplacement.shx +0 -0
- data/demo/data/test/displacement.dbf +0 -0
- data/demo/data/test/displacement.shp +0 -0
- data/demo/data/test/displacement.shx +0 -0
- data/demo/data/test/overlap.dbf +0 -0
- data/demo/data/test/overlap.shp +0 -0
- data/demo/data/test/overlap.shx +0 -0
- data/demo/data/test/raw/charplacement.gfs +25 -0
- data/demo/data/test/raw/charplacement.gml +99 -0
- data/demo/data/test/raw/charplacement.xsd +36 -0
- data/demo/data/test/raw/displacement.gfs +25 -0
- data/demo/data/test/raw/displacement.gml +173 -0
- data/demo/data/test/raw/displacement.xsd +36 -0
- data/demo/data/test/raw/overlap.gfs +25 -0
- data/demo/data/test/raw/overlap.gml +127 -0
- data/demo/data/test/raw/overlap.xsd +36 -0
- data/demo/data/test/raw/textspacing.gfs +25 -0
- data/demo/data/test/raw/textspacing.gml +117 -0
- data/demo/data/test/raw/textspacing.xsd +36 -0
- data/demo/data/test/readme.txt +3 -0
- data/demo/data/test/regenerate.sh +20 -0
- data/demo/data/test/textspacing.dbf +0 -0
- data/demo/data/test/textspacing.shp +0 -0
- data/demo/data/test/textspacing.shx +0 -0
- data/demo/rundemo.rb +145 -0
- data/demo/sinatra/demo.rb +31 -0
- data/demo/sinatra/public/css/demo_map.css +7 -0
- data/demo/sinatra/public/index.html +13 -0
- data/demo/sinatra/public/javascripts/demo_map.js +42 -0
- data/ext/ruby_mapnik/_mapnik.cpp +52 -0
- data/ext/ruby_mapnik/_mapnik.h +65 -0
- data/ext/ruby_mapnik/_mapnik_color.rb.cpp +179 -0
- data/ext/ruby_mapnik/_mapnik_color.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_coord.rb.cpp +145 -0
- data/ext/ruby_mapnik/_mapnik_coord.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_datasource.rb.cpp +170 -0
- data/ext/ruby_mapnik/_mapnik_datasource.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_datasource_cache.rb.cpp +87 -0
- data/ext/ruby_mapnik/_mapnik_datasource_cache.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_envelope.rb.cpp +220 -0
- data/ext/ruby_mapnik/_mapnik_envelope.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_expression.rb.cpp +91 -0
- data/ext/ruby_mapnik/_mapnik_expression.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_feature.rb.cpp +93 -0
- data/ext/ruby_mapnik/_mapnik_feature.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_font_engine.rb.cpp +71 -0
- data/ext/ruby_mapnik/_mapnik_font_engine.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_layer.rb.cpp +208 -0
- data/ext/ruby_mapnik/_mapnik_layer.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_line_pattern_symbolizer.rb.cpp +71 -0
- data/ext/ruby_mapnik/_mapnik_line_pattern_symbolizer.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_line_symbolizer.rb.cpp +43 -0
- data/ext/ruby_mapnik/_mapnik_line_symbolizer.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_map.rb.cpp +489 -0
- data/ext/ruby_mapnik/_mapnik_map.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_markers_symbolizer.rb.cpp +140 -0
- data/ext/ruby_mapnik/_mapnik_markers_symbolizer.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_point_symbolizer.rb.cpp +150 -0
- data/ext/ruby_mapnik/_mapnik_point_symbolizer.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_polygon_pattern_symbolizer.rb.cpp +93 -0
- data/ext/ruby_mapnik/_mapnik_polygon_pattern_symbolizer.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_polygon_symbolizer.rb.cpp +89 -0
- data/ext/ruby_mapnik/_mapnik_polygon_symbolizer.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_projection.rb.cpp +100 -0
- data/ext/ruby_mapnik/_mapnik_projection.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_raster_colorizer.rb.cpp +162 -0
- data/ext/ruby_mapnik/_mapnik_raster_colorizer.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_raster_symbolizer.rb.cpp +87 -0
- data/ext/ruby_mapnik/_mapnik_raster_symbolizer.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_rule.rb.cpp +69 -0
- data/ext/ruby_mapnik/_mapnik_rule.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_shield_symbolizer.rb.cpp +86 -0
- data/ext/ruby_mapnik/_mapnik_shield_symbolizer.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_stroke.rb.cpp +188 -0
- data/ext/ruby_mapnik/_mapnik_stroke.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_style.rb.cpp +76 -0
- data/ext/ruby_mapnik/_mapnik_style.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_symbolizer.rb.cpp +75 -0
- data/ext/ruby_mapnik/_mapnik_symbolizer.rb.h +32 -0
- data/ext/ruby_mapnik/_mapnik_text_symbolizer.rb.cpp +471 -0
- data/ext/ruby_mapnik/_mapnik_text_symbolizer.rb.h +32 -0
- data/ext/ruby_mapnik/extconf.rb +80 -0
- data/ext/ruby_mapnik/ruby_mapnik.cpp +32 -0
- data/lib/mapnik.rb +1 -0
- data/lib/ruby_mapnik.rb +48 -0
- data/lib/ruby_mapnik/mapnik/font_engine.rb +35 -0
- data/lib/ruby_mapnik/mapnik/layer.rb +68 -0
- data/lib/ruby_mapnik/mapnik/map.rb +166 -0
- data/lib/ruby_mapnik/mapnik/projection.rb +44 -0
- data/lib/ruby_mapnik/mapnik/raster_colorizer.rb +55 -0
- data/lib/ruby_mapnik/mapnik/rule.rb +104 -0
- data/lib/ruby_mapnik/mapnik/stroke.rb +56 -0
- data/lib/ruby_mapnik/mapnik/style.rb +64 -0
- data/lib/ruby_mapnik/mapnik/tile.rb +93 -0
- data/script/console +2 -0
- data/test/data/TM_WORLD_BORDERS_SIMPL_0.3_MOD.dbf +0 -0
- data/test/data/TM_WORLD_BORDERS_SIMPL_0.3_MOD.prj +1 -0
- data/test/data/TM_WORLD_BORDERS_SIMPL_0.3_MOD.shp +0 -0
- data/test/data/TM_WORLD_BORDERS_SIMPL_0.3_MOD.shx +0 -0
- data/test/data/test_map.xml +15 -0
- data/test/test_helper.rb +29 -0
- data/test/test_line_pattern_symbolizer.rb +26 -0
- data/test/test_mapnik_color.rb +66 -0
- data/test/test_mapnik_coord.rb +92 -0
- data/test/test_mapnik_datasource.rb +49 -0
- data/test/test_mapnik_envelope.rb +232 -0
- data/test/test_mapnik_expression.rb +19 -0
- data/test/test_mapnik_feature.rb +29 -0
- data/test/test_mapnik_font_engine.rb +13 -0
- data/test/test_mapnik_layer.rb +121 -0
- data/test/test_mapnik_line_symbolizer.rb +25 -0
- data/test/test_mapnik_map.rb +211 -0
- data/test/test_mapnik_markers_symbolizer.rb +46 -0
- data/test/test_mapnik_point_symbolizer.rb +53 -0
- data/test/test_mapnik_polygon_symbolizer.rb +44 -0
- data/test/test_mapnik_projection.rb +46 -0
- data/test/test_mapnik_raster_colorizer.rb +56 -0
- data/test/test_mapnik_raster_symbolizer.rb +45 -0
- data/test/test_mapnik_rule.rb +45 -0
- data/test/test_mapnik_shield_symbolizer.rb +156 -0
- data/test/test_mapnik_stroke.rb +94 -0
- data/test/test_mapnik_style.rb +28 -0
- data/test/test_mapnik_symbolizer.rb +9 -0
- data/test/test_mapnik_text_symbolizer.rb +208 -0
- data/test/test_polygon_pattern_symbolizer.rb +34 -0
- data/test/test_ruby_mapnik.rb +34 -0
- data/yard/lib/yard/parser/generic_parser.rb +72 -0
- data/yard/lib/yard_generic.rb +18 -0
- metadata +333 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class TestMapnikExpression < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def test_presence
|
|
6
|
+
assert Mapnik::Expression
|
|
7
|
+
assert Mapnik::PathExpression
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_should_evaluate
|
|
11
|
+
expression = "([place]='town')"
|
|
12
|
+
assert_equal expression, Mapnik::Expression.parse(expression).to_s
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_should_parse_path
|
|
16
|
+
assert Mapnik::PathExpression.parse("/my/path.png")
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class TestMapnikFeature < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def test_should_instantiate
|
|
6
|
+
feature_id = 12
|
|
7
|
+
assert feature = Mapnik::Feature.new(Mapnik::Context.new, feature_id)
|
|
8
|
+
assert_equal feature_id, feature.id
|
|
9
|
+
assert_equal "Feature ( id=#{feature_id})", feature.to_s.gsub("\n", '')
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_should_return_number_of_geometries
|
|
13
|
+
assert feature = Mapnik::Feature.new(Mapnik::Context.new, 1)
|
|
14
|
+
assert_equal 0, feature.number_of_geometries
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_should_return_its_envelope
|
|
18
|
+
assert feature = Mapnik::Feature.new(Mapnik::Context.new, 1)
|
|
19
|
+
assert feature.envelope.kind_of?(Mapnik::Envelope)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_should_add_a_geometry
|
|
23
|
+
feature = Mapnik::Feature.new(Mapnik::Context.new, 1)
|
|
24
|
+
assert_equal(0, feature.number_of_geometries)
|
|
25
|
+
feature.add_geometries_from_wkt("POINT(30 10)")
|
|
26
|
+
assert_equal(1, feature.number_of_geometries)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class TestMapnikLayer < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def test_presence
|
|
6
|
+
assert Mapnik::Layer
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_should_initialize
|
|
10
|
+
assert layer = Mapnik::Layer.new("My Layer", "+proj=latlong +datum=WGS84")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_should_have_datasource
|
|
14
|
+
layer = build_layer
|
|
15
|
+
assert layer.datasource.envelope
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_should_have_same_enevelope_as_datasource
|
|
19
|
+
layer = build_layer
|
|
20
|
+
assert layer.envelope.kind_of?(Mapnik::Envelope)
|
|
21
|
+
assert_equal layer.envelope, layer.datasource.envelope
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_should_get_and_set_name
|
|
25
|
+
layer = build_layer
|
|
26
|
+
name_before = layer.name
|
|
27
|
+
new_name = name_before + "BUT DIFFERENT"
|
|
28
|
+
layer.name = new_name
|
|
29
|
+
assert_equal new_name, layer.name
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_should_get_and_set_srs
|
|
33
|
+
layer = build_layer
|
|
34
|
+
srs_before = layer.srs
|
|
35
|
+
new_srs = '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs'
|
|
36
|
+
layer.srs = new_srs
|
|
37
|
+
assert_equal new_srs, layer.srs
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_should_get_and_set_min_zoom
|
|
41
|
+
layer = build_layer
|
|
42
|
+
min_zoom_before = layer.min_zoom
|
|
43
|
+
new_min_zoom = min_zoom_before + 1.2
|
|
44
|
+
layer.min_zoom = new_min_zoom
|
|
45
|
+
assert_equal new_min_zoom, layer.min_zoom
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_should_get_and_set_max_zoom
|
|
49
|
+
layer = build_layer
|
|
50
|
+
max_zoom_before = layer.max_zoom
|
|
51
|
+
new_max_zoom = max_zoom_before + 1.2
|
|
52
|
+
layer.max_zoom = new_max_zoom
|
|
53
|
+
assert_equal new_max_zoom, layer.max_zoom
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def test_should_know_if_it_is_visible_at_a_given_scale
|
|
57
|
+
layer = build_layer
|
|
58
|
+
layer.min_zoom = 0.0
|
|
59
|
+
assert layer.visible_at_scale?(1.0/1000000)
|
|
60
|
+
layer.min_zoom = 2.0
|
|
61
|
+
assert !layer.visible_at_scale?(1.0/1000000)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def test_should_know_if_it_is_active
|
|
65
|
+
layer = build_layer
|
|
66
|
+
assert layer.active?
|
|
67
|
+
layer.active = false
|
|
68
|
+
assert !layer.active?
|
|
69
|
+
layer.active = true
|
|
70
|
+
assert layer.active?
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def test_should_know_if_it_is_queryable
|
|
74
|
+
layer = build_layer
|
|
75
|
+
assert !layer.queryable?
|
|
76
|
+
layer.queryable = true
|
|
77
|
+
assert layer.queryable?
|
|
78
|
+
layer.queryable = false
|
|
79
|
+
assert !layer.queryable?
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def test_should_know_if_it_should_cache_features
|
|
83
|
+
layer = build_layer
|
|
84
|
+
assert !layer.cache_features?
|
|
85
|
+
layer.cache_features = true
|
|
86
|
+
assert layer.cache_features?
|
|
87
|
+
layer.cache_features = false
|
|
88
|
+
assert !layer.cache_features?
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def test_should_know_if_it_should_clear_its_label_cache
|
|
92
|
+
layer = build_layer
|
|
93
|
+
assert !layer.clear_label_cache?
|
|
94
|
+
layer.clear_label_cache = true
|
|
95
|
+
assert layer.clear_label_cache?
|
|
96
|
+
layer.clear_label_cache = false
|
|
97
|
+
assert !layer.clear_label_cache?
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def test_should_have_styles
|
|
101
|
+
layer = build_layer
|
|
102
|
+
assert layer.styles.instance_of?(Mapnik::LayerStyleContainer)
|
|
103
|
+
assert layer.styles.empty?
|
|
104
|
+
style_name = 'My Style'
|
|
105
|
+
layer.styles << style_name
|
|
106
|
+
assert !layer.styles.empty?
|
|
107
|
+
assert_equal style_name, layer.styles.first
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
private
|
|
111
|
+
|
|
112
|
+
def build_layer
|
|
113
|
+
layer = Mapnik::Layer.new("My Layer", "+proj=latlong +datum=WGS84")
|
|
114
|
+
layer.datasource = Mapnik::Datasource.create(
|
|
115
|
+
:type => 'shape',
|
|
116
|
+
:file => SHAPEFILE
|
|
117
|
+
)
|
|
118
|
+
layer
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class TestMapnikLineSymbolizer < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def test_presence
|
|
6
|
+
assert Mapnik::LineSymbolizer
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_should_instantiate
|
|
10
|
+
assert Mapnik::LineSymbolizer.new
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_should_get_and_set_stroke
|
|
14
|
+
line = Mapnik::LineSymbolizer.new
|
|
15
|
+
stroke_before = line.stroke
|
|
16
|
+
assert stroke_before.kind_of?(Mapnik::Stroke)
|
|
17
|
+
|
|
18
|
+
new_stroke = Mapnik::Stroke.new(Mapnik::Color.new("#fff"), 1.0)
|
|
19
|
+
line.stroke = new_stroke
|
|
20
|
+
|
|
21
|
+
# Once Equality for strokes is established
|
|
22
|
+
# assert_equal new_stroke, line.stroke
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
require "chunky_png"
|
|
3
|
+
|
|
4
|
+
class TestMapnikMap < Test::Unit::TestCase
|
|
5
|
+
|
|
6
|
+
def setup
|
|
7
|
+
@map = Mapnik::Map.new
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_should_initialize
|
|
11
|
+
assert @map
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_should_have_envelope
|
|
15
|
+
assert @map.envelope.kind_of?(Mapnik::Envelope)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_should_have_styles
|
|
19
|
+
assert @map.styles.instance_of?(Mapnik::MapStyleContainer)
|
|
20
|
+
assert @map.styles.empty?
|
|
21
|
+
|
|
22
|
+
key = "My Style"
|
|
23
|
+
@map.styles[key] = Mapnik::Style.new
|
|
24
|
+
assert @map.styles.any?
|
|
25
|
+
assert @map.styles[key].is_a?(Mapnik::Style)
|
|
26
|
+
|
|
27
|
+
@map.styles.delete(key)
|
|
28
|
+
assert @map.styles.empty?
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_should_have_buffered_envelope
|
|
32
|
+
envelope_before = @map.envelope
|
|
33
|
+
assert_equal 0, @map.buffer_size
|
|
34
|
+
buffered_envelope_before = @map.buffered_envelope
|
|
35
|
+
assert_equal envelope_before, buffered_envelope_before
|
|
36
|
+
|
|
37
|
+
@map.buffer_size = 1
|
|
38
|
+
|
|
39
|
+
assert_equal 1, @map.buffer_size
|
|
40
|
+
assert_equal envelope_before, @map.envelope
|
|
41
|
+
assert_not_equal buffered_envelope_before, @map.buffered_envelope
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_should_pan
|
|
45
|
+
center_before = @map.envelope.center
|
|
46
|
+
@map.pan(-1,-1)
|
|
47
|
+
assert_not_equal center_before, @map.envelope.center
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def test_should_get_and_set_background
|
|
51
|
+
assert @map.background.nil?
|
|
52
|
+
color = Mapnik::Color.new("#fff")
|
|
53
|
+
@map.background = color
|
|
54
|
+
assert_equal color, @map.background
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def test_should_zoom
|
|
58
|
+
scale_before = @map.scale
|
|
59
|
+
@map.zoom(2)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def test_should_zoom_all
|
|
63
|
+
# Override since there are no layers
|
|
64
|
+
@map.maximum_extent = Mapnik::Envelope.new(-180,-90,180,90)
|
|
65
|
+
@map.zoom_all
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def test_should_resize
|
|
69
|
+
width_before = @map.width
|
|
70
|
+
height_before = @map.height
|
|
71
|
+
|
|
72
|
+
new_width = width_before + 1
|
|
73
|
+
new_height = height_before + 1
|
|
74
|
+
@map.resize(new_width, new_height)
|
|
75
|
+
assert_equal(new_width, @map.width)
|
|
76
|
+
assert_equal(new_height, @map.height)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def test_should_have_scale
|
|
80
|
+
assert @map.scale.kind_of?(Float)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def test_should_zoom_to_box
|
|
84
|
+
box = Mapnik::Envelope.new(1,1,1,1)
|
|
85
|
+
@map.zoom_to_box(box)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def test_mapnik_base_path
|
|
89
|
+
assert @map.base_path.kind_of?(String)
|
|
90
|
+
assert_equal "", @map.base_path
|
|
91
|
+
new_base_path = "/some/path"
|
|
92
|
+
@map.base_path = new_base_path
|
|
93
|
+
assert_equal new_base_path, @map.base_path
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def test_should_get_and_set_buffer_size
|
|
97
|
+
assert_equal 0, @map.buffer_size
|
|
98
|
+
new_buffer_size = 1
|
|
99
|
+
@map.buffer_size = new_buffer_size
|
|
100
|
+
assert_equal new_buffer_size, @map.buffer_size
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def test_should_get_and_set_height
|
|
104
|
+
assert_equal 400, @map.height
|
|
105
|
+
new_height = 401
|
|
106
|
+
@map.height = new_height
|
|
107
|
+
assert_equal new_height, @map.height
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def test_should_get_and_set_maximum_extent
|
|
111
|
+
assert_nil @map.maximum_extent
|
|
112
|
+
new_max_extent = Mapnik::Envelope.new(-180,-90,180,90)
|
|
113
|
+
@map.maximum_extent = new_max_extent
|
|
114
|
+
assert_equal new_max_extent, @map.maximum_extent
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def test_should_get_and_set_srs
|
|
118
|
+
assert_equal "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs", @map.srs
|
|
119
|
+
new_srs = "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs +over"
|
|
120
|
+
@map.srs = new_srs
|
|
121
|
+
assert_equal new_srs, @map.srs
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def test_should_get_and_set_width
|
|
125
|
+
width_before = @map.width
|
|
126
|
+
new_width = width_before + 1
|
|
127
|
+
@map.width = new_width
|
|
128
|
+
assert_equal new_width, @map.width
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def test_should_have_layers
|
|
132
|
+
assert @map.layers.empty?
|
|
133
|
+
layer = Mapnik::Layer.new("My Layer", "+proj=latlong +datum=WGS84")
|
|
134
|
+
@map.layers << layer
|
|
135
|
+
assert @map.layers.any?
|
|
136
|
+
|
|
137
|
+
@map.layers.clear
|
|
138
|
+
assert @map.layers.empty?
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def test_should_output_to_xml
|
|
142
|
+
map = build_complete_map
|
|
143
|
+
assert map.to_xml.instance_of?(String)
|
|
144
|
+
assert map.to_xml.include?("<?xml")
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def test_should_render_to_file
|
|
148
|
+
map = build_complete_map
|
|
149
|
+
filename = File.join(File.expand_path(File.dirname(__FILE__)), "../tmp/world.png")
|
|
150
|
+
assert_equal 0, File.size(filename) if File.exists?(filename)
|
|
151
|
+
assert map.render_to_file(filename)
|
|
152
|
+
assert File.exists?(filename)
|
|
153
|
+
File.delete(filename)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def test_should_render_to_file_with_explicit_format
|
|
157
|
+
map = build_complete_map
|
|
158
|
+
filename = File.join(File.expand_path(File.dirname(__FILE__)), "../tmp/world-256.png")
|
|
159
|
+
assert_equal 0, File.size(filename) if File.exists?(filename)
|
|
160
|
+
assert map.render_to_file(filename, "png256")
|
|
161
|
+
assert File.exists?(filename)
|
|
162
|
+
assert_not_nil ChunkyPNG::Datastream.from_file(filename).palette_chunk
|
|
163
|
+
File.delete(filename)
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def test_should_load_from_xml_string
|
|
167
|
+
map_1 = build_complete_map
|
|
168
|
+
map_2 = Mapnik::Map.from_xml(map_1.to_xml)
|
|
169
|
+
assert_equal map_1.layers.count, map_2.layers.count
|
|
170
|
+
assert_equal map_1.srs, map_2.srs
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
def test_should_load_from_file_path_string
|
|
174
|
+
file_path = File.join(File.expand_path(File.dirname(__FILE__)), "data", "test_map.xml")
|
|
175
|
+
map = Mapnik::Map.from_file(file_path)
|
|
176
|
+
assert map.layers.any?
|
|
177
|
+
assert map.styles['My Style']
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def test_should_load_from_file
|
|
181
|
+
file = File.open(File.join(File.expand_path(File.dirname(__FILE__)), "data", "test_map.xml"))
|
|
182
|
+
map = Mapnik::Map.from_file(file)
|
|
183
|
+
assert map.layers.any?
|
|
184
|
+
assert map.styles['My Style']
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
private
|
|
189
|
+
|
|
190
|
+
def build_complete_map
|
|
191
|
+
map = Mapnik::Map.new
|
|
192
|
+
map.width = 600
|
|
193
|
+
map.height = 300
|
|
194
|
+
map.srs = "+proj=latlong +datum=WGS84"
|
|
195
|
+
map.background = Mapnik::Color.new("#0000FF")
|
|
196
|
+
style = Mapnik::Style.new
|
|
197
|
+
rule = Mapnik::Rule.new
|
|
198
|
+
poly = Mapnik::PolygonSymbolizer.new
|
|
199
|
+
poly.fill = Mapnik::Color.new("#FF0088")
|
|
200
|
+
rule.symbols << poly
|
|
201
|
+
style.rules << rule
|
|
202
|
+
map.styles["My Style"]=style
|
|
203
|
+
layer = Mapnik::Layer.new('world',"+proj=latlong +datum=WGS84")
|
|
204
|
+
layer.datasource = Mapnik::Datasource.create(:type => "shape", :file => SHAPEFILE)
|
|
205
|
+
layer.styles << "My Style"
|
|
206
|
+
map.layers << layer
|
|
207
|
+
map.zoom_to_box(layer.envelope)
|
|
208
|
+
map
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require "test_helper"
|
|
2
|
+
|
|
3
|
+
class TestMarkersSymbolizer < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@filename = "/my/file.png"
|
|
7
|
+
path_expression = Mapnik::PathExpression.parse("/my/file.png")
|
|
8
|
+
@sym = Mapnik::MarkersSymbolizer.new(path_expression)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def test_should_instantiate
|
|
12
|
+
assert @sym
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_should_get_and_set_filename
|
|
16
|
+
assert_equal @filename, @sym.filename
|
|
17
|
+
new_filename = "/something/else.png"
|
|
18
|
+
@sym.filename = new_filename
|
|
19
|
+
assert_equal new_filename, @sym.filename
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_should_get_and_set_allow_overlap
|
|
23
|
+
@sym.allow_overlap = true
|
|
24
|
+
assert @sym.allow_overlap?
|
|
25
|
+
@sym.allow_overlap = false
|
|
26
|
+
assert !@sym.allow_overlap?
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_should_get_and_set_spacing
|
|
30
|
+
@sym.spacing = 90
|
|
31
|
+
assert_equal 90, @sym.spacing
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def test_should_get_and_set_max_error
|
|
35
|
+
@sym.max_error = 90
|
|
36
|
+
assert_equal 90, @sym.max_error
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_should_get_and_set_opacity
|
|
40
|
+
assert_equal 1, @sym.opacity
|
|
41
|
+
# new_opacity = 0.5
|
|
42
|
+
# @sym.opacity = new_opacity
|
|
43
|
+
# assert_equal new_opacity, @sym.opacity
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|