make it possible to disable compilation of grid_renderer - closes #1962
This commit is contained in:
parent
5ad2ebb30e
commit
ef4dfeb747
14 changed files with 507 additions and 395 deletions
|
@ -8,6 +8,10 @@ For a complete change history, see the git log.
|
|||
|
||||
## Future
|
||||
|
||||
- Added to python bindings: `has_tiff`, `has_png`, `has_webp`, `has_proj4`, `has_svg_renderer`, and `has_grid_renderer`
|
||||
|
||||
- Made it possible to disable compilation of `grid_renderer` with `./configure GRID_RENDERER=False` (#1962)
|
||||
|
||||
- Added `webp` image encoding and decoding support (#1955)
|
||||
|
||||
- Added `premultiplied` property on mapnik::image_32 / mapnik.Image to enable knowledge of premultiplied status of image buffer.
|
||||
|
|
|
@ -336,6 +336,7 @@ opts.AddVariables(
|
|||
|
||||
# Variables affecting rendering back-ends
|
||||
|
||||
BoolVariable('GRID_RENDERER', 'build support for native grid renderer', 'True'),
|
||||
BoolVariable('SVG_RENDERER', 'build support for native svg renderer', 'False'),
|
||||
BoolVariable('CPP_TESTS', 'Compile the C++ tests', 'True'),
|
||||
BoolVariable('BENCHMARK', 'Compile the C++ benchmark scripts', 'False'),
|
||||
|
@ -447,6 +448,7 @@ pickle_store = [# Scons internal variables
|
|||
'CAIRO_LIBPATHS',
|
||||
'CAIRO_ALL_LIBS',
|
||||
'CAIRO_CPPPATHS',
|
||||
'GRID_RENDERER',
|
||||
'SVG_RENDERER',
|
||||
'SQLITE_LINKFLAGS',
|
||||
'BOOST_LIB_VERSION_FROM_HEADER',
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#if defined(GRID_RENDERER)
|
||||
|
||||
// boost
|
||||
#include <boost/python.hpp>
|
||||
#include <boost/python/module.hpp>
|
||||
|
@ -80,3 +82,5 @@ void export_grid()
|
|||
;
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#if defined(GRID_RENDERER)
|
||||
|
||||
// boost
|
||||
#include <boost/python.hpp>
|
||||
#include <boost/python/module.hpp>
|
||||
|
@ -49,3 +51,5 @@ void export_grid_view()
|
|||
)
|
||||
;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -41,8 +41,10 @@ void export_image();
|
|||
void export_image_view();
|
||||
void export_gamma_method();
|
||||
void export_scaling_method();
|
||||
#if defined(GRID_RENDERER)
|
||||
void export_grid();
|
||||
void export_grid_view();
|
||||
#endif
|
||||
void export_map();
|
||||
void export_python();
|
||||
void export_expression();
|
||||
|
@ -92,7 +94,9 @@ void export_logger();
|
|||
#include <mapnik/value_error.hpp>
|
||||
#include <mapnik/save_map.hpp>
|
||||
#include <mapnik/scale_denominator.hpp>
|
||||
#if defined(GRID_RENDERER)
|
||||
#include "python_grid_utils.hpp"
|
||||
#endif
|
||||
#include "mapnik_value_converter.hpp"
|
||||
#include "mapnik_threads.hpp"
|
||||
#include "python_optional.hpp"
|
||||
|
@ -366,7 +370,33 @@ std::string mapnik_version_string()
|
|||
return MAPNIK_VERSION_STRING;
|
||||
}
|
||||
|
||||
// indicator for jpeg read/write support within libmapnik
|
||||
bool has_proj4()
|
||||
{
|
||||
#if defined(MAPNIK_USE_PROJ4)
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool has_svg_renderer()
|
||||
{
|
||||
#if defined(SVG_RENDERER)
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool has_grid_renderer()
|
||||
{
|
||||
#if defined(GRID_RENDERER)
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool has_jpeg()
|
||||
{
|
||||
#if defined(HAVE_JPEG)
|
||||
|
@ -376,6 +406,33 @@ bool has_jpeg()
|
|||
#endif
|
||||
}
|
||||
|
||||
bool has_png()
|
||||
{
|
||||
#if defined(HAVE_PNG)
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool has_tiff()
|
||||
{
|
||||
#if defined(HAVE_TIFF)
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool has_webp()
|
||||
{
|
||||
#if defined(HAVE_WEBP)
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
// indicator for cairo rendering support inside libmapnik
|
||||
bool has_cairo()
|
||||
{
|
||||
|
@ -427,7 +484,6 @@ BOOST_PYTHON_MODULE(_mapnik)
|
|||
using mapnik::load_map_string;
|
||||
using mapnik::save_map;
|
||||
using mapnik::save_map_to_string;
|
||||
using mapnik::render_grid;
|
||||
|
||||
register_exception_translator<std::exception>(&standard_error_translator);
|
||||
register_exception_translator<std::out_of_range>(&out_of_range_error_translator);
|
||||
|
@ -448,8 +504,10 @@ BOOST_PYTHON_MODULE(_mapnik)
|
|||
export_image_view();
|
||||
export_gamma_method();
|
||||
export_scaling_method();
|
||||
#if defined(GRID_RENDERER)
|
||||
export_grid();
|
||||
export_grid_view();
|
||||
#endif
|
||||
export_expression();
|
||||
export_rule();
|
||||
export_style();
|
||||
|
@ -487,7 +545,8 @@ BOOST_PYTHON_MODULE(_mapnik)
|
|||
">>> clear_cache()\n"
|
||||
);
|
||||
|
||||
def("render_grid",&render_grid,
|
||||
#if defined(GRID_RENDERER)
|
||||
def("render_grid",&mapnik::render_grid,
|
||||
( arg("map"),
|
||||
arg("layer"),
|
||||
args("key")="__id__",
|
||||
|
@ -495,6 +554,7 @@ BOOST_PYTHON_MODULE(_mapnik)
|
|||
arg("fields")=boost::python::list()
|
||||
)
|
||||
);
|
||||
#endif
|
||||
|
||||
def("render_to_file",&render_to_file1,
|
||||
"\n"
|
||||
|
@ -579,9 +639,11 @@ BOOST_PYTHON_MODULE(_mapnik)
|
|||
(arg("map"),arg("image"),args("layer"))
|
||||
);
|
||||
|
||||
#if defined(GRID_RENDERER)
|
||||
def("render_layer", &mapnik::render_layer_for_grid,
|
||||
(arg("map"),arg("grid"),args("layer"),arg("fields")=boost::python::list())
|
||||
);
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_CAIRO) && defined(HAVE_PYCAIRO)
|
||||
def("render",&render3,
|
||||
|
@ -739,7 +801,12 @@ BOOST_PYTHON_MODULE(_mapnik)
|
|||
def("save_map_to_string", &save_map_to_string, save_map_to_string_overloads());
|
||||
def("mapnik_version", &mapnik_version,"Get the Mapnik version number");
|
||||
def("mapnik_version_string", &mapnik_version_string,"Get the Mapnik version string");
|
||||
def("has_proj4", &has_proj4, "Get proj4 status");
|
||||
def("has_jpeg", &has_jpeg, "Get jpeg read/write support status");
|
||||
def("has_png", &has_png, "Get png read/write support status");
|
||||
def("has_tiff", &has_jpeg, "Get tiff read/write support status");
|
||||
def("has_webp", &has_jpeg, "Get webp read/write support status");
|
||||
def("has_grid_renderer", &has_grid_renderer, "Get grid_renderer status");
|
||||
def("has_cairo", &has_cairo, "Get cairo library status");
|
||||
def("has_pycairo", &has_pycairo, "Get pycairo module status");
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#if defined(GRID_RENDERER)
|
||||
|
||||
// boost
|
||||
#include <boost/python.hpp>
|
||||
#include <boost/scoped_array.hpp>
|
||||
|
@ -472,3 +474,5 @@ boost::python::dict render_grid(mapnik::Map const& map,
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -9,6 +9,9 @@ subdirs = ['','svg','wkt','grid','json','util','text_placements','formatting']
|
|||
if env['SVG_RENDERER']:
|
||||
subdirs.append('svg/output')
|
||||
|
||||
if env['GRID_RENDERER']:
|
||||
subdirs.append('grid')
|
||||
|
||||
if 'install' in COMMAND_LINE_TARGETS:
|
||||
for subdir in subdirs:
|
||||
pathdir = os.path.join(base,subdir,'*.hpp')
|
||||
|
|
|
@ -27,7 +27,11 @@
|
|||
#include <mapnik/svg/svg_path_attributes.hpp>
|
||||
#include <mapnik/gradient.hpp>
|
||||
#include <mapnik/box2d.hpp>
|
||||
|
||||
#if defined(GRID_RENDERER)
|
||||
#include <mapnik/grid/grid_pixel.hpp>
|
||||
#endif
|
||||
|
||||
#include <mapnik/noncopyable.hpp>
|
||||
|
||||
// boost
|
||||
|
@ -334,6 +338,7 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
#if defined(GRID_RENDERER)
|
||||
template <typename Rasterizer, typename Scanline, typename Renderer>
|
||||
void render_id(Rasterizer& ras,
|
||||
Scanline& sl,
|
||||
|
@ -416,6 +421,7 @@ public:
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
private:
|
||||
|
||||
|
|
|
@ -292,7 +292,8 @@ if env['RUNTIME_LINK'] == "static":
|
|||
source += glob.glob('../deps/agg/src/' + '*.cpp')
|
||||
|
||||
# grid backend
|
||||
source += Split(
|
||||
if env['GRID_RENDERER']: # svg backend
|
||||
source += Split(
|
||||
"""
|
||||
grid/grid.cpp
|
||||
grid/grid_renderer.cpp
|
||||
|
@ -307,6 +308,8 @@ source += Split(
|
|||
grid/process_shield_symbolizer.cpp
|
||||
grid/process_text_symbolizer.cpp
|
||||
""")
|
||||
lib_env.Append(CPPDEFINES = '-DGRID_RENDERER')
|
||||
libmapnik_defines.append('-DGRID_RENDERER')
|
||||
|
||||
# https://github.com/mapnik/mapnik/issues/1438
|
||||
if env['SVG_RENDERER']: # svg backend
|
||||
|
|
|
@ -24,8 +24,11 @@
|
|||
#include <mapnik/feature_style_processor_impl.hpp>
|
||||
#include <mapnik/agg_renderer.hpp>
|
||||
#include <mapnik/graphics.hpp>
|
||||
|
||||
#if defined(GRID_RENDERER)
|
||||
#include <mapnik/grid/grid_renderer.hpp>
|
||||
#include <mapnik/grid/grid.hpp>
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_CAIRO)
|
||||
#include <cairo.h>
|
||||
|
@ -48,7 +51,10 @@ template class feature_style_processor<cairo_renderer<cairo_surface_ptr> >;
|
|||
template class feature_style_processor<svg_renderer<std::ostream_iterator<char> > >;
|
||||
#endif
|
||||
|
||||
#if defined(GRID_RENDERER)
|
||||
template class feature_style_processor<grid_renderer<grid> >;
|
||||
#endif
|
||||
|
||||
template class feature_style_processor<agg_renderer<image_32> >;
|
||||
|
||||
}
|
||||
|
|
|
@ -25,7 +25,11 @@
|
|||
#include <mapnik/font_engine_freetype.hpp>
|
||||
#include <mapnik/text_properties.hpp>
|
||||
#include <mapnik/graphics.hpp>
|
||||
|
||||
#if defined(GRID_RENDERER)
|
||||
#include <mapnik/grid/grid.hpp>
|
||||
#endif
|
||||
|
||||
#include <mapnik/text_path.hpp>
|
||||
#include <mapnik/pixel_position.hpp>
|
||||
#include <mapnik/font_util.hpp>
|
||||
|
@ -686,6 +690,7 @@ void text_renderer<T>::render(pixel_position const& pos)
|
|||
}
|
||||
}
|
||||
|
||||
#if defined(GRID_RENDERER)
|
||||
template <typename T>
|
||||
void text_renderer<T>::render_id(mapnik::value_integer feature_id,
|
||||
pixel_position const& pos)
|
||||
|
@ -715,6 +720,7 @@ void text_renderer<T>::render_id(mapnik::value_integer feature_id,
|
|||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef MAPNIK_THREADSAFE
|
||||
boost::mutex freetype_engine::mutex_;
|
||||
|
@ -729,6 +735,7 @@ template text_renderer<image_32>::text_renderer(image_32&,
|
|||
double);
|
||||
template box2d<double>text_renderer<image_32>::prepare_glyphs(text_path const&);
|
||||
template void text_renderer<image_32>::render(pixel_position const&);
|
||||
#if defined(GRID_RENDERER)
|
||||
template void text_renderer<grid>::render_id(mapnik::value_integer,
|
||||
pixel_position const&);
|
||||
template text_renderer<grid>::text_renderer(grid&,
|
||||
|
@ -736,4 +743,5 @@ template text_renderer<grid>::text_renderer(grid&,
|
|||
halo_rasterizer_e,
|
||||
composite_mode_e, double);
|
||||
template box2d<double>text_renderer<grid>::prepare_glyphs(text_path const& );
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -45,7 +45,8 @@ def make_map():
|
|||
m.zoom_all()
|
||||
return m
|
||||
|
||||
def test_clearing_grid_data():
|
||||
if mapnik.has_grid_renderer():
|
||||
def test_clearing_grid_data():
|
||||
g = mapnik.Grid(256,256)
|
||||
utf = g.encode()
|
||||
# make sure it equals itself
|
||||
|
@ -57,7 +58,6 @@ def test_clearing_grid_data():
|
|||
g.clear()
|
||||
eq_(g.encode(),utf)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
setup()
|
||||
run_all(eval(x) for x in dir() if x.startswith("test_"))
|
|
@ -15,7 +15,8 @@ def setup():
|
|||
# from another directory we need to chdir()
|
||||
os.chdir(execution_path('.'))
|
||||
|
||||
def show_grids(name,g1,g2):
|
||||
if mapnik.has_grid_renderer():
|
||||
def show_grids(name,g1,g2):
|
||||
g1_file = '/tmp/mapnik-%s-actual.json' % name
|
||||
open(g1_file,'w').write(json.dumps(g1,sort_keys=True))
|
||||
g2_file = '/tmp/mapnik-%s-expected.json' % name
|
||||
|
@ -36,7 +37,7 @@ def show_grids(name,g1,g2):
|
|||
val += '\n\t%s\n\t%s' % (g1_file,g2_file)
|
||||
return val
|
||||
|
||||
def show_grids2(name,g1,g2):
|
||||
def show_grids2(name,g1,g2):
|
||||
g2_expected = '../data/grids/mapnik-%s-actual.json' % name
|
||||
if not os.path.exists(g2_expected):
|
||||
# create test fixture based on actual results
|
||||
|
@ -60,24 +61,24 @@ def show_grids2(name,g1,g2):
|
|||
val += '\n\t%s\n\t%s' % (g1_file,g2_expected)
|
||||
return val
|
||||
|
||||
# first pass impl where resolution is passed as render
|
||||
# time rather than encoding time, likely will be deprecated soon
|
||||
grid_correct_old = {"keys": ["", "North West", "North East", "South West", "South East"], "data": {"South East": {"Name": "South East"}, "North East": {"Name": "North East"}, "North West": {"Name": "North West"}, "South West": {"Name": "South West"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !!! ### ", " !!!!! ##### ", " !!!!! ##### ", " !!! ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$$$ %%%% ", " $$$$$ %%%%% ", " $$$$$ %%%%% ", " $$$ %%% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]}
|
||||
# first pass impl where resolution is passed as render
|
||||
# time rather than encoding time, likely will be deprecated soon
|
||||
grid_correct_old = {"keys": ["", "North West", "North East", "South West", "South East"], "data": {"South East": {"Name": "South East"}, "North East": {"Name": "North East"}, "North West": {"Name": "North West"}, "South West": {"Name": "South West"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !!! ### ", " !!!!! ##### ", " !!!!! ##### ", " !!! ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$$$ %%%% ", " $$$$$ %%%%% ", " $$$$$ %%%%% ", " $$$ %%% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]}
|
||||
|
||||
# now using svg rendering
|
||||
grid_correct_old2 = {"data": {"North East": {"Name": "North East"}, "North West": {"Name": "North West"}, "South East": {"Name": "South East"}, "South West": {"Name": "South West"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !!! ### ", " !!! ### ", " !!! ### ", " !!! ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$$ %%% ", " $$$ %%% ", " $$$ %%% ", " $$$ %%% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "North West", "North East", "South West", "South East"]}
|
||||
# now using svg rendering
|
||||
grid_correct_old2 = {"data": {"North East": {"Name": "North East"}, "North West": {"Name": "North West"}, "South East": {"Name": "South East"}, "South West": {"Name": "South West"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !!! ### ", " !!! ### ", " !!! ### ", " !!! ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$$ %%% ", " $$$ %%% ", " $$$ %%% ", " $$$ %%% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "North West", "North East", "South West", "South East"]}
|
||||
|
||||
grid_correct_old3 = {"data": {"North East": {"Name": "North East"}, "North West": {"Name": "North West"}, "South East": {"Name": "South East"}, "South West": {"Name": "South West"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !!! ### ", " !!! ### ", " !!! ### ", " !!! ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$$ %%% ", " $$$ %%% ", " $$$ %%% ", " $$ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "North West", "North East", "South West", "South East"]}
|
||||
grid_correct_old3 = {"data": {"North East": {"Name": "North East"}, "North West": {"Name": "North West"}, "South East": {"Name": "South East"}, "South West": {"Name": "South West"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !!! ### ", " !!! ### ", " !!! ### ", " !!! ### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$$ %%% ", " $$$ %%% ", " $$$ %%% ", " $$ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "North West", "North East", "South West", "South East"]}
|
||||
|
||||
# previous rendering using agg ellipse directly
|
||||
grid_correct_new = {"data": {"North East": {"Name": "North East"}, "North West": {"Name": "North West"}, "South East": {"Name": "South East"}, "South West": {"Name": "South West"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $$ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "North West", "North East", "South West", "South East"]}
|
||||
# previous rendering using agg ellipse directly
|
||||
grid_correct_new = {"data": {"North East": {"Name": "North East"}, "North West": {"Name": "North West"}, "South East": {"Name": "South East"}, "South West": {"Name": "South West"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $$ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "North West", "North East", "South West", "South East"]}
|
||||
|
||||
# newer rendering using svg
|
||||
grid_correct_new2 = {"data": {"North East": {"Name": "North East"}, "North West": {"Name": "North West"}, "South East": {"Name": "South East"}, "South West": {"Name": "South West"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $$ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "North West", "North East", "South West", "South East"]}
|
||||
# newer rendering using svg
|
||||
grid_correct_new2 = {"data": {"North East": {"Name": "North East"}, "North West": {"Name": "North West"}, "South East": {"Name": "South East"}, "South West": {"Name": "South West"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $$ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "North West", "North East", "South West", "South East"]}
|
||||
|
||||
grid_correct_new3 = {"data": {"North East": {"Name": "North East"}, "North West": {"Name": "North West"}, "South East": {"Name": "South East"}, "South West": {"Name": "South West"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "North West", "North East", "South West", "South East"]}
|
||||
grid_correct_new3 = {"data": {"North East": {"Name": "North East"}, "North West": {"Name": "North West"}, "South East": {"Name": "South East"}, "South West": {"Name": "South West"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "North West", "North East", "South West", "South East"]}
|
||||
|
||||
def resolve(grid,row,col):
|
||||
def resolve(grid,row,col):
|
||||
""" Resolve the attributes for a given pixel in a grid.
|
||||
"""
|
||||
row = grid['grid'][row]
|
||||
|
@ -93,7 +94,7 @@ def resolve(grid,row,col):
|
|||
return grid['data'].get(key)
|
||||
|
||||
|
||||
def create_grid_map(width,height,sym):
|
||||
def create_grid_map(width,height,sym):
|
||||
ds = mapnik.MemoryDatasource()
|
||||
context = mapnik.Context()
|
||||
context.push('Name')
|
||||
|
@ -129,7 +130,7 @@ def create_grid_map(width,height,sym):
|
|||
m.layers.append(lyr)
|
||||
return m
|
||||
|
||||
def test_render_grid_old():
|
||||
def test_render_grid_old():
|
||||
""" test old method """
|
||||
width,height = 256,256
|
||||
symb = mapnik.PointSymbolizer(mapnik.PathExpression('../data/images/dummy.png'))
|
||||
|
@ -153,7 +154,7 @@ def test_render_grid_old():
|
|||
eq_(resolve(grid,23,10),expected)
|
||||
eq_(resolve(grid,23,11),expected)
|
||||
|
||||
def test_render_grid_new():
|
||||
def test_render_grid_new():
|
||||
""" test old against new"""
|
||||
width,height = 256,256
|
||||
sym = mapnik.MarkersSymbolizer()
|
||||
|
@ -190,13 +191,13 @@ def test_render_grid_new():
|
|||
eq_(resolve(utf5,38,46),{"Name": "South East"})
|
||||
|
||||
|
||||
grid_feat_id = {'keys': ['', '3', '4', '2', '1'], 'data': {'1': {'Name': 'South East'}, '3': {'Name': u'North West'}, '2': {'Name': 'South West'}, '4': {'Name': 'North East'}}, 'grid': [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' !! ## ', ' !!! ### ', ' !! ## ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' $$$ %% ', ' $$$ %%% ', ' $$ %% ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']}
|
||||
grid_feat_id = {'keys': ['', '3', '4', '2', '1'], 'data': {'1': {'Name': 'South East'}, '3': {'Name': u'North West'}, '2': {'Name': 'South West'}, '4': {'Name': 'North East'}}, 'grid': [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' !! ## ', ' !!! ### ', ' !! ## ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' $$$ %% ', ' $$$ %%% ', ' $$ %% ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']}
|
||||
|
||||
grid_feat_id2 = {"data": {"1": {"Name": "South East"}, "2": {"Name": "South West"}, "3": {"Name": "North West"}, "4": {"Name": "North East"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $$ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "3", "4", "2", "1"]}
|
||||
grid_feat_id2 = {"data": {"1": {"Name": "South East"}, "2": {"Name": "South West"}, "3": {"Name": "North West"}, "4": {"Name": "North East"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $$ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "3", "4", "2", "1"]}
|
||||
|
||||
grid_feat_id3 = {"data": {"1": {"Name": "South East", "__id__": 1}, "2": {"Name": "South West", "__id__": 2}, "3": {"Name": "North West", "__id__": 3}, "4": {"Name": "North East", "__id__": 4}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "3", "4", "2", "1"]}
|
||||
grid_feat_id3 = {"data": {"1": {"Name": "South East", "__id__": 1}, "2": {"Name": "South West", "__id__": 2}, "3": {"Name": "North West", "__id__": 3}, "4": {"Name": "North East", "__id__": 4}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !! ## ", " !!! ### ", " !! ## ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$ %% ", " $$$ %% ", " $ %% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "3", "4", "2", "1"]}
|
||||
|
||||
def test_render_grid3():
|
||||
def test_render_grid3():
|
||||
""" test using feature id"""
|
||||
width,height = 256,256
|
||||
sym = mapnik.MarkersSymbolizer()
|
||||
|
@ -231,7 +232,7 @@ def test_render_grid3():
|
|||
eq_(resolve(utf5,38,46),{"Name": "South East","__id__": 1})
|
||||
|
||||
|
||||
def gen_grid_for_id(pixel_key):
|
||||
def gen_grid_for_id(pixel_key):
|
||||
ds = mapnik.MemoryDatasource()
|
||||
context = mapnik.Context()
|
||||
context.push('Name')
|
||||
|
@ -256,13 +257,13 @@ def gen_grid_for_id(pixel_key):
|
|||
mapnik.render_layer(m,grid,layer=0,fields=['__id__','Name'])
|
||||
return grid
|
||||
|
||||
def test_negative_id():
|
||||
def test_negative_id():
|
||||
grid = gen_grid_for_id(-1)
|
||||
eq_(grid.get_pixel(128,128),-1)
|
||||
utf1 = grid.encode('utf',resolution=4)
|
||||
eq_(utf1['keys'],['-1'])
|
||||
|
||||
def test_32bit_int_id():
|
||||
def test_32bit_int_id():
|
||||
int32 = 2147483647
|
||||
grid = gen_grid_for_id(int32)
|
||||
eq_(grid.get_pixel(128,128),int32)
|
||||
|
@ -274,7 +275,7 @@ def test_32bit_int_id():
|
|||
utf1 = grid.encode('utf',resolution=4)
|
||||
eq_(utf1['keys'],[str(max_neg)])
|
||||
|
||||
def test_64bit_int_id():
|
||||
def test_64bit_int_id():
|
||||
int64 = 0x7FFFFFFFFFFFFFFF
|
||||
grid = gen_grid_for_id(int64)
|
||||
eq_(grid.get_pixel(128,128),int64)
|
||||
|
@ -286,15 +287,15 @@ def test_64bit_int_id():
|
|||
utf1 = grid.encode('utf',resolution=4)
|
||||
eq_(utf1['keys'],[str(max_neg)])
|
||||
|
||||
def test_id_zero():
|
||||
def test_id_zero():
|
||||
grid = gen_grid_for_id(0)
|
||||
eq_(grid.get_pixel(128,128),0)
|
||||
utf1 = grid.encode('utf',resolution=4)
|
||||
eq_(utf1['keys'],['0'])
|
||||
|
||||
line_expected = {"keys": ["", "1"], "data": {"1": {"Name": "1"}}, "grid": [" !", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", "!! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! "]}
|
||||
line_expected = {"keys": ["", "1"], "data": {"1": {"Name": "1"}}, "grid": [" !", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", " !! ", "!! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! ", " ! "]}
|
||||
|
||||
def test_line_rendering():
|
||||
def test_line_rendering():
|
||||
ds = mapnik.MemoryDatasource()
|
||||
context = mapnik.Context()
|
||||
context.push('Name')
|
||||
|
@ -322,9 +323,9 @@ def test_line_rendering():
|
|||
utf1 = grid.encode()
|
||||
eq_(utf1,line_expected,show_grids('line',utf1,line_expected))
|
||||
|
||||
point_expected = {"data": {"1": {"Name": "South East"}, "2": {"Name": "South West"}, "3": {"Name": "North West"}, "4": {"Name": "North East"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !!!! #### ", " !!!! #### ", " !!!! #### ", " !!!! #### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$$$ %%%% ", " $$$$ %%%% ", " $$$$ %%%% ", " $$$$ %%%% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "3", "4", "2", "1"]}
|
||||
point_expected = {"data": {"1": {"Name": "South East"}, "2": {"Name": "South West"}, "3": {"Name": "North West"}, "4": {"Name": "North East"}}, "grid": [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " !!!! #### ", " !!!! #### ", " !!!! #### ", " !!!! #### ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " $$$$ %%%% ", " $$$$ %%%% ", " $$$$ %%%% ", " $$$$ %%%% ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], "keys": ["", "3", "4", "2", "1"]}
|
||||
|
||||
def test_point_symbolizer_grid():
|
||||
def test_point_symbolizer_grid():
|
||||
width,height = 256,256
|
||||
sym = mapnik.PointSymbolizer(mapnik.PathExpression('../data/images/dummy.png'))
|
||||
m = create_grid_map(width,height,sym)
|
||||
|
@ -337,10 +338,10 @@ def test_point_symbolizer_grid():
|
|||
eq_(utf1,point_expected,show_grids('point-sym',utf1,point_expected))
|
||||
|
||||
|
||||
# should throw because this is a mis-usage
|
||||
# https://github.com/mapnik/mapnik/issues/1325
|
||||
@raises(RuntimeError)
|
||||
def test_render_to_grid_multiple_times():
|
||||
# should throw because this is a mis-usage
|
||||
# https://github.com/mapnik/mapnik/issues/1325
|
||||
@raises(RuntimeError)
|
||||
def test_render_to_grid_multiple_times():
|
||||
# create map with two layers
|
||||
m = mapnik.Map(256,256)
|
||||
s = mapnik.Style()
|
||||
|
|
|
@ -21,7 +21,7 @@ defaults = {
|
|||
'scales':[1.0,2.0],
|
||||
'agg': True,
|
||||
'cairo': mapnik.has_cairo(),
|
||||
'grid': True
|
||||
'grid': mapnik.has_grid_renderer()
|
||||
}
|
||||
|
||||
cairo_threshold = 10
|
||||
|
|
Loading…
Reference in a new issue