File: layer_modification_test.py

package info (click to toggle)
mapnik 2.0.0%2Bds1-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 35,496 kB
  • sloc: cpp: 91,793; python: 6,051; xml: 3,528; sh: 848; makefile: 70; lisp: 10
file content (74 lines) | stat: -rw-r--r-- 2,364 bytes parent folder | download
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
#!/usr/bin/env python

from nose.tools import *

import os
from nose.tools import *
from utilities import execution_path
import mapnik2

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('.'))

def test_adding_datasource_to_layer():
    map_string = '''<?xml version="1.0" encoding="utf-8"?>
<Map>

    <Layer name="world_borders">
        <StyleName>world_borders_style</StyleName>
        <StyleName>point_style</StyleName>
        <!-- leave datasource empty -->
        <!--
        <Datasource>
            <Parameter name="file">../data/shp/world_merc.shp</Parameter>
            <Parameter name="type">shape</Parameter>
        </Datasource>
        -->
    </Layer>

</Map>
'''
    m = mapnik2.Map(256, 256)
    
    mapnik2.load_map_from_string(m, map_string)
    
    # validate it loaded fine
    eq_(m.layers[0].styles[0],'world_borders_style')
    eq_(m.layers[0].styles[1],'point_style')
    eq_(len(m.layers),1)
    
    # also assign a variable reference to that layer
    # below we will test that this variable references
    # the same object that is attached to the map
    lyr = m.layers[0]

    # ensure that there was no datasource for the layer...
    eq_(m.layers[0].datasource,None)
    eq_(lyr.datasource,None)
    
    # also note that since the srs was black it defaulted to wgs84
    eq_(m.layers[0].srs,'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')
    eq_(lyr.srs,'+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs')
    
    # now add a datasource one...
    ds = mapnik2.Shapefile(file='../data/shp/world_merc.shp')
    m.layers[0].datasource = ds
    
    # now ensure it is attached
    eq_(m.layers[0].datasource.name(),"shape")
    eq_(lyr.datasource.name(),"shape")
    
    # and since we have now added a shapefile in spherical mercator, adjust the projection
    lyr.srs = '+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs'
    
    # test that assignment
    eq_(m.layers[0].srs,'+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs')
    eq_(lyr.srs,'+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs')

if __name__ == "__main__":
    setup()
    [eval(run)() for run in dir() if 'test_' in run]