File: map_query_test.py

package info (click to toggle)
mapnik 2.2.0%2Bds1-7
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 30,288 kB
  • ctags: 18,382
  • sloc: cpp: 115,128; python: 9,298; xml: 5,692; ansic: 3,726; makefile: 160; sh: 159; lisp: 13
file content (96 lines) | stat: -rw-r--r-- 3,764 bytes parent folder | download | duplicates (2)
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
#!/usr/bin/env python

from nose.tools import *
from utilities import execution_path, run_all
import os, mapnik

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()
        fs = m.query_point(0,-11012435.5376, 4599674.6134) # somewhere in kansas
        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
        eq_(str(m.envelope()),str(mapnik.Box2d(-179.999999975,-167.951396161,179.999999975,192.048603789)))
        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
        eq_(str(m.envelope()),str(mapnik.Box2d(-179.999999975,-167.951396161,179.999999975,192.048603789)))
        fs = m.query_map_point(0,55,100) # somewhere in Canada
        feat = fs.next()
        eq_(feat.attributes['NAME'],u'Canada')

if __name__ == "__main__":
    setup()
    run_all(eval(x) for x in dir() if x.startswith("test_"))