Merge branch '2.3.x' of github.com:mapnik/mapnik
Conflicts: deps/agg/build.py deps/clipper/build.py include/mapnik/feature_style_processor_impl.hpp plugins/input/csv/csv_datasource.cpp
This commit is contained in:
commit
f998b2bda6
30 changed files with 333 additions and 90 deletions
|
@ -14,6 +14,12 @@ Released ...
|
|||
|
||||
Summary: TODO
|
||||
|
||||
- Dropped support for Sun compiler
|
||||
|
||||
- Upgraded unifont to `unifont-6.3.20131020`
|
||||
|
||||
- CSV Plugin: added the ability to pass an `extent` in options
|
||||
|
||||
- Fixed crash when rendering to cairo context from python (#2031)
|
||||
|
||||
- Moved `label-position-tolerance` from unsigned type to double
|
||||
|
|
54
SConstruct
54
SConstruct
|
@ -36,6 +36,9 @@ except:
|
|||
LIBDIR_SCHEMA_DEFAULT='lib'
|
||||
severities = ['debug', 'warn', 'error', 'none']
|
||||
|
||||
ICU_INCLUDES_DEFAULT='/usr/include'
|
||||
ICU_LIBS_DEFAULT='/usr/'
|
||||
|
||||
DEFAULT_CC = "gcc"
|
||||
DEFAULT_CXX = "g++"
|
||||
DEFAULT_CXX11_CXXFLAGS = " -std=c++11"
|
||||
|
@ -43,6 +46,9 @@ DEFAULT_CXX11_LINKFLAGS = ""
|
|||
if sys.platform == 'darwin':
|
||||
DEFAULT_CC = "clang"
|
||||
DEFAULT_CXX = "clang++"
|
||||
# homebrew default
|
||||
ICU_INCLUDES_DEFAULT='/usr/local/opt/icu4c/include/'
|
||||
ICU_LIBS_DEFAULT='/usr/local/opt/icu4c/'
|
||||
|
||||
py3 = None
|
||||
|
||||
|
@ -323,8 +329,8 @@ opts.AddVariables(
|
|||
# Variables for required dependencies
|
||||
('FREETYPE_CONFIG', 'The path to the freetype-config executable.', 'freetype-config'),
|
||||
('XML2_CONFIG', 'The path to the xml2-config executable.', 'xml2-config'),
|
||||
PathVariable('ICU_INCLUDES', 'Search path for ICU include files', '/usr/include', PathVariable.PathAccept),
|
||||
PathVariable('ICU_LIBS','Search path for ICU include files','/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
|
||||
PathVariable('ICU_INCLUDES', 'Search path for ICU include files', ICU_INCLUDES_DEFAULT, PathVariable.PathAccept),
|
||||
PathVariable('ICU_LIBS','Search path for ICU include files',ICU_LIBS_DEFAULT + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
|
||||
('ICU_LIB_NAME', 'The library name for icu (such as icuuc, sicuuc, or icucore)', 'icuuc', PathVariable.PathAccept),
|
||||
|
||||
BoolVariable('PNG', 'Build Mapnik with PNG read and write support', 'True'),
|
||||
|
@ -427,7 +433,6 @@ pickle_store = [# Scons internal variables
|
|||
'BOOST_APPEND',
|
||||
'LIBDIR_SCHEMA',
|
||||
'REQUESTED_PLUGINS',
|
||||
'SUNCC',
|
||||
'PYTHON_VERSION',
|
||||
'PYTHON_INCLUDES',
|
||||
'PYTHON_INSTALL_LOCATION',
|
||||
|
@ -1169,21 +1174,6 @@ if not preconfigured:
|
|||
thread_suffix = ''
|
||||
env.Append(LIBS = 'pthread')
|
||||
|
||||
# Solaris & Sun Studio settings (the `SUNCC` flag will only be
|
||||
# set if the `CXX` option begins with `CC`)
|
||||
SOLARIS = env['PLATFORM'] == 'SunOS'
|
||||
env['SUNCC'] = SOLARIS and env['CXX'].startswith('CC')
|
||||
|
||||
# If the Sun Studio C++ compiler (`CC`) is used instead of gcc.
|
||||
if env['SUNCC']:
|
||||
env['CC'] = 'cc'
|
||||
# To be compatible w/Boost everything needs to be compiled
|
||||
# with the `-library=stlport4` flag (which needs to come
|
||||
# before the `-o` flag).
|
||||
env['CXX'] = 'CC -library=stlport4'
|
||||
if env['THREADING'] == 'multi':
|
||||
env.Append(CXXFLAGS = '-mt')
|
||||
|
||||
if env['SHAPE_MEMORY_MAPPED_FILE']:
|
||||
env.Append(CPPDEFINES = '-DSHAPE_MEMORY_MAPPED_FILE')
|
||||
|
||||
|
@ -1764,22 +1754,22 @@ if not preconfigured:
|
|||
else:
|
||||
env.Append(CPPDEFINES = ndebug_defines)
|
||||
|
||||
if not env['SUNCC']:
|
||||
# Common flags for CXX compiler.
|
||||
common_cxx_flags = '-Wall %s %s -ftemplate-depth-300 ' % (env['WARNING_CXXFLAGS'], pthread)
|
||||
# Common flags for g++/clang++ CXX compiler.
|
||||
# TODO: clean up code more to make -Wsign-conversion -Wconversion viable
|
||||
common_cxx_flags = '-Wall -Wsign-compare -Wshadow %s %s -ftemplate-depth-300 ' % (env['WARNING_CXXFLAGS'], pthread)
|
||||
|
||||
# https://github.com/mapnik/mapnik/issues/1835
|
||||
if sys.platform == 'darwin' and env['CXX'] == 'g++':
|
||||
common_cxx_flags += '-fpermissive '
|
||||
# https://github.com/mapnik/mapnik/issues/1835
|
||||
if sys.platform == 'darwin' and env['CXX'] == 'g++':
|
||||
common_cxx_flags += '-fpermissive '
|
||||
|
||||
if env['DEBUG']:
|
||||
env.Append(CXXFLAGS = common_cxx_flags + '-O0 -fno-inline')
|
||||
else:
|
||||
# TODO - add back -fvisibility-inlines-hidden
|
||||
# https://github.com/mapnik/mapnik/issues/1863
|
||||
env.Append(CXXFLAGS = common_cxx_flags + '-O%s -fno-strict-aliasing -finline-functions -Wno-inline -Wno-parentheses -Wno-char-subscripts' % (env['OPTIMIZATION']))
|
||||
if env['DEBUG_UNDEFINED']:
|
||||
env.Append(CXXFLAGS = '-fsanitize=undefined-trap -fsanitize-undefined-trap-on-error -ftrapv -fwrapv')
|
||||
if env['DEBUG']:
|
||||
env.Append(CXXFLAGS = common_cxx_flags + '-O0 -fno-inline')
|
||||
else:
|
||||
# TODO - add back -fvisibility-inlines-hidden
|
||||
# https://github.com/mapnik/mapnik/issues/1863
|
||||
env.Append(CXXFLAGS = common_cxx_flags + '-O%s -fno-strict-aliasing -finline-functions -Wno-inline -Wno-parentheses -Wno-char-subscripts' % (env['OPTIMIZATION']))
|
||||
if env['DEBUG_UNDEFINED']:
|
||||
env.Append(CXXFLAGS = '-fsanitize=undefined-trap -fsanitize-undefined-trap-on-error -ftrapv -fwrapv')
|
||||
|
||||
if 'python' in env['BINDINGS'] or 'python' in env['REQUESTED_PLUGINS']:
|
||||
majver, minver = env['PYTHON_VERSION'].split('.')
|
||||
|
|
|
@ -28,9 +28,10 @@
|
|||
using namespace boost::chrono;
|
||||
using namespace mapnik;
|
||||
|
||||
static unsigned test_num = 1;
|
||||
static bool dry_run = false;
|
||||
static std::set<int> test_set;
|
||||
typedef std::set<int> set_type;
|
||||
static set_type test_set;
|
||||
static set_type::key_type test_num = 1;
|
||||
|
||||
typedef process_cpu_clock clock_type;
|
||||
typedef clock_type::duration dur;
|
||||
|
@ -89,7 +90,7 @@ void benchmark(T & test_runner, std::string const& name)
|
|||
{
|
||||
std::clog << "test runner did not complete: " << ex.what() << "\n";
|
||||
}
|
||||
test_num++;
|
||||
++test_num;
|
||||
}
|
||||
|
||||
bool compare_images(std::string const& src_fn,std::string const& dest_fn)
|
||||
|
@ -732,7 +733,7 @@ int main( int argc, char** argv)
|
|||
} else if (opt[0] != '-') {
|
||||
int arg;
|
||||
if (mapnik::util::string2int(opt,arg)) {
|
||||
test_set.insert(arg);
|
||||
test_set.insert(static_cast<unsigned>(arg));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -888,7 +889,7 @@ int main( int argc, char** argv)
|
|||
if (!success) {
|
||||
std::clog << "warning, did not register any new fonts!\n";
|
||||
}
|
||||
unsigned face_count = mapnik::freetype_engine::face_names().size();
|
||||
std::size_t face_count = mapnik::freetype_engine::face_names().size();
|
||||
test13 runner(1000,10);
|
||||
benchmark(runner, (boost::format("font_engine: created %ld faces in ") % (face_count * 1000 * 10)).str());
|
||||
}
|
||||
|
|
2
deps/agg/build.py
vendored
2
deps/agg/build.py
vendored
|
@ -24,4 +24,4 @@ Import('env')
|
|||
lib_env = env.Clone()
|
||||
if 'g++' in env['CXX']:
|
||||
lib_env.Append(CXXFLAGS='-fPIC')
|
||||
lib_env.StaticLibrary('agg', glob('./src/' + '*.cpp'), LIBS=[])
|
||||
lib_env.StaticLibrary('agg', glob('./src/' + '*.cpp'), LIBS=[])
|
||||
|
|
Binary file not shown.
|
@ -134,9 +134,9 @@ public:
|
|||
inline unsigned rgba() const
|
||||
{
|
||||
#ifdef MAPNIK_BIG_ENDIAN
|
||||
return (alpha_) | (blue_ << 8) | (green_ << 16) | (red_ << 24) ;
|
||||
return static_cast<unsigned>((alpha_) | (blue_ << 8) | (green_ << 16) | (red_ << 24)) ;
|
||||
#else
|
||||
return (alpha_ << 24) | (blue_ << 16) | (green_ << 8) | (red_) ;
|
||||
return static_cast<unsigned>((alpha_ << 24) | (blue_ << 16) | (green_ << 8) | (red_)) ;
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
|
|
@ -112,7 +112,7 @@ public:
|
|||
virtual datasource_t type() const = 0;
|
||||
|
||||
virtual processor_context_ptr get_context(feature_style_context_map&) const { return processor_context_ptr(); }
|
||||
virtual featureset_ptr features_with_context(const query& q,processor_context_ptr ctx= processor_context_ptr()) const
|
||||
virtual featureset_ptr features_with_context(query const& q,processor_context_ptr /*ctx*/) const
|
||||
{
|
||||
// default implementation without context use features method
|
||||
return features(q);
|
||||
|
|
|
@ -100,7 +100,6 @@ private:
|
|||
void prepare_layer(layer_rendering_material & mat,
|
||||
feature_style_context_map & ctx_map,
|
||||
Processor & p,
|
||||
projection const& proj0,
|
||||
double scale,
|
||||
double scale_denom,
|
||||
unsigned width,
|
||||
|
|
|
@ -190,7 +190,6 @@ void feature_style_processor<Processor>::apply(double scale_denom)
|
|||
prepare_layer(*mat,
|
||||
ctx_map,
|
||||
p,
|
||||
proj,
|
||||
m_.scale(),
|
||||
scale_denom,
|
||||
m_.width(),
|
||||
|
@ -267,7 +266,6 @@ void feature_style_processor<Processor>::apply_to_layer(layer const& lay,
|
|||
prepare_layer(mat,
|
||||
ctx_map,
|
||||
p,
|
||||
proj0,
|
||||
scale,
|
||||
scale_denom,
|
||||
width,
|
||||
|
@ -286,7 +284,6 @@ template <typename Processor>
|
|||
void feature_style_processor<Processor>::prepare_layer(layer_rendering_material & mat,
|
||||
feature_style_context_map & ctx_map,
|
||||
Processor & p,
|
||||
projection const& proj0,
|
||||
double scale,
|
||||
double scale_denom,
|
||||
unsigned width,
|
||||
|
@ -510,7 +507,7 @@ void feature_style_processor<Processor>::prepare_layer(layer_rendering_material
|
|||
}
|
||||
else
|
||||
{
|
||||
for(size_t i = 0; i < active_styles.size(); ++i)
|
||||
for(std::size_t i = 0; i < active_styles.size(); ++i)
|
||||
{
|
||||
featureset_ptr_list.push_back(ds->features_with_context(q,current_ctx));
|
||||
}
|
||||
|
@ -565,7 +562,7 @@ void feature_style_processor<Processor>::render_material(layer_rendering_materia
|
|||
{
|
||||
// We're at a value boundary, so render what we have
|
||||
// up to this point.
|
||||
int i = 0;
|
||||
std::size_t i = 0;
|
||||
for (feature_type_style const* style : active_styles)
|
||||
{
|
||||
|
||||
|
@ -582,7 +579,7 @@ void feature_style_processor<Processor>::render_material(layer_rendering_materia
|
|||
prev = feature;
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
std::size_t i = 0;
|
||||
for (feature_type_style const* style : active_styles)
|
||||
{
|
||||
cache->prepare();
|
||||
|
@ -606,7 +603,7 @@ void feature_style_processor<Processor>::render_material(layer_rendering_materia
|
|||
cache->push(feature);
|
||||
}
|
||||
}
|
||||
int i = 0;
|
||||
std::size_t i = 0;
|
||||
for (feature_type_style const* style : active_styles)
|
||||
{
|
||||
cache->prepare();
|
||||
|
@ -619,7 +616,7 @@ void feature_style_processor<Processor>::render_material(layer_rendering_materia
|
|||
// We only have a single style and no grouping.
|
||||
else
|
||||
{
|
||||
int i = 0;
|
||||
std::size_t i = 0;
|
||||
std::vector<featureset_ptr>::iterator featuresets = featureset_ptr_list.begin();
|
||||
for (feature_type_style const* style : active_styles)
|
||||
{
|
||||
|
|
|
@ -120,7 +120,7 @@ inline void read_double_ndr(const char* data, double & val)
|
|||
inline void read_int16_xdr(const char* data, boost::int16_t & val)
|
||||
{
|
||||
#ifndef MAPNIK_BIG_ENDIAN
|
||||
val = (data[3]&0xff) | ((data[2]&0xff)<<8);
|
||||
val = static_cast<boost::int16_t>((data[3]&0xff) | ((data[2]&0xff)<<8));
|
||||
#else
|
||||
std::memcpy(&val,data,2);
|
||||
#endif
|
||||
|
|
|
@ -91,9 +91,15 @@ public:
|
|||
};
|
||||
|
||||
|
||||
#ifdef __GNUC__
|
||||
template <typename T,
|
||||
template <typename U> class CreatePolicy=CreateStatic> class MAPNIK_DECL singleton
|
||||
{
|
||||
#else
|
||||
template <typename T,
|
||||
template <typename U> class CreatePolicy=CreateStatic> class singleton
|
||||
{
|
||||
#endif
|
||||
friend class CreatePolicy<T>;
|
||||
static T* pInstance_;
|
||||
static bool destroyed_;
|
||||
|
|
|
@ -92,7 +92,7 @@ public:
|
|||
|
||||
void push_back (coord_type x,coord_type y,command_size command)
|
||||
{
|
||||
unsigned block = pos_ >> block_shift;
|
||||
size_type block = pos_ >> block_shift;
|
||||
if (block >= num_blocks_)
|
||||
{
|
||||
allocate_block(block);
|
||||
|
@ -108,7 +108,7 @@ public:
|
|||
unsigned get_vertex(unsigned pos,coord_type* x,coord_type* y) const
|
||||
{
|
||||
if (pos >= pos_) return SEG_END;
|
||||
unsigned block = pos >> block_shift;
|
||||
size_type block = pos >> block_shift;
|
||||
const coord_type* vertex = vertices_[block] + (( pos & block_mask) << 1);
|
||||
*x = (*vertex++);
|
||||
*y = (*vertex);
|
||||
|
@ -119,12 +119,12 @@ public:
|
|||
{
|
||||
if (pos < pos_)
|
||||
{
|
||||
unsigned block = pos >> block_shift;
|
||||
size_type block = pos >> block_shift;
|
||||
commands_[block] [pos & block_mask] = command;
|
||||
}
|
||||
}
|
||||
private:
|
||||
void allocate_block(unsigned block)
|
||||
void allocate_block(size_type block)
|
||||
{
|
||||
if (block >= max_blocks_)
|
||||
{
|
||||
|
|
|
@ -73,6 +73,7 @@ csv_datasource::csv_datasource(parameters const& params)
|
|||
strict_(*params.get<mapnik::boolean>("strict", false)),
|
||||
filesize_max_(*params.get<double>("filesize_max", 20.0)), // MB
|
||||
ctx_(std::make_shared<mapnik::context_type>())
|
||||
extent_initialized_(false)
|
||||
{
|
||||
/* TODO:
|
||||
general:
|
||||
|
@ -96,6 +97,12 @@ csv_datasource::csv_datasource(parameters const& params)
|
|||
http://boost-spirit.com/home/articles/qi-example/tracking-the-input-position-while-parsing/
|
||||
*/
|
||||
|
||||
boost::optional<std::string> ext = params.get<std::string>("extent");
|
||||
if (ext && !ext->empty())
|
||||
{
|
||||
extent_initialized_ = extent_.from_string(*ext);
|
||||
}
|
||||
|
||||
boost::optional<std::string> inline_string = params.get<std::string>("inline");
|
||||
if (inline_string)
|
||||
{
|
||||
|
@ -406,7 +413,8 @@ void csv_datasource::parse_csv(T & stream,
|
|||
}
|
||||
|
||||
mapnik::value_integer feature_count(0);
|
||||
bool extent_initialized = false;
|
||||
bool extent_started = false;
|
||||
|
||||
std::size_t num_headers = headers_.size();
|
||||
|
||||
for (std::size_t i = 0; i < headers_.size(); ++i)
|
||||
|
@ -739,14 +747,17 @@ void csv_datasource::parse_csv(T & stream,
|
|||
{
|
||||
if (parsed_wkt || parsed_json)
|
||||
{
|
||||
if (!extent_initialized)
|
||||
if (!extent_initialized_)
|
||||
{
|
||||
extent_initialized = true;
|
||||
extent_ = feature->envelope();
|
||||
}
|
||||
else
|
||||
{
|
||||
extent_.expand_to_include(feature->envelope());
|
||||
if (!extent_started)
|
||||
{
|
||||
extent_started = true;
|
||||
extent_ = feature->envelope();
|
||||
}
|
||||
else
|
||||
{
|
||||
extent_.expand_to_include(feature->envelope());
|
||||
}
|
||||
}
|
||||
features_.push_back(feature);
|
||||
null_geom = false;
|
||||
|
@ -777,14 +788,17 @@ void csv_datasource::parse_csv(T & stream,
|
|||
feature->add_geometry(pt);
|
||||
features_.push_back(feature);
|
||||
null_geom = false;
|
||||
if (!extent_initialized)
|
||||
if (!extent_initialized_)
|
||||
{
|
||||
extent_initialized = true;
|
||||
extent_ = feature->envelope();
|
||||
}
|
||||
else
|
||||
{
|
||||
extent_.expand_to_include(feature->envelope());
|
||||
if (!extent_started)
|
||||
{
|
||||
extent_started = true;
|
||||
extent_ = feature->envelope();
|
||||
}
|
||||
else
|
||||
{
|
||||
extent_.expand_to_include(feature->envelope());
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (parsed_x || parsed_y)
|
||||
|
|
|
@ -76,6 +76,7 @@ private:
|
|||
bool strict_;
|
||||
double filesize_max_;
|
||||
mapnik::context_ptr ctx_;
|
||||
bool extent_initialized_;
|
||||
};
|
||||
|
||||
#endif // MAPNIK_CSV_DATASOURCE_HPP
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
// stl
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <fstream>
|
||||
#include <deque>
|
||||
|
||||
#include "geojson_featureset.hpp"
|
||||
|
||||
|
|
|
@ -656,7 +656,7 @@ featureset_ptr postgis_datasource::features(query const& q) const
|
|||
}
|
||||
else
|
||||
{
|
||||
return features_with_context(q);
|
||||
return features_with_context(q,processor_context_ptr());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -68,7 +68,7 @@ public:
|
|||
mapnik::datasource::datasource_t type() const;
|
||||
static const char * name();
|
||||
processor_context_ptr get_context(feature_style_context_map &) const;
|
||||
featureset_ptr features_with_context(query const& q, processor_context_ptr ctx= processor_context_ptr()) const;
|
||||
featureset_ptr features_with_context(query const& q, processor_context_ptr ctx) const;
|
||||
featureset_ptr features(query const& q) const;
|
||||
featureset_ptr features_at_point(coord2d const& pt, double tol = 0) const;
|
||||
mapnik::box2d<double> envelope() const;
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#
|
||||
|
||||
import os
|
||||
import copy
|
||||
Import ('plugin_base')
|
||||
Import ('env')
|
||||
|
||||
|
@ -42,7 +43,7 @@ libraries.append(env['BOOST_PYTHON_LIB'])
|
|||
libraries.append(env['ICU_LIB_NAME'])
|
||||
|
||||
python_cpppath = env['PYTHON_INCLUDES']
|
||||
allcpp_paths = env['CPPPATH']
|
||||
allcpp_paths = copy.copy(env['CPPPATH'])
|
||||
allcpp_paths.extend(python_cpppath)
|
||||
# NOTE: explicit linking to libpython is uneeded on most linux version if the
|
||||
# python plugin is used by a app in python using mapnik's python bindings
|
||||
|
|
|
@ -36,12 +36,12 @@
|
|||
#ifdef SHAPE_MEMORY_MAPPED_FILE
|
||||
#include <boost/interprocess/mapped_region.hpp>
|
||||
#include <mapnik/mapped_memory_cache.hpp>
|
||||
#include <boost/interprocess/streams/bufferstream.hpp>
|
||||
#endif
|
||||
#include <mapnik/noncopyable.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/cstdint.hpp>
|
||||
#include <boost/interprocess/streams/bufferstream.hpp>
|
||||
|
||||
using mapnik::box2d;
|
||||
using mapnik::read_int32_ndr;
|
||||
|
@ -134,14 +134,12 @@ struct shape_record
|
|||
}
|
||||
};
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
class shape_file : mapnik::noncopyable
|
||||
{
|
||||
public:
|
||||
|
||||
#ifdef SHAPE_MEMORY_MAPPED_FILE
|
||||
typedef ibufferstream file_source_type;
|
||||
typedef boost::interprocess::ibufferstream file_source_type;
|
||||
typedef shape_record<MappedRecordTag> record_type;
|
||||
mapnik::mapped_region_ptr mapped_region_;
|
||||
#else
|
||||
|
|
|
@ -221,7 +221,7 @@ void cairo_context::set_line_width(double width)
|
|||
check_object_status_and_throw_exception(*this);
|
||||
}
|
||||
|
||||
void cairo_context::set_dash(dash_array const &dashes, double scale_factor)
|
||||
void cairo_context::set_dash(dash_array const& dashes, double scale_factor)
|
||||
{
|
||||
std::valarray<double> d(dashes.size() * 2);
|
||||
dash_array::const_iterator itr = dashes.begin();
|
||||
|
@ -234,7 +234,7 @@ void cairo_context::set_dash(dash_array const &dashes, double scale_factor)
|
|||
d[index++] = itr->second * scale_factor;
|
||||
}
|
||||
|
||||
cairo_set_dash(cairo_.get() , &d[0], d.size(), 0/*offset*/);
|
||||
cairo_set_dash(cairo_.get() , &d[0], static_cast<int>(d.size()), 0/*offset*/);
|
||||
check_object_status_and_throw_exception(*this);
|
||||
}
|
||||
|
||||
|
|
18
src/map.cpp
18
src/map.cpp
|
@ -479,10 +479,10 @@ void Map::fixAspectRatio()
|
|||
current_extent_.width(current_extent_.height() * ratio1);
|
||||
break;
|
||||
case ADJUST_CANVAS_HEIGHT:
|
||||
height_ = int (width_ / ratio2 + 0.5);
|
||||
height_ = static_cast<unsigned>(std::floor(static_cast<double>(width_) / ratio2 + 0.5));
|
||||
break;
|
||||
case ADJUST_CANVAS_WIDTH:
|
||||
width_ = int (height_ * ratio2 + 0.5);
|
||||
width_ = static_cast<unsigned>(std::floor(static_cast<double>(height_) * ratio2 + 0.5));
|
||||
break;
|
||||
case GROW_BBOX:
|
||||
if (ratio2 > ratio1)
|
||||
|
@ -498,15 +498,15 @@ void Map::fixAspectRatio()
|
|||
break;
|
||||
case GROW_CANVAS:
|
||||
if (ratio2 > ratio1)
|
||||
width_ = static_cast<int>(height_ * ratio2 + 0.5);
|
||||
width_ = static_cast<unsigned>(std::floor(static_cast<double>(height_) * ratio2 + 0.5));
|
||||
else
|
||||
height_ = int (width_ / ratio2 + 0.5);
|
||||
height_ = static_cast<unsigned>(std::floor(static_cast<double>(width_) / ratio2 + 0.5));
|
||||
break;
|
||||
case SHRINK_CANVAS:
|
||||
if (ratio2 > ratio1)
|
||||
height_ = int (width_ / ratio2 + 0.5);
|
||||
height_ = static_cast<unsigned>(std::floor(static_cast<double>(width_) / ratio2 + 0.5));
|
||||
else
|
||||
width_ = static_cast<int>(height_ * ratio2 + 0.5);
|
||||
width_ = static_cast<unsigned>(std::floor(static_cast<double>(height_) * ratio2 + 0.5));
|
||||
break;
|
||||
default:
|
||||
if (ratio2 > ratio1)
|
||||
|
@ -536,7 +536,7 @@ void Map::pan(int x,int y)
|
|||
{
|
||||
int dx = x - int(0.5 * width_);
|
||||
int dy = int(0.5 * height_) - y;
|
||||
double s = width_/current_extent_.width();
|
||||
double s = static_cast<double>(width_)/current_extent_.width();
|
||||
double minx = current_extent_.minx() + dx/s;
|
||||
double maxx = current_extent_.maxx() + dx/s;
|
||||
double miny = current_extent_.miny() + dy/s;
|
||||
|
@ -553,7 +553,7 @@ void Map::pan_and_zoom(int x,int y,double factor)
|
|||
double Map::scale() const
|
||||
{
|
||||
if (width_>0)
|
||||
return current_extent_.width()/width_;
|
||||
return current_extent_.width()/static_cast<double>(width_);
|
||||
return current_extent_.width();
|
||||
}
|
||||
|
||||
|
@ -605,7 +605,7 @@ featureset_ptr Map::query_point(unsigned index, double x, double y) const
|
|||
<< "' into layer srs for tolerance calculation";
|
||||
throw std::runtime_error(s.str());
|
||||
}
|
||||
double tol = (map_ex.maxx() - map_ex.minx()) / width_ * 3;
|
||||
double tol = (map_ex.maxx() - map_ex.minx()) / static_cast<double>(width_) * 3;
|
||||
featureset_ptr fs = ds->features_at_point(mapnik::coord2d(x,y), tol);
|
||||
MAPNIK_LOG_DEBUG(map) << "map: Query at point tol=" << tol << "(" << x << "," << y << ")";
|
||||
if (fs)
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
// mapnik
|
||||
#include <mapnik/geometry.hpp>
|
||||
#include <mapnik/util/conversions.hpp>
|
||||
#include <mapnik/util/trim.hpp>
|
||||
|
||||
// boost
|
||||
#include <boost/detail/lightweight_test.hpp>
|
||||
|
@ -112,7 +113,7 @@ int main(int argc, char** argv)
|
|||
parse_geom(geom,parts[1]);
|
||||
//std::clog << dump_path(geom) << "\n";
|
||||
// third part is expected, clipped geometry
|
||||
BOOST_TEST_EQ(clip_line(bbox,geom),parts[2]);
|
||||
BOOST_TEST_EQ(clip_line(bbox,geom),mapnik::util::trim_copy(parts[2]));
|
||||
}
|
||||
stream.close();
|
||||
}
|
||||
|
|
|
@ -570,6 +570,17 @@ if 'csv' in mapnik.DatasourceCache.plugin_names():
|
|||
eq_(desc['geometry_type'],mapnik.DataGeometryType.Point)
|
||||
eq_(len(ds.all_features()),8)
|
||||
|
||||
def test_manually_supplied_extent(**kwargs):
|
||||
csv_string = '''
|
||||
wkt,Name
|
||||
'''
|
||||
ds = mapnik.Datasource(**{"type":"csv","extent":"-180,-90,180,90","inline":csv_string})
|
||||
b = ds.envelope()
|
||||
eq_(b.minx,-180)
|
||||
eq_(b.miny,-90)
|
||||
eq_(b.maxx,180)
|
||||
eq_(b.maxy,90)
|
||||
|
||||
if __name__ == "__main__":
|
||||
setup()
|
||||
[eval(run)(visual=True) for run in dir() if 'test_' in run]
|
||||
|
|
|
@ -0,0 +1,137 @@
|
|||
{
|
||||
"keys": [
|
||||
"",
|
||||
"61"
|
||||
],
|
||||
"data": {},
|
||||
"grid": [
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!! !!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "
|
||||
]
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 595 B |
Binary file not shown.
After Width: | Height: | Size: 596 B |
Binary file not shown.
After Width: | Height: | Size: 632 B |
Binary file not shown.
After Width: | Height: | Size: 636 B |
80
tests/visual_tests/styles/line-opacity-multi-render.xml
Normal file
80
tests/visual_tests/styles/line-opacity-multi-render.xml
Normal file
|
@ -0,0 +1,80 @@
|
|||
<Map srs="+init=epsg:3857" maximum-extent="-20037508.34,-20037508.34,20037508.34,20037508.34">
|
||||
<Style name="polygon" filter-mode="first" >
|
||||
<Rule>
|
||||
<LineSymbolizer stroke-width="50" stroke-opacity="0.01" />
|
||||
</Rule>
|
||||
</Style>
|
||||
|
||||
<Layer name="polygon" srs="+init=epsg:3857">
|
||||
<StyleName>polygon</StyleName>
|
||||
<Datasource>
|
||||
<Parameter name="type">csv</Parameter>
|
||||
<Parameter name="extent"><![CDATA[-20037508.3,-20037508.3,20037508.3,20037508.3]]></Parameter>
|
||||
<Parameter name="inline">
|
||||
wkt
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))"
|
||||
"POLYGON((-14452779.6317309 -7962451.4552494,-14452779.6317309 12037548.5447506,5547220.36826906 12037548.5447506,5547220.36826906 -7962451.4552494,-14452779.6317309 -7962451.4552494))
|
||||
</Parameter>
|
||||
</Datasource>
|
||||
</Layer>
|
||||
|
||||
</Map>
|
|
@ -213,6 +213,7 @@ files = {
|
|||
'colorize-alpha3':{'sizes':[(512,512)]},
|
||||
'image-filters-galore':{'sizes':[(512,512)]},
|
||||
'image-filters-multi-blur':{'sizes':[(512,512)]},
|
||||
'line-opacity-multi-render':{'sizes':[(512,512)]}
|
||||
}
|
||||
|
||||
class Reporting:
|
||||
|
|
Loading…
Reference in a new issue