forked from mapnik/python-mapnik
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmap_query_test.py
More file actions
120 lines (98 loc) · 4.25 KB
/
map_query_test.py
File metadata and controls
120 lines (98 loc) · 4.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/usr/bin/env python
import os
from nose.tools import assert_almost_equal, eq_, raises
import mapnik
from .utilities import execution_path, run_all
def setup():
# All of the paths used are relative, if we run the tests
# from another directory we need to chdir()
os.chdir(execution_path('.'))
# map has no layers
@raises(IndexError)
def test_map_query_throw1():
m = mapnik.Map(256, 256)
m.zoom_to_box(mapnik.Box2d(-1, -1, 0, 0))
m.query_point(0, 0, 0)
# only positive indexes
@raises(IndexError)
def test_map_query_throw2():
m = mapnik.Map(256, 256)
m.query_point(-1, 0, 0)
# map has never been zoomed (nodata)
@raises(RuntimeError)
def test_map_query_throw3():
m = mapnik.Map(256, 256)
m.query_point(0, 0, 0)
if 'shape' in mapnik.DatasourceCache.plugin_names():
# map has never been zoomed (even with data)
@raises(RuntimeError)
def test_map_query_throw4():
m = mapnik.Map(256, 256)
mapnik.load_map(m, '../data/good_maps/agg_poly_gamma_map.xml')
m.query_point(0, 0, 0)
# invalid coords in general (do not intersect)
@raises(RuntimeError)
def test_map_query_throw5():
m = mapnik.Map(256, 256)
mapnik.load_map(m, '../data/good_maps/agg_poly_gamma_map.xml')
m.zoom_all()
m.query_point(0, 9999999999999999, 9999999999999999)
def test_map_query_works1():
m = mapnik.Map(256, 256)
mapnik.load_map(m, '../data/good_maps/wgs842merc_reprojection.xml')
merc_bounds = mapnik.Box2d(-20037508.34, -
20037508.34, 20037508.34, 20037508.34)
m.maximum_extent = merc_bounds
m.zoom_all()
# somewhere in kansas
fs = m.query_point(0, -11012435.5376, 4599674.6134)
feat = fs.next()
eq_(feat.attributes['NAME_FORMA'], u'United States of America')
def test_map_query_works2():
m = mapnik.Map(256, 256)
mapnik.load_map(m, '../data/good_maps/merc2wgs84_reprojection.xml')
wgs84_bounds = mapnik.Box2d(-179.999999975, -
85.0511287776, 179.999999975, 85.0511287776)
m.maximum_extent = wgs84_bounds
# caution - will go square due to evil aspect_fix_mode backhandedness
m.zoom_all()
# mapnik.render_to_file(m,'works2.png')
# validate that aspect_fix_mode modified the bbox reasonably
e = m.envelope()
assert_almost_equal(e.minx, -179.999999975, places=7)
assert_almost_equal(e.miny, -167.951396161, places=7)
assert_almost_equal(e.maxx, 179.999999975, places=7)
assert_almost_equal(e.maxy, 192.048603789, places=7)
fs = m.query_point(0, -98.9264, 38.1432) # somewhere in kansas
feat = fs.next()
eq_(feat.attributes['NAME'], u'United States')
def test_map_query_in_pixels_works1():
m = mapnik.Map(256, 256)
mapnik.load_map(m, '../data/good_maps/wgs842merc_reprojection.xml')
merc_bounds = mapnik.Box2d(-20037508.34, -
20037508.34, 20037508.34, 20037508.34)
m.maximum_extent = merc_bounds
m.zoom_all()
fs = m.query_map_point(0, 55, 100) # somewhere in middle of us
feat = fs.next()
eq_(feat.attributes['NAME_FORMA'], u'United States of America')
def test_map_query_in_pixels_works2():
m = mapnik.Map(256, 256)
mapnik.load_map(m, '../data/good_maps/merc2wgs84_reprojection.xml')
wgs84_bounds = mapnik.Box2d(-179.999999975, -
85.0511287776, 179.999999975, 85.0511287776)
m.maximum_extent = wgs84_bounds
# caution - will go square due to evil aspect_fix_mode backhandedness
m.zoom_all()
# validate that aspect_fix_mode modified the bbox reasonably
e = m.envelope()
assert_almost_equal(e.minx, -179.999999975, places=7)
assert_almost_equal(e.miny, -167.951396161, places=7)
assert_almost_equal(e.maxx, 179.999999975, places=7)
assert_almost_equal(e.maxy, 192.048603789, places=7)
fs = m.query_map_point(0, 55, 100) # somewhere in Canada
feat = fs.next()
eq_(feat.attributes['NAME'], u'Canada')
if __name__ == "__main__":
setup()
exit(run_all(eval(x) for x in dir() if x.startswith("test_")))