Show
Ignore:
Timestamp:
06/29/08 06:58:29 (6 months ago)
Author:
artem
Message:

reverting back to 700

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/demo/c++/rundemo.cpp

    r701 r703  
    2929#include <mapnik/font_engine_freetype.hpp> 
    3030#include <mapnik/agg_renderer.hpp> 
    31 #include <mapnik/cairo_renderer.hpp> 
    3231#include <mapnik/filter_factory.hpp> 
    3332#include <mapnik/color_factory.hpp> 
     
    5453         
    5554        Map m(800,600); 
    56          
    57         mapnik::load_map(m,"/Users/artem/projects/openstreetmap/mapnik/openstreetmap_kleptog.xml"); 
    58          
    59         m.zoomToBox(Envelope<double>(-762470.6985688356,4004842.088052442,-761928.349698612,4005328.834769584)); 
    60          
    61         //Image32 buf(m.getWidth(),m.getHeight()); 
    62         //agg_renderer<Image32> ren(m,buf); 
    63         //ren.apply(); 
    64          
    65         //save_to_file<ImageData32>(buf.data(),"demo.jpg","jpeg"); 
    66         //save_to_file<ImageData32>(buf.data(),"demo.png","png"); 
    67         //save_to_file<ImageData32>(buf.data(),"demo256.png","png256"); 
    68         //std::cout << "Three maps have been rendered in the current directory:\n" 
    69         //  "- demo.jpg\n" 
    70         //  "- demo.png\n" 
    71         //  "- demo256.png\n" 
    72         //  "Have a look!\n"; 
    73  
    74         // Cairo renderer 
    75  
    76         // Pdf 
    77         Cairo::RefPtr<Cairo::PdfSurface> pdf = Cairo::PdfSurface::create("mapnik.pdf",m.getWidth(),m.getHeight()); 
    78         mapnik::cairo_renderer<Cairo::Surface> cairo1(m, pdf); 
    79         cairo1.apply(); 
    80         // Svg 
    81         //Cairo::RefPtr<Cairo::SvgSurface> svg = Cairo::SvgSurface::create("demo.svg",m.getWidth(),m.getHeight()); 
    82         //mapnik::cairo_renderer<Cairo::Surface> cairo2(m, svg);   
    83         //cairo2.apply(); 
    84         // Png 
    85         //Cairo::RefPtr<Cairo::ImageSurface> image = Cairo::ImageSurface::create(Cairo::FORMAT_ARGB32,m.getWidth(),m.getHeight()); 
    86         //mapnik::cairo_renderer<Cairo::Surface> cairo3(m, image);   
    87         //cairo3.apply(); 
    88          
    89         //std::string filename = "demo_cairo.png"; 
    90         //image->write_to_png(filename); 
    91          
    92         // Ps 
    93         //Cairo::RefPtr<Cairo::PsSurface> ps = Cairo::PsSurface::create("demo.ps",m.getWidth(),m.getHeight()); 
    94         //mapnik::cairo_renderer<Cairo::Surface> cairo4(m, ps); 
    95         //cairo4.apply(); 
    96          
     55        m.set_background(color_factory::from_string("white")); 
     56         
     57        // create styles 
     58 
     59        // Provinces (polygon) 
     60        feature_type_style provpoly_style; 
     61        
     62        rule_type provpoly_rule_on; 
     63        provpoly_rule_on.set_filter(create_filter("[NAME_EN] = 'Ontario'")); 
     64        provpoly_rule_on.append(polygon_symbolizer(Color(250, 190, 183))); 
     65        provpoly_style.add_rule(provpoly_rule_on); 
     66         
     67        rule_type provpoly_rule_qc; 
     68        provpoly_rule_qc.set_filter(create_filter("[NAME_EN] = 'Quebec'")); 
     69        provpoly_rule_qc.append(polygon_symbolizer(Color(217, 235, 203))); 
     70        provpoly_style.add_rule(provpoly_rule_qc); 
     71         
     72        m.insert_style("provinces",provpoly_style); 
     73 
     74        // Provinces (polyline) 
     75        feature_type_style provlines_style; 
     76         
     77        stroke provlines_stk (Color(0,0,0),1.0); 
     78        provlines_stk.add_dash(8, 4); 
     79        provlines_stk.add_dash(2, 2); 
     80        provlines_stk.add_dash(2, 2); 
     81         
     82        rule_type provlines_rule; 
     83        provlines_rule.append(line_symbolizer(provlines_stk)); 
     84        provlines_style.add_rule(provlines_rule); 
     85         
     86        m.insert_style("provlines",provlines_style); 
     87         
     88        // Drainage  
     89        feature_type_style qcdrain_style; 
     90         
     91        rule_type qcdrain_rule; 
     92        qcdrain_rule.set_filter(create_filter("[HYC] = 8")); 
     93        qcdrain_rule.append(polygon_symbolizer(Color(153, 204, 255))); 
     94        qcdrain_style.add_rule(qcdrain_rule); 
     95         
     96        m.insert_style("drainage",qcdrain_style); 
     97         
     98        // Roads 3 and 4 (The "grey" roads) 
     99        feature_type_style roads34_style;     
     100        rule_type roads34_rule; 
     101        roads34_rule.set_filter(create_filter("[CLASS] = 3 or [CLASS] = 4")); 
     102        stroke roads34_rule_stk(Color(171,158,137),2.0); 
     103        roads34_rule_stk.set_line_cap(ROUND_CAP); 
     104        roads34_rule_stk.set_line_join(ROUND_JOIN); 
     105        roads34_rule.append(line_symbolizer(roads34_rule_stk)); 
     106        roads34_style.add_rule(roads34_rule); 
     107         
     108        m.insert_style("smallroads",roads34_style); 
     109         
     110 
     111        // Roads 2 (The thin yellow ones) 
     112        feature_type_style roads2_style_1; 
     113        rule_type roads2_rule_1; 
     114        roads2_rule_1.set_filter(create_filter("[CLASS] = 2")); 
     115        stroke roads2_rule_stk_1(Color(171,158,137),4.0); 
     116        roads2_rule_stk_1.set_line_cap(ROUND_CAP); 
     117        roads2_rule_stk_1.set_line_join(ROUND_JOIN); 
     118        roads2_rule_1.append(line_symbolizer(roads2_rule_stk_1)); 
     119        roads2_style_1.add_rule(roads2_rule_1); 
     120         
     121        m.insert_style("road-border", roads2_style_1); 
     122         
     123        feature_type_style roads2_style_2; 
     124        rule_type roads2_rule_2; 
     125        roads2_rule_2.set_filter(create_filter("[CLASS] = 2")); 
     126        stroke roads2_rule_stk_2(Color(255,250,115),2.0); 
     127        roads2_rule_stk_2.set_line_cap(ROUND_CAP); 
     128        roads2_rule_stk_2.set_line_join(ROUND_JOIN); 
     129        roads2_rule_2.append(line_symbolizer(roads2_rule_stk_2)); 
     130        roads2_style_2.add_rule(roads2_rule_2); 
     131         
     132        m.insert_style("road-fill", roads2_style_2); 
     133         
     134        // Roads 1 (The big orange ones, the highways) 
     135        feature_type_style roads1_style_1; 
     136        rule_type roads1_rule_1; 
     137        roads1_rule_1.set_filter(create_filter("[CLASS] = 1")); 
     138        stroke roads1_rule_stk_1(Color(188,149,28),7.0); 
     139        roads1_rule_stk_1.set_line_cap(ROUND_CAP); 
     140        roads1_rule_stk_1.set_line_join(ROUND_JOIN); 
     141        roads1_rule_1.append(line_symbolizer(roads1_rule_stk_1)); 
     142        roads1_style_1.add_rule(roads1_rule_1); 
     143        m.insert_style("highway-border", roads1_style_1); 
     144         
     145        feature_type_style roads1_style_2; 
     146        rule_type roads1_rule_2; 
     147        roads1_rule_2.set_filter(create_filter("[CLASS] = 1")); 
     148        stroke roads1_rule_stk_2(Color(242,191,36),5.0); 
     149        roads1_rule_stk_2.set_line_cap(ROUND_CAP); 
     150        roads1_rule_stk_2.set_line_join(ROUND_JOIN); 
     151        roads1_rule_2.append(line_symbolizer(roads1_rule_stk_2)); 
     152        roads1_style_2.add_rule(roads1_rule_2); 
     153        m.insert_style("highway-fill", roads1_style_2); 
     154         
     155        // Populated Places 
     156         
     157        feature_type_style popplaces_style; 
     158        rule_type popplaces_rule; 
     159        text_symbolizer popplaces_text_symbolizer("GEONAME","DejaVu Sans Book",10,Color(0,0,0)); 
     160        popplaces_text_symbolizer.set_halo_fill(Color(255,255,200)); 
     161        popplaces_text_symbolizer.set_halo_radius(1); 
     162        popplaces_rule.append(popplaces_text_symbolizer); 
     163        popplaces_style.add_rule(popplaces_rule); 
     164         
     165        m.insert_style("popplaces",popplaces_style ); 
     166         
     167        // Layers 
     168        // Provincial  polygons 
     169        { 
     170            parameters p; 
     171            p["type"]="shape"; 
     172            p["file"]="../data/boundaries"; 
     173             
     174            Layer lyr("Provinces");  
     175            lyr.set_datasource(datasource_cache::instance()->create(p)); 
     176            lyr.add_style("provinces");     
     177            m.addLayer(lyr); 
     178        } 
     179         
     180        // Drainage 
     181        { 
     182            parameters p; 
     183            p["type"]="shape"; 
     184            p["file"]="../data/qcdrainage"; 
     185            Layer lyr("Quebec Hydrography"); 
     186            lyr.set_datasource(datasource_cache::instance()->create(p)); 
     187            lyr.add_style("drainage");     
     188            m.addLayer(lyr); 
     189        } 
     190         
     191        { 
     192            parameters p; 
     193            p["type"]="shape"; 
     194            p["file"]="../data/ontdrainage"; 
     195             
     196            Layer lyr("Ontario Hydrography");  
     197            lyr.set_datasource(datasource_cache::instance()->create(p)); 
     198            lyr.add_style("drainage");     
     199            m.addLayer(lyr); 
     200        } 
     201         
     202        // Provincial boundaries 
     203        { 
     204            parameters p; 
     205            p["type"]="shape"; 
     206            p["file"]="../data/boundaries_l"; 
     207            Layer lyr("Provincial borders");  
     208            lyr.set_datasource(datasource_cache::instance()->create(p)); 
     209            lyr.add_style("provlines");     
     210            m.addLayer(lyr); 
     211        } 
     212         
     213        // Roads 
     214        { 
     215            parameters p; 
     216            p["type"]="shape"; 
     217            p["file"]="../data/roads";         
     218            Layer lyr("Roads");  
     219            lyr.set_datasource(datasource_cache::instance()->create(p)); 
     220            lyr.add_style("smallroads"); 
     221            lyr.add_style("road-border"); 
     222            lyr.add_style("road-fill"); 
     223            lyr.add_style("highway-border"); 
     224            lyr.add_style("highway-fill"); 
     225 
     226            m.addLayer(lyr);         
     227        } 
     228        // popplaces 
     229        { 
     230            parameters p; 
     231            p["type"]="shape"; 
     232            p["file"]="../data/popplaces"; 
     233            p["encoding"] = "latin1"; 
     234            Layer lyr("Populated Places"); 
     235            lyr.set_datasource(datasource_cache::instance()->create(p)); 
     236            lyr.add_style("popplaces");     
     237            m.addLayer(lyr); 
     238        } 
     239         
     240        m.zoomToBox(Envelope<double>(1405120.04127408,-247003.813399447, 
     241                                     1706357.31328276,-25098.593149577)); 
     242         
     243        Image32 buf(m.getWidth(),m.getHeight()); 
     244        agg_renderer<Image32> ren(m,buf); 
     245        ren.apply(); 
     246         
     247        save_to_file<ImageData32>(buf.data(),"demo.jpg","jpeg"); 
     248        save_to_file<ImageData32>(buf.data(),"demo.png","png"); 
     249        save_to_file<ImageData32>(buf.data(),"demo256.png","png256"); 
     250        std::cout << "Three maps have been rendered in the current directory:\n" 
     251           "- demo.jpg\n" 
     252           "- demo.png\n" 
     253           "- demo256.png\n" 
     254           "Have a look!\n"; 
    97255    } 
    98256    catch ( const mapnik::config_error & ex )