Compare commits
197 commits
Author | SHA1 | Date | |
---|---|---|---|
|
81eff1025d | ||
|
264407b259 | ||
|
ed39efcfcb | ||
|
1b0f4d663c | ||
|
718a8b3b5a | ||
|
0df0872f79 | ||
|
186d62006b | ||
|
fb35d1815f | ||
|
92d6e79a75 | ||
|
e2990ac3b1 | ||
|
10daf73f56 | ||
|
abd1c441de | ||
|
8408b56623 | ||
|
22ab62f16d | ||
|
25fe253f12 | ||
|
0025225e44 | ||
|
40cb3595a5 | ||
|
def040a42d | ||
|
f0936f2672 | ||
|
d8358ffdd5 | ||
|
c28aa7272b | ||
|
0a6beede62 | ||
|
1c3a958205 | ||
|
b4f018a676 | ||
|
73487cdaae | ||
|
9efb67bf9e | ||
|
e8628b2e21 | ||
|
9cbf97f124 | ||
|
f75d3e7b2f | ||
|
e957a75d8d | ||
|
a27b886e19 | ||
|
7c4325fd76 | ||
|
2ce8900cf1 | ||
|
a35acd2a41 | ||
|
82df66e9c3 | ||
|
c4684e09cd | ||
|
ea61c5728d | ||
|
5a770d6a96 | ||
|
ad768389ab | ||
|
f5398e16de | ||
|
779c5c2376 | ||
|
6c936f1ede | ||
|
420e9bbbf6 | ||
|
bad6aa9d43 | ||
|
40a0326130 | ||
|
6e8f02c343 | ||
|
bb569bae3b | ||
|
a54f621d98 | ||
|
e2ea6e487d | ||
|
b8d497844a | ||
|
c2385437f1 | ||
|
faa87d42e5 | ||
|
b0cfbdf2b7 | ||
|
648dea63ac | ||
|
afe770a708 | ||
|
c1e47cc5df | ||
|
9c548771ce | ||
|
5ae55a07e2 | ||
|
22a8946f62 | ||
|
5e96d5d54b | ||
|
c0e8fba619 | ||
|
b221d571c5 | ||
|
5103e84ade | ||
|
c7cca17494 | ||
|
3d5655f7e5 | ||
|
bfedde3cc6 | ||
|
5651a8b9db | ||
|
3db8d34117 | ||
|
7e725e59e1 | ||
|
a2ee09646e | ||
|
ef6cabfa8a | ||
|
df205e9b34 | ||
|
36bd809361 | ||
|
743404d88c | ||
|
14b6ba951e | ||
|
f939a8f8e7 | ||
|
d62365cd64 | ||
|
f3495c3e67 | ||
|
542deba997 | ||
|
0be6c2d7e1 | ||
|
422f3bd8b0 | ||
|
a616e9d7e7 | ||
|
a968f972e0 | ||
|
b302929fb4 | ||
|
e458959ea3 | ||
|
f566df3fca | ||
|
cb3281e3a4 | ||
|
9f2ceb71f1 | ||
|
df8aa14f9a | ||
|
60974742e7 | ||
|
3032c836a8 | ||
|
435ebbad91 | ||
|
ce5d5e4b4c | ||
|
e8c3c0bad9 | ||
|
35f7314e92 | ||
|
6c3301d8eb | ||
|
9d74adb871 | ||
|
b28ca1ff08 | ||
|
8553514f23 | ||
|
480a8f3d48 | ||
|
106ecb2b9c | ||
|
e9d1ea8032 | ||
|
5a481fcf2d | ||
|
60b72524c1 | ||
|
9253ce10f8 | ||
|
6bfd920c6c | ||
|
d75fb237b1 | ||
|
fdf86c7411 | ||
|
7afc2754cb | ||
|
ca2c0d028d | ||
|
bf276591eb | ||
|
dd02192932 | ||
|
fa4d1e4ada | ||
|
798dd3124b | ||
|
6eea010c6a | ||
|
916a30124b | ||
|
417f1c7c3f | ||
|
861f2677e0 | ||
|
dc61b2ac12 | ||
|
540f70a1f4 | ||
|
7957c05df0 | ||
|
48f920ab95 | ||
|
5fe68f6d1b | ||
|
136e97edd4 | ||
|
f131040dff | ||
|
c07aeac4c2 | ||
|
f06c089067 | ||
|
bdd800b6fc | ||
|
a1cab08d77 | ||
|
7c7da1a2fd | ||
|
4b90c96600 | ||
|
cda6238325 | ||
|
42698d76b8 | ||
|
474b3c0d6d | ||
|
b70997fe73 | ||
|
4007104bf1 | ||
|
90396b4359 | ||
|
a96fc9e9cc | ||
|
19bd20f8a6 | ||
|
1f81ee09d4 | ||
|
8b97c8a7d1 | ||
|
8c03ea3d68 | ||
|
911993512a | ||
|
018e33cda8 | ||
|
49c01f8449 | ||
|
7960be55fe | ||
|
803f8591e3 | ||
|
5856822455 | ||
|
fa3971b99f | ||
|
ce948e20e7 | ||
|
a56389a093 | ||
|
8c5049e0f8 | ||
|
96a93c4b14 | ||
|
8457f8a852 | ||
|
8a0760aaaf | ||
|
a7e6f3a24b | ||
|
49feda9b13 | ||
|
4903689cf7 | ||
|
cbdd112223 | ||
|
d0a509ccf4 | ||
|
5f3e11c33a | ||
|
9be034e753 | ||
|
93e1b74c82 | ||
|
c87cf109a6 | ||
|
dc7fc35446 | ||
|
68f4906088 | ||
|
f56121377e | ||
|
30c6bc53fb | ||
|
ab85fb4705 | ||
|
6612567fd3 | ||
|
e915521015 | ||
|
d5ecf81ce2 | ||
|
5a1995e051 | ||
|
468ead3370 | ||
|
bb67ae0fb7 | ||
|
ed3afe5b86 | ||
|
bb27a4282b | ||
|
050b51bf7d | ||
|
2b49af9627 | ||
|
5b7a9b9b2d | ||
|
5bfd260859 | ||
|
104e40c376 | ||
|
63bff33f35 | ||
|
0ca9c5c0aa | ||
|
b128de321b | ||
|
87e69a20c3 | ||
|
461c3dab18 | ||
|
e31411bd21 | ||
|
3684db211c | ||
|
a7ab1eeb66 | ||
|
94e78f2ae4 | ||
|
91f57bda73 | ||
|
f71d1c0abc | ||
|
a4985b3b79 | ||
|
4ad7b13799 | ||
|
3bcf54a693 | ||
|
3339255b18 |
866 changed files with 8782 additions and 88966 deletions
41
.travis.yml
41
.travis.yml
|
@ -1,23 +1,34 @@
|
||||||
language: cpp
|
language: cpp
|
||||||
|
|
||||||
|
sudo: false
|
||||||
|
|
||||||
addons:
|
addons:
|
||||||
postgresql: "9.3"
|
postgresql: "9.3"
|
||||||
|
|
||||||
compiler:
|
matrix:
|
||||||
- clang
|
include:
|
||||||
- gcc
|
- os: osx
|
||||||
|
compiler: clang
|
||||||
|
env: JOBS=4
|
||||||
|
- os: linux
|
||||||
|
compiler: clang
|
||||||
|
env: JOBS=4
|
||||||
|
- os: linux
|
||||||
|
compiler: gcc
|
||||||
|
env: JOBS=2
|
||||||
|
|
||||||
before_install:
|
install:
|
||||||
- echo 'yes' | sudo add-apt-repository ppa:mapnik/boost-backports-1-54
|
- if [[ $(uname -s) == 'Linux' ]]; then psql -U postgres -c 'create database template_postgis;' -U postgres; psql -U postgres -c 'create extension postgis;' -d template_postgis -U postgres; fi;
|
||||||
- sudo apt-get update -qq
|
- if [[ $(uname -s) == 'Darwin' ]]; then brew install bash; export PATH="$(brew --prefix)/bin":${PATH}; fi;
|
||||||
- sudo apt-get install -qq make libboost-dev libboost-filesystem-dev libboost-program-options-dev libboost-python-dev libboost-regex-dev libboost-system-dev libboost-thread-dev python-nose libicu-dev libpng-dev libjpeg-dev libtiff-dev libwebp-dev libz-dev libfreetype6-dev libxml2-dev libproj-dev libcairo-dev python-cairo-dev libsqlite3-dev postgresql-server-dev*
|
- echo `which bash`
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- ./configure CXX=${CXX} CC=${CC} DEBUG=False DEMO=False BINDINGS='python' CPP_TESTS=True CAIRO=True FAST=True && JOBS=2 make
|
- source bootstrap.sh
|
||||||
- make test-local
|
# also install pycairo
|
||||||
|
- wget https://gist.githubusercontent.com/springmeyer/0833fa43794838889139/raw/build_pycairo.sh && chmod +x build_pycairo.sh && ./build_pycairo.sh
|
||||||
notifications:
|
- export PYTHONPATH=$(pwd)/mason_packages/.link/lib/python2.7/site-packages:${PYTHONPATH}
|
||||||
irc:
|
- ./configure
|
||||||
channels:
|
- cat config.log
|
||||||
- "irc.freenode.org#mapnik"
|
- make
|
||||||
use_notice: true
|
- make test
|
||||||
|
- make bench
|
||||||
|
|
|
@ -40,9 +40,6 @@ Summary: TODO
|
||||||
|
|
||||||
- Moved `label-position-tolerance` from unsigned type to double
|
- Moved `label-position-tolerance` from unsigned type to double
|
||||||
|
|
||||||
- Default PNG encoding method when `png` is supplied is now `png8:m=h`, so paletted png using hextree color quantization (#2028)
|
|
||||||
Use `png32` now for full color png. More details at https://github.com/mapnik/mapnik/wiki/Image-IO.
|
|
||||||
|
|
||||||
- Added support for more seamless blurring by rendering to a larger internal image to avoid edge effects (#1478)
|
- Added support for more seamless blurring by rendering to a larger internal image to avoid edge effects (#1478)
|
||||||
|
|
||||||
- Fixed rendering of large shapes at high zoom levels, which might dissapear due to integer overflow. This
|
- Fixed rendering of large shapes at high zoom levels, which might dissapear due to integer overflow. This
|
||||||
|
|
|
@ -7,6 +7,12 @@ To configure and build Mapnik do:
|
||||||
./configure
|
./configure
|
||||||
make
|
make
|
||||||
|
|
||||||
|
To use a Python interpreter that is not named `python` for your build, do
|
||||||
|
something like the following instead:
|
||||||
|
|
||||||
|
PYTHON=python2 ./configure
|
||||||
|
make PYTHON=python2
|
||||||
|
|
||||||
NOTE: the above will not work on windows, rather see https://github.com/mapnik/mapnik/wiki/WindowsInstallation
|
NOTE: the above will not work on windows, rather see https://github.com/mapnik/mapnik/wiki/WindowsInstallation
|
||||||
|
|
||||||
Then to run the tests locally (without needing to install):
|
Then to run the tests locally (without needing to install):
|
||||||
|
|
58
Makefile
58
Makefile
|
@ -1,43 +1,36 @@
|
||||||
UNAME := $(shell uname)
|
|
||||||
LINK_FIX=LD_LIBRARY_PATH
|
|
||||||
ifeq ($(UNAME), Darwin)
|
|
||||||
LINK_FIX=DYLD_LIBRARY_PATH
|
|
||||||
else
|
|
||||||
endif
|
|
||||||
|
|
||||||
OS:=$(shell uname -s)
|
OS := $(shell uname -s)
|
||||||
|
|
||||||
|
PYTHON = python
|
||||||
|
|
||||||
ifeq ($(JOBS),)
|
ifeq ($(JOBS),)
|
||||||
JOBS:=1
|
JOBS:=1
|
||||||
ifeq ($(OS),Linux)
|
|
||||||
JOBS:=$(shell grep -c ^processor /proc/cpuinfo)
|
|
||||||
endif
|
|
||||||
ifeq ($(OS),Darwin)
|
|
||||||
JOBS:=$(shell sysctl -n hw.ncpu)
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: mapnik
|
all: mapnik
|
||||||
|
|
||||||
install:
|
install:
|
||||||
python scons/scons.py -j$(JOBS) --config=cache --implicit-cache --max-drift=1 install
|
$(PYTHON) scons/scons.py -j$(JOBS) --config=cache --implicit-cache --max-drift=1 install
|
||||||
|
|
||||||
mapnik:
|
mapnik:
|
||||||
python scons/scons.py -j$(JOBS) --config=cache --implicit-cache --max-drift=1
|
$(PYTHON) scons/scons.py -j$(JOBS) --config=cache --implicit-cache --max-drift=1
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
@python scons/scons.py -j$(JOBS) -c --config=cache --implicit-cache --max-drift=1
|
@$(PYTHON) scons/scons.py -j$(JOBS) -c --config=cache --implicit-cache --max-drift=1
|
||||||
@if test -e ".sconsign.dblite"; then rm ".sconsign.dblite"; fi
|
@if test -e ".sconsign.dblite"; then rm ".sconsign.dblite"; fi
|
||||||
@if test -e "config.log"; then rm "config.log"; fi
|
@if test -e "config.log"; then rm "config.log"; fi
|
||||||
|
@if test -e "config.cache"; then rm "config.cache"; fi
|
||||||
@if test -e ".sconf_temp/"; then rm -r ".sconf_temp/"; fi
|
@if test -e ".sconf_temp/"; then rm -r ".sconf_temp/"; fi
|
||||||
@find ./ -name "*.pyc" -exec rm {} \;
|
@find ./ -name "*.pyc" -exec rm {} \;
|
||||||
@find ./ -name "*.os" -exec rm {} \;
|
@find ./ -name "*.os" -exec rm {} \;
|
||||||
|
@find ./ -name "*.dylib" -exec rm {} \;
|
||||||
|
@find ./ -name "*.so" -exec rm {} \;
|
||||||
@find ./ -name "*.o" -exec rm {} \;
|
@find ./ -name "*.o" -exec rm {} \;
|
||||||
|
@find ./ -name "*.a" -exec rm {} \;
|
||||||
@find ./ -name "*.pyc" -exec rm {} \;
|
@find ./ -name "*.pyc" -exec rm {} \;
|
||||||
@if test -e "bindings/python/mapnik/paths.py"; then rm "bindings/python/mapnik/paths.py"; fi
|
@if test -e "bindings/python/mapnik/paths.py"; then rm "bindings/python/mapnik/paths.py"; fi
|
||||||
|
|
||||||
distclean:
|
distclean:
|
||||||
@if test -e "config.cache"; then rm "config.cache"; fi
|
|
||||||
if test -e "config.py"; then mv "config.py" "config.py.backup"; fi
|
if test -e "config.py"; then mv "config.py" "config.py.backup"; fi
|
||||||
|
|
||||||
reset: distclean
|
reset: distclean
|
||||||
|
@ -46,35 +39,34 @@ rebuild:
|
||||||
make uninstall && make clean && time make && make install
|
make uninstall && make clean && time make && make install
|
||||||
|
|
||||||
uninstall:
|
uninstall:
|
||||||
@python scons/scons.py -j$(JOBS) --config=cache --implicit-cache --max-drift=1 uninstall
|
@$(PYTHON) scons/scons.py -j$(JOBS) --config=cache --implicit-cache --max-drift=1 uninstall
|
||||||
|
|
||||||
test:
|
test:
|
||||||
@ ./run_tests
|
./run_tests
|
||||||
|
|
||||||
test-local:
|
test-visual:
|
||||||
@echo "*** Boostrapping local test environment..."
|
bash -c "source ./localize.sh && python tests/visual_tests/test.py -q"
|
||||||
@export ${LINK_FIX}=`pwd`/src:${${LINK_FIX}} && \
|
|
||||||
export PATH=`pwd`/utils/mapnik-config/:${PATH} && \
|
test-python:
|
||||||
export PYTHONPATH=`pwd`/bindings/python/:${PYTHONPATH} && \
|
bash -c "source ./localize.sh && python tests/run_tests.py -q"
|
||||||
export MAPNIK_FONT_DIRECTORY=`pwd`/fonts/dejavu-fonts-ttf-2.33/ttf/ && \
|
|
||||||
export MAPNIK_INPUT_PLUGINS_DIRECTORY=`pwd`/plugins/input/ && \
|
test-cpp:
|
||||||
make test
|
./tests/cpp_tests/run
|
||||||
|
|
||||||
|
check: test
|
||||||
|
|
||||||
bench:
|
bench:
|
||||||
@export ${LINK_FIX}=`pwd`/src:${${LINK_FIX}} && \
|
|
||||||
./benchmark/run
|
./benchmark/run
|
||||||
|
|
||||||
check: test-local
|
|
||||||
|
|
||||||
demo:
|
demo:
|
||||||
@echo "*** Running rundemo.cpp…"
|
|
||||||
cd demo/c++; ./rundemo `mapnik-config --prefix`
|
cd demo/c++; ./rundemo `mapnik-config --prefix`
|
||||||
|
|
||||||
pep8:
|
pep8:
|
||||||
# https://gist.github.com/1903033
|
# https://gist.github.com/1903033
|
||||||
# gsed on osx
|
# gsed on osx
|
||||||
@pep8 -r --select=W293 -q --filename=*.py `pwd`/tests/ | xargs gsed -i 's/^[ \r\t]*$//'
|
@pep8 -r --select=W293 -q --filename=*.py `pwd`/tests/ | xargs gsed -i 's/^[ \r\t]*$$//'
|
||||||
@pep8 -r --select=W391 -q --filename=*.py `pwd`/tests/ | xargs gsed -i -e :a -e '/^\n*$/{$d;N;ba' -e '}'
|
@pep8 -r --select=W391 -q --filename=*.py `pwd`/tests/ | xargs gsed -i -e :a -e '/^\n*$$/{$$d;N;ba' -e '}'
|
||||||
|
@pep8 -r --select=W391 -q --filename=*.py `pwd`/tests/ | xargs ged -i '/./,/^$$/!d'
|
||||||
|
|
||||||
grind:
|
grind:
|
||||||
@for FILE in tests/cpp_tests/*-bin; do \
|
@for FILE in tests/cpp_tests/*-bin; do \
|
||||||
|
|
123
SConstruct
123
SConstruct
|
@ -85,12 +85,12 @@ pretty_dep_names = {
|
||||||
'm':'Basic math library, part of C++ stlib',
|
'm':'Basic math library, part of C++ stlib',
|
||||||
'pkg-config':'pkg-config tool | more info: http://pkg-config.freedesktop.org',
|
'pkg-config':'pkg-config tool | more info: http://pkg-config.freedesktop.org',
|
||||||
'pg_config':'pg_config program | try setting PG_CONFIG SCons option',
|
'pg_config':'pg_config program | try setting PG_CONFIG SCons option',
|
||||||
'xml2-config':'xml2-config program | try setting XML2_CONFIG SCons option',
|
'xml2-config':'xml2-config program | try setting XML2_CONFIG SCons option or avoid the need for xml2-config command by configuring with XML2_LIBS & XML2_INCLUDES',
|
||||||
'libxml2':'libxml2 library | try setting XML2_CONFIG SCons option to point to location of xml2-config program',
|
'libxml2':'libxml2 library | try setting XML2_CONFIG SCons option to point to location of xml2-config program or configure with XML2_LIBS & XML2_INCLUDES',
|
||||||
'gdal-config':'gdal-config program | try setting GDAL_CONFIG SCons option',
|
'gdal-config':'gdal-config program | try setting GDAL_CONFIG SCons option',
|
||||||
'freetype-config':'freetype-config program | try setting FREETYPE_CONFIG SCons option',
|
'freetype-config':'freetype-config program | try setting FREETYPE_CONFIG SCons option or configure with FREETYPE_LIBS & FREETYPE_INCLUDES',
|
||||||
|
'freetype':'libfreetype library | try setting FREETYPE_CONFIG SCons option or configure with FREETYPE_LIBS & FREETYPE_INCLUDES',
|
||||||
'osm':'more info: https://github.com/mapnik/mapnik/wiki/OsmPlugin',
|
'osm':'more info: https://github.com/mapnik/mapnik/wiki/OsmPlugin',
|
||||||
'curl':'libcurl is required for the "osm" plugin - more info: https://github.com/mapnik/mapnik/wiki/OsmPlugin',
|
|
||||||
'boost_regex_icu':'libboost_regex built with optional ICU unicode support is needed for unicode regex support in mapnik.',
|
'boost_regex_icu':'libboost_regex built with optional ICU unicode support is needed for unicode regex support in mapnik.',
|
||||||
'sqlite_rtree':'The SQLite plugin requires libsqlite3 built with RTREE support (-DSQLITE_ENABLE_RTREE=1)',
|
'sqlite_rtree':'The SQLite plugin requires libsqlite3 built with RTREE support (-DSQLITE_ENABLE_RTREE=1)',
|
||||||
'pgsql2sqlite_rtree':'The pgsql2sqlite program requires libsqlite3 built with RTREE support (-DSQLITE_ENABLE_RTREE=1)'
|
'pgsql2sqlite_rtree':'The pgsql2sqlite program requires libsqlite3 built with RTREE support (-DSQLITE_ENABLE_RTREE=1)'
|
||||||
|
@ -101,6 +101,7 @@ pretty_dep_names = {
|
||||||
PLUGINS = { # plugins with external dependencies
|
PLUGINS = { # plugins with external dependencies
|
||||||
# configured by calling project, hence 'path':None
|
# configured by calling project, hence 'path':None
|
||||||
'postgis': {'default':True,'path':None,'inc':'libpq-fe.h','lib':'pq','lang':'C'},
|
'postgis': {'default':True,'path':None,'inc':'libpq-fe.h','lib':'pq','lang':'C'},
|
||||||
|
'pgraster': {'default':True,'path':None,'inc':'libpq-fe.h','lib':'pq','lang':'C'},
|
||||||
'gdal': {'default':True,'path':None,'inc':'gdal_priv.h','lib':'gdal','lang':'C++'},
|
'gdal': {'default':True,'path':None,'inc':'gdal_priv.h','lib':'gdal','lang':'C++'},
|
||||||
'ogr': {'default':True,'path':None,'inc':'ogrsf_frmts.h','lib':'gdal','lang':'C++'},
|
'ogr': {'default':True,'path':None,'inc':'ogrsf_frmts.h','lib':'gdal','lang':'C++'},
|
||||||
# configured with custom paths, hence 'path': PREFIX/INCLUDES/LIBS
|
# configured with custom paths, hence 'path': PREFIX/INCLUDES/LIBS
|
||||||
|
@ -109,7 +110,7 @@ PLUGINS = { # plugins with external dependencies
|
||||||
'rasterlite': {'default':False,'path':'RASTERLITE','inc':['sqlite3.h','rasterlite.h'],'lib':'rasterlite','lang':'C'},
|
'rasterlite': {'default':False,'path':'RASTERLITE','inc':['sqlite3.h','rasterlite.h'],'lib':'rasterlite','lang':'C'},
|
||||||
|
|
||||||
# todo: osm plugin does also depend on libxml2 (but there is a separate check for that)
|
# todo: osm plugin does also depend on libxml2 (but there is a separate check for that)
|
||||||
'osm': {'default':False,'path':None,'inc':'curl/curl.h','lib':'curl','lang':'C'},
|
'osm': {'default':False,'path':None,'inc':None,'lib':None,'lang':'C'},
|
||||||
|
|
||||||
# plugins without external dependencies requiring CheckLibWithHeader...
|
# plugins without external dependencies requiring CheckLibWithHeader...
|
||||||
'shape': {'default':True,'path':None,'inc':None,'lib':None,'lang':'C++'},
|
'shape': {'default':True,'path':None,'inc':None,'lib':None,'lang':'C++'},
|
||||||
|
@ -312,6 +313,7 @@ opts.AddVariables(
|
||||||
('PATH', 'A custom path (or multiple paths divided by ":") to append to the $PATH env to prioritize usage of command line programs (if multiple are present on the system)', ''),
|
('PATH', 'A custom path (or multiple paths divided by ":") to append to the $PATH env to prioritize usage of command line programs (if multiple are present on the system)', ''),
|
||||||
('PATH_REMOVE', 'A path prefix to exclude from all known command and compile paths (create multiple excludes separated by :)', ''),
|
('PATH_REMOVE', 'A path prefix to exclude from all known command and compile paths (create multiple excludes separated by :)', ''),
|
||||||
('PATH_REPLACE', 'Two path prefixes (divided with a :) to search/replace from all known command and compile paths', ''),
|
('PATH_REPLACE', 'Two path prefixes (divided with a :) to search/replace from all known command and compile paths', ''),
|
||||||
|
('MAPNIK_NAME', 'Name of library', 'mapnik'),
|
||||||
|
|
||||||
# Boost variables
|
# Boost variables
|
||||||
# default is '/usr/include', see FindBoost method below
|
# default is '/usr/include', see FindBoost method below
|
||||||
|
@ -345,6 +347,10 @@ opts.AddVariables(
|
||||||
BoolVariable('PROJ', 'Build Mapnik with proj4 support to enable transformations between many different projections', 'True'),
|
BoolVariable('PROJ', 'Build Mapnik with proj4 support to enable transformations between many different projections', 'True'),
|
||||||
PathVariable('PROJ_INCLUDES', 'Search path for PROJ.4 include files', '/usr/include', PathVariable.PathAccept),
|
PathVariable('PROJ_INCLUDES', 'Search path for PROJ.4 include files', '/usr/include', PathVariable.PathAccept),
|
||||||
PathVariable('PROJ_LIBS', 'Search path for PROJ.4 library files', '/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
|
PathVariable('PROJ_LIBS', 'Search path for PROJ.4 library files', '/usr/' + LIBDIR_SCHEMA_DEFAULT, PathVariable.PathAccept),
|
||||||
|
('FREETYPE_INCLUDES', 'Search path for Freetype include files', ''),
|
||||||
|
('FREETYPE_LIBS', 'Search path for Freetype library files', ''),
|
||||||
|
('XML2_INCLUDES', 'Search path for libxml2 include files', ''),
|
||||||
|
('XML2_LIBS', 'Search path for libxml2 library files', ''),
|
||||||
('PKG_CONFIG_PATH', 'Use this path to point pkg-config to .pc files instead of the PKG_CONFIG_PATH environment setting',''),
|
('PKG_CONFIG_PATH', 'Use this path to point pkg-config to .pc files instead of the PKG_CONFIG_PATH environment setting',''),
|
||||||
|
|
||||||
# Variables affecting rendering back-ends
|
# Variables affecting rendering back-ends
|
||||||
|
@ -437,7 +443,9 @@ pickle_store = [# Scons internal variables
|
||||||
'PYTHON_SYS_PREFIX',
|
'PYTHON_SYS_PREFIX',
|
||||||
'COLOR_PRINT',
|
'COLOR_PRINT',
|
||||||
'HAS_CAIRO',
|
'HAS_CAIRO',
|
||||||
|
'MAPNIK_HAS_DLFCN',
|
||||||
'HAS_PYCAIRO',
|
'HAS_PYCAIRO',
|
||||||
|
'PYCAIRO_PATHS',
|
||||||
'HAS_LIBXML2',
|
'HAS_LIBXML2',
|
||||||
'PYTHON_IS_64BIT',
|
'PYTHON_IS_64BIT',
|
||||||
'SAMPLE_INPUT_PLUGINS',
|
'SAMPLE_INPUT_PLUGINS',
|
||||||
|
@ -487,15 +495,18 @@ HELP_REQUESTED = False
|
||||||
if ('-h' in command_line_args) or ('--help' in command_line_args):
|
if ('-h' in command_line_args) or ('--help' in command_line_args):
|
||||||
HELP_REQUESTED = True
|
HELP_REQUESTED = True
|
||||||
|
|
||||||
if ('install' not in command_line_args) and ('-c' in command_line_args) or ('--clean' in command_line_args):
|
|
||||||
HELP_REQUESTED = True
|
|
||||||
|
|
||||||
if 'configure' in command_line_args and not HELP_REQUESTED:
|
if 'configure' in command_line_args and not HELP_REQUESTED:
|
||||||
force_configure = True
|
force_configure = True
|
||||||
elif HELP_REQUESTED:
|
elif HELP_REQUESTED:
|
||||||
# to ensure config gets skipped when help is requested
|
# to ensure config gets skipped when help is requested
|
||||||
preconfigured = True
|
preconfigured = True
|
||||||
|
|
||||||
|
# need no-op for clean on fresh checkout
|
||||||
|
# https://github.com/mapnik/mapnik/issues/2112
|
||||||
|
if not os.path.exists(SCONS_LOCAL_LOG) and ('-c' in command_line_args or '--clean' in command_line_args):
|
||||||
|
print 'all good: nothing to clean, but you might want to run "make distclean"'
|
||||||
|
Exit(0)
|
||||||
|
|
||||||
# initially populate environment with defaults and any possible custom arguments
|
# initially populate environment with defaults and any possible custom arguments
|
||||||
opts.Update(env)
|
opts.Update(env)
|
||||||
|
|
||||||
|
@ -861,6 +872,24 @@ int main()
|
||||||
rm_path(item,'CPPPATH',context.env)
|
rm_path(item,'CPPPATH',context.env)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
def CheckHasDlfcn(context, silent=False):
|
||||||
|
if not silent:
|
||||||
|
context.Message('Checking for dlfcn.h support ... ')
|
||||||
|
ret = context.TryCompile("""
|
||||||
|
|
||||||
|
#include <dlfcn.h>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
""", '.cpp')
|
||||||
|
if silent:
|
||||||
|
context.did_show_result=1
|
||||||
|
context.Result(ret)
|
||||||
|
return ret
|
||||||
|
|
||||||
def GetBoostLibVersion(context):
|
def GetBoostLibVersion(context):
|
||||||
ret = context.TryRun("""
|
ret = context.TryRun("""
|
||||||
|
|
||||||
|
@ -1015,6 +1044,7 @@ conf_tests = { 'prioritize_paths' : prioritize_paths,
|
||||||
'FindBoost' : FindBoost,
|
'FindBoost' : FindBoost,
|
||||||
'CheckBoost' : CheckBoost,
|
'CheckBoost' : CheckBoost,
|
||||||
'CheckCairoHasFreetype' : CheckCairoHasFreetype,
|
'CheckCairoHasFreetype' : CheckCairoHasFreetype,
|
||||||
|
'CheckHasDlfcn' : CheckHasDlfcn,
|
||||||
'GetBoostLibVersion' : GetBoostLibVersion,
|
'GetBoostLibVersion' : GetBoostLibVersion,
|
||||||
'GetMapnikLibVersion' : GetMapnikLibVersion,
|
'GetMapnikLibVersion' : GetMapnikLibVersion,
|
||||||
'parse_config' : parse_config,
|
'parse_config' : parse_config,
|
||||||
|
@ -1078,6 +1108,7 @@ if not preconfigured:
|
||||||
env['CAIRO_ALL_LIBS'] = []
|
env['CAIRO_ALL_LIBS'] = []
|
||||||
env['CAIRO_CPPPATHS'] = []
|
env['CAIRO_CPPPATHS'] = []
|
||||||
env['HAS_PYCAIRO'] = False
|
env['HAS_PYCAIRO'] = False
|
||||||
|
env['PYCAIRO_PATHS'] = []
|
||||||
env['HAS_LIBXML2'] = False
|
env['HAS_LIBXML2'] = False
|
||||||
env['LIBMAPNIK_LIBS'] = []
|
env['LIBMAPNIK_LIBS'] = []
|
||||||
env['LIBMAPNIK_LINKFLAGS'] = []
|
env['LIBMAPNIK_LINKFLAGS'] = []
|
||||||
|
@ -1121,9 +1152,9 @@ if not preconfigured:
|
||||||
env['MAPNIK_FONTS_DEST'] = os.path.join(env['MAPNIK_LIB_DIR_DEST'],'fonts')
|
env['MAPNIK_FONTS_DEST'] = os.path.join(env['MAPNIK_LIB_DIR_DEST'],'fonts')
|
||||||
|
|
||||||
if env['LINKING'] == 'static':
|
if env['LINKING'] == 'static':
|
||||||
env['MAPNIK_LIB_NAME'] = '${LIBPREFIX}mapnik${LIBSUFFIX}'
|
env['MAPNIK_LIB_NAME'] = '${LIBPREFIX}${MAPNIK_NAME}${LIBSUFFIX}'
|
||||||
else:
|
else:
|
||||||
env['MAPNIK_LIB_NAME'] = '${SHLIBPREFIX}mapnik${SHLIBSUFFIX}'
|
env['MAPNIK_LIB_NAME'] = '${SHLIBPREFIX}${MAPNIK_NAME}${SHLIBSUFFIX}'
|
||||||
|
|
||||||
if env['PKG_CONFIG_PATH']:
|
if env['PKG_CONFIG_PATH']:
|
||||||
env['ENV']['PKG_CONFIG_PATH'] = os.path.realpath(env['PKG_CONFIG_PATH'])
|
env['ENV']['PKG_CONFIG_PATH'] = os.path.realpath(env['PKG_CONFIG_PATH'])
|
||||||
|
@ -1178,12 +1209,26 @@ if not preconfigured:
|
||||||
env.AppendUnique(CPPPATH = os.path.realpath(inc_path))
|
env.AppendUnique(CPPPATH = os.path.realpath(inc_path))
|
||||||
env.AppendUnique(LIBPATH = os.path.realpath(lib_path))
|
env.AppendUnique(LIBPATH = os.path.realpath(lib_path))
|
||||||
|
|
||||||
if conf.parse_config('FREETYPE_CONFIG'):
|
REQUIRED_LIBSHEADERS = [
|
||||||
|
['z', 'zlib.h', True,'C'],
|
||||||
|
[env['ICU_LIB_NAME'],'unicode/unistr.h',True,'C++'],
|
||||||
|
]
|
||||||
|
|
||||||
|
if env.get('FREETYPE_LIBS') or env.get('FREETYPE_INCLUDES'):
|
||||||
|
REQUIRED_LIBSHEADERS.append(['freetype','ft2build.h',True,'C'])
|
||||||
|
if env.get('FREETYPE_INCLUDES'):
|
||||||
|
inc_path = env['FREETYPE_INCLUDES']
|
||||||
|
env.AppendUnique(CPPPATH = os.path.realpath(inc_path))
|
||||||
|
if env.get('FREETYPE_LIBS'):
|
||||||
|
lib_path = env['FREETYPE_LIBS']
|
||||||
|
env.AppendUnique(LIBPATH = os.path.realpath(lib_path))
|
||||||
|
elif conf.parse_config('FREETYPE_CONFIG'):
|
||||||
# check if freetype links to bz2
|
# check if freetype links to bz2
|
||||||
if env['RUNTIME_LINK'] == 'static':
|
if env['RUNTIME_LINK'] == 'static':
|
||||||
temp_env = env.Clone()
|
temp_env = env.Clone()
|
||||||
temp_env['LIBS'] = []
|
temp_env['LIBS'] = []
|
||||||
try:
|
try:
|
||||||
|
# TODO - freetype-config accepts --static as of v2.5.3
|
||||||
temp_env.ParseConfig('%s --libs' % env['FREETYPE_CONFIG'])
|
temp_env.ParseConfig('%s --libs' % env['FREETYPE_CONFIG'])
|
||||||
if 'bz2' in temp_env['LIBS']:
|
if 'bz2' in temp_env['LIBS']:
|
||||||
env['EXTRA_FREETYPE_LIBS'].append('bz2')
|
env['EXTRA_FREETYPE_LIBS'].append('bz2')
|
||||||
|
@ -1192,15 +1237,23 @@ if not preconfigured:
|
||||||
|
|
||||||
# libxml2 should be optional but is currently not
|
# libxml2 should be optional but is currently not
|
||||||
# https://github.com/mapnik/mapnik/issues/913
|
# https://github.com/mapnik/mapnik/issues/913
|
||||||
if conf.parse_config('XML2_CONFIG',checks='--cflags'):
|
if env.get('XML2_LIBS') or env.get('XML2_INCLUDES'):
|
||||||
|
REQUIRED_LIBSHEADERS.append(['libxml2','libxml/parser.h',True,'C'])
|
||||||
|
if env.get('XML2_INCLUDES'):
|
||||||
|
inc_path = env['XML2_INCLUDES']
|
||||||
|
env.AppendUnique(CPPPATH = os.path.realpath(inc_path))
|
||||||
|
if env.get('XML2_LIBS'):
|
||||||
|
lib_path = env['XML2_LIBS']
|
||||||
|
env.AppendUnique(LIBPATH = os.path.realpath(lib_path))
|
||||||
|
elif conf.parse_config('XML2_CONFIG',checks='--cflags'):
|
||||||
env['HAS_LIBXML2'] = True
|
env['HAS_LIBXML2'] = True
|
||||||
else:
|
else:
|
||||||
env['MISSING_DEPS'].append('libxml2')
|
env['MISSING_DEPS'].append('libxml2')
|
||||||
|
|
||||||
REQUIRED_LIBSHEADERS = [
|
if conf.CheckHasDlfcn():
|
||||||
['z', 'zlib.h', True,'C'],
|
env.Append(CPPDEFINES = '-DMAPNIK_HAS_DLCFN')
|
||||||
[env['ICU_LIB_NAME'],'unicode/unistr.h',True,'C++'],
|
else:
|
||||||
]
|
env['SKIPPED_DEPS'].extend(['dlfcn'])
|
||||||
|
|
||||||
OPTIONAL_LIBSHEADERS = []
|
OPTIONAL_LIBSHEADERS = []
|
||||||
|
|
||||||
|
@ -1384,7 +1437,7 @@ if not preconfigured:
|
||||||
env['LIBS'].remove(libname)
|
env['LIBS'].remove(libname)
|
||||||
else:
|
else:
|
||||||
details['lib'] = libname
|
details['lib'] = libname
|
||||||
elif plugin == 'postgis':
|
elif plugin == 'postgis' or plugin == 'pgraster':
|
||||||
conf.parse_pg_config('PG_CONFIG')
|
conf.parse_pg_config('PG_CONFIG')
|
||||||
elif plugin == 'ogr':
|
elif plugin == 'ogr':
|
||||||
if conf.ogr_enabled():
|
if conf.ogr_enabled():
|
||||||
|
@ -1414,7 +1467,7 @@ if not preconfigured:
|
||||||
sqlite_backup = env.Clone().Dictionary()
|
sqlite_backup = env.Clone().Dictionary()
|
||||||
# if statically linking, on linux we likely
|
# if statically linking, on linux we likely
|
||||||
# need to link sqlite to pthreads and dl
|
# need to link sqlite to pthreads and dl
|
||||||
if env['RUNTIME_LINK'] == 'static':
|
if env['RUNTIME_LINK'] == 'static' and not env['PLATFORM'] == 'Darwin':
|
||||||
if CHECK_PKG_CONFIG and conf.CheckPKG('sqlite3'):
|
if CHECK_PKG_CONFIG and conf.CheckPKG('sqlite3'):
|
||||||
sqlite_env = env.Clone()
|
sqlite_env = env.Clone()
|
||||||
try:
|
try:
|
||||||
|
@ -1424,7 +1477,15 @@ if not preconfigured:
|
||||||
env["SQLITE_LINKFLAGS"].append(lib)
|
env["SQLITE_LINKFLAGS"].append(lib)
|
||||||
env.Append(LIBS=lib)
|
env.Append(LIBS=lib)
|
||||||
except OSError,e:
|
except OSError,e:
|
||||||
pass
|
for lib in ["sqlite3","dl","pthread"]:
|
||||||
|
if not lib in env['LIBS']:
|
||||||
|
env["SQLITE_LINKFLAGS"].append("lib")
|
||||||
|
env.Append(LIBS=lib)
|
||||||
|
else:
|
||||||
|
for lib in ["sqlite3","dl","pthread"]:
|
||||||
|
if not lib in env['LIBS']:
|
||||||
|
env["SQLITE_LINKFLAGS"].append("lib")
|
||||||
|
env.Append(LIBS=lib)
|
||||||
SQLITE_HAS_RTREE = conf.sqlite_has_rtree()
|
SQLITE_HAS_RTREE = conf.sqlite_has_rtree()
|
||||||
if not SQLITE_HAS_RTREE:
|
if not SQLITE_HAS_RTREE:
|
||||||
env.Replace(**sqlite_backup)
|
env.Replace(**sqlite_backup)
|
||||||
|
@ -1486,7 +1547,7 @@ if not preconfigured:
|
||||||
env["CAIRO_ALL_LIBS"] = ['cairo']
|
env["CAIRO_ALL_LIBS"] = ['cairo']
|
||||||
if env['RUNTIME_LINK'] == 'static':
|
if env['RUNTIME_LINK'] == 'static':
|
||||||
env["CAIRO_ALL_LIBS"].extend(
|
env["CAIRO_ALL_LIBS"].extend(
|
||||||
['pixman-1','expat','fontconfig']
|
['pixman-1','expat']
|
||||||
)
|
)
|
||||||
# todo - run actual checkLib?
|
# todo - run actual checkLib?
|
||||||
env['HAS_CAIRO'] = True
|
env['HAS_CAIRO'] = True
|
||||||
|
@ -1605,6 +1666,13 @@ if not preconfigured:
|
||||||
if env['CAIRO']:
|
if env['CAIRO']:
|
||||||
if CHECK_PKG_CONFIG and conf.CheckPKG('pycairo'):
|
if CHECK_PKG_CONFIG and conf.CheckPKG('pycairo'):
|
||||||
env['HAS_PYCAIRO'] = True
|
env['HAS_PYCAIRO'] = True
|
||||||
|
temp_env = env.Clone()
|
||||||
|
temp_env['CPPPATH'] = []
|
||||||
|
temp_env.ParseConfig('pkg-config --cflags pycairo')
|
||||||
|
if temp_env['CPPPATH']:
|
||||||
|
env['PYCAIRO_PATHS'] = copy(temp_env['CPPPATH'])
|
||||||
|
else:
|
||||||
|
print temp_env['CPPPATH']
|
||||||
else:
|
else:
|
||||||
env['SKIPPED_DEPS'].extend(['pycairo'])
|
env['SKIPPED_DEPS'].extend(['pycairo'])
|
||||||
else:
|
else:
|
||||||
|
@ -1681,15 +1749,18 @@ if not preconfigured:
|
||||||
debug_defines = ['-DDEBUG', '-DMAPNIK_DEBUG']
|
debug_defines = ['-DDEBUG', '-DMAPNIK_DEBUG']
|
||||||
ndebug_defines = ['-DNDEBUG']
|
ndebug_defines = ['-DNDEBUG']
|
||||||
|
|
||||||
# c++11 support / https://github.com/mapnik/mapnik/issues/1683
|
if env.get('BOOST_LIB_VERSION_FROM_HEADER'):
|
||||||
# - upgrade to PHOENIX_V3 since that is needed for c++11 compile
|
boost_version_from_header = int(env['BOOST_LIB_VERSION_FROM_HEADER'].split('_')[1])
|
||||||
if 'c++11' in env['CUSTOM_CXXFLAGS']:
|
if boost_version_from_header > 53 or 'c++11' in env['CUSTOM_CXXFLAGS']:
|
||||||
env.Append(CPPDEFINES = '-DBOOST_SPIRIT_USE_PHOENIX_V3=1')
|
env.Append(CPPDEFINES = '-DBOOST_SPIRIT_USE_PHOENIX_V3=1')
|
||||||
# - workaround boost gil channel_algorithm.hpp narrowing error
|
# - workaround boost gil channel_algorithm.hpp narrowing error
|
||||||
# TODO - remove when building against >= 1.55
|
# TODO - remove when building against >= 1.55
|
||||||
# https://github.com/mapnik/mapnik/issues/1970
|
# https://github.com/mapnik/mapnik/issues/1970
|
||||||
if 'clang++' in env['CXX']:
|
if 'clang++' in env['CXX']:
|
||||||
env.Append(CXXFLAGS = '-Wno-c++11-narrowing')
|
env.Append(CXXFLAGS = '-Wno-c++11-narrowing')
|
||||||
|
else:
|
||||||
|
env.Append(CPPDEFINES = '-DBOOST_SPIRIT_USE_PHOENIX_V3=1')
|
||||||
|
env.Append(CXXFLAGS = '-Wno-c++11-narrowing')
|
||||||
|
|
||||||
# Enable logging in debug mode (always) and release mode (when specified)
|
# Enable logging in debug mode (always) and release mode (when specified)
|
||||||
if env['DEFAULT_LOG_SEVERITY']:
|
if env['DEFAULT_LOG_SEVERITY']:
|
||||||
|
@ -1741,7 +1812,7 @@ if not preconfigured:
|
||||||
else:
|
else:
|
||||||
# TODO - add back -fvisibility-inlines-hidden
|
# TODO - add back -fvisibility-inlines-hidden
|
||||||
# https://github.com/mapnik/mapnik/issues/1863
|
# 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']))
|
env.Append(CXXFLAGS = common_cxx_flags + '-O%s -fno-strict-aliasing -Wno-inline -Wno-parentheses -Wno-char-subscripts' % (env['OPTIMIZATION']))
|
||||||
if env['DEBUG_UNDEFINED']:
|
if env['DEBUG_UNDEFINED']:
|
||||||
env.Append(CXXFLAGS = '-fsanitize=undefined-trap -fsanitize-undefined-trap-on-error -ftrapv -fwrapv')
|
env.Append(CXXFLAGS = '-fsanitize=undefined-trap -fsanitize-undefined-trap-on-error -ftrapv -fwrapv')
|
||||||
|
|
||||||
|
@ -1942,6 +2013,7 @@ if not HELP_REQUESTED:
|
||||||
SConscript('utils/pgsql2sqlite/build.py')
|
SConscript('utils/pgsql2sqlite/build.py')
|
||||||
if env['SVG2PNG']:
|
if env['SVG2PNG']:
|
||||||
SConscript('utils/svg2png/build.py')
|
SConscript('utils/svg2png/build.py')
|
||||||
|
SConscript('utils/nik2img/build.py')
|
||||||
# devtools not ready for public
|
# devtools not ready for public
|
||||||
#SConscript('utils/ogrindex/build.py')
|
#SConscript('utils/ogrindex/build.py')
|
||||||
env['LIBS'].remove('boost_program_options%s' % env['BOOST_APPEND'])
|
env['LIBS'].remove('boost_program_options%s' % env['BOOST_APPEND'])
|
||||||
|
@ -1964,9 +2036,6 @@ if not HELP_REQUESTED:
|
||||||
# build C++ tests
|
# build C++ tests
|
||||||
SConscript('tests/cpp_tests/build.py')
|
SConscript('tests/cpp_tests/build.py')
|
||||||
|
|
||||||
if env['CPP_TESTS'] and env['SVG_RENDERER']:
|
|
||||||
SConscript('tests/cpp_tests/svg_renderer_tests/build.py')
|
|
||||||
|
|
||||||
if env['BENCHMARK']:
|
if env['BENCHMARK']:
|
||||||
SConscript('benchmark/build.py')
|
SConscript('benchmark/build.py')
|
||||||
|
|
||||||
|
|
|
@ -1,49 +0,0 @@
|
||||||
#include <mapnik/geometry.hpp>
|
|
||||||
#include <mapnik/wkt/wkt_factory.hpp>
|
|
||||||
|
|
||||||
|
|
||||||
#define BOOST_CHRONO_HEADER_ONLY
|
|
||||||
#include <boost/chrono/process_cpu_clocks.hpp>
|
|
||||||
#include <boost/chrono.hpp>
|
|
||||||
#include <boost/thread/thread.hpp>
|
|
||||||
|
|
||||||
using namespace boost::chrono;
|
|
||||||
using namespace mapnik;
|
|
||||||
|
|
||||||
void threaded_benchmark(void test(),std::string const& name, unsigned threads) {
|
|
||||||
using namespace boost::chrono;
|
|
||||||
typedef process_cpu_clock clock_type;
|
|
||||||
process_real_cpu_clock::time_point start = process_real_cpu_clock::now();
|
|
||||||
boost::thread_group threads;
|
|
||||||
for (unsigned i=0;i<threads;++i)
|
|
||||||
{
|
|
||||||
threads.create_thread(test);
|
|
||||||
}
|
|
||||||
threads.join_all();
|
|
||||||
clock_type::duration elapsed = process_real_cpu_clock::now() - start;
|
|
||||||
std::clog << boost::chrono::duration_cast<milliseconds>(elapsed)
|
|
||||||
<< " (" << boost::chrono::duration_cast<seconds>(elapsed) << ")"
|
|
||||||
<< " <-- " << name << "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void test_wkt_creation()
|
|
||||||
{
|
|
||||||
boost::ptr_vector<mapnik::geometry_type> paths;
|
|
||||||
mapnik::wkt_parser parse_wkt;
|
|
||||||
std::string value("GEOMETRYCOLLECTION(MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 45 20, 30 5, 10 10, 10 30, 20 35),(30 20, 20 25, 20 15, 30 20))),POINT(2 3),LINESTRING(2 3,3 4),MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 45 20, 30 5, 10 10, 10 30, 20 35),(30 20, 20 25, 20 15, 30 20))),MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 45 20, 30 5, 10 10, 10 30, 20 35),(30 20, 20 25, 20 15, 30 20))),MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 45 20, 30 5, 10 10, 10 30, 20 35),(30 20, 20 25, 20 15, 30 20))))");
|
|
||||||
if (!parse_wkt.parse(value, paths)) std::clog << "failed to parse\n";
|
|
||||||
int iterations = 10000;
|
|
||||||
typedef process_cpu_clock clock_type;
|
|
||||||
process_real_cpu_clock::time_point start = process_real_cpu_clock::now();
|
|
||||||
for (int i=0;i<iterations;++i) {
|
|
||||||
parse_wkt.parse(value, paths);
|
|
||||||
}
|
|
||||||
clock_type::duration elapsed = process_real_cpu_clock::now() - start;
|
|
||||||
std::clog << "elapsed: " << boost::chrono::duration_cast<milliseconds>(elapsed) << "\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
int main( int, char*[] )
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
130
benchmark/bench_framework.hpp
Normal file
130
benchmark/bench_framework.hpp
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
#ifndef __MAPNIK_BENCH_FRAMEWORK_HPP__
|
||||||
|
#define __MAPNIK_BENCH_FRAMEWORK_HPP__
|
||||||
|
|
||||||
|
// mapnik
|
||||||
|
#include <mapnik/params.hpp>
|
||||||
|
#include <mapnik/value_types.hpp>
|
||||||
|
|
||||||
|
// boost
|
||||||
|
#define BOOST_CHRONO_HEADER_ONLY
|
||||||
|
#include <boost/chrono/process_cpu_clocks.hpp>
|
||||||
|
#include <boost/chrono.hpp>
|
||||||
|
#include <boost/thread/thread.hpp>
|
||||||
|
|
||||||
|
// stl
|
||||||
|
#include <iostream>
|
||||||
|
#include <vector>
|
||||||
|
#include <set>
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
|
namespace benchmark {
|
||||||
|
|
||||||
|
class test_case
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
mapnik::parameters params_;
|
||||||
|
std::size_t threads_;
|
||||||
|
std::size_t iterations_;
|
||||||
|
public:
|
||||||
|
test_case(mapnik::parameters const& params)
|
||||||
|
: params_(params),
|
||||||
|
threads_(*params.get<mapnik::value_integer>("threads",0)),
|
||||||
|
iterations_(*params.get<mapnik::value_integer>("iterations",0))
|
||||||
|
{}
|
||||||
|
std::size_t threads() const
|
||||||
|
{
|
||||||
|
return threads_;
|
||||||
|
}
|
||||||
|
std::size_t iterations() const
|
||||||
|
{
|
||||||
|
return iterations_;
|
||||||
|
}
|
||||||
|
virtual bool validate() const = 0;
|
||||||
|
virtual void operator()() const = 0;
|
||||||
|
virtual ~test_case() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
void handle_args(int argc, char** argv, mapnik::parameters & params)
|
||||||
|
{
|
||||||
|
if (argc > 0) {
|
||||||
|
for (int i=1;i<argc;++i) {
|
||||||
|
std::string opt(argv[i]);
|
||||||
|
// parse --foo bar
|
||||||
|
if (!opt.empty() && (opt.find("--") != 0)) {
|
||||||
|
std::string key = std::string(argv[i-1]);
|
||||||
|
if (!key.empty() && (key.find("--") == 0)) {
|
||||||
|
key = key.substr(key.find_first_not_of("-"));
|
||||||
|
params[key] = opt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#define BENCHMARK(test_class,name) \
|
||||||
|
int main(int argc, char** argv) \
|
||||||
|
{ \
|
||||||
|
try \
|
||||||
|
{ \
|
||||||
|
mapnik::parameters params; \
|
||||||
|
benchmark::handle_args(argc,argv,params); \
|
||||||
|
test_class test_runner(params); \
|
||||||
|
return run(test_runner,name); \
|
||||||
|
} \
|
||||||
|
catch (std::exception const& ex) \
|
||||||
|
{ \
|
||||||
|
std::clog << ex.what() << "\n"; \
|
||||||
|
return -1; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
int run(T const& test_runner, std::string const& name)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!test_runner.validate())
|
||||||
|
{
|
||||||
|
std::clog << "test did not validate: " << name << "\n";
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
boost::chrono::process_cpu_clock::time_point start;
|
||||||
|
boost::chrono::process_cpu_clock::duration elapsed;
|
||||||
|
std::stringstream s;
|
||||||
|
s << name << ":"
|
||||||
|
<< std::setw(45 - (int)s.tellp()) << std::right
|
||||||
|
<< " t:" << test_runner.threads()
|
||||||
|
<< " i:" << test_runner.iterations();
|
||||||
|
if (test_runner.threads() > 0)
|
||||||
|
{
|
||||||
|
boost::thread_group threads;
|
||||||
|
for (unsigned i=0;i<test_runner.threads();++i)
|
||||||
|
{
|
||||||
|
threads.create_thread(test_runner);
|
||||||
|
}
|
||||||
|
start = boost::chrono::process_cpu_clock::now();
|
||||||
|
threads.join_all();
|
||||||
|
elapsed = boost::chrono::process_cpu_clock::now() - start;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
start = boost::chrono::process_cpu_clock::now();
|
||||||
|
test_runner();
|
||||||
|
elapsed = boost::chrono::process_cpu_clock::now() - start;
|
||||||
|
}
|
||||||
|
s << std::setw(65 - (int)s.tellp()) << std::right
|
||||||
|
<< boost::chrono::duration_cast<boost::chrono::milliseconds>(elapsed) << "\n";
|
||||||
|
std::clog << s.str();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
catch (std::exception const& ex)
|
||||||
|
{
|
||||||
|
std::clog << "test runner did not complete: " << ex.what() << "\n";
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // __MAPNIK_BENCH_FRAMEWORK_HPP__
|
|
@ -6,21 +6,25 @@ Import ('env')
|
||||||
|
|
||||||
test_env = env.Clone()
|
test_env = env.Clone()
|
||||||
|
|
||||||
test_env['LIBS'] = copy(env['LIBMAPNIK_LIBS'])
|
test_env['LIBS'] = [env['MAPNIK_NAME']]
|
||||||
test_env.AppendUnique(LIBS='mapnik')
|
test_env.AppendUnique(LIBS=copy(env['LIBMAPNIK_LIBS']))
|
||||||
#test_env.AppendUnique(LIBS='sqlite3')
|
if env['PLATFORM'] == 'Linux':
|
||||||
|
test_env.AppendUnique(LIBS='dl')
|
||||||
|
test_env.AppendUnique(LIBS='rt')
|
||||||
test_env.AppendUnique(CXXFLAGS='-g')
|
test_env.AppendUnique(CXXFLAGS='-g')
|
||||||
linkflags = copy(env['CUSTOM_LDFLAGS'])
|
test_env['CXXFLAGS'] = copy(test_env['LIBMAPNIK_CXXFLAGS'])
|
||||||
linkflags
|
test_env.Append(CPPDEFINES = env['LIBMAPNIK_DEFINES'])
|
||||||
|
if test_env['HAS_CAIRO']:
|
||||||
|
test_env.PrependUnique(CPPPATH=test_env['CAIRO_CPPPATHS'])
|
||||||
|
test_env.Append(CPPDEFINES = '-DHAVE_CAIRO')
|
||||||
|
test_env['LINKFLAGS'] = copy(test_env['LIBMAPNIK_LINKFLAGS'])
|
||||||
if env['PLATFORM'] == 'Darwin':
|
if env['PLATFORM'] == 'Darwin':
|
||||||
linkflags += ' -F/ -framework CoreFoundation'
|
test_env.Append(LINKFLAGS='-F/ -framework CoreFoundation')
|
||||||
|
|
||||||
for cpp_test in glob.glob('run*.cpp'):
|
test_env_local = test_env.Clone()
|
||||||
name = cpp_test.replace('.cpp','')
|
|
||||||
source_files = [cpp_test]
|
for cpp_test in glob.glob('*cpp'):
|
||||||
test_env_local = test_env.Clone()
|
test_program = test_env_local.Program('out/'+cpp_test.replace('.cpp',''), source=[cpp_test])
|
||||||
test_program = test_env_local.Program(name, source=source_files, LINKFLAGS=linkflags)
|
|
||||||
Depends(test_program, env.subst('../src/%s' % env['MAPNIK_LIB_NAME']))
|
|
||||||
# build locally if installing
|
|
||||||
if 'install' in COMMAND_LINE_TARGETS:
|
if 'install' in COMMAND_LINE_TARGETS:
|
||||||
env.Alias('install',test_program)
|
env.Alias('install',test_program)
|
||||||
|
#Depends(test_program, env.subst('../src/%s' % env['MAPNIK_LIB_NAME']))
|
||||||
|
|
52
benchmark/compare_images.hpp
Normal file
52
benchmark/compare_images.hpp
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
#ifndef __MAPNIK_COMPARE_IMAGES_HPP__
|
||||||
|
#define __MAPNIK_COMPARE_IMAGES_HPP__
|
||||||
|
|
||||||
|
#include <mapnik/graphics.hpp>
|
||||||
|
#include <mapnik/image_data.hpp>
|
||||||
|
#include <mapnik/image_util.hpp>
|
||||||
|
#include <mapnik/image_reader.hpp>
|
||||||
|
#include <boost/make_shared.hpp>
|
||||||
|
|
||||||
|
using namespace mapnik;
|
||||||
|
|
||||||
|
namespace benchmark {
|
||||||
|
|
||||||
|
bool compare_images(std::string const& src_fn,std::string const& dest_fn)
|
||||||
|
{
|
||||||
|
std::auto_ptr<mapnik::image_reader> reader1(mapnik::get_image_reader(dest_fn,"png"));
|
||||||
|
if (!reader1.get())
|
||||||
|
{
|
||||||
|
throw mapnik::image_reader_exception("Failed to load: " + dest_fn);
|
||||||
|
}
|
||||||
|
boost::shared_ptr<image_32> image_ptr1 = boost::make_shared<image_32>(reader1->width(),reader1->height());
|
||||||
|
reader1->read(0,0,image_ptr1->data());
|
||||||
|
|
||||||
|
std::auto_ptr<mapnik::image_reader> reader2(mapnik::get_image_reader(src_fn,"png"));
|
||||||
|
if (!reader2.get())
|
||||||
|
{
|
||||||
|
throw mapnik::image_reader_exception("Failed to load: " + src_fn);
|
||||||
|
}
|
||||||
|
boost::shared_ptr<image_32> image_ptr2 = boost::make_shared<image_32>(reader2->width(),reader2->height());
|
||||||
|
reader2->read(0,0,image_ptr2->data());
|
||||||
|
|
||||||
|
image_data_32 const& dest = image_ptr1->data();
|
||||||
|
image_data_32 const& src = image_ptr2->data();
|
||||||
|
|
||||||
|
unsigned int width = src.width();
|
||||||
|
unsigned int height = src.height();
|
||||||
|
if ((width != dest.width()) || height != dest.height()) return false;
|
||||||
|
for (unsigned int y = 0; y < height; ++y)
|
||||||
|
{
|
||||||
|
const unsigned int* row_from = src.getRow(y);
|
||||||
|
const unsigned int* row_to = dest.getRow(y);
|
||||||
|
for (unsigned int x = 0; x < width; ++x)
|
||||||
|
{
|
||||||
|
if (row_from[x] != row_to[x]) return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // __MAPNIK_COMPARE_IMAGES_HPP__
|
BIN
benchmark/data/polygon_clipping_agg.png
Normal file
BIN
benchmark/data/polygon_clipping_agg.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.9 KiB |
BIN
benchmark/data/polygon_clipping_boost.png
Normal file
BIN
benchmark/data/polygon_clipping_boost.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.9 KiB |
BIN
benchmark/data/polygon_clipping_clipper.png
Normal file
BIN
benchmark/data/polygon_clipping_clipper.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.9 KiB |
853
benchmark/data/roads.csv
Normal file
853
benchmark/data/roads.csv
Normal file
|
@ -0,0 +1,853 @@
|
||||||
|
WKT,fid,type,tunnel,bridge,oneway,class,z_order,z
|
||||||
|
"LINESTRING (1478464.087426564656198 6892271.151913832873106,1478475.106973737478256 6892349.655597596429288)",312,service,1,0,1,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478267.685692099155858 6891978.835526627488434,1478231.305324257584289 6891833.51674110814929,1478229.896389777539298 6891821.759523851796985,1478231.40796187100932 6891811.979739548638463,1478234.552405048860237 6891804.43797043338418,1478240.58003204013221 6891797.938565328717232,1478264.75585483526811 6891788.741302938200533,1478317.1663514142856 6891772.262900795787573,1478340.17583771632053 6891781.920006790198386,1478348.685428757686168 6891803.794161200523376,1478402.16895490931347 6892023.780644913204014,1478450.679222259437665 6892216.85436431504786,1478464.087426564656198 6892271.151913832873106,1478454.672758408589289 6892353.104810423217714)",313,service,1,0,1,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478426.895288528874516 6891709.308051269501448,1478411.676929988665506 6891698.869274341501296,1478398.007466310635209 6891695.573628057725728,1478379.514034900348634 6891705.552542590536177,1478372.413378342054784 6891719.700855853967369,1478378.730256776325405 6891746.357388046570122,1478416.519559100735933 6891913.901618065312505,1478440.583413592772558 6892016.652565392665565,1478431.719256255310029 6892045.870066974312067,1478463.555577126098797 6892169.547425043769181,1478450.679222259437665 6892216.85436431504786)",315,service,1,0,1,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478079.075085395481437 6891736.240464904345572,1478104.715826825471595 6891790.366151860915124,1478111.42459432175383 6891812.884139166213572,1478111.919120994396508 6891834.559102791361511,1478109.614440086763352 6891846.147721174173057)",334,service,1,0,0,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478454.672758408589289 6892353.104810423217714,1478458.218421341385692 6892374.581942255608737,1478466.532067854423076 6892390.463712620548904,1478477.467638794099912 6892401.945822895504534,1478492.303438970819116 6892407.924498297274113)",352,service,1,0,0,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478295.649775819852948 6892148.408088837750256,1478302.451850236626342 6892175.740540593862534,1478344.449294621357694 6892185.352142740041018,1478371.359010152285919 6892210.707205789163709,1478358.342694909079 6892292.506188929080963)",371,footway,1,0,0,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478404.315014054765925 6892179.250996824353933,1478397.699553476180881 6892180.93724271748215,1478392.530350143555552 6892182.255580662749708,1478371.359010152285919 6892210.707205789163709,1478418.786917239660397 6892247.360282902605832)",372,footway,1,0,0,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478380.437773400917649 6892134.381656404584646,1478402.747457809513435 6892127.958631582558155)",386,footway,1,0,0,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478402.16895490931347 6892023.780644913204014,1478431.719256255310029 6892045.870066974312067)",387,service,1,0,1,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478302.451850236626342 6892175.740540593862534,1478279.339726323960349 6892178.407874005846679)",388,footway,1,0,0,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478440.583413592772558 6892016.652565392665565,1478459.888615197036415 6892053.703318660147488,1478482.851448043249547 6892145.54148262552917,1478463.555577126098797 6892169.547425043769181)",390,service,1,0,1,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478402.16895490931347 6892023.780644913204014,1478391.01877805008553 6892079.79377365577966,1478402.747457809513435 6892127.958631582558155,1478416.584873942658305 6892184.692973483353853,1478450.679222259437665 6892216.85436431504786)",391,service,1,0,1,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478392.530350143555552 6892182.255580662749708,1478380.437773400917649 6892134.381656404584646,1478354.479788446333259 6892046.069347251206636)",392,footway,1,0,0,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478352.147115462692454 6891731.442595199681818,1478363.101347791031003 6891774.746155516244471,1478421.539471358293667 6892018.967274392023683,1478431.719256255310029 6892045.870066974312067)",393,service,1,0,1,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478289.006323162466288 6891573.850262156687677,1478287.961285665631294 6891604.6449805945158,1478304.653893533628434 6891631.25514588970691)",397,service,1,0,1,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478316.746470273472369 6891546.32058884575963,1478314.525765596190467 6891576.70133616309613)",400,service,1,0,1,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478352.874909435166046 6891537.000988053157926,1478335.267893759533763 6891583.292532620951533,1478318.957844263641164 6891610.699705163016915,1478266.771284291520715 6891649.189465964213014)",402,path,1,0,1,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478304.653893533628434 6891544.619147759862244,1478289.006323162466288 6891573.850262156687677)",403,service,1,0,1,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478304.653893533628434 6891631.25514588970691,1478325.004132634960115 6891655.259552592411637,1478338.570958702359349 6891679.785201796330512,1478352.147115462692454 6891731.442595199681818)",404,service,1,0,1,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478189.345202641561627 6892164.39671871624887,1478191.565907321637496 6892107.493896978907287)",417,footway,1,0,0,minorroads,-10,-1
|
||||||
|
"LINESTRING (1477341.726486198138446 6891879.672032723203301,1477366.966007873183116 6891868.589220155961812)",487,service,1,0,0,minorroads,-10,-1
|
||||||
|
"LINESTRING (1477280.535808509448543 6891906.926925845444202,1477314.966061739251018 6891890.785518474876881,1477341.726486198138446 6891879.672032723203301)",488,service,1,0,0,minorroads,-10,-1
|
||||||
|
"LINESTRING (1477246.96397894108668 6891938.244107788428664,1477280.535808509448543 6891906.926925845444202)",489,service,1,0,0,minorroads,-10,-1
|
||||||
|
"LINESTRING (1477089.116663535358384 6890956.187384136021137,1477095.414880589582026 6891011.595310922712088)",498,footway,1,0,0,minorroads,-10,-1
|
||||||
|
"LINESTRING (1477776.443423286313191 6890246.309983272105455,1477868.845265486976132 6890131.995495325885713)",499,footway,1,0,0,minorroads,-10,-1
|
||||||
|
"LINESTRING (1477507.896778806811199 6891126.826628868468106,1477488.684884120011702 6891123.347287161275744,1477444.914608268765733 6891146.583800435997546,1477413.610136836534366 6891170.065622186288238,1477406.453496126458049 6891175.721502039581537)",571,service,1,0,0,minorroads,-10,-1
|
||||||
|
"LINESTRING (1477741.089431561529636 6891515.342154928483069,1477664.167207277147099 6891575.812291472218931,1477687.456614337861538 6891609.488759884610772)",584,service,1,0,0,minorroads,-10,-1
|
||||||
|
"LINESTRING (1477226.557755685178563 6892508.796153583563864,1477223.683902570279315 6892523.712388763204217)",605,footway,1,0,0,minorroads,-10,-1
|
||||||
|
"LINESTRING (1478367.953307596268132 6891647.825229956768453,1478351.279361113905907 6891651.197499162517488,1478335.519822442205623 6891655.826707382686436,1478312.034470850601792 6891667.031854874454439,1478293.233126608654857 6891676.167663832195103,1478279.554332237923518 6891684.153840911574662)",40,motorway_link,1,0,1,motorways,-7,0
|
||||||
|
"LINESTRING (1478264.074714324669912 6891662.709210627712309,1478309.907073091017082 6891635.777043334208429,1478332.132781271822751 6891620.126690473407507,1478345.130435132188722 6891607.143511951901019,1478354.162544921739027 6891591.585185151547194,1478362.989379487698898 6891563.457646118476987)",321,unclassified,1,0,1,minorroads,-7,0
|
||||||
|
"LINESTRING (1477870.207546508172527 6890978.105273565277457,1477871.81242551933974 6890936.997784550301731)",115,secondary,1,0,0,mainroads,-5,0
|
||||||
|
"LINESTRING (1477698.952026794664562 6891185.101994454860687,1477704.662410258548334 6891180.672316116280854,1477801.412354895845056 6891105.552087247371674)",143,secondary,1,0,0,mainroads,-5,0
|
||||||
|
"LINESTRING (1479215.254780515097082 6891069.072816937230527,1479243.134888005442917 6891128.374706505797803,1479276.548095814418048 6891179.446108014322817)",694,light_rail,1,0,0,railways,-3,0
|
||||||
|
"LINESTRING (1477683.612369260750711 6890631.518402252346277,1477781.108769256155938 6890678.065286220051348)",734,light_rail,1,0,0,railways,-3,0
|
||||||
|
"LINESTRING (1477349.396314963698387 6890405.439559964463115,1477377.099139308556914 6890438.206881085410714,1477405.483104167273268 6890465.763412615284324)",756,light_rail,1,0,0,railways,-3,0
|
||||||
|
"LINESTRING (1477401.172324493527412 6890470.315307054668665,1477373.534814990125597 6890442.390931232832372,1477344.973566989181563 6890408.949243260547519)",763,light_rail,1,0,0,railways,-3,0
|
||||||
|
"LINESTRING (1477714.347668485715985 6890670.003475363366306,1477654.761869808426127 6890641.77187445666641)",765,light_rail,1,0,0,railways,-3,0
|
||||||
|
"LINESTRING (1479016.87493935925886 6890040.272282585501671,1478980.289296296890825 6890061.804538452997804,1478944.888651107437909 6890084.838752162642777,1478893.905750391772017 6890130.064469543285668,1478869.048787088599056 6890161.77319775428623,1478842.530960619682446 6890196.347961265593767,1478810.134798231767491 6890258.739233900792897,1478777.253439866937697 6890329.912772791460156)",19,motorway,1,0,1,motorways,-1,0
|
||||||
|
"LINESTRING (1478758.974614370847121 6890316.165379947982728,1478791.501406445167959 6890245.313804953359067,1478827.919097055448219 6890179.964776864275336,1478850.14480523345992 6890142.815378563478589,1478874.553895328659564 6890110.171865802258253,1478923.16680029197596 6890062.616788381710649,1478958.455477175069973 6890037.95814321283251,1478997.037888313643634 6890015.629031332209706)",21,motorway,1,0,1,motorways,-1,0
|
||||||
|
"LINESTRING (1479020.635208208812401 6892437.128092028200626,1479011.145894512534142 6892381.664349486120045,1479006.648501003393903 6892345.654512577690184,1479018.862376742530614 6892314.12112672906369,1479040.462928561726585 6892294.161799130029976,1479017.65871748351492 6892284.044186560437083)",180,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479020.635208208812401 6892437.128092028200626,1479068.343036052072421 6892505.88342846557498,1479114.138072055066004 6892537.938793009147048,1479148.503010437591001 6892548.945877370424569,1479190.491124129621312 6892566.407007291913033,1479238.338912354782224 6892590.107600770890713,1479258.381238624453545 6892602.448493731208146,1479338.130662565119565 6892645.69542468432337,1479404.201292129000649 6892683.055686702951789,1479430.168607773724943 6892698.094889210537076,1479544.040372106945142 6892763.203769372776151)",181,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479045.072290376992896 6892170.589830297976732,1479020.971113116247579 6892174.437533211894333,1479002.925554922781885 6892173.946989312767982,1478997.952296121278778 6892171.632235683500767,1478992.381873039528728 6892169.087540414184332,1478988.360344814369455 6892166.251585789956152,1478981.390317942481488 6892158.372236031107605,1478979.636147862067446 6892149.9870221093297,1478980.55055566970259 6892139.19509603176266,1478990.749001952353865 6892115.465173177421093,1479012.517506226664409 6892082.706344389356673,1479051.342515352414921 6892039.569746791385114,1479037.383800225798041 6892032.27303178049624,1479034.351325348485261 6892030.126940387301147)",182,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478942.052120761480182 6892225.622887848876417,1478944.244833362754434 6892195.132381286472082,1478953.267612462397665 6892164.350730281323195,1478960.172324489569291 6892134.611597723327577,1478974.215015846770257 6892108.95018723513931,1478994.714546022936702 6892084.208618130534887,1479019.207612342899665 6892056.370611586607993,1479031.37483462318778 6892040.750098372809589,1479037.383800225798041 6892032.27303178049624)",183,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479511.261651349952444 6891082.208400661125779,1479481.459421321051195 6891103.084366684779525,1479360.328378667356446 6891034.478972747921944,1479352.322644991567358 6891022.952833535149693,1479317.873730378691107 6890999.440786958672106,1479303.915015249047428 6890990.106492877937853,1479242.089850508607924 6890937.610870090313256,1479204.841728321043774 6890955.758223262615502)",184,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479453.616636599646881 6890482.744903990067542,1479446.292043434455991 6890501.872114131227136)",186,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478987.24999247584492 6890117.681394563056529,1478974.429621760733426 6890121.788649991154671,1478968.140735402470455 6890127.643025163561106,1478961.749211427755654 6890132.608519486151636,1478951.065569168189541 6890141.650631228461862)",187,path,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478973.720489174127579 6890696.33466696832329,1478974.793518746970221 6890708.27415887080133,1478934.484929603524506 6890755.082042676396668,1478897.694011319894344 6890797.568019906058908)",189,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479085.427532981848344 6890674.279605968855321,1479067.307329247938469 6890686.387658378109336,1478977.630049095954746 6890791.621195725165308)",190,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478977.630049095954746 6890791.621195725165308,1478928.056082863127813 6890850.737115069292486,1478879.415185823803768 6890912.75028891582042,1478830.093148273881525 6890892.73313207551837,1478828.898819707566872 6890880.302901268936694)",191,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478934.484929603524506 6890755.082042676396668,1478977.630049095954746 6890791.621195725165308)",192,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478842.60560615430586 6890756.859950644895434,1478850.378072533290833 6890746.820906506851315,1478913.714809364406392 6890737.854747919365764,1478934.484929603524506 6890755.082042676396668)",193,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479375.994610418565571 6891635.010619860142469,1479355.719016854884103 6891632.650036015547812,1479354.972561499569565 6891634.887992111966014,1479352.901147891534492 6891636.420839112251997,1479350.960363967344165 6891637.417189817875624,1479346.481631841277704 6891681.977185339666903)",194,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479310.493153058923781 6891678.712203078903258,1479316.203536522807553 6891629.262446126900613,1479319.264003475895151 6891603.648633949458599)",195,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479383.543140193447471 6891577.667022745124996,1479380.146768330130726 6891605.043519286438823)",196,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479596.926733975531533 6891723.011840671300888,1479608.944665183546022 6891709.660609316080809)",198,pedestrian,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479434.777969588991255 6891585.561131720431149,1479482.392490514554083 6891545.140309852547944)",199,pedestrian,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478963.578027048613876 6890644.591964773833752,1478967.31030381959863 6890667.658501483500004)",205,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479401.150155866052955 6890069.130116234533489,1479393.65761024877429 6890062.678090267814696,1479327.960208358010277 6889996.932087614201009)",207,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478944.664714500773698 6890030.004252052865922,1478958.623429630184546 6890021.192146747373044,1478992.307227504905313 6890002.081405482254922,1479026.690827270271257 6889979.154706041328609,1479038.44749910547398 6889972.901981176808476,1479054.701564449816942 6889964.273841869086027,1479095.672632720787078 6889942.527293800376356,1479155.734296685084701 6889930.205808525905013,1479283.12623362406157 6889933.470080768689513)",209,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478877.884952347259969 6890822.336283389478922,1478872.855709397001192 6890815.577114805579185,1478875.6642476671841 6890806.963398001156747,1478885.032262367196381 6890797.506712420843542,1478891.367802187101915 6890795.698141722939909,1478897.694011319894344 6890797.568019906058908,1478901.986129605211318 6890803.192983939312398,1478902.536640429403633 6890810.013449692167342,1478892.618114905199036 6890821.953110418282449,1478886.105291939806193 6890826.198667988181114,1478877.884952347259969 6890822.336283389478922)",210,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478892.618114905199036 6890821.953110418282449,1478928.056082863127813 6890850.737115069292486)",211,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479085.175604299176484 6891455.347645132802427,1479072.933736484264955 6891457.646864391863346,1479028.836886418517679 6891467.809421390295029,1478969.717622337630019 6891487.352836342528462,1478948.182385357562453 6891496.258518047630787,1478911.130207701120526 6891514.514429982751608,1478900.287943673552945 6891515.526093818247318,1478903.68431553686969 6891509.823990211822093,1478916.467363483039662 6891497.224194971844554,1478942.947867186041549 6891484.103261307813227,1478965.024284297600389 6891474.477169387042522,1478945.691090611740947 6891413.149424462579191,1478898.029916227562353 6891434.746669919230044,1478844.462413848377764 6891469.14297055080533,1478793.47951313527301 6891520.001941416412592,1478771.944276155205444 6891540.035988440737128,1478758.237489708466455 6891558.935789356008172,1478748.08569689001888 6891566.799223258160055,1478780.789772106800228 6891606.361762794665992)",212,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478965.024284297600389 6891474.477169387042522,1479027.586573694832623 6891454.795832606963813,1479057.939314550952986 6891448.388678853400052,1479088.058788104215637 6891445.828884401358664)",213,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478945.691090611740947 6891413.149424462579191,1479018.255881766555831 6891391.138380916789174,1479047.694214809220284 6891380.316817537881434)",214,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478991.019592018099502 6890132.409286628477275,1479002.59898070525378 6890131.244540799409151,1479038.382184260990471 6890132.45526344049722,1479064.209539529168978 6890130.202399942092597)",217,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479317.873730378691107 6890999.440786958672106,1479295.08818068052642 6891012.499620502814651,1479265.976421855157241 6891029.635539894923568,1479237.909700526855886 6891045.959146456792951)",219,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479265.976421855157241 6891029.635539894923568,1479332.858821619069204 6891062.006893378682435,1479344.43821030925028 6891037.498456098139286,1479352.322644991567358 6891022.952833535149693)",220,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479295.08818068052642 6891012.499620502814651,1479344.43821030925028 6891037.498456098139286)",221,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479352.742526129353791 6891350.626569028012455,1479161.827238515252247 6891268.591924785636365)",222,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479401.896611221367493 6891423.296597149223089,1479090.344807628775015 6891287.537070981226861)",223,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479465.690551959211007 6891463.594181259162724,1479453.709943517111242 6891455.914785820990801,1479425.409954888978973 6891447.760226246900856,1479401.896611221367493 6891423.296597149223089,1479373.596622593235224 6891386.126125248149037,1479360.179087595082819 6891365.494671508669853,1479352.742526129353791 6891350.626569028012455,1479336.908341917209327 6891318.483971345238388,1479321.559353690594435 6891301.699976419098675,1479307.162096040323377 6891284.670771724544466,1479300.210730554070324 6891269.067085674032569,1479294.696291621308774 6891260.682799293659627,1479263.55977264419198 6891258.99674641340971,1479232.815142731880769 6891257.326021636836231,1479201.156105006346479 6891259.012074161320925,1479161.827238515252247 6891268.591924785636365,1479090.344807628775015 6891287.537070981226861)",224,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479037.383800225798041 6892032.27303178049624,1479057.752700712764636 6891999.744479458779097,1479091.725750033278018 6891954.630875697359443,1479132.724810380022973 6891911.878190251998603,1479161.743262287694961 6891876.376312308013439,1479180.040749166859314 6891847.818568326532841,1479192.609191199066117 6891807.42708539031446,1479193.822181151015684 6891798.107181905768812,1479196.416113504674286 6891778.103149225004017,1479199.467249767621979 6891738.493778496980667,1479205.933419276727363 6891698.869274341501296,1479220.787880830932409 6891680.980829110369086,1479229.549400552175939 6891674.880065969191492,1479240.596939800772816 6891673.745753734372556,1479255.068842985900119 6891677.547233199700713,1479267.637285018106923 6891689.365553838200867,1479275.447074165800586 6891698.256130744703114)",225,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479229.549400552175939 6891674.880065969191492,1479216.271825936157256 6891656.777074966579676,1479171.10194629477337 6891595.187356659211218)",226,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479051.342515352414921 6892039.569746791385114,1479074.529284805525094 6892052.660928558558226)",227,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479558.661566364113241 6892730.994200934655964,1479535.32550584175624 6892695.871967596933246,1479509.208899124991149 6892661.945660936646163,1479484.967761487932876 6892632.250678585842252,1479458.813832005020231 6892615.448610161431134,1479373.167410765308887 6892570.024945888668299,1479300.957185906590894 6892532.435256485827267,1479252.782823463901877 6892527.974175323732197,1479204.001966048264876 6892521.336213783361018,1479171.325882901670411 6892514.928209916688502,1479142.64333590422757 6892504.442396434023976,1479120.930815778905526 6892491.151187589392066,1479098.593139297328889 6892472.555796183645725,1479066.934101571794599 6892412.370182883925736,1479042.375720410142094 6892360.26384799182415,1479040.780172086087987 6892331.70438495837152,1479040.462928561726585 6892294.161799130029976,1479080.986123618902639 6892292.26091337017715,1479193.756866306532174 6892289.164310114458203,1479216.402455622563139 6892282.403908143751323,1479220.871857058489695 6892272.516255625523627,1479224.174922001315281 6892272.577574365772307,1479229.232157027581707 6892272.286310367286205,1479219.024380057584494 6892224.105258090421557,1479209.292468371335417 6892223.185482617467642,1479204.58046894823201 6892214.079711130820215,1479197.18123024282977 6892205.249881953001022,1479179.490238342434168 6892197.692414339631796,1479135.346734812250361 6892196.512039718218148,1479051.137240131385624 6892183.788532035425305,1479045.072290376992896 6892170.589830297976732,1479049.149802750907838 6892124.877421021461487,1479058.424510530428961 6892087.581070398911834,1479071.254211938474327 6892057.964856051839888,1479074.529284805525094 6892052.660928558558226,1479095.532672341447324 6892018.691348779946566,1479112.467878199182451 6891998.625450547784567,1479173.910484564956278 6891937.309035980142653,1479213.509941124590114 6891907.87732311245054,1479228.280426451237872 6891875.471905553713441,1479240.065090362215415 6891839.295718602836132,1479248.854602162260562 6891812.393617324531078,1479261.460366960382089 6891762.237917317077518,1479267.515986024634913 6891728.959353854879737,1479271.630821167491376 6891712.113187463954091,1479275.447074165800586 6891698.256130744703114,1479285.748158059082925 6891687.204225420951843,1479299.772188033210114 6891680.474986762739718,1479310.493153058923781 6891678.712203078903258,1479332.560239477548748 6891680.720243656076491,1479334.09980364702642 6891680.858200660906732)",228,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479414.754304702393711 6890467.663866545073688,1479442.774372574873269 6890432.367605943232775,1479416.368514406494796 6890410.742400817573071)",229,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479416.368514406494796 6890410.742400817573071,1479439.378000711556524 6890381.009754501283169)",230,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479051.137240131385624 6892183.788532035425305,1479170.150215718429536 6892218.908528059720993)",231,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479506.027133178431541 6892443.306083716452122,1479501.464424824807793 6892426.182480680756271,1479502.845367229077965 6892406.974041910842061,1479509.358190197264776 6892389.145340526476502,1479520.33108390844427 6892376.789445140399039,1479537.816800587577745 6892362.747284359298646,1479546.046470873057842 6892354.515155650675297,1479550.012014943640679 6892345.179288049228489,1479549.91870802314952 6892327.672649290412664,1479550.151975322980434 6892285.929740659892559,1479551.467602882767096 6892272.914827428758144)",232,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478902.919198798481375 6890060.471222716383636,1478914.64787855790928 6890058.708794203586876,1478926.861754297045991 6890049.774053867906332,1478938.058584614889696 6890042.172635945491493,1478948.424983350094408 6890035.276194448582828)",233,path,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479491.368616155348718 6890886.081193597055972,1479515.021920202299953 6890883.996716304682195,1479588.379820165457204 6890877.528709341771901,1479587.465412357822061 6890868.70034805405885,1479683.07701257779263 6890859.764707515016198)",234,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479098.593139297328889 6892472.555796183645725,1479020.635208208812401 6892437.128092028200626,1478995.227734078653157 6892424.526843289844692,1478961.786534196697176 6892387.259762216359377,1478945.541799542261288 6892336.609921579249203,1478949.302068391814828 6892240.109368146397173)",237,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479433.219744036672637 6891903.615865284577012,1479430.597819601651281 6891902.512178732082248,1479418.225322103127837 6891896.365260567516088,1479414.045172115787864 6891896.319273664616048,1479410.387540879659355 6891897.668222876265645,1479407.756285757524893 6891900.350793006829917,1479391.679503558436409 6891935.208957064896822,1479391.408913492690772 6891939.347799245268106,1479394.180128997191787 6891944.268425508402288,1479406.673925491981208 6891951.089859411120415,1479410.060966662364081 6891952.4388178139925)",238,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479406.673925491981208 6891951.089859411120415,1479430.597819601651281 6891902.512178732082248)",239,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479452.32900111284107 6891899.875594805926085,1479453.635297982487828 6891897.116379988379776)",240,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479410.060966662364081 6891952.4388178139925,1479414.446391870733351 6891954.676862930878997)",241,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479419.643587276339531 6891968.243108676746488,1479421.313781131990254 6891964.763402775861323)",242,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479437.483870248775929 6891905.623962035402656,1479433.219744036672637 6891903.615865284577012)",243,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479414.446391870733351 6891954.676862930878997,1479424.038343177642673 6891959.060980518348515)",244,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479447.374403697205707 6891910.237987771630287,1479437.483870248775929 6891905.623962035402656)",245,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479421.313781131990254 6891964.763402775861323,1479424.038343177642673 6891959.060980518348515,1479447.374403697205707 6891910.237987771630287,1479452.32900111284107 6891899.875594805926085)",246,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479450.229595429031178 6891990.2404032535851,1479444.976415869081393 6891987.649777974933386,1479416.667096548015252 6891974.466727374121547,1479419.643587276339531 6891968.243108676746488)",247,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479453.635297982487828 6891897.116379988379776,1479455.45478290761821 6891893.330125654116273,1479482.747056807857007 6891906.22179246135056,1479488.485432347515598 6891908.93502342607826)",248,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479571.146032168995589 6890409.056526175700128,1479584.125024646287784 6890393.883670332841575)",249,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479124.859037083573639 6890282.417699187062681,1479141.76625086273998 6890264.731641499325633,1479190.089904377469793 6890264.731641499325633,1479210.813371154945344 6890280.333378406241536,1479221.870241096476093 6890288.900553298182786)",250,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478931.471116109518334 6891338.793418453074992,1478931.601745795924217 6891332.723570773378015)",251,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479038.970017851097509 6891272.239934901706874,1479061.484977483516559 6891259.410595729015768)",253,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479300.518643385730684 6891457.738833180628717,1479254.406363858142868 6891450.381333781406283,1479213.62190942815505 6891446.33471198566258,1479156.919294558465481 6891446.212087113410234,1479127.704898122698069 6891446.917180147953331,1479088.058788104215637 6891445.828884401358664,1479094.702240758575499 6891400.411828546784818,1479047.694214809220284 6891380.316817537881434,1478962.775587541749701 6891344.388105345889926,1478953.202297617914155 6891347.637623907066882)",254,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479263.55977264419198 6891258.99674641340971,1479214.013798487139866 6891247.240369359962642,1479177.754729644861072 6891220.830734963528812,1479149.939936996437609 6891199.249391805380583,1479148.055137223796919 6891171.123225434683263,1479200.400318960892037 6891168.364260731264949,1479207.734242819016799 6891139.14994818624109,1478898.141884530894458 6890996.773844690993428,1478872.053269889904186 6891032.103237913921475,1478847.513550108298659 6891072.260914628393948,1478835.010422920808196 6891095.865138819441199,1478857.982586456928402 6891105.383485198020935,1478904.402778816176578 6891101.950135124847293,1478961.124055066145957 6891130.857762338593602,1478959.257916682166979 6891138.521519755013287,1478997.224502151831985 6891155.550414878875017,1479010.977942057419568 6891164.624332321807742,1479041.769225431373343 6891166.509623884223402,1479062.08214176655747 6891176.656485269777477,1479078.64411994535476 6891173.376380642876029,1479096.782985062338412 6891175.09307074919343,1479103.650374323595315 6891176.487881724722683,1479123.655377824557945 6891171.812966760247946,1479148.055137223796919 6891171.123225434683263)",255,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479349.467453256715089 6892329.95678826700896,1479339.194361444795504 6892336.594591772183776,1479340.202076172921807 6892354.714443584904075,1479352.994454809231684 6892359.236747993156314)",256,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479593.00784336659126 6892275.26026960555464,1479592.009459325810894 6892313.845190985128284,1479549.91870802314952 6892327.672649290412664)",257,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479592.009459325810894 6892313.845190985128284,1479591.281665356131271 6892346.405673980712891,1479550.012014943640679 6892345.179288049228489)",258,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479007.749522649217397 6892003.975329895503819,1479015.932539475848898 6891989.627237430773675)",259,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478994.0800589711871 6892008.788691441528499,1478986.037002523662522 6892003.868025694973767,1479006.424564396496862 6891979.418033379130065,1479038.531475333031267 6891954.814824637956917,1479057.276835423195735 6891941.953738008625805,1479083.216158994706348 6891928.663459150120616,1479132.724810380022973 6891911.878190251998603,1479185.1912911105901 6891905.991857678629458,1479213.509941124590114 6891907.87732311245054)",261,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479344.391556847607717 6891681.793242639862001,1479346.481631841277704 6891681.977185339666903,1479371.403909988934174 6891684.245812286622822)",262,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478964.949638760183007 6892198.842130050994456,1478992.540494801709428 6892200.957607388496399,1479023.751659313682467 6892197.355164431966841)",263,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479332.560239477548748 6891680.720243656076491,1479337.094955755397677 6891635.807700280100107,1479335.769997502909973 6891634.887992111966014,1479334.062480878317729 6891633.339816934429109,1479333.260041374014691 6891630.994562047533691,1479316.203536522807553 6891629.262446126900613)",264,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478922.522982550086454 6892195.055733603425324,1478944.244833362754434 6892195.132381286472082,1478964.949638760183007 6892198.842130050994456)",265,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478944.244833362754434 6892195.132381286472082,1478948.518290270585567 6892151.075413181446493,1478957.111857536714524 6892107.018686534836888,1478968.99915905832313 6892072.619656547904015,1478994.415963881416246 6892026.73918299935758)",266,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479034.351325348485261 6892030.126940387301147,1479031.645424688700587 6892028.762639727443457,1479025.907049149041995 6892025.604821115732193,1478994.0800589711871 6892008.788691441528499)",267,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479023.751659313682467 6892197.355164431966841,1479051.137240131385624 6892183.788532035425305)",269,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479015.932539475848898 6891989.627237430773675,1479030.637709960807115 6891967.752577354200184,1479038.531475333031267 6891954.814824637956917)",270,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478986.037002523662522 6892003.868025694973767,1478968.961836289614439 6891994.609211077913642)",271,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479175.076821058290079 6892272.807519636116922,1479168.890572307631373 6892273.788619532249868)",272,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478966.694478150689974 6892266.047131421044469,1478949.302068391814828 6892240.109368146397173)",273,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479176.037882324540988 6892219.889621376991272,1479174.98351413779892 6892237.625969672575593)",274,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479175.095482441131026 6892253.338843335397542,1479175.076821058290079 6892272.807519636116922)",275,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479017.65871748351492 6892284.044186560437083,1478966.694478150689974 6892266.047131421044469)",276,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479168.890572307631373 6892273.788619532249868,1479040.462928561726585 6892294.161799130029976)",277,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479170.150215718429536 6892218.908528059720993,1479176.037882324540988 6892219.889621376991272)",278,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479176.065874400548637 6891773.136638476513326,1479193.822181151015684 6891798.107181905768812)",279,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479380.146768330130726 6891605.043519286438823,1479379.689564426196739 6891608.752995756454766)",280,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479319.525262851500884 6891600.613609550520778,1479323.005610939580947 6891573.329098201356828)",281,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479319.264003475895151 6891603.648633949458599,1479319.525262851500884 6891600.613609550520778)",282,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479379.689564426196739 6891608.752995756454766,1479375.994610418565571 6891635.010619860142469,1479371.403909988934174 6891684.245812286622822)",283,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479112.365240588784218 6891776.922836208716035,1479157.544450920075178 6891796.972852283157408,1479167.155063610058278 6891794.903467575088143,1479173.182690595509484 6891787.484344554133713,1479176.065874400548637 6891773.136638476513326,1479180.367323384154588 6891714.09057914186269,1479184.668772364966571 6891697.750287312082946,1479189.819314308930188 6891682.835584651678801,1479216.271825936157256 6891656.777074966579676)",284,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479098.593139297328889 6892472.555796183645725,1479118.924717012792826 6892513.39519539475441,1479148.503010437591001 6892548.945877370424569,1479229.493416403187439 6892660.412618377245963,1479234.933209798531607 6892661.685043681412935)",286,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479070.41444966266863 6892513.732458561658859,1479068.343036052072421 6892505.88342846557498)",287,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1479074.566607571439818 6892534.336199035868049,1479070.41444966266863 6892513.732458561658859)",288,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477868.43471504189074 6891004.698037818074226,1477945.356939326506108 6891019.718773512169719,1478003.72041735611856 6891029.390302868559957,1478039.289015 6891037.053963554091752,1478070.117621140554547 6891046.449621527455747,1478085.634561822284013 6891052.51925307046622,1478099.238710658624768 6891059.35525771882385,1478109.306527255102992 6891066.405851566232741,1478116.089940288802609 6891073.793654355220497,1478123.5731552161742 6891084.292929342016578,1478128.854326849337667 6891095.068111938424408,1478131.298968139104545 6891104.89300652872771,1478132.073415567399934 6891115.208392390981317,1478133.986207413021475 6891124.680779177695513,1478132.25069871544838 6891137.371955673210323,1478130.169954414712265 6891151.105425273999572,1478121.949614822166041 6891169.866363619454205,1478117.396237158449367 6891177.591468608006835,1478104.967755505582318 6891189.056519051082432,1478093.948208335554227 6891197.226143856532872,1478082.126221658429131 6891203.740390969440341,1478067.458373942412436 6891210.99037102330476,1478049.823366191005334 6891215.036874360404909,1478034.912920482223853 6891216.998816108331084,1478020.459678680170327 6891214.347129329107702,1478000.622627634555101 6891210.745128460228443,1477978.45290360529907 6891202.43754112534225,1477942.063205073587596 6891174.296036006882787,1477908.155470594996586 6891145.7101308433339,1477869.451760460156947 6891113.706299720332026,1477831.671788828447461 6891088.967793419025838,1477825.746799453394488 6891083.940398719161749)",291,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478121.949614822166041 6891169.866363619454205,1478201.437779386993498 6891217.397335584275424)",292,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477908.155470594996586 6891145.7101308433339,1478070.117621140554547 6891046.449621527455747)",293,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477942.063205073587596 6891174.296036006882787,1478116.089940288802609 6891073.793654355220497)",294,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477978.45290360529907 6891202.43754112534225,1478132.073415567399934 6891115.208392390981317)",295,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478502.968419844750315 6890668.378852861002088,1478491.659621223341674 6890662.079612115398049,1478357.717538550263271 6890547.713233261369169,1478130.104639569995925 6890358.679689854383469,1477868.845265486976132 6890131.995495325885713,1477851.947382397949696 6890112.623956055380404,1477704.587764723692089 6890002.725070449523628,1477682.39004861866124 6889990.909228938631713,1477667.638224675087258 6889991.169759628362954,1477650.339121833909303 6890011.138695799745619,1477637.518751118797809 6890024.67101151868701,1477629.102466995362192 6890037.329800856299698,1477626.90975439385511 6890045.283699262887239,1477621.115394705208018 6890055.337192909792066,1477617.560401076916605 6890072.379119392484426)",297,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478249.052300312556326 6891837.149678730405867,1478207.735996438423172 6891845.090029121376574)",298,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478305.754915182245895 6892111.878097912296653,1478297.767842886503786 6892113.47235338576138,1478285.376684002345428 6892102.711135057732463,1478249.565488368039951 6891961.345014753751457,1478246.71029663621448 6891935.132311857305467,1478251.254343609558418 6891925.459692790172994,1478266.19278139132075 6891904.336327421478927)",299,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478245.217385928379372 6892482.137093056924641,1478249.798755665076897 6892400.458819705992937,1478255.873036114964634 6892389.436608762480319,1478265.017114208079875 6892376.636146306991577,1478275.60744954738766 6892369.308465602807701,1478290.592540793586522 6892365.292040934786201,1478302.666456150589511 6892364.924124269746244,1478313.993916155071929 6892364.556207627058029,1478330.81715370924212 6892374.796560563147068,1478343.973429331788793 6892389.068690993823111,1478352.007155086379498 6892407.709879103116691,1478350.187670158455148 6892440.240082282572985,1478345.708938032155856 6892489.756148488260806)",300,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477998.047356663970277 6891324.661103413440287,1478020.413025221321732 6891332.049143535085022,1478049.879350342787802 6891330.792256562970579,1478086.632945860503241 6891324.339218001812696,1478122.32284249830991 6891312.122909786179662,1478158.218014360172674 6891292.917132769711316,1478184.875801208429039 6891269.342985554598272)",301,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1477965.529895279556513 6891284.946672138758004,1477998.047356663970277 6891324.661103413440287,1478031.899106987984851 6891366.506316591985524,1478044.019675809424371 6891373.311932296492159,1478056.233551548561081 6891375.8870316343382,1478074.745644338661805 6891370.552898212336004,1478103.446852721972391 6891365.862542429938912,1478147.40374241117388 6891349.476974621415138,1478163.508516683243215 6891340.49481596890837,1478174.164166870061308 6891331.252093238756061,1478176.888728912686929 6891309.486519484780729,1478184.875801208429039 6891269.342985554598272,1478190.875436118105426 6891248.466587806120515)",302,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478298.215716100297868 6890783.32936832588166,1478344.18803524854593 6890790.609622975811362,1478360.563399586360902 6890795.406931225210428,1478380.503088242607191 6890801.30777757242322,1478412.759290251415223 6890816.649998326785862,1478421.474156513577327 6890821.386014446616173)",303,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477950.162245669867843 6891274.998935245908797,1477965.529895279556513 6891284.946672138758004,1478000.743926630821079 6891290.280748765915632,1478023.613452556543052 6891292.687215525656939,1478047.994550570147112 6891291.46099033113569,1478072.963482179446146 6891288.364772556349635,1478095.851669488241896 6891280.823494642972946,1478111.704515080433339 6891274.615740698762238,1478129.106255532009527 6891265.219816066324711,1478142.495798451593146 6891260.667471537366509,1478156.566481890156865 6891257.203399649821222,1478178.49360792664811 6891255.563330735079944,1478190.875436118105426 6891248.466587806120515,1478201.437779386993498 6891217.397335584275424)",304,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478600.64210298541002 6890542.839440878480673,1478535.252613929333165 6890495.358435696922243,1478534.422182349255309 6890488.415626615285873,1478532.957263714633882 6890483.311976070515811,1478532.593366731191054 6890467.096795568242669,1478530.577937269350514 6890451.785894272848964,1478523.999799459474161 6890439.785478501580656,1478517.244378498755395 6890430.773683805018663,1478478.139448614558205 6890386.052035748027265,1478464.246048329630867 6890364.151086367666721,1478458.572987634688616 6890346.725391098298132,1478458.750270782737061 6890330.817005697637796)",305,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478340.343790168641135 6890286.463735183700919,1478368.121260051382706 6890284.593975868076086,1478383.470248277997598 6890287.291333702392876,1478397.167704032035545 6890294.509835544042289,1478446.153836674522609 6890326.924207131378353,1478458.750270782737061 6890330.817005697637796,1478503.892158345319331 6890335.016325954347849,1478531.492345079779625 6890335.338171758688986,1478549.220659751677886 6890332.02775839343667,1478568.049996066605672 6890323.322603833861649,1478581.206271691946313 6890309.513918485492468,1478611.904248145408928 6890269.283422131091356,1478624.873909929767251 6890255.781346369534731,1478640.418842690298334 6890243.183516338467598,1478661.786127212457359 6890232.056982149370015,1478685.187502576736733 6890226.662304446101189,1478711.509384517557919 6890225.466893401928246,1478734.892098498763517 6890232.961204051040113,1478757.192452211398631 6890244.976636931300163,1478770.059476385358721 6890257.712402357719839,1478779.343514857813716 6890266.785306516103446)",306,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478306.762629910372198 6890306.402752917259932,1478312.267738147405908 6890297.314478134736419,1478325.470667231595144 6890295.873841928318143,1478340.343790168641135 6890286.463735183700919)",307,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478502.221964489435777 6891308.628160036168993,1478503.920150421094149 6891293.882785264402628,1478500.98098246450536 6891258.506258369423449,1478495.905086055397987 6891238.197014091536403,1478490.232025357428938 6891222.68538433779031,1478483.513927168212831 6891211.634132778272033,1478480.528105752775446 6891201.47189961373806,1478468.724780458724126 6891168.793432957492769,1478460.224520107498392 6891146.093319251202047,1478452.750635873060673 6891121.906502928584814,1478444.203722060192376 6891086.377458564005792,1478440.9659719618503 6891055.921927305869758,1478442.906755883479491 6891021.588703794404864,1478448.719776954967529 6890994.842611184343696,1478458.880900469142944 6890968.127261942252517,1478497.388666070066392 6890895.277423369698226,1478576.074391131056473 6890758.086094295606017,1478645.634699478745461 6890649.848983596079051,1478661.468883685301989 6890629.219419246539474,1478670.46367070893757 6890619.165207961574197,1478673.300201055128127 6890616.375779623165727,1478677.396374812116846 6890611.777822931297123)",308,cycleway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478340.343790168641135 6890286.463735183700919,1478296.209617334185168 6890250.693169337697327)",309,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478828.898819707566872 6890880.302901268936694,1478825.987643823958933 6890825.386340913362801,1478839.097265987657011 6890775.359412892721593,1478842.60560615430586 6890756.859950644895434)",310,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478828.898819707566872 6890880.302901268936694,1478877.884952347259969 6890822.336283389478922)",311,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478454.476813877699897 6891793.539206840097904,1478436.776491281576455 6891737.267485307529569,1478426.895288528874516 6891709.308051269501448)",314,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478656.850191182689741 6891252.574420961551368,1478692.222844290314242 6891238.886761170811951,1478723.359363270457834 6891253.156875086948276)",316,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478466.158840178279206 6891481.390173728577793,1478483.747194468043745 6891486.157237827777863,1478497.845869976794347 6891492.978283021599054,1478514.510485763195902 6891508.551747220568359,1478523.122714417753741 6891524.799684935249388,1478528.851759261917323 6891543.914046152494848,1478534.506158574018627 6891569.711608147248626,1478542.959765463601798 6891648.515012176707387)",319,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478186.172767387935892 6892076.850545356050134,1478159.738917143782601 6891950.645316352136433,1478153.524676317116246 6891922.393888857215643)",324,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1477992.150359361898154 6891880.024598241783679,1478001.098492924124002 6891901.362505401484668,1478010.111941330833361 6891922.884417406283319,1478034.241110664559528 6892064.219202788546681)",325,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478153.524676317116246 6891922.393888857215643,1478129.796726738568395 6891820.855123235844076)",326,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478475.106973737478256 6892349.655597596429288,1478483.35530540603213 6892391.046249195933342)",327,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478523.77586285257712 6892467.619516485370696,1478535.821786136599258 6892493.496693428605795,1478543.360985215753317 6892518.883388736285269,1478545.749642353737727 6892539.471812217496336,1478544.443345481297001 6892557.070893596857786,1478539.078197620576248 6892576.92356213927269)",328,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478418.469673712505028 6892336.287995646707714,1478428.005640867631882 6892332.746811239980161,1478435.218265729257837 6892330.96855472587049,1478454.252877273596823 6892323.31899023335427,1478520.995316658169031 6892314.458381541073322,1478516.460600377526134 6892285.055947243236005,1478513.745369025040418 6892253.890710676088929,1478514.221234314609319 6892241.45837504696101)",331,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478129.796726738568395 6891820.855123235844076,1478087.482038826216012 6891839.403020612895489,1478076.089263980044052 6891843.971021738834679,1477992.150359361898154 6891880.024598241783679)",332,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478010.111941330833361 6891922.884417406283319,1478076.369184735696763 6891897.95947330724448,1478085.34531037369743 6891892.333743230439723,1478092.147384793264791 6891886.891964479349554,1478098.258988006506115 6891878.798283461481333,1478103.689450711710379 6891867.148302355781198,1478106.675272129941732 6891858.380169824697077,1478109.614440086763352 6891846.147721174173057)",333,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478054.423397313337773 6892200.32909594848752,1478083.927045200718567 6892187.697559367865324,1478108.522749131079763 6892177.21217271219939)",336,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478515.340917346067727 6892220.410827253945172,1478514.398517462657765 6892233.394996258430183,1478514.221234314609319 6892241.45837504696101)",337,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478550.844200145918876 6890545.552211744710803,1478554.819074909435585 6890541.383434292860329,1478590.24771217443049 6890558.411064649000764)",339,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478292.038798042573035 6890286.525038770399988,1478306.762629910372198 6890306.402752917259932,1478342.517841390101239 6890336.334361232817173,1478380.587064470164478 6890360.65674867015332,1478421.67010104469955 6890401.592703618109226,1478455.680473136715591 6890423.769625853747129,1478497.174060156103224 6890463.020016191527247,1478511.655294034164399 6890478.330938881263137,1478535.252613929333165 6890495.358435696922243)",340,path,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478535.252613929333165 6890495.358435696922243,1478532.378760814433917 6890516.49342564959079,1478534.599465494509786 6890529.290926621295512,1478543.332993139745668 6890539.498289315961301,1478550.844200145918876 6890545.552211744710803)",341,path,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478529.290301782777533 6892221.10065860580653,1478531.958879676647484 6892233.824225340969861,1478532.938602331560105 6892274.263839844614267,1478537.202728543663397 6892321.908650481142104,1478524.886215194128454 6892336.410634094849229,1478436.459247756982222 6892347.892667171545327,1478423.265649365726858 6892349.165043009445071)",342,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478454.252877273596823 6892323.31899023335427,1478448.91572148585692 6892291.325800381600857,1478445.295413015875965 6892261.908121032640338,1478513.745369025040418 6892253.890710676088929)",343,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478448.91572148585692 6892291.325800381600857,1478516.460600377526134 6892285.055947243236005)",344,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478344.18803524854593 6890790.609622975811362,1478348.937357440358028 6890749.870935382321477,1478348.666767374845222 6890739.923860553652048,1478342.881738376105204 6890733.302702005021274,1478318.04343645600602 6890728.520757546648383)",345,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478684.179787848610431 6890636.959331315010786,1478689.386313944123685 6890639.28896967228502,1478714.775126691674814 6890647.488689003512263,1478731.701001853682101 6890650.768579075112939,1478743.644287527073175 6890644.500005290843546)",347,path,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478431.579295878997073 6892449.652710394002497,1478423.079035527771339 6892454.803599508479238,1478359.453047247836366 6892490.139400960877538,1478345.708938032155856 6892489.756148488260806)",348,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478875.6642476671841 6890806.963398001156747,1478839.097265987657011 6890775.359412892721593)",349,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478600.660764371277764 6890704.365850842557847,1478605.186149956192821 6890712.81086390838027,1478611.820271917851642 6890722.313430053181946,1478614.516841887496412 6890727.034063856117427,1478654.694801344303414 6890781.137629794888198,1478763.126772282179445 6890832.75859528966248)",350,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478614.516841887496412 6890727.034063856117427,1478637.041132210055366 6890686.939418164081872,1478692.633394738193601 6890709.071147411130369)",351,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478492.303438970819116 6892407.924498297274113,1478509.257306208834052 6892408.369066645391285,1478526.360464518889785 6892406.008255694061518,1478540.33784103137441 6892401.240646092221141,1478552.645023687975481 6892388.946051742881536,1478560.342844535131007 6892378.199794524349272,1478570.681251191534102 6892353.135470101609826)",353,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478953.202297617914155 6891347.637623907066882,1478931.471116109518334 6891338.793418453074992,1478901.864830611506477 6891359.991937587969005,1478864.206157973501831 6891384.041518303565681,1478830.662320480914786 6891409.348070020787418,1478812.290188067127019 6891426.132289689965546,1478755.130369296530262 6891480.654421320185065,1478703.251722156070173 6891549.692815471440554,1478689.134385264245793 6891571.535681317560375,1478657.522001 6891627.055148504674435,1478637.796918255276978 6891670.128218493424356,1478618.799629485467449 6891717.401561643928289,1478619.667383834253997 6891757.486018202267587,1478668.280288797570392 6891771.649751598015428,1478672.507092240964994 6891756.075777715072036,1478697.168111018836498 6891710.1971107237041,1478713.935364418663085 6891684.552383543923497,1478733.277888791868463 6891659.076351834461093,1478767.045662891119719 6891621.092382272705436,1478780.789772106800228 6891606.361762794665992,1478810.078814079985023 6891579.583067904226482,1478855.052749193273485 6891541.890711458399892,1478900.287943673552945 6891515.526093818247318)",354,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478668.280288797570392 6891771.649751598015428,1478660.134594739647582 6891790.028919039294124,1478649.525598014704883 6891813.849854120984674,1478640.558803069638088 6891829.010061269626021,1478646.213202378945425 6891861.185358035378158,1478648.508552593644708 6891887.934333082288504,1478650.589296894380823 6891930.487613770179451,1478650.160085063660517 6891985.994230893440545,1478651.48504331917502 6892023.887949385680258)",355,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478782.749217414064333 6891635.179233017377555,1478773.446517555741593 6891671.001945073716342,1478739.286854397272691 6891804.361326470971107,1478712.246509179938585 6891906.574359148740768,1478678.739994450472295 6892037.714908943511546,1478666.423481103731319 6892094.096039024181664)",356,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478755.130369296530262 6891480.654421320185065,1478793.47951313527301 6891520.001941416412592)",357,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478773.446517555741593 6891671.001945073716342,1478818.709704117616639 6891683.065513053908944)",358,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478767.045662891119719 6891621.092382272705436,1478782.749217414064333 6891635.179233017377555)",359,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477846.171684092143551 6889939.00248887296766,1478169.946694119600579 6890214.401686768047512,1478195.494128623511642 6890209.911240221001208)",360,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478245.217385928379372 6892482.137093056924641,1478237.435588859487325 6892526.349177302792668,1478234.711026813834906 6892557.270186549983919,1478232.518314209766686 6892588.957829094491899,1478340.996938606491312 6892596.776279703713953)",361,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478345.708938032155856 6892489.756148488260806,1478245.217385928379372 6892482.137093056924641)",362,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478036.723074720241129 6891729.495856549590826,1478044.626170785399154 6891741.988715119659901)",363,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478321.449139009229839 6892126.425690860487521,1478312.127777771092951 6892118.009851474314928,1478305.754915182245895 6892111.878097912296653,1478300.501735622063279 6892101.944667064584792,1478292.346710877027363 6892075.516895382665098,1478267.685692099155858 6891978.835526627488434)",364,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478253.503040365641937 6891040.058120541274548,1478253.16713545517996 6891093.259474310092628,1478229.616469018859789 6891186.251565363258123,1478201.437779386993498 6891217.397335584275424)",365,track,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478663.092424082104117 6890614.521270107477903,1478670.46367070893757 6890619.165207961574197)",366,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478362.765442883595824 6892306.640205512754619,1478358.342694909079 6892292.506188929080963)",367,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478318.136743376497179 6892116.154995526187122,1478312.127777771092951 6892118.009851474314928,1478290.126006194157526 6892125.138020876795053)",368,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478439.062510809162632 6892244.340345094911754,1478418.786917239660397 6892247.360282902605832)",369,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478423.918797800550237 6892177.089536693878472,1478404.315014054765925 6892179.250996824353933)",370,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477934.290738694835454 6891718.244636114686728,1477948.034847910283133 6891709.921195707283914,1477965.940445724641904 6891696.585314678959548,1477976.76404836634174 6891682.437042098492384,1477981.336087410105392 6891672.028957143425941,1477988.007532143266872 6891667.445725190453231,1477996.741059794323519 6891667.445725190453231,1478005.073367684613913 6891672.85669831186533,1478008.824305844027549 6891681.593971388414502,1478008.824305844027549 6891692.845140528865159,1478014.64665760868229 6891701.582435327582061,1478025.890141385374591 6891713.247505113482475,1478032.132374287815765 6891720.329329716973007,1478036.723074720241129 6891729.495856549590826,1478027.560335241258144 6891739.060939160175622,1478017.147283044410869 6891743.644211953505874,1478005.073367684613913 6891745.315037799067795,1477993.008783017750829 6891739.474813184700906,1477976.353497921489179 6891744.042757529765368,1477985.926787842530757 6891771.95632619317621)",373,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478002.040892810327932 6891541.829398297704756,1478017.091298892628402 6891529.934653213247657,1478018.332280920585617 6891528.96897236444056,1478035.687367916340008 6891514.468445266596973,1478046.73490715934895 6891504.82698876876384,1478070.192266677971929 6891511.939286240376532,1478108.914638193091378 6891556.621212807483971)",374,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478035.687367916340008 6891514.468445266596973,1478084.262950108153746 6891571.137144286185503)",375,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478215.200549985514954 6891534.686417824588716,1478178.904158371733502 6891520.431132415309548)",377,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478284.536921729333699 6891783.682813100516796,1478291.20836645970121 6891823.66029835306108)",379,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478265.091759745730087 6891789.477083542384207,1478284.536921729333699 6891783.682813100516796)",380,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478207.735996438423172 6891845.090029121376574,1478215.228542061522603 6891874.245591463521123)",381,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478052.874502453953028 6891606.26979230903089,1478077.890087522100657 6891607.710663352161646,1478084.682831245940179 6891608.109202195890248,1478111.340618094196543 6891607.894604350440204,1478134.574041006155312 6891600.184414274990559,1478181.7500194106251 6891550.612513891421258)",382,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478201.437779386993498 6891217.397335584275424,1478240.664008267689496 6891229.552189072594047)",383,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478641.370573266642168 6892632.0667141424492,1478562.768824436236173 6892499.644068215973675,1478577.007460321532562 6892490.660624356009066,1478665.649033669615164 6892636.067941721528769,1478671.144811219535768 6892649.037451725453138,1478668.858791697770357 6892665.502320799045265)",384,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478577.50198699417524 6892657.315873299725354,1478578.043167128227651 6892638.551463293842971,1478576.540925727691501 6892624.723470226861537,1478569.626883004792035 6892561.378688556142151,1478562.768824436236173 6892499.644068215973675)",385,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478354.479788446333259 6892046.069347251206636,1478380.7830090012867 6892040.244233387522399)",389,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478279.339726323960349 6892178.407874005846679,1478258.466968471417204 6892184.15644040890038)",394,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478330.751838867552578 6891513.839987489394844,1478314.572419055039063 6891526.363167470321059,1478304.653893533628434 6891544.619147759862244)",395,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478266.771284291520715 6891649.189465964213014,1478247.857971743447706 6891659.628178384155035,1478237.248975021298975 6891675.033351420424879)",396,path,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478502.221964489435777 6891308.628160036168993,1478500.943659695796669 6891361.524732173420489,1478492.462060733232647 6891398.051313592121005,1478467.679742961889133 6891433.934281352907419,1478439.631683016428724 6891460.022724987007678,1478405.05213871714659 6891485.467469537630677,1478373.747667287709191 6891508.950281143188477,1478352.874909435166046 6891537.000988053157926)",398,path,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478314.572419055039063 6891526.363167470321059,1478287.214830313343555 6891523.757363410666585)",399,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478034.241110664559528 6892064.219202788546681,1478039.344999152235687 6892078.598087023943663,1478054.283436933998019 6892089.251967732794583,1478158.106046056607738 6892095.843584448099136,1478176.534162622177973 6892091.444062924012542,1478186.172767387935892 6892076.850545356050134)",401,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478483.047392571577802 6891339.299239296466112,1478488.347225587582216 6891367.196074674837291,1478478.951218814589083 6891390.17271673399955,1478463.807505809003487 6891415.739864616654813,1478443.457266707671806 6891438.701317322440445,1478427.287177590886131 6891453.830160783603787,1478398.585969207808375 6891473.143619342707098,1478366.227129588602111 6891491.920637429691851,1478330.751838867552578 6891513.839987489394844,1478321.794374612625688 6891529.076270229183137,1478316.746470273472369 6891546.32058884575963)",405,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478057.465202880557626 6892224.90239691734314,1478093.024469834985211 6892209.925397932529449,1478146.34004353149794 6892186.425209088250995)",406,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478066.245383990462869 6892248.387368608266115,1478102.47646076255478 6892233.011756023392081,1478190.418232214171439 6892193.645416352897882)",407,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478266.323411077726632 6892206.675530795939267,1478258.466968471417204 6892184.15644040890038)",408,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478294.147534419083968 6892193.936677500605583,1478302.395866084843874 6892198.198289232328534,1478342.172605789732188 6892190.916759766638279,1478366.684333492536098 6892186.885094705037773,1478394.974991430528462 6892184.217758473940194,1478408.691108567407355 6892187.253003220073879,1478423.946789876557887 6892198.397573292255402)",409,cycleway,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478426.568714311579242 6892198.351584662683308,1478423.918797800550237 6892177.089536693878472)",410,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478290.126006194157526 6892125.138020876795053,1478295.649775819852948 6892148.408088837750256)",411,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478379.915254652500153 6892302.271228101104498,1478362.765442883595824 6892306.640205512754619)",412,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478435.358226108597592 6892223.185482617467642,1478439.258455337258056 6892236.184985723346472,1478439.062510809162632 6892244.340345094911754)",413,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478083.927045200718567 6892187.697559367865324,1478093.024469834985211 6892209.925397932529449,1478102.47646076255478 6892233.011756023392081,1478106.442004830343649 6892242.715404408052564,1478115.819350223056972 6892267.411472347564995)",414,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478258.466968471417204 6892184.15644040890038,1478255.191895604366437 6892172.015472995117307,1478188.91599081363529 6892168.2597481533885,1478009.794697806239128 6892157.437138617038727,1477988.875286494847387 6892163.798869086429477,1478001.574358213692904 6892194.411893087439239,1477860.755555583396927 6892253.814062429592013,1477862.994921646546572 6892261.662846405990422,1477820.493619899032637 6892278.142251771874726,1477774.316025526728481 6892297.166425926610827,1477770.956976432120427 6892291.555746189318597,1477604.488101679133251 6892361.919472146779299)",415,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478148.495433366857469 6891955.366671485826373,1478146.871892969822511 6891953.542511217296124)",416,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478159.738917143782601 6891950.645316352136433,1478148.495433366857469 6891955.366671485826373)",418,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478188.91599081363529 6892168.2597481533885,1478189.345202641561627 6892164.39671871624887)",419,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478136.794745683437213 6891958.003273610956967,1478133.109122371301055 6891956.638985191471875)",420,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478191.565907321637496 6892107.493896978907287,1478186.172767387935892 6892076.850545356050134)",421,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478146.871892969822511 6891953.542511217296124,1478136.794745683437213 6891958.003273610956967)",422,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478174.164166870061308 6891331.252093238756061,1478183.056316283298656 6891328.90692647267133,1478203.341240539913997 6891334.992099165916443)",423,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478742.832517329836264 6890551.621465139091015,1478732.372811674140394 6890553.414654522202909)",424,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478670.46367070893757 6890619.165207961574197,1478689.983478227397427 6890631.901566152460873,1478689.386313944123685 6890639.28896967228502)",425,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478744.437396341003478 6890562.901705839671195,1478742.832517329836264 6890551.621465139091015)",426,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478711.369424138218164 6890558.916836394928396,1478701.861449058866128 6890559.085426985286176,1478696.636261577485129 6890557.292236343957484)",427,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478942.192081137793139 6890130.999331175349653,1478929.446355960331857 6890151.520337683148682,1478917.950943500734866 6890148.838351035490632,1478911.232845311518759 6890147.79620789270848,1478903.646992770954967 6890148.57781523745507,1478894.801496819360182 6890155.535656509920955,1478878.239518640562892 6890175.397721116431057,1478845.694065183168277 6890222.738904757425189,1478818.970963490428403 6890267.812139219604433,1478806.281222464516759 6890296.624811832793057,1478797.323758209589869 6890324.257487938739359,1478792.845026083523408 6890342.311500664800406,1478787.022674316074699 6890377.546061621978879,1478784.932599325431511 6890395.446932943537831,1478779.85670291329734 6890416.060571308247745,1478771.794985085725784 6890435.172296620905399,1478761.046027981443331 6890455.172988045029342,1478735.965128068579361 6890488.553563161753118,1478725.962626316817477 6890506.531313234940171,1478713.720758504699916 6890536.540298494510353,1478704.016838894458488 6890553.276716859079897,1478701.861449058866128 6890559.085426985286176,1478700.424522500019521 6890562.96301154140383,1478697.149449632968754 6890575.208834332413971,1478693.557133241556585 6890582.672818078659475,1478677.396374812116846 6890611.777822931297123)",428,cycleway,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1478732.372811674140394 6890553.414654522202909,1478711.369424138218164 6890558.916836394928396)",429,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478677.396374812116846 6890611.777822931297123,1478687.081633039517328 6890607.195195377804339,1478692.78268580744043 6890602.581917437724769,1478698.707675185520202 6890595.562383316457272,1478713.562136739492416 6890570.764165580272675,1478718.376773776020855 6890564.786856304854155,1478726.401168837677687 6890560.541436778381467,1478737.066149717196822 6890558.610308059491217,1478744.437396341003478 6890562.901705839671195)",430,cycleway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478643.236711653415114 6892266.522351266816258,1478653.985668757697567 6892305.935037068091333)",431,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478772.90533742448315 6891164.83891832921654,1478775.947142997290939 6891159.152391017414629)",433,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478772.90533742448315 6891164.83891832921654,1478769.872862547170371 6891170.280208340846002)",434,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478723.359363270457834 6891253.156875086948276,1478731.085176187567413 6891239.193315446376801)",435,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478786.593462488148361 6891171.828294342383742,1478772.90533742448315 6891164.83891832921654)",436,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478668.765484777279198 6892171.203009921126068,1478681.837784175062552 6892208.622385010123253)",437,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478710.221749030752108 6891380.163537707179785,1478748.841482935240492 6891408.183139178901911,1478750.819589622784406 6891407.692642033100128,1478767.596173715544865 6891418.790147279389203,1478786.602793178288266 6891409.302085905335844,1478804.489729615394026 6891405.224828724749386,1478817.935256686527282 6891406.941568339243531,1478830.662320480914786 6891409.348070020787418)",438,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478666.796708779875189 6891437.429085585288703,1478710.221749030752108 6891380.163537707179785,1478724.544361143605784 6891353.262972820550203,1478732.932653188472614 6891356.113968593068421,1478780.79910279950127 6891268.009469541721046)",439,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478650.160085063660517 6891985.994230893440545,1478681.333926809718832 6891992.585762946866453,1478677.928224253468215 6892027.842886608093977,1478677.741610415279865 6892034.388465284369886,1478678.739994450472295 6892037.714908943511546)",440,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478168.15520126442425 6892347.494091650471091,1478160.606671495363116 6892351.387868744321167)",441,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478168.15520126442425 6892347.494091650471091,1478229.02863542875275 6892316.635208372958004,1478258.448307088343427 6892304.662668073549867,1478284.107709898613393 6892296.859831305220723,1478311.735888709081337 6892290.911897944286466,1478306.995897207176313 6892268.867791567929089,1478278.453310589306056 6892275.014994577504694,1478250.899777316488326 6892283.385009210556746,1478219.585975191090256 6892296.139333989471197,1478179.24006327916868 6892316.972463291138411,1478168.15520126442425 6892347.494091650471091)",442,service,0,0,-1,minorroads,0,0
|
||||||
|
"LINESTRING (1478466.102856026496738 6890932.568242912180722,1478535.261944622267038 6890968.449133092537522,1478563.813861930277199 6890983.239892659708858)",443,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478535.261944622267038 6890968.449133092537522,1478551.870576259680092 6890937.856104321777821)",444,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478201.335141776595265 6891732.714873464778066,1478206.95221831719391 6891742.801134817302227,1478218.783535687020048 6891781.920006790198386,1478228.459463221486658 6891817.743372742086649,1478231.855835082009435 6891832.934244934469461,1478232.47166075091809 6891843.219907283782959,1478248.548442946979776 6891921.397502834908664,1478245.795888828579336 6891933.921317706815898,1478285.656604760792106 6892105.271138682030141,1478298.74756553885527 6892115.112597333267331)",445,cycleway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478294.147534419083968 6892193.936677500605583,1478283.305270394310355 6892188.264751724898815,1478292.328049491159618 6892184.800280102528632,1478299.932563415030017 6892178.361885491758585,1478303.198305588914081 6892173.471774934791028,1478305.997513171983883 6892166.573504913598299,1478306.128142858389765 6892160.089136488735676,1478302.031969098607078 6892141.893076196312904,1478301.080238522263244 6892130.840560940094292,1478301.957323563983664 6892124.540174165740609,1478298.74756553885527 6892115.112597333267331)",446,cycleway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478201.335141776595265 6891732.714873464778066,1478215.956336030969396 6891726.108225850388408,1478246.253092732280493 6891712.113187463954091)",447,cycleway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478001.098492924124002 6891901.362505401484668,1478060.320394612615928 6891876.636904109269381,1478078.972447784850374 6891865.860673903487623,1478082.060906813945621 6891858.579445453360677,1478079.243037850596011 6891849.841980019584298,1478076.089263980044052 6891843.971021738834679)",448,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1477667.806177130201831 6890740.184415513649583,1477692.989714653696865 6890752.445835038088262,1477718.966360991122201 6890765.105770315043628,1477746.939775401959196 6890778.731316149234772,1477774.325356219662353 6890792.081001562997699,1477799.844798653386533 6890804.495769085362554,1477826.689199339831248 6890817.569612891413271,1477853.21635650168173 6890830.490208609960973,1477870.412821729434654 6890838.874046353623271,1477884.222245789365843 6890845.602580599486828,1477896.118878001114354 6890851.39617495983839,1477908.761965568177402 6890857.557621157728136,1477917.271556612337008 6890861.695908572524786)",450,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478824.485402423189953 6889940.611638756468892,1478826.332879424327984 6889961.990374932065606,1478873.471535062883049 6890004.119678050279617,1478895.202716574305668 6890003.031577592715621)",451,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478826.332879424327984 6889961.990374932065606,1478844.583712844643742 6889961.729845183901489,1478857.460067708510906 6889965.62246694136411,1478866.314894350245595 6889971.446077805943787,1478871.148192772408947 6889978.863525116816163,1478873.051653927890584 6889986.694763084873557,1478873.471535062883049 6890004.119678050279617)",452,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477976.540111759677529 6891214.653682666830719,1477971.902757871197537 6891228.034747345373034)",453,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477938.965415351791307 6891251.148941309191287,1477930.74507576203905 6891262.215574943460524)",454,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477687.951141010504216 6891192.24466432724148,1477663.122169780312106 6891154.109624875709414)",455,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477691.104914883850142 6891132.620425897650421,1477676.838286919984967 6891143.564276114106178,1477663.122169780312106 6891154.109624875709414)",456,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477462.521623944398016 6891132.436495768837631,1477442.441974906018004 6891104.218598398379982,1477409.887190758716315 6891028.072153965942562,1477358.950943501666188 6890905.500577809289098,1477348.043364635203034 6890881.83560439478606,1477342.883491998305544 6890867.014377377927303)",457,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1477831.671788828447461 6891088.967793419025838,1477945.356939326506108 6891019.718773512169719)",458,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477869.451760460156947 6891113.706299720332026,1478003.72041735611856 6891029.390302868559957)",459,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477845.527866347460076 6891886.3401223346591,1477791.073948236415163 6891868.1293527437374)",460,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477453.480183461913839 6891871.563030050136149,1477488.80618311651051 6891880.361834840849042,1477497.931599820964038 6891882.584530951455235)",461,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477532.912363875191659 6891765.932137601077557,1477528.760205966420472 6891769.565044686198235,1477518.44979138020426 6891779.850625957362354,1477476.415024229325354 6891823.798257810994983,1477453.480183461913839 6891871.563030050136149,1477446.790077348472551 6891924.126067938283086,1477455.001086245523766 6891954.247648754157126,1477479.27954665129073 6891990.056453500874341,1477520.185300080571324 6892012.866254753433168,1477559.542158647440374 6892023.489389923401177,1477605.402509489562362 6892027.306364,1477641.698901103343815 6892021.588568172417581,1477698.606791194295511 6891999.713821127079427,1477758.453849244629964 6891976.490170946344733,1477766.870133368065581 6891969.990626736544073,1477805.835102870129049 6891944.375728919170797,1477826.847821102011949 6891917.074721806682646,1477845.527866347460076 6891886.3401223346591,1477851.910059632034972 6891830.496958760544658,1477838.539178092731163 6891786.549290280789137,1477791.7177659785375 6891729.219940873794258,1477778.748104193946347 6891722.337380684912205,1477750.625398713862523 6891707.238689129240811,1477722.110804171767086 6891695.68092814553529,1477715.271406986285001 6891692.891126264818013,1477715.271406986285001 6891689.074310968630016)",462,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477698.606791194295511 6891999.713821127079427,1477684.106895933393389 6891965.959072479978204)",463,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477641.698901103343815 6892021.588568172417581,1477630.651361857540905 6891980.675021766684949)",464,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477758.453849244629964 6891976.490170946344733,1477733.382280024467036 6891937.293706933036447)",465,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477589.372380752116442 6891940.098922687582672,1477608.183055686764419 6891941.662485988810658,1477621.553937226068228 6891941.61649882979691,1477645.869720400776714 6891935.300931309349835,1477672.452861708588898 6891925.796931291930377,1477690.274483300978318 6891915.112609200179577,1477708.749253325397149 6891903.569878341630101,1477733.260981028201059 6891876.943482707254589,1477740.81884149601683 6891855.620969253592193,1477739.204631788888946 6891837.83947719540447,1477727.531936184270307 6891822.342019217088819,1477711.119249074719846 6891813.175386519171298,1477692.793770122574642 6891811.21329927444458,1477669.625662055332214 6891811.627177014946938,1477646.289601535769179 6891816.425094575621188,1477623.009525167988613 6891825.009235370904207,1477603.237788961268961 6891833.317466095089912,1477582.868888476863503 6891847.971857075579464,1477568.835527812829241 6891862.702919281087816,1477557.713343029376119 6891874.904735265299678,1477552.590793161420152 6891893.192165004089475,1477556.323069932172075 6891914.928661165758967,1477568.508953595301136 6891930.993471848778427,1477589.372380752116442 6891940.098922687582672)",466,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477630.651361857540905 6891980.675021766684949,1477621.553937226068228 6891941.61649882979691)",467,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477733.382280024467036 6891937.293706933036447,1477725.65646710456349 6891926.732001763768494)",468,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477692.793770122574642 6891811.21329927444458,1477692.383219677722082 6891764.399265908636153)",469,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477623.009525167988613 6891825.009235370904207,1477605.701091633876786 6891783.682813100516796)",470,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477568.835527812829241 6891862.702919281087816,1477532.959017333807424 6891828.534867286682129)",471,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477712.416215251665562 6892167.769204625859857,1477622.598974722903222 6892203.119073937647045,1477613.996076758485287 6892205.019938614219427,1477434.361595695605502 6891964.472149926237762,1477394.239620390348136 6891910.743844576179981,1477429.593612115131691 6891873.494474177248776,1477436.890213207341731 6891866.151923180557787,1477441.835479930043221 6891855.605640362016857,1477443.235083720181137 6891845.319962166249752,1477442.451305598951876 6891835.080283679999411,1477436.778244903776795 6891818.847047658637166,1477420.038983579957858 6891781.7513905512169,1477621.376654078019783 6891628.511351731605828,1477646.028342162957415 6891609.810656713321805,1477673.292623987188563 6891591.493214836344123)",472,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477815.604337325086817 6892123.712386487983167,1477827.603607150260359 6892118.301109884865582,1477942.464424828533083 6892069.323857038281858,1477932.499245842685923 6892029.866343609988689,1477907.651613229420036 6891922.531850008293986,1477868.882588252890855 6891831.89188345707953,1477820.43763574725017 6891737.451429275795817,1477790.495445336448029 6891720.130057509988546,1477761.831559722078964 6891708.204391392879188,1477715.271406986285001 6891689.074310968630016,1477648.389007219579071 6891687.173568284139037,1477635.969856259413064 6891687.173568284139037)",473,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477679.992060790536925 6892101.331492725759745,1477711.445823292247951 6892094.893164958804846,1477740.706873192451894 6892082.721673713997006,1477770.406465607928112 6892066.840511322021484)",474,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477679.992060790536925 6892101.331492725759745,1477656.320095360744745 6892053.243440655060112,1477653.212974948808551 6892047.832211491651833,1477641.698901103343815 6892021.588568172417581)",475,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477656.320095360744745 6892053.243440655060112,1477710.120865036733449 6892026.509244767017663,1477767.52328180288896 6891994.900465020909905)",476,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477710.120865036733449 6892026.509244767017663,1477698.606791194295511 6891999.713821127079427)",477,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477648.389007219579071 6891687.173568284139037,1477621.376654078019783 6891628.511351731605828)",478,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477932.499245842685923 6892029.866343609988689,1477886.685548456618562 6892048.276759926229715,1477859.551896321587265 6892044.52109289355576,1477838.193942492129281 6892048.522028035484254,1477825.345579701242968 6892061.076699531637132,1477818.552835974609479 6892075.225638516247272,1477816.938626270508394 6892089.72717712726444,1477827.603607150260359 6892118.301109884865582)",479,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477793.089377692667767 6892048.154125873930752,1477798.221258256351575 6892062.103761437349021,1477809.315450964029878 6892056.815160491503775,1477818.552835974609479 6892075.225638516247272)",480,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477653.212974948808551 6892047.832211491651833,1477598.712403376353905 6892069.354515632614493,1477624.567750717513263 6892151.274696073494852,1477622.598974722903222 6892203.119073937647045)",481,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477420.038983579957858 6891781.7513905512169,1477396.65626959851943 6891799.042237523943186,1477337.518344137584791 6891842.192873341962695,1477394.239620390348136 6891910.743844576179981)",482,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1476971.260693745920435 6891517.24285698775202,1477003.171660154126585 6891536.188589158467948,1476982.261579535668716 6891598.958142179064453,1476967.575070433784276 6891697.474372724071145,1476966.875268540112302 6891701.980978826992214,1476966.007514191325754 6891708.173734177835286,1476958.244378502713516 6891776.202385487966239,1476938.295359153533354 6891904.612249108031392,1476921.612081981264055 6892006.780568920075893,1476991.209713097894564 6892086.753286531195045,1477034.942666180199012 6892055.404867491684854,1477081.764078291598707 6892021.849164674989879,1477195.953086152207106 6891932.158478451892734,1477145.837939785327762 6891865.492780096828938)",483,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477366.966007873183116 6891868.589220155961812,1477374.589183179894462 6891866.535145924426615,1477381.72716250969097 6891866.059949724003673,1477387.073648984543979 6891867.378236030228436,1477393.241236352361739 6891869.064416506327689,1477400.024649386061355 6891868.911127359606326,1477405.669718005461618 6891867.424222765490413,1477410.885574793908745 6891865.109557402320206,1477415.000409936532378 6891861.675882850773633,1477418.340797648299485 6891857.813000736758113,1477420.710793400416151 6891853.612884988076985,1477422.185042725177482 6891848.309092325158417,1477422.492955556837842 6891842.898001108318567,1477421.839807122014463 6891837.241651857271791,1477418.331466958159581 6891830.450972235761583,1477407.787785074906424 6891815.995887773111463,1477396.65626959851943 6891799.042237523943186)",484,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477698.644113963004202 6891577.758992903865874,1477820.43763574725017 6891737.451429275795817)",485,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1477687.456614337861538 6891609.488759884610772,1477698.756082263542339 6891624.587267857044935,1477700.855487952940166 6891631.31645973585546,1477700.70619688089937 6891638.674124730750918,1477699.073325790930539 6891646.231066821143031,1477695.555654934141785 6891652.009909689426422,1477690.4051129873842 6891656.97634560521692,1477684.937327513471246 6891659.873434635810554,1477677.034231450874358 6891661.329643805511296,1477668.60861663450487 6891660.256647552363575,1477661.470637307269499 6891656.961017092689872,1477656.077497370773926 6891652.5923927500844,1477652.401204751804471 6891646.859534942544997,1477649.816603085491806 6891639.394563124515116,1477650.255145606352016 6891626.01281373295933,1477656.189465674338862 6891614.179257809184492,1477665.128268546424806 6891606.315777552314103,1477673.292623987188563 6891591.493214836344123,1477691.888693005079404 6891579.199858834967017,1477698.644113963004202 6891577.758992903865874)",486,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477181.042640446452424 6891986.515421602874994,1477192.79931227886118 6892009.585808921605349,1477209.538573602680117 6892019.396492030471563,1477223.357328352984041 6892015.226950248703361,1477241.897413221886382 6892003.868025694973767,1477254.251249337336048 6892002.672350356355309,1477481.09903157921508 6892286.972161007113755,1477529.711936542764306 6892276.82389810308814,1477549.437019285047427 6892291.479097588919103,1477584.352468494558707 6892335.368207341991365,1477604.488101679133251 6892361.919472146779299)",490,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477583.904595280997455 6891294.219997277483344,1477610.217146528884768 6891274.416479538194835,1477654.062067914754152 6891332.033815642818809,1477629.401049136882648 6891352.74182316660881)",491,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477868.005503211170435 6891418.483586152084172,1477848.45770361693576 6891433.290501792915165,1477828.732620871858671 6891448.066788487136364,1477807.514627421740443 6891462.582523957826197)",492,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477807.514627421740443 6891462.582523957826197,1477751.623782749054953 6891507.58606893569231,1477629.401049136882648 6891352.74182316660881)",493,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477629.401049136882648 6891352.74182316660881,1477583.904595280997455 6891294.219997277483344)",494,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477583.904595280997455 6891294.219997277483344,1477558.161216243170202 6891260.008378100581467)",495,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477601.101060511544347 6890443.310502992011607,1477582.691605331841856 6890428.290844186209142,1477188.208611846435815 6890073.681786119006574)",496,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477130.610250554978848 6890845.357349183410406,1477112.210126065183431 6890858.29331654496491)",500,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477083.490256302058697 6890932.47628013510257,1477087.66107559367083 6890947.466226569376886,1477089.116663535358384 6890956.187384136021137)",502,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477087.66107559367083 6890947.466226569376886,1477145.95923878159374 6890906.512165016494691,1477156.708195885876194 6890900.657222660258412,1477187.527471335837618 6890885.774652787484229,1477210.406327954260632 6890875.919371928088367,1477223.142722439020872 6890877.1455337414518)",503,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477406.453496126458049 6891175.721502039581537,1477391.981592941563576 6891187.615723043680191,1477374.197294117882848 6891201.563865466974676,1477022.420877606840804 6891477.159598301164806,1476986.90826411684975 6891504.980270971544087,1476971.260693745920435 6891517.24285698775202,1476941.243857803056017 6891507.294832653366029)",505,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477358.950943501666188 6890905.500577809289098,1477336.324015568709001 6890915.141315577551723,1477320.424516517668962 6890921.931222087703645,1477285.014540638308972 6890925.701691834256053,1477178.570007083471864 6890971.238683593459427,1477158.975554024800658 6890984.971869397908449,1477098.400702007813379 6891032.118565235286951)",506,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477095.414880589582026 6891011.595310922712088,1477098.400702007813379 6891032.118565235286951,1477105.977223855676129 6891139.563791322521865)",507,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477677.911316492594779 6891115.560924383811653,1477665.996022895211354 6891125.600428977049887,1477664.307167656254023 6891126.872611372731626,1477657.943635757779703 6891131.777412844821811)",508,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477768.558988607022911 6891022.355068786069751,1477796.73767824168317 6891035.567212809808552,1477831.550489834975451 6891054.557791966944933,1477842.486060780240223 6891060.520138014107943)",509,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477556.62165207369253 6890751.633515411056578,1477574.769847880583256 6890734.436881551519036,1477588.150060110026971 6890725.838578412309289,1477599.608149800915271 6890720.106381432153285,1477612.997692723292857 6890719.156124571338296,1477625.40751299331896 6890720.106381432153285,1477644.516770066693425 6890726.804162795655429,1477667.806177130201831 6890740.184415513649583)",510,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477782.620341347064823 6891064.459273951128125,1477796.73767824168317 6891035.567212809808552,1477810.771038905717432 6891005.403092133812606)",511,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477872.456243261462077 6890928.291974918916821,1477851.564824028639123 6890914.007110533304513)",512,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477853.21635650168173 6890830.490208609960973,1477820.027085299603641 6890898.649376915767789)",513,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477799.844798653386533 6890804.495769085362554,1477766.64619676116854 6890872.63939,1477751.77307382132858 6890903.186189386062324)",514,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477724.163556393934414 6890895.04751749522984,1477741.136085020378232 6890860.209190255962312,1477774.325356219662353 6890792.081001562997699)",515,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477695.984866762068123 6890883.337653747759759,1477713.750504202675074 6890846.874718683771789,1477746.939775401959196 6890778.731316149234772)",516,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477668.114089961862192 6890869.497352491132915,1477685.777089789044112 6890833.233730419538915,1477718.966360991122201 6890765.105770315043628)",517,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477754.656257629161701 6891051.660921058617532,1477768.558988607022911 6891022.355068786069751,1477783.898646140703931 6890993.049323340877891)",518,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477642.893229672452435 6890855.289227482862771,1477659.791112761478871 6890820.589014776051044,1477692.989714653696865 6890752.445835038088262)",519,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477623.998578510247171 6890830.107035243883729,1477634.607575237983838 6890808.327491325326264,1477667.806177130201831 6890740.184415513649583)",520,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477781.379359321901575 6890910.619823455810547,1477793.499928140547127 6890885.713344623334706,1477826.689199339831248 6890817.569612891413271)",521,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477870.412821729434654 6890838.874046353623271,1477837.214219840010628 6890907.017958667129278)",522,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477091.775910733500496 6890789.490762358531356,1476942.736768513685092 6890783.32936832588166)",524,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477536.616648569935933 6891975.447790859267116,1477569.955210844287649 6891984.997836984694004,1477600.793147677090019 6891986.469434185884893,1477630.651361857540905 6891980.675021766684949,1477684.106895933393389 6891965.959072479978204,1477713.899795272154734 6891950.844594269990921,1477733.382280024467036 6891937.293706933036447,1477770.46244975971058 6891905.470672187395394,1477791.073948236415163 6891868.1293527437374,1477793.630557826953009 6891835.402189544402063,1477787.742891217814758 6891810.416201460175216,1477774.064096846850589 6891789.768330050632358,1477751.353192683542147 6891775.144702635705471,1477724.723397911060601 6891766.315355568192899,1477692.383219677722082 6891764.399265908636153,1477662.301068890141323 6891765.901480161584914,1477631.080573685467243 6891773.381898197345436,1477605.701091633876786 6891783.682813100516796,1477577.802322755102068 6891796.129769561812282,1477555.511299735167995 6891809.818378160707653,1477532.959017333807424 6891828.534867286682129,1477517.423415269004181 6891848.12514582183212,1477505.610759282018989 6891863.929231609217823,1477497.931599820964038 6891882.584530951455235,1477494.936447712592781 6891903.999089813791215,1477496.830578175140545 6891922.010663450695574,1477500.497540106996894 6891936.419951410032809,1477507.775479810545221 6891951.089859411120415,1477523.27375910943374 6891966.464932785369456,1477536.616648569935933 6891975.447790859267116)",535,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477161.457518077688292 6890758.668512595817447,1477029.446888633305207 6890709.37768148444593)",538,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477131.048793075839058 6890631.24252425506711,1477164.126095974352211 6890700.488198084756732,1477179.391107973642647 6890738.498471793718636)",539,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477519.588135797530413 6890535.436799609102309,1477529.833235539030284 6890516.294183277525008,1477567.697183395503089 6890475.526233145967126,1477601.101060511544347 6890443.310502992011607,1477654.556594587164 6890383.078775299713016,1477699.67982076969929 6890328.610064546577632,1477708.963859239360318 6890318.096450427547097,1477743.879308448871598 6890287.352637302130461,1477755.803932736394927 6890280.6858737943694,1477780.185030752792954 6890271.551650473847985,1477786.39927157945931 6890262.126246342435479,1477776.443423286313191 6890246.309983272105455,1477725.507176032289863 6890206.493598283268511,1477672.238255794625729 6890175.474349547177553,1477612.512496743584052 6890149.129538116045296,1477598.469805386383086 6890135.673640975728631,1477603.097828581929207 6890120.148812685161829,1477617.560401076916605 6890072.379119392484426,1477630.968605382135138 6890069.988343353383243,1477642.156105010071769 6890079.5361262653023,1478111.629869545809925 6890480.982382909394801)",540,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477457.678994829300791 6890649.726370869204402,1477478.663720985176042 6890623.471964616328478,1477502.205056728795171 6890571.39254963491112)",542,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477394.202297621639445 6890700.610811580903828,1477457.678994829300791 6890649.726370869204402)",543,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477202.689845727290958 6890575.867871635593474,1477215.379586750175804 6890595.455097910948098,1477325.491082236869261 6890699.476636806502938,1477343.788569116033614 6890718.313154872506857,1477379.665079592028633 6890708.013604944571853,1477394.202297621639445 6890700.610811580903828)",544,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477179.129848600830883 6890751.863417183049023,1477161.457518077688292 6890758.668512595817447,1477091.775910733500496 6890789.490762358531356,1477003.218313615769148 6890845.05080992449075,1476929.076635525561869 6890897.699098956771195,1476846.1361149456352 6890928.598517356440425,1476697.29291725391522 6891011.472692683339119,1476669.580762218683958 6891010.522401385009289,1476642.055221018847078 6890998.321897276677191)",545,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477179.391107973642647 6890738.498471793718636,1477173.72737796837464 6890740.307029619812965,1477160.067244980484247 6890746.192508741281927,1477144.335698384558782 6890708.933207083493471,1477164.126095974352211 6890700.488198084756732)",546,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477825.784122222103179 6891305.424640764482319,1477810.183205312816426 6891318.392004153691232,1477807.579942266456783 6891320.553233419544995,1477805.405891042202711 6891322.361922188661993)",547,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477434.361595695605502 6891964.472149926237762,1477445.68905570008792 6891957.957286356948316,1477455.001086245523766 6891954.247648754157126,1477500.497540106996894 6891936.419951410032809)",548,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477654.071398604661226 6891729.08198303822428,1477655.685608308762312 6891734.416354355402291)",549,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477751.353192683542147 6891775.144702635705471,1477778.748104193946347 6891722.337380684912205)",550,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477530.710320580750704 6892072.497022124007344,1477532.408506509615108 6892059.927003527060151,1477512.972675218945369 6892026.631878494285047,1477520.185300080571324 6892012.866254753433168,1477536.616648569935933 6891975.447790859267116)",551,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477188.460540529107675 6890785.490453751757741,1477179.129848600830883 6890751.863417183049023,1477173.72737796837464 6890740.307029619812965)",555,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477233.434475639369339 6890900.503951973281801,1477229.739521637326106 6890892.028087645769119,1477223.142722439020872 6890877.1455337414518,1477221.817764186300337 6890863.182627168484032)",557,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477682.39004861866124 6889990.909228938631713,1477660.640205727424473 6889979.016778235323727,1477638.041269867448136 6889962.005700208246708,1477601.502280263695866 6889935.768864835612476,1477037.424630233086646 6889460.654818921349943,1476851.809175638016313 6889334.68986457772553,1476836.674793327925727 6889326.736669098958373,1476816.165932461619377 6889319.151258772239089,1476789.40550800296478 6889310.018127746880054,1476760.433709556935355 6889300.195426267571747,1476743.535826465114951 6889295.567574185319245,1476724.081333788577467 6889290.40338478051126,1476703.572472922271118 6889300.655146818608046)",558,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477637.518751118797809 6890024.67101151868701,1477572.987685721367598 6889974.54178845603019,1477564.646047132555395 6889952.427406344562769,1477559.635465567931533 6889940.856842578388751,1477558.403814232908189 6889935.079229551367462)",560,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477699.67982076969929 6890328.610064546577632,1477733.204996876418591 6890359.445991663262248,1477739.904433685587719 6890365.024671027436852)",561,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477962.600058013107628 6891779.436749854125082,1477953.866530364844948 6891751.538483916781843,1477943.453478170791641 6891735.30541658680886)",562,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477349.881510943174362 6890675.812269823625684,1477337.537005520658568 6890685.851225290447474)",563,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477178.570007083471864 6890971.238683593459427,1477201.355556778842583 6891033.344750871881843,1477171.068130770465359 6891047.170006854459643,1477173.083560226485133 6891051.921486127190292,1477200.823707337491214 6891117.231619697995484,1477217.040449918713421 6891155.381811781786382,1477226.044567629694939 6891176.595174888148904,1477236.019077305682003 6891188.397431484423578,1477262.11702263681218 6891201.349278477951884,1477343.11675929534249 6891166.862158128991723)",564,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477555.511299735167995 6891809.818378160707653,1477539.014636401087046 6891785.00108590349555)",565,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477397.141465578228235 6890736.030863894149661,1477364.94124772422947 6890746.376430032774806)",566,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477192.883288506418467 6890795.897391020320356,1477199.097529330058023 6890810.090084169991314,1477209.725187440868467 6890834.291289354674518)",567,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1476986.90826411684975 6891504.980270971544087,1476978.417334458557889 6891488.410481329075992,1476982.625476519111544 6891477.634771515615284,1477001.21221484686248 6891429.979636301286519,1477055.871408184524626 6891387.674252809025347,1476926.19345171796158 6891217.903148794546723,1476932.389031158527359 6891202.544834636151791,1477041.110253545222804 6891117.369567033834755,1477044.021429431624711 6891042.633113135583699,1477037.135378784500062 6891030.999671006575227,1477030.258658833103254 6891020.699720491655171)",568,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477851.564824028639123 6890914.007110533304513,1477837.214219840010628 6890907.017958667129278,1477820.027085299603641 6890898.649376915767789,1477793.499928140547127 6890885.713344623334706,1477766.64619676116854 6890872.63939,1477741.136085020378232 6890860.209190255962312,1477713.750504202675074 6890846.874718683771789,1477685.777089789044112 6890833.233730419538915,1477659.791112761478871 6890820.589014776051044,1477634.607575237983838 6890808.327491325326264)",569,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477657.943635757779703 6891131.777412844821811,1477634.971472224220634 6891151.028787543997169)",572,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1477547.608203666983172 6890950.087170991115272,1477521.230337577406317 6890965.031168691813946,1477512.394172318745404 6890970.012507430277765,1477494.852471484802663 6890979.95986695215106,1477486.482840825803578 6890984.695979272015393,1477470.17279132688418 6890993.938303586095572,1477464.826304849237204 6890996.973098964430392,1477447.863106921315193 6891006.567964611575007,1477439.782727705081925 6891011.135492536239326,1477421.92378334957175 6891021.251503217034042,1477409.887190758716315 6891028.072153965942562)",573,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1477634.971472224220634 6891151.028787543997169,1477612.559150202432647 6891120.695631274022162)",574,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1477805.405891042202711 6891322.361922188661993,1477795.459373445017263 6891330.2404525866732,1477820.325667443918064 6891360.42112004570663,1477845.29459905042313 6891389.191724671050906,1477868.005503211170435 6891418.483586152084172,1477915.246796463150531 6891483.398165013641119,1477941.960567463189363 6891518.177879937924445,1478007.443363436963409 6891603.372722592204809,1478079.075085395481437 6891736.240464904345572)",575,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477604.488101679133251 6892361.919472146779299,1477636.333753245649859 6892365.016103434376419,1477641.120398203376681 6892375.777672911994159,1477651.720064238179475 6892399.615673690102994,1477661.713235300034285 6892422.135367657989264,1477671.743729121983051 6892444.701114750467241,1477677.360805668402463 6892457.31772515270859,1477696.218134059105068 6892478.028631558641791,1477711.763066816842183 6892498.678270866163075)",576,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477022.420877606840804 6891477.159598301164806,1477104.59628144861199 6891583.522458178922534,1477116.763503728900105 6891599.280038581229746,1477202.167326975846663 6891709.829224040731788,1477215.323602598393336 6891726.859329365193844,1477316.235035840189084 6891857.49109398201108,1477337.518344137584791 6891842.192873341962695)",577,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1476941.243857803056017 6891507.294832653366029,1476903.80912177474238 6891496.304502658545971,1476881.984633348649368 6891489.881987628526986,1476860.79463197151199 6891483.674072253517807,1476837.299949686974287 6891476.761065948754549,1476802.673751928843558 6891462.735805360600352,1476793.585657987510785 6891460.084037529304624)",578,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477751.623782749054953 6891507.58606893569231,1477741.089431561529636 6891515.342154928483069)",579,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477612.559150202432647 6891120.695631274022162,1477582.075779662933201 6891143.656241306103766,1477566.754783512093127 6891124.2362818159163,1477529.049457415007055 6891078.468512326478958)",580,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477634.971472224220634 6891151.028787543997169,1477614.761193496640772 6891168.440898629836738,1477601.101060511544347 6891175.721502039581537,1477585.4534901403822 6891184.105699811130762,1477566.950728042982519 6891186.788031838834286,1477558.702396374428645 6891184.381596778519452,1477547.496235363651067 6891176.426571349613369,1477507.896778806811199 6891126.826628868468106)",581,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477793.089377692667767 6892048.154125873930752,1477767.52328180288896 6891994.900465020909905,1477758.453849244629964 6891976.490170946344733)",582,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477215.323602598393336 6891726.859329365193844,1477568.294347681337968 6891455.945442079566419,1477586.535850405925885 6891442.410717039369047)",585,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1476860.79463197151199 6891483.674072253517807,1476960.819649475859478 6891630.565365144982934,1476941.281180571764708 6891746.219429916702211,1476922.526489791693166 6891772.308886986225843,1476902.138927918858826 6891980.215147942304611,1476921.612081981264055 6892006.780568920075893)",586,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477202.167326975846663 6891709.829224040731788,1477555.511299735167995 6891439.437065890990198,1477573.715479691047221 6891425.779744077473879)",587,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477696.218134059105068 6892478.028631558641791,1477691.039600039366633 6892481.830491381697357,1477655.918875608593225 6892510.237186400219798,1477625.398182300385088 6892475.315208514221013,1477531.120871023042127 6892361.674194470979273,1477492.827711335849017 6892391.613455899991095,1477584.249830884160474 6892505.760787431150675,1477625.398182300385088 6892475.315208514221013)",588,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477584.249830884160474 6892505.760787431150675,1477550.510048857657239 6892529.55318315140903,1477537.027199015021324 6892540.912850533612072)",589,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478066.245383990462869 6892248.387368608266115,1478062.709051750600338 6892246.839075284078717,1478053.341037050588056 6892250.855440765619278,1478053.117100443691015 6892255.760928054340184)",590,path,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478057.465202880557626 6892224.90239691734314,1478055.188514051726088 6892228.182930614799261,1478045.251327144447714 6892231.816046603955328,1478042.116214653942734 6892230.589678158052266)",591,path,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477784.906360871624202 6892316.451251152902842,1477641.120398203376681 6892375.777672911994159)",592,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477794.470320102758706 6892339.154669879004359,1477651.720064238179475 6892399.615673690102994)",593,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477818.590158740524203 6892272.577574365772307,1477820.493619899032637 6892278.142251771874726,1477867.380346852121875 6892398.006031540222466)",594,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477804.024948637932539 6892361.87348258215934,1477661.713235300034285 6892422.135367657989264)",595,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478053.117100443691015 6892255.760928054340184,1477964.606156779220328 6892292.444870038889349,1477895.484390949364752 6892321.126831811852753)",596,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478032.020405984483659 6892209.480840558186173,1477946.392646130407229 6892246.195230620913208,1477870.356837577652186 6892278.801428685896099)",597,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478042.116214653942734 6892230.589678158052266,1477955.219480698928237 6892268.637846413999796,1477881.059141225880012 6892301.121497599408031)",598,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477974.254092237679288 6892334.525068153627217,1477970.353863011812791 6892307.008119508624077,1477964.606156779220328 6892292.444870038889349,1477955.219480698928237 6892268.637846413999796,1477946.392646130407229 6892246.195230620913208,1477939.861161776585504 6892229.639242734760046)",599,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477813.588907869067043 6892385.481493636965752,1477671.743729121983051 6892444.701114750467241)",600,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477315.871138856979087 6890705.699273365549743,1477293.813383128261194 6890711.002312272787094)",601,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477327.739778992719948 6890696.79446735791862,1477325.491082236869261 6890699.476636806502938,1477315.871138856979087 6890705.699273365549743)",602,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477191.548999560764059 6890584.63460551109165,1477193.573759709950536 6890604.436424199491739,1477192.715336051303893 6890631.717647477984428,1477189.860144322039559 6890651.550235321745276,1477182.722164992243052 6890668.118300231173635,1477164.126095974352211 6890700.488198084756732)",603,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477337.537005520658568 6890685.851225290447474,1477327.739778992719948 6890696.79446735791862)",604,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477317.485348558053374 6890876.701050061732531,1477328.215644282288849 6890898.603395721875131,1477336.324015568709001 6890915.141315577551723,1477340.560149707831442 6890923.770475399680436,1477391.543050420703366 6891037.789675366133451,1477433.661793799139559 6891131.76208533346653,1477423.286064371000975 6891138.966017907485366,1477419.021938158897683 6891141.924230385571718,1477415.15903169894591 6891144.591220805421472,1477411.258802472846583 6891147.304194730706513,1477406.565464430022985 6891150.59961626958102,1477402.814526273403317 6891153.297264670953155,1477398.149180306354538 6891156.699981558136642)",606,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477001.21221484686248 6891429.979636301286519,1477012.810264917090535 6891381.604368223808706,1476990.127352835144848 6891349.568942168727517,1476972.175101556349546 6891324.201267114840448,1476953.905606755753979 6891298.404492945410311,1476935.21623081760481 6891272.010018249042332,1476926.622663548681885 6891259.870428316295147,1476909.556828004540876 6891253.110891866497695,1476842.273208488477394 6891436.264150676317513,1476866.915565874893218 6891446.33471198566258,1476891.623238111380488 6891456.405285906977952,1476916.274926193524152 6891463.640165685676038,1476941.495786485727876 6891471.074317997321486,1476963.730825359700248 6891477.604115179739892,1476982.625476519111544 6891477.634771515615284)",607,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477430.340067470446229 6891165.329400658607483,1477423.817913812352344 6891156.408757981844246)",608,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477438.401785300811753 6891159.091080768965185,1477431.627702959813178 6891150.078479750081897)",609,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477391.543050420703366 6891037.789675366133451,1477409.887190758716315 6891028.072153965942562)",610,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1476990.127352835144848 6891349.568942168727517,1476941.495786485727876 6891471.074317997321486)",611,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477422.772876315517351 6891171.353139204904437,1477416.036116740433499 6891162.723713628947735)",612,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477391.981592941563576 6891187.615723043680191,1477474.922113521490246 6891297.515479031950235,1477487.751814926741645 6891314.146186651661992,1477573.715479691047221 6891425.779744077473879,1477586.535850405925885 6891442.410717039369047,1477691.888693005079404 6891579.199858834967017)",614,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477374.197294117882848 6891201.563865466974676,1477456.410020725568756 6891311.233894356526434,1477469.668933961540461 6891328.61569665838033,1477555.511299735167995 6891439.437065890990198,1477568.294347681337968 6891455.945442079566419,1477673.292623987188563 6891591.493214836344123)",615,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477173.083560226485133 6891051.921486127190292,1477137.272364595206454 6891079.863306542858481,1477118.508343119407073 6891093.428076104260981)",616,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477088.584814094239846 6891117.76808157004416,1477048.864058541134 6891148.239174656569958,1477017.643563339253888 6891172.196156406775117,1476959.317408075323328 6891216.922177751548588)",617,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477024.818865434965119 6891578.770664696581662,1477055.012984525877982 6891556.5139145758003)",618,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477044.683908559381962 6891600.613609550520778,1477072.899920959956944 6891578.770664696581662)",619,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477081.764078291598707 6892021.849164674989879,1477121.027629941003397 6892015.901434796862304,1477150.913836200255901 6892003.71473397128284,1477181.042640446452424 6891986.515421602874994,1477246.96397894108668 6891938.244107788428664)",620,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477137.272364595206454 6891079.863306542858481,1477179.68035942222923 6891133.754661783576012,1477203.753544606966898 6891164.777608038857579,1477227.313541733426973 6891196.827625382691622,1477267.108942821156234 6891248.650520586408675,1477275.89845462096855 6891259.655839771032333)",621,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477038.329707350814715 6891342.288181316107512,1477049.825119810411707 6891333.827179099433124,1477076.091017599450424 6891312.613401100039482)",622,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477050.459606862161309 6891150.522978541441262,1477048.864058541134 6891148.239174656569958,1477039.906594285974279 6891136.728199865669012)",623,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477019.500371033092961 6891174.066122156567872,1477017.643563339253888 6891172.196156406775117,1477008.994011918548495 6891161.221612081862986)",624,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477236.019077305682003 6891188.397431484423578,1477227.313541733426973 6891196.827625382691622)",625,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1476959.317408075323328 6891216.922177751548588,1477000.549735719105229 6891270.170685262419283,1477025.378706949297339 6891302.251778436824679,1477049.825119810411707 6891333.827179099433124,1477089.85378819797188 6891385.528333493508399,1477098.167434711009264 6891396.257935808971524)",626,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477203.753544606966898 6891164.777608038857579,1477217.040449918713421 6891155.381811781786382)",627,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477227.313541733426973 6891196.827625382691622,1477200.506463813129812 6891216.600296653807163)",628,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477176.405286555178463 6891136.161081690341234,1477179.68035942222923 6891133.754661783576012,1477200.823707337491214 6891117.231619697995484)",629,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1476989.203614334575832 6891279.551287890411913,1477000.549735719105229 6891270.170685262419283,1477004.487287716707215 6891266.890542482957244)",630,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477014.592427076306194 6891310.758730973117054,1477025.378706949297339 6891302.251778436824679)",631,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477657.813006068347022 6891744.87050611898303,1477663.094177704304457 6891744.042757529765368,1477667.983460275456309 6891744.012100178748369,1477687.633897485909984 6891746.357388046570122,1477693.166997798951343 6891746.265415959060192,1477698.485492197796702 6891744.747876695357263,1477702.80560256447643 6891741.75878503266722,1477705.595479451818392 6891737.66603057552129,1477709.299764146795496 6891729.863744132220745,1477713.694520050892606 6891719.654869962483644,1477722.110804171767086 6891695.68092814553529)",632,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477488.80618311651051 6891880.361834840849042,1477485.269850873854011 6891887.59709616843611,1477482.47064329078421 6891890.678215784020722,1477476.881558825960383 6891894.065915833227336,1477471.292474361369386 6891894.939666754566133,1477465.274178063031286 6891895.246246046386659,1477471.124521903228015 6891926.686014686711133,1477472.029599023750052 6891931.560646092519164)",633,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477471.124521903228015 6891926.686014686711133,1477496.830578175140545 6891922.010663450695574)",634,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477105.706633787136525 6892515.296133446507156,1477093.642049120273441 6892467.834137276746333,1477084.078089892165735 6892430.22959574777633,1477075.652475078590214 6892397.070906250737607,1477065.827256471849978 6892358.362946599721909)",635,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477084.078089892165735 6892430.22959574777633,1477114.505476279882714 6892422.533946882933378,1477144.70892606372945 6892414.914955166168511)",636,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477136.208665715297684 6892506.573284320533276,1477124.26538004190661 6892460.322412922978401,1477114.505476279882714 6892422.533946882933378)",637,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477166.915972861694172 6892497.804454318247736,1477154.860718884970993 6892452.826025616377592,1477144.70892606372945 6892414.914955166168511,1477135.490202432963997 6892380.483947849832475,1477125.282425462966785 6892342.404590574093163)",638,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477093.642049120273441 6892467.834137276746333,1477124.26538004190661 6892460.322412922978401,1477154.860718884970993 6892452.826025616377592,1477172.812970160972327 6892448.211688437499106,1477176.834498385898769 6892435.687072315253317,1477157.23071463429369 6892374.474633106961846,1477135.490202432963997 6892380.483947849832475,1477075.652475078590214 6892397.070906250737607,1477052.30708386329934 6892403.555465837940574,1477067.898670082679018 6892466.684383096173406,1477073.991611915640533 6892473.5982407303527,1477093.642049120273441 6892467.834137276746333)",639,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477104.59628144861199 6891583.522458178922534,1477136.936459684744477 6891559.073744270019233,1477456.410020725568756 6891311.233894356526434,1477474.922113521490246 6891297.515479031950235)",640,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477116.763503728900105 6891599.280038581229746,1477149.467578951269388 6891573.988217326812446,1477469.668933961540461 6891328.61569665838033,1477487.751814926741645 6891314.146186651661992)",641,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477358.950943501666188 6890905.500577809289098,1477389.145062592579052 6890890.97052111569792,1477415.597574219573289 6890878.233752502128482,1477438.168518 6890867.382225495763123,1477521.230337577406317 6890965.031168691813946)",642,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477293.813383128261194 6890711.002312272787094,1477245.060517788399011 6890724.566459476016462,1477179.129848600830883 6890751.863417183049023)",643,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477623.578697375254706 6892624.202238139696419,1477621.787204523105174 6892605.299932564608753,1477625.295544689754024 6892598.999173911288381,1477697.6923833838664 6892539.977708619087934,1477702.124462053878233 6892533.431718253530562,1477700.025056370068341 6892524.555547795258462,1477695.331718327244744 6892512.33741554338485)",644,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1476916.274926193524152 6891463.640165685676038,1476972.175101556349546 6891324.201267114840448)",645,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477411.258802472846583 6891147.304194730706513,1477420.178943959064782 6891159.366976878605783)",646,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1476866.915565874893218 6891446.33471198566258,1476935.21623081760481 6891272.010018249042332)",647,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477412.387816194444895 6891165.681934850290418,1477402.814526273403317 6891153.297264670953155)",648,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477427.587513351812959 6891153.35857486911118,1477419.021938158897683 6891141.924230385571718)",649,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477423.817913812352344 6891156.408757981844246,1477415.15903169894591 6891144.591220805421472)",650,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477431.627702959813178 6891150.078479750081897,1477423.286064371000975 6891138.966017907485366)",651,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477420.178943959064782 6891159.366976878605783,1477426.701097617158666 6891168.180329788476229)",652,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477434.221635316265747 6891162.217903890646994,1477427.587513351812959 6891153.35857486911118)",653,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477416.036116740433499 6891162.723713628947735,1477406.565464430022985 6891150.59961626958102)",654,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477790.178201811853796 6892050.76009990926832,1477793.089377692667767 6892048.154125873930752)",655,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477418.975284700049087 6891174.204070466570556,1477412.387816194444895 6891165.681934850290418)",656,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477426.897042148280889 6891184.442907216027379,1477421.92378334957175 6891178.005313728936017,1477418.975284700049087 6891174.204070466570556)",657,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477446.136928913649172 6891169.391208594664931,1477441.434260177891701 6891163.137557985261083,1477438.401785300811753 6891159.091080768965185)",658,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477430.68530307081528 6891181.484679089859128,1477425.721374965040013 6891175.108398336917162,1477422.772876315517351 6891171.353139204904437)",659,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477437.991234855726361 6891175.767484820447862,1477433.279235429828987 6891169.360553430393338,1477430.340067470446229 6891165.329400658607483)",660,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477426.701097617158666 6891168.180329788476229,1477429.630934883840382 6891172.134846064262092,1477434.426910537295043 6891178.633745247498155)",661,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477442.022093768231571 6891172.610001250170171,1477437.282102269353345 6891166.29503783211112,1477434.221635316265747 6891162.217903890646994)",662,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477655.685608308762312 6891734.416354355402291,1477657.066550716059282 6891741.436882919631898)",663,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1476887.153836678247899 6891470.844395658001304,1476887.788323727203533 6891469.020345328375697,1476891.623238111380488 6891456.405285906977952,1476953.905606755753979 6891298.404492945410311)",664,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477657.066550716059282 6891741.436882919631898,1477657.813006068347022 6891744.87050611898303,1477662.301068890141323 6891765.901480161584914)",665,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477421.92378334957175 6891178.005313728936017,1477425.721374965040013 6891175.108398336917162,1477429.630934883840382 6891172.134846064262092,1477433.279235429828987 6891169.360553430393338,1477437.282102269353345 6891166.29503783211112,1477441.434260177891701 6891163.137557985261083)",666,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477539.014636401087046 6891785.00108590349555,1477533.500197465298697 6891776.708233860321343)",667,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477533.500197465298697 6891776.708233860321343,1477528.760205966420472 6891769.565044686198235)",668,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477725.65646710456349 6891926.732001763768494,1477719.451556970831007 6891918.224397381767631)",669,steps,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477936.222191923297942 6891522.408476941287518,1477941.960567463189363 6891518.177879937924445,1477949.331814086996019 6891512.996934459544718)",670,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477719.451556970831007 6891918.224397381767631,1477708.749253325397149 6891903.569878341630101)",671,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1478201.335141776595265 6891732.714873464778066,1478199.170421248069033 6891718.367265134118497,1478194.67302773357369 6891689.365553838200867,1478190.492877749027684 6891669.729676574468613,1478176.459517084760591 6891671.952314448542893,1478125.448624295881018 6891656.102620540186763,1478117.200292630353943 6891651.01355717331171,1478098.249657313572243 6891632.772663729265332,1478077.890087522100657 6891607.710663352161646,1478071.806476379279047 6891600.000473447144032,1478068.064868915593252 6891592.627515465021133,1478066.105423611123115 6891589.776435805484653,1478059.704568943707272 6891578.923948316834867,1478057.315911811310798 6891574.923246877267957,1478048.171833718195558 6891567.15177505556494,1478038.029371589887887 6891557.050405757501721,1478027.616319393040612 6891542.335231919772923,1478017.091298892628402 6891529.934653213247657,1478008.619030622998253 6891518.208536428399384,1477996.181218277197331 6891503.953280243091285,1477988.81930234329775 6891498.389138715341687,1477984.340570217231289 6891494.189210750162601,1477973.75956556503661 6891481.405501900240779,1477964.279582561692223 6891469.204283156432211,1477824.468494659755379 6891286.004290502518415,1477785.690138992853463 6891237.798493586480618,1477740.902817723574117 6891179.430780413560569,1477721.830883413087577 6891153.404557520523667,1477715.85924057662487 6891139.548463800922036,1477708.441340490942821 6891129.35566674452275,1477696.861951803788543 6891119.883274444378912,1477597.909963869256899 6890988.619750818237662,1477466.533821473829448 6890820.497053281404078,1477454.497228882741183 6890826.259975696913898)",672,cycleway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477589.045806534821168 6891029.896104246377945,1477596.715635302942246 6891048.580122988671064,1477609.377384255873039 6891053.929370147176087,1477622.487006419571117 6891070.574901269748807,1477627.208336535375565 6891077.31895683798939,1477664.307167656254023 6891126.872611372731626,1477676.838286919984967 6891143.564276114106178,1477704.662410258548334 6891180.672316116280854,1477726.981425359845161 6891210.59185186214745,1477777.273854869185016 6891277.482036370784044,1477789.347770228981972 6891292.610576447099447,1477801.375032129930332 6891307.248653976246715,1477810.183205312816426 6891318.392004153691232,1477819.504566551186144 6891330.317092030309141,1477831.130608697189018 6891345.016549870371819,1477837.186227764235809 6891351.546244668774307,1477920.080094882519916 6891460.482569055631757,1477950.526142653310671 6891500.044585375115275,1477975.830979173071682 6891532.080611075274646,1477989.668395306216553 6891550.167992977425456,1478002.740694703999907 6891567.504326873458922,1478032.43095642933622 6891605.273445462808013,1478058.668862139806151 6891638.781424059532583,1478073.476670235162601 6891658.003355883061886,1478079.08441608841531 6891667.491710782982409,1478084.160312497522682 6891677.731175800785422,1478088.34979317500256 6891684.015883849933743,1478112.348332822322845 6891705.245970531366765,1478127.809289352502674 6891712.573045953176916,1478164.394932417897508 6891727.472475146874785,1478182.552458914928138 6891731.795154212042689,1478189.961028310470283 6891733.036775229498744,1478196.977708644000813 6891735.489360507577658,1478202.594785184599459 6891737.880631879903376,1478206.95221831719391 6891742.801134817302227)",673,cycleway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477469.444997354643419 6891153.312592218630016,1477547.748164046322927 6891253.907934416085482,1477616.375403200741857 6891265.342438179068267)",674,footway,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477486.482840825803578 6890984.695979272015393,1477514.00838202284649 6891053.086365345865488)",675,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477415.597574219573289 6890878.233752502128482,1477494.852471484802663 6890979.95986695215106)",676,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477512.394172318745404 6890970.012507430277765,1477536.094129821518436 6891031.597436398267746)",677,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477389.145062592579052 6890890.97052111569792,1477470.17279132688418 6890993.938303586095572)",678,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477521.230337577406317 6890965.031168691813946,1477558.301176619715989 6891013.066729949787259,1477560.223299158038571 6891021.864595185033977,1477555.007442369591445 6891030.080032028257847,1477480.333914841059595 6891086.638024752959609,1477468.241338095627725 6891086.377458564005792,1477453.414868617197499 6891080.61434968188405,1477444.084176685893908 6891074.008237943053246,1477421.92378334957175 6891021.251503217034042)",679,service,0,0,1,minorroads,0,0
|
||||||
|
"LINESTRING (1477383.406687055714428 6890923.126736690290272,1477447.863106921315193 6891006.567964611575007)",680,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477439.782727705081925 6891011.135492536239326,1477466.832403615349904 6891077.579522733576596)",681,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1477464.826304849237204 6890996.973098964430392,1477491.913303528213874 6891070.406299953348935)",682,service,0,0,0,minorroads,0,0
|
||||||
|
"LINESTRING (1476973.733327108668163 6890098.677702718414366,1477072.200119063491002 6890203.842244775034487,1477138.13078825105913 6890280.302726635709405,1477353.800401557935402 6890557.690723114646971)",4,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1477470.023500254843384 6890738.375857715494931,1477739.381914934143424 6891078.698423445224762,1477864.478501664241776 6891247.500940763391554,1477920.91052646539174 6891323.312250348739326,1477948.986578486626968 6891354.964373402297497,1477973.404999271966517 6891376.300886962562799,1477996.311847963603213 6891392.272653280757368,1478013.694927032105625 6891401.822006645612419,1478036.583114340901375 6891411.340715271420777,1478065.797510776668787 6891417.502590633928776,1478093.948208335554227 6891419.311301215551794,1478129.507475286955014 6891418.805475333705544,1478152.834205113584176 6891412.950159872882068,1478174.593378700781614 6891405.071548422798514,1478206.345723341219127 6891389.345004675909877,1478223.448881654068828 6891375.381208484992385,1478234.179177372483537 6891364.345074972137809,1478247.979270739946514 6891351.914114957675338)",5,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1479792.936579379020259 6889681.205510908737779,1479674.082225559744984 6889811.252340968698263,1479538.255343108437955 6889942.328065656125546,1479396.046267381170765 6890098.233262076042593,1479391.875448089325801 6890102.84625062905252,1479387.424708036473021 6890104.271526698023081,1479382.180859172018245 6890104.700642123818398,1479371.861113895662129 6890102.84625062905252)",7,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478196.94038587808609 6891352.28198526147753,1478211.0204 6891326.638399799354374,1478222.487820381997153 6891308.47488157171756,1478233.955240765586495 6891291.292384384199977,1478245.422661152202636 6891275.99524116050452,1478258.80287338164635 6891260.713454801589251,1478269.309232496190816 6891247.347663466818631,1478277.566894857445732 6891232.878299727104604,1478286.524359109578654 6891203.050646905787289,1478290.247305190423504 6891173.43769099842757,1478299.419375359313563 6891131.670120283961296)",9,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478588.708148004952818 6890605.53993255738169,1478609.123701951000839 6890560.234908378683031,1478633.962003871100023 6890512.462600218132138,1478661.664828216191381 6890461.824570003896952,1478680.783415985293686 6890415.018393527716398)",10,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478511.935214792611077 6890776.462944713421166,1478487.162227714201435 6890850.829076912254095,1478480.472121600992978 6890872.792660155333579,1478469.0513546760194 6890901.760771677829325,1478458.311728261876851 6890927.096459547057748,1478444.334351749392226 6890965.598274794407189)",11,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478747.693807828007266 6890450.713059439323843,1478695.917798298178241 6890536.494319370947778,1478652.86598572623916 6890592.926227985881269,1478605.848629083950073 6890639.948012223467231,1478534.739425873849541 6890732.521037810482085)",12,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478394.816369665553793 6891123.469907105900347,1478413.981610896298662 6891149.388740294612944,1478422.575178162194788 6891163.720005629584193,1478432.139137393329293 6891182.83350836019963,1478437.868182237260044 6891200.015773738734424,1478443.606557776918635 6891221.045322466641665,1478449.326271930942312 6891243.975563655607402,1478452.200125048635527 6891268.821841340512037,1478455.055316777899861 6891293.652867992408574,1478456.016378046944737 6891316.583316278643906,1478453.151855624979362 6891339.513829967938364,1478447.422810775460675 6891364.360402925871313,1478439.771643395768479 6891385.375053562223911,1478430.767525678966194 6891400.534452718682587,1478420.186521029798314 6891416.536923290230334)",13,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478505.114478987408802 6892450.388551495037973,1478533.022578559117392 6892428.221367940306664,1478547.111923375166953 6892412.922061143442988,1478557.151747890049592 6892398.465929266996682,1478563.580594633240253 6892385.098246153444052,1478568.479207897325978 6892368.143395646475255,1478570.681251191534102 6892353.135470101609826,1478571.632981767877936 6892338.326860104687512,1478570.699912574607879 6892311.990289855748415,1478550.256366555579007 6892207.533986137248576)",14,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478037.180278623942286 6891587.247253092937171,1478066.105423611123115 6891589.776435805484653,1478080.782602020073682 6891593.133352279663086,1478089.777389043709263 6891593.945756936445832,1478098.884144365321845 6891592.826784512028098,1478108.280151141108945 6891589.991033161990345,1478117.424229234224185 6891583.093263810500503,1478125.476616371888667 6891573.681650285609066,1478129.395506983622909 6891564.699241130612791,1478130.711134545970708 6891555.425603993237019,1478130.459205863298848 6891544.006015922874212,1478127.743974510813132 6891534.318539171479642,1478122.014929663855582 6891524.998952300287783,1478111.527231932384893 6891513.242186243645847,1478097.792453409638256 6891504.566409018822014,1478038.747834869194776 6891476.270564619451761)",15,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478508.650811232859269 6892023.658011235296726,1478483.16869156784378 6891955.519962281920016,1478463.396955363918096 6891854.103409341536462,1478457.220037306193262 6891812.31697329133749,1478454.476813877699897 6891793.539206840097904,1478438.726605898933485 6891697.918901789933443,1478429.171977360732853 6891676.535548973828554,1478420.335812099277973 6891665.75958699919283,1478408.149928435916081 6891657.88072778377682,1478399.071165190311149 6891653.864658541046083,1478385.448354968335479 6891648.729611102491617,1478367.953307596268132 6891647.825229956768453)",16,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1477868.43471504189074 6891004.698037818074226,1477841.366377748781815 6890998.337224533781409,1477822.247789982473478 6890988.803677652962506,1477801.393693512771279 6890979.193505993112922,1477780.595581200672314 6890971.77513572294265,1477763.119195208651945 6890968.602405070327222,1477746.32394973305054 6890970.012507430277765,1477735.211095642531291 6890976.940405210480094,1477727.559928260045126 6890986.489265248179436,1477721.952182406792417 6890998.613115126267076,1477719.236951056867838 6891012.116438466124237,1477720.869822144042701 6891025.681093722581863,1477726.029694780707359 6891040.45663124602288,1477739.381914934143424 6891078.698423445224762)",17,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478394.816369665553793 6891123.469907105900347,1478404.940170413581654 6891151.136080365628004,1478410.678545950446278 6891170.249553177505732,1478414.494798951782286 6891184.58085570205003,1478417.368652066681534 6891201.778452461585402,1478418.320382643025368 6891218.041097856126726,1478418.320382643025368 6891238.089720109477639,1478416.407590797403827 6891256.253079305402935,1478411.630276529816911 6891276.317124638706446,1478407.814023525686935 6891294.449914567172527,1478403.027378567960113 6891311.663074205629528,1478399.211125569650903 6891327.895286121405661,1478395.394872565520927 6891349.875500658527017,1478393.444757953984663 6891367.855176903307438,1478392.315744229592383 6891385.528333493508399,1478394.909676586044952 6891406.956896369345486,1478402.159624219173566 6891432.263520221225917)",22,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478458.908892544917762 6890873.620319033972919,1478432.279097772669047 6890943.113314905203879,1478416.715503631858155 6890979.362105399370193)",28,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478178.904158371733502 6891520.431132415309548,1478160.308089353842661 6891514.3304911153391,1478117.685488610062748 6891501.086903820745647,1478038.747834869194776 6891476.270564619451761)",31,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1477490.821612572530285 6890732.214502855204046,1477527.397924944991246 6890777.857686535455287,1477549.996860799379647 6890805.108844520524144,1477565.439155949512497 6890821.738533561117947,1477585.817387126618996 6890841.295704958960414,1477601.213028812082484 6890855.31988144479692,1477614.901153875980526 6890865.680928098037839,1477632.489508171333 6890878.494311951100826,1477649.452706102281809 6890888.77875323779881,1477668.282042416976765 6890898.771993438713253,1477686.439568916801363 6890907.033285750076175,1477707.200358462985605 6890915.171969769522548,1477725.833750249585137 6890922.13047450594604,1477746.855799174401909 6890927.847488413564861,1477770.742370518157259 6890933.595160651952028,1477794.628941864939407 6890937.411617287434638,1477821.380035630892962 6890941.228075731545687,1477850.043921245029196 6890945.059863138943911,1477902.482409899821505 6890949.82660922780633,1477940.458326059626415 6890951.343998450785875,1478028.540057893376797 6890957.306267951615155,1478070.472187433857471 6890961.96573100425303,1478111.23798048379831 6890968.004644367843866,1478151.201334026642144 6890975.683573756366968,1478187.992252313066274 6890986.795809898525476,1478222.38518277136609 6890997.340953027829528)",35,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1477811.713438789127395 6891164.670315036550164,1477832.45556695247069 6891186.404841492883861,1477851.910059632034972 6891203.111957489512861,1477871.719118598848581 6891219.497226990759373,1477905.897443146212026 6891245.355058864690363,1477930.74507576203905 6891262.215574943460524,1477950.162245669867843 6891274.998935245908797)",36,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1477917.271556612337008 6890861.695908572524786,1477919.660213744733483 6890873.497702899388969,1477929.681376882363111 6890876.225912362337112,1477939.068052962422371 6890882.433358696289361,1477964.755447848467156 6890903.79927234724164,1477993.242050317581743 6890920.735707654617727,1478017.072637509787455 6890931.70992370788008,1478043.179913533618674 6890940.982841396704316,1478070.173605292104185 6890947.926041314378381,1478124.907444161828607 6890961.429279524832964,1478156.893056107452139 6890970.763540306128561,1478188.804022510070354 6890982.151659685187042,1478222.38518277136609 6890997.340953027829528)",37,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478269.187933499692008 6891469.572158829309046,1478243.696483144769445 6891462.383258138783276,1478210.012685272842646 6891459.041724401526153,1478135.451126047875732 6891458.290645903907716,1478102.224532076856121 6891458.014739540405571,1478074.335093893809244 6891455.730848299339414,1478037.478860765462741 6891447.7142419135198,1478001.229122610529885 6891433.137220955453813,1477972.136025168234482 6891416.506267188116908,1477933.730897177709267 6891384.440046058036387,1477898.6754875916522 6891342.364820868708193,1477840.787874848581851 6891266.277431831695139,1477763.688367415918037 6891163.168213126249611)",38,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478396.486563521204516 6891050.220149672590196,1478391.046770125860348 6891088.599935160949826,1478387.930319021223113 6891118.01332129817456,1478386.372093471698463 6891145.495545344427228,1478382.163951405556872 6891187.385808815248311,1478378.506320169428363 6891208.921137149445713,1478372.991881239460781 6891239.009382877498865,1478369.520863838493824 6891260.422227461822331,1478362.756112190661952 6891278.784898377023637,1478355.926045695319772 6891294.327292013913393,1478345.830237028654665 6891312.904630331322551,1478327.989954053191468 6891332.294389794580638,1478310.998764046467841 6891350.411978059448302,1478297.571898355614394 6891364.145811591297388,1478283.641175301978365 6891375.396536458283663,1478263.253613431937993 6891389.712876693345606,1478242.194241744000465 6891402.603735917247832,1478220.360422622412443 6891413.885170697234571,1478198.479950044536963 6891423.005363918840885,1478177.131326905218884 6891429.734387061558664,1478158.199352977098897 6891435.007247400470078,1478137.298603048780933 6891440.096174038946629,1478114.988918640185148 6891442.518013746477664,1478088.275147637585178 6891441.828249195590615,1478056.961345518007874 6891437.214492295868695,1478035.164849167922512 6891430.991289503872395,1478017.959053244441748 6891424.292921440675855,1478000.762588013662025 6891417.594558958895504,1477984.517853362252936 6891408.04518685489893,1477967.237411904148757 6891395.414895111694932,1477937.668449172284454 6891367.441322010941803,1477910.376175272278488 6891334.287015947513282,1477853.272340653231367 6891256.406356768682599,1477773.756184012396261 6891153.373902422375977)",39,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478279.554332237923518 6891684.153840911574662,1478256.003665801370516 6891694.469970066100359,1478242.875382254831493 6891699.988261526450515)",41,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1477739.381914934143424 6891078.698423445224762,1477811.713438789127395 6891164.670315036550164)",42,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478697.42003969871439 6892579.422395704314113,1478646.241194454720244 6892500.149962106719613,1478632.450431780423969 6892479.929561247117817,1478614.591487424913794 6892458.988699334673584,1478590.975506143877283 6892442.984153510071337,1478571.063809560844675 6892437.419361997395754,1478552.589039536425844 6892437.266062008216977,1478536.241667274385691 6892440.991252523846924,1478522.674841206986457 6892446.663356624543667,1478512.373757313471287 6892454.711619316600263)",43,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478524.373027135850862 6892700.593760442920029,1478524.317042984068394 6892666.928051271475852,1478522.40425114124082 6892647.811019618995488,1478513.801353176590055 6892615.325967458076775,1478499.973267736379057 6892576.157048926688731,1478487.572778159286827 6892544.546107861213386,1478482.29160652612336 6892521.520175693556666,1478482.29160652612336 6892500.594535555690527,1478486.285142672481015 6892481.140637652948499,1478493.348476464860141 6892465.0440674116835,1478505.114478987408802 6892450.388551495037973)",45,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478512.373757313471287 6892454.711619316600263,1478501.456847751280293 6892464.492185577750206,1478494.216230813646689 6892477.461418758146465,1478490.399977812543511 6892496.578045293688774,1478490.399977812543511 6892516.629856382496655,1478495.335913845105097 6892541.725350976921618,1478506.187508562812582 6892572.999015279114246,1478520.015594006050378 6892612.183248752728105,1478528.618491964880377 6892644.66828821413219,1478531.91222621477209 6892665.68628600705415,1478531.977541062282398 6892701.467599032446742)",46,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1477773.756184012396261 6891153.373902422375977,1477609.890572311356664 6890941.044149981811643,1477495.477627843851224 6890800.066300450824201)",47,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1477763.688367415918037 6891163.168213126249611,1477606.559515292756259 6890944.523412792012095,1477495.477627843851224 6890800.066300450824201)",48,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478038.747834869194776 6891476.270564619451761,1478016.783386061200872 6891466.046684342436492,1477987.559658932499588 6891449.476974944584072,1477960.565967173781246 6891425.565151103772223,1477940.439664676785469 6891408.397731687873602,1477893.683567407075316 6891346.396062412299216,1477835.012176543008536 6891269.78749094158411,1477773.252326647052541 6891185.147977290675044,1477763.688367415918037 6891163.168213126249611)",50,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1477353.800401557935402 6890557.690723114646971,1477430.918570373440161 6890653.711285330355167)",51,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478431.31803650339134 6891617.70479725766927,1478395.805423010606319 6891558.521924624219537)",59,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478247.979270739946514 6891351.914114957675338,1478261.359482969157398 6891334.716197027824819,1478269.953050238080323 6891318.483971345238388,1478276.643156351288781 6891303.20210421551019,1478282.381531891180202 6891285.988962695933878,1478286.19778489228338 6891267.825536315329373,1478290.023368583526462 6891245.860873832367361,1478291.926829739008099 6891217.565939981490374,1478294.632730398792773 6891179.905936032533646,1478299.419375359313563 6891131.670120283961296,1478305.633616185979918 6891110.012379135005176,1478315.561472400324419 6891089.36630654707551,1478323.389922930859029 6891076.905116900801659,1478350.271646386012435 6891029.512921379879117)",62,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1478222.38518277136609 6890997.340953027829528,1478265.38101119431667 6891016.607333100400865,1478304.32731931633316 6891039.64428252261132)",63,motorway_link,0,0,1,motorways,3,0
|
||||||
|
"LINESTRING (1479505.653905502287671 6891073.088594046421349,1479511.261651349952444 6891082.208400661125779,1479521.71202631550841 6891092.493102550506592,1479746.936268157558516 6891225.214452367275953,1479755.165938443038613 6891230.977664898149669,1479832.228123104199767 6891286.387485591694713,1479913.489119135309011 6891344.817286965437233,1479959.526753128273413 6891366.429676809348166,1480017.134445112897083 6891393.45290981978178,1480128.822827531956136 6891445.108463356271386)",165,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479467.789957643020898 6890509.550598309375346,1479441.747996460879222 6890586.856943410821259,1479449.529793532565236 6890590.320726469159126,1479457.666156894760206 6890598.397783920168877,1479463.22724928939715 6890607.670317178592086,1479467.556690343189985 6890622.843576487153769,1479469.021608978044242 6890645.833417885005474,1479472.46463430300355 6890697.59145475551486,1479478.305647450499237 6890719.830500395968556,1479480.489029361866415 6890744.552544073201716,1479485.7422089218162 6890800.280876728706062,1479493.141447621630505 6890875.21432897169143,1479491.368616155348718 6890886.081193597055972,1479490.071649975609034 6890894.005277621559799,1479503.097295911749825 6891055.03294020332396,1479505.653905502287671 6891073.088594046421349)",166,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1478892.478154525859281 6890538.8086022362113,1478857.935932998079807 6890331.031569452024996,1479014.271676310105249 6890305.038744745776057,1479049.942911565070972 6890299.475432928651571,1479065.637135392287746 6890291.306720341555774,1479071.926021756138653 6890284.80853839032352,1479078.233569500269368 6890275.796917401254177)",167,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479046.145319949602708 6890513.27489566989243,1479014.271676310105249 6890305.038744745776057)",168,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479203.460785916773602 6890490.040212746709585,1479046.145319949602708 6890513.27489566989243,1478892.478154525859281 6890538.8086022362113,1478782.002762058749795 6890554.196301298215985,1478765.692712562624365 6890556.571894911117852,1478744.437396341003478 6890562.901705839671195,1478733.203243254218251 6890567.423002410680056,1478725.150856119580567 6890575.346772366203368,1478720.952044752193615 6890584.603952579200268,1478718.61004107282497 6890595.868913067504764,1478718.684686610475183 6890607.517052077688277,1478721.138658590381965 6890619.165207961574197)",169,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479490.071649975609034 6890894.005277621559799,1479245.458230298943818 6890915.64710977114737,1479232.777819963172078 6890911.35552369710058)",170,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479186.796170124784112 6890329.437667407095432,1479194.335369206732139 6890321.713377351872623,1479221.870241096476093 6890288.900553298182786,1479238.29225889313966 6890269.344725587405264,1479371.861113895662129 6890102.84625062905252,1479378.177992332726717 6890095.842478349804878,1479401.150155866052955 6890069.130116234533489,1479433.070452967192978 6890027.628814021125436,1479445.853500913595781 6890008.594684292562306)",171,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479356.241535600507632 6892244.984189610928297,1479596.926733975531533 6891723.011840671300888)",173,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479565.510294239735231 6892254.902467562817037,1479723.329617572249845 6891860.342268580570817)",174,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479608.944665183546022 6891709.660609316080809,1479997.390700987540185 6891805.618287485092878)",175,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479584.125024646287784 6890393.883670332841575,1479781.721087680663913 6890154.202325228601694)",176,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479482.392490514554083 6891545.140309852547944,1479497.461557985516265 6891543.408212435431778,1480046.890021679922938 6891672.780055603943765)",177,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479238.29225889313966 6890269.344725587405264,1479244.002642357023433 6890273.712598342448473,1479250.888693001354113 6890278.75481229275465,1479261.31107589113526 6890279.383173528127372,1479275.157822717214003 6890275.015297694131732,1479297.010303219081834 6890236.869282925501466,1479430.597819601651281 6890091.566655383445323,1479511.784170098369941 6889997.928235160186887,1479526.340049513848498 6889979.62979072984308,1479584.209000873845071 6889912.566501155495644,1479958.248448334634304 6889556.784876331686974,1479970.714252753648907 6889544.877743250690401,1479991.111145313596353 6889525.645538517273962,1480003.334351745434105 6889522.212862986139953,1480012.739689214387909 6889526.059298608452082,1480015.688187863910571 6889532.327000443823636,1480017.050468885339797 6889535.238648432306945,1480013.766065325355157 6889548.034587628208101,1480003.222383442102 6889555.972677503712475,1479990.989846320124343 6889554.624121142551303,1479970.714252753648907 6889544.877743250690401)",178,unclassified,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1478735.713199388701469 6892210.431273595429957,1478737.803274379577488 6892156.517370771616697,1478747.012667317176238 6892105.30179741140455,1478856.713612355990335 6891712.665017653256655,1478875.897514964221045 6891664.70191867928952,1478898.291175603168085 6891642.306974301114678,1478920.675505543360487 6891632.711349874734879,1479150.145212217466906 6891598.774201380088925)",179,residential,0,0,1,minorroads,3,0
|
||||||
|
"LINESTRING (1479232.777819963172078 6890911.35552369710058,1479225.509210946969688 6890904.029178469441831,1479219.015049364650622 6890835.992580109275877,1479415.566074902191758 6890596.129463358782232,1479426.510976537596434 6890588.466222968883812,1479433.854231088422239 6890586.182578745298088,1479441.747996460879222 6890586.856943410821259)",185,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479723.329617572249845 6891860.342268580570817,1479596.926733975531533 6891723.011840671300888)",188,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479094.002438864903525 6890258.861840659752488,1479102.166794305900112 6890249.972855378873646,1479110.592409119475633 6890237.283079625107348,1479113.904804755235091 6890222.585646998137236,1479107.16804518038407 6890125.037674428895116,1479369.173874618951231 6890088.94599081762135,1479378.177992332726717 6890095.842478349804878)",197,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479150.145212217466906 6891598.774201380088925,1479134.525633922312409 6891683.923912476748228,1479122.50770271429792 6891741.850757068023086,1479112.365240588784218 6891776.922836208716035,1479083.458756984677166 6891830.404985710047185,1479039.623166288714856 6891874.843419559299946,1478994.845175709342584 6891943.793224707245827,1478968.961836289614439 6891994.609211077913642,1478956.608000173931941 6892018.875299187377095,1478935.147408731281757 6892081.709938492625952,1478923.026839912869036 6892143.012125051580369,1478922.522982550086454 6892195.055733603425324,1478922.243061791639775 6892224.595805050805211)",200,residential,0,0,1,minorroads,3,0
|
||||||
|
"LINESTRING (1478948.648919956991449 6892418.042266790755093,1478932.982688202988356 6892462.407298980280757,1478924.323806092375889 6892507.707714077085257,1478923.16680029197596 6892543.764267535880208,1478928.690569914877415 6892595.135937471874058,1478954.200681655900553 6892647.565733219496906,1478981.091735800961033 6892698.110219702124596,1478998.14824065216817 6892739.042748300358653,1479008.262710707494989 6892770.393833446316421,1479017.257497728569433 6892806.252266069874167,1479018.65710151870735 6892835.779252862557769,1479019.179620267124847 6892907.067596364766359)",201,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1478917.605707900365815 6892380.08537070825696,1478948.648919956991449 6892418.042266790755093,1478994.257342116441578 6892488.667711554095149,1479021.055089343804866 6892527.437619337812066,1479045.053628993919119 6892554.863341205753386,1479059.282934189308435 6892565.96243020426482,1479069.22945178928785 6892573.719537409953773,1479138.341886926209554 6892625.474657708778977,1479163.90798281878233 6892643.380535209551454,1479204.5151541037485 6892671.818462022580206,1479218.987057288642973 6892679.161748955026269,1479293.669915507314727 6892716.982082463800907,1479382.861999682616442 6892764.108276013284922)",202,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1478922.690935002407059 6892238.254484030418098,1478923.446721050655469 6892317.493675459176302,1478917.605707900365815 6892380.08537070825696)",203,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479434.777969588991255 6891585.561131720431149,1479383.543140193447471 6891577.667022745124996)",204,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479354.879254579078406 6892263.487076595425606,1479349.467453256715089 6892329.95678826700896,1479349.355484956176952 6892342.527229115366936,1479352.994454809231684 6892359.236747993156314,1479354.991222882410511 6892368.404003384523094,1479365.450928538106382 6892387.980267693288624,1479382.470110620604828 6892403.647445440292358,1479415.538082826416939 6892422.043387837707996,1479449.315187618602067 6892436.146972191520035,1479465.634567807661369 6892439.780182166956365,1479506.027133178431541 6892443.306083716452122,1479520.704311587382108 6892443.949944161809981,1479571.528590538073331 6892439.105662046931684,1479589.126275520771742 6892444.087914266623557,1479616.297250424511731 6892460.996934827417135,1479667.821331271668896 6892498.969543068669736,1479700.124186736298725 6892523.865690400823951,1479709.174957911716774 6892527.560260701924562,1479717.899154869839549 6892526.05790411029011,1479767.417136950884014 6892498.601620291359723,1479779.584359225351363 6892492.408255994319916)",215,residential,0,0,1,minorroads,3,0
|
||||||
|
"LINESTRING (1479064.209539529168978 6890130.202399942092597,1479107.16804518038407 6890125.037674428895116)",216,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479511.784170098369941 6889997.928235160186887,1479577.425587837351486 6890050.785533404909074)",218,unclassified,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1478743.644287527073175 6890644.500005290843546,1478764.862280979752541 6890650.661292929202318,1478794.823132770834491 6890656.071581743657589,1478844.219815858406946 6890657.343689843080938,1478888.745877755107358 6890655.642436888068914,1478931.480446802219376 6890650.891191814094782,1478963.578027048613876 6890644.591964773833752,1479008.439993852749467 6890630.675441741943359,1479056.194475160446018 6890605.585912075825036,1479095.672632720787078 6890583.837629308924079,1479133.965792407980189 6890555.943512021563947,1479203.460785916773602 6890490.040212746709585,1479266.862837587017566 6890414.650566106662154)",235,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479383.543140193447471 6891577.667022745124996,1479323.005610939580947 6891573.329098201356828,1479299.119039598386735 6891575.842948182485998,1479238.852100410265848 6891583.553114917129278,1479171.10194629477337 6891595.187356659211218,1479150.145212217466906 6891598.774201380088925)",236,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479596.926733975531533 6891723.011840671300888,1479465.550591580104083 6891589.531181692145765,1479434.777969588991255 6891585.561131720431149)",285,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1478721.138658590381965 6890619.165207961574197,1478727.371560799656436 6890630.690768297761679,1478735.050720260944217 6890638.997764837928116,1478743.644287527073175 6890644.500005290843546)",289,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1478553.951320560649037 6891315.418398878537118,1478529.78482845518738 6891312.260860466398299,1478502.221964489435777 6891308.628160036168993,1478489.158995784586295 6891306.911441416479647)",296,unclassified,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1478598.850610133260489 6891319.848151468671858,1478619.014235399430618 6891314.222825936973095,1478629.520594513742253 6891309.455863785929978,1478638.123492472805083 6891299.891292298212647,1478656.850191182689741 6891252.574420961551368)",318,unclassified,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1478362.989379487698898 6891563.457646118476987,1478372.702629790874198 6891539.468841813504696,1478383.955444257706404 6891522.730370282195508,1478405.789263379527256 6891501.899299177341163,1478420.401126943761483 6891493.03959580976516,1478439.109164268011227 6891484.793029486201704,1478451.080442011589184 6891482.585771531797945,1478466.158840178279206 6891481.390173728577793,1478478.036811004159972 6891474.906357950530946,1478487.899352376582101 6891463.640165685676038,1478507.064593604533002 6891401.454134074039757,1478520.276853378862143 6891359.056933037005365,1478529.78482845518738 6891312.260860466398299)",320,unclassified,0,0,1,minorroads,3,0
|
||||||
|
"LINESTRING (1478237.248975021298975 6891675.033351420424879,1478264.074714324669912 6891662.709210627712309)",322,unclassified,0,0,1,minorroads,3,0
|
||||||
|
"LINESTRING (1478917.605707900365815 6892380.08537070825696,1478763.248071275651455 6892276.22604011092335,1478747.908413741970435 6892253.584117701277137,1478739.464137542527169 6892228.489522617310286)",323,residential,0,0,1,minorroads,3,0
|
||||||
|
"LINESTRING (1478079.187053699046373 6892810.37622603494674,1478145.453627796843648 6892613.685621440410614,1478151.313302329974249 6892587.37880960572511,1478163.71379190729931 6892357.366506541147828,1478160.606671495363116 6892351.387868744321167,1478139.976511632790789 6892311.59171611443162)",330,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1478763.248071275651455 6892276.22604011092335,1478726.867703434312716 6892307.789936803281307)",335,residential,0,0,1,minorroads,3,0
|
||||||
|
"LINESTRING (1478755.606234583305195 6889945.040633909404278,1478753.161593299126253 6889966.633935891091824,1478748.785498783690855 6889984.227385916747153,1478740.005317673785612 6890001.008630651049316,1478657.895228676730767 6890098.125983302481472)",338,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1477786.39927157945931 6890262.126246342435479,1478094.340097397565842 6890523.819417727179825,1478155.810695839114487 6890564.786856304854155)",346,unclassified,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1477842.131494486937299 6889810.838566199876368,1477906.373308435780928 6889868.935817634686828,1478137.494547579903156 6890058.632166887633502,1478153.804597075795755 6890076.363747696392238,1478161.362457540817559 6890099.060841219499707,1478176.627469539875165 6890170.079709811136127,1478184.745171522023156 6890192.792393619194627,1478195.494128623511642 6890209.911240221001208,1478209.71410313132219 6890228.547376076690853,1478261.070231520570815 6890273.49803611356765,1478292.038798042573035 6890286.525038770399988)",432,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1478726.867703434312716 6892307.789936803281307,1478725.262824423145503 6892320.069077261723578,1478849.314373653382063 6892600.225598565302789)",449,residential,0,0,1,minorroads,3,0
|
||||||
|
"LINESTRING (1477170.004431890556589 6892330.416682093404233,1477226.473779457621276 6892480.77271568775177)",497,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1477206.375469039194286 6890495.557677546516061,1477167.625105448300019 6890527.559048051945865,1477202.689845727290958 6890575.867871635593474)",504,residential,0,0,1,minorroads,3,0
|
||||||
|
"LINESTRING (1477056.785815992159769 6892691.840049274265766,1477047.42713198508136 6892531.960020915605128,1477034.205541517818347 6892466.163161252625287,1477014.965654755244032 6892407.817188702523708,1477005.485671751899645 6892378.107815207913518,1476984.137048612581566 6892331.842353134416044,1476956.555523263756186 6892281.284839883446693,1476909.892732914770022 6892184.90758672170341)",523,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1476392.496534616453573 6892429.171826844103634,1476550.259873797185719 6892335.797441869974136,1476622.861987715121359 6892298.960004699416459,1476700.521336662117392 6892264.85141708701849,1476909.892732914770022 6892184.90758672170341,1477091.430675133131444 6892112.736543129198253,1477219.41977636096999 6892066.212010371498764,1477229.84215924795717 6892055.54283092636615)",525,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1477005.485671751899645 6892378.107815207913518,1477065.827256471849978 6892358.362946599721909,1477125.282425462966785 6892342.404590574093163,1477170.004431890556589 6892330.416682093404233)",526,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1477226.473779457621276 6892480.77271568775177,1477166.915972861694172 6892497.804454318247736,1477136.208665715297684 6892506.573284320533276,1477105.706633787136525 6892515.296133446507156,1477047.42713198508136 6892531.960020915605128)",527,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1477091.430675133131444 6892112.736543129198253,1477170.004431890556589 6892330.416682093404233)",528,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1477226.473779457621276 6892480.77271568775177,1477255.268294758396223 6892486.061595555394888,1477275.814478393411264 6892495.91885052062571)",529,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1477275.814478393411264 6892495.91885052062571,1477328.626194727374241 6892664.521173093467951)",530,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1477459.5917866777163 6892447.751787870191038,1477537.027199015021324 6892540.912850533612072,1477573.267606480047107 6892584.466056008823216,1477587.123683996265754 6892602.264529967680573)",531,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1477275.814478393411264 6892495.91885052062571,1477459.5917866777163 6892447.751787870191038)",532,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1476599.497935119783506 6892427.807458454743028,1476729.035931204212829 6892369.20115651935339,1476956.555523263756186 6892281.284839883446693)",533,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1476699.578936775680631 6892648.255601234734058,1476829.256893242476508 6892551.184088567271829,1477014.965654755244032 6892407.817188702523708)",534,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1477131.048793075839058 6890631.24252425506711,1476933.564698341768235 6890379.676385825499892)",536,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1477050.235670255264267 6890288.333494927734137,1476933.564698341768235 6890379.676385825499892,1476902.820068429457024 6890398.910633538849652,1476831.654881067806855 6890456.920177238993347)",537,residential,0,0,1,minorroads,3,0
|
||||||
|
"LINESTRING (1476942.736768513685092 6890783.32936832588166,1476752.110732350964099 6890533.904162514954805,1476753.948878661962226 6890517.596921934746206,1476575.592702392954379 6890272.946304704993963,1476409.226465250365436 6890059.260510915890336,1476395.724954024655744 6890059.306487303227186,1476182.322698862291873 6889785.015997536480427)",552,residential,0,0,1,minorroads,3,0
|
||||||
|
"LINESTRING (1475786.729353038361296 6891662.356654640287161,1475992.471110128099099 6891500.68837027810514,1476100.436546466313303 6891415.663224364630878,1476197.223813875345513 6891340.402848524972796,1476278.139574306318536 6891277.49736415874213,1476321.676582857733592 6891244.343429019674659,1476489.871635615592822 6891115.576251862570643,1476493.678557923762128 6891113.246475487947464,1476512.825137766078115 6891098.624078639782965,1476574.920892572263256 6891049.53041878528893,1476642.055221018847078 6890998.321897276677191,1476664.887424173066393 6890986.290011228993535,1476689.865686475299299 6890974.840577159076929,1476942.736768513685092 6890783.32936832588166,1477029.446888633305207 6890709.37768148444593,1477131.048793075839058 6890631.24252425506711,1477191.548999560764059 6890584.63460551109165,1477202.689845727290958 6890575.867871635593474,1477245.125832630088553 6890544.065551890060306)",553,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1476209.33505200385116 6889063.703335772268474,1476378.08994627604261 6889279.645944504998624,1476389.286776594119146 6889290.434032781980932,1476403.721357013098896 6889290.434032781980932,1476463.493769522989169 6889363.667758987285197,1476927.490417897468433 6889968.91740414686501,1477296.220701646525413 6890447.448577187024057,1477305.336787663633004 6890453.180579769425094)",554,unclassified,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1477029.446888633305207 6890709.37768148444593,1476831.654881067806855 6890456.920177238993347,1476647.672297562239692 6890213.635398782789707)",559,residential,0,0,0,minorroads,3,0
|
||||||
|
"LINESTRING (1479591.626900956500322 6890520.325010627508163,1479593.922251174226403 6890511.037251781672239,1479600.099169231951237 6890495.251151624135673,1479608.85135826584883 6890481.411518443375826,1479619.36704807030037 6890469.027902306057513,1479629.257581518730149 6890462.728817746974528,1479643.738815393997356 6890454.146131407469511,1479658.985166010214016 6890448.720652269199491,1479858.307407052256167 6890380.24345064163208,1480100.522838903823867 6890293.513651255518198)",67,tertiary,0,0,0,mainroads,4,0
|
||||||
|
"LINESTRING (1477367.992383987177163 6890698.603015801869333,1477349.881510943174362 6890675.812269823625684,1477245.125832630088553 6890544.065551890060306)",76,tertiary,0,0,0,mainroads,4,0
|
||||||
|
"LINESTRING (1477245.125832630088553 6890544.065551890060306,1477206.375469039194286 6890495.557677546516061,1477050.235670255264267 6890288.333494927734137,1476863.48187124566175 6890045.559557152912021,1476700.614643579581752 6889836.354716989211738,1476482.229798923013732 6889550.532479927875102,1476148.77886136691086 6889111.926746366545558,1476140.558521774364635 6889102.134934161789715,1476127.560867911204696 6889083.470761761069298,1476121.029383563203737 6889075.579109120182693)",98,tertiary,0,0,0,mainroads,4,0
|
||||||
|
"LINESTRING (1477440.221270225942135 6890807.515166061930358,1477433.064629515865818 6890796.72504198551178,1477425.628068044548854 6890779.620272696949542,1477416.483989951433614 6890762.960017169825733)",140,tertiary,0,0,0,mainroads,4,0
|
||||||
|
"LINESTRING (1477601.352989191422239 6891019.243627357296646,1477589.045806534821168 6891029.896104246377945,1477529.049457415007055 6891078.468512326478958,1477462.521623944398016 6891132.436495768837631)",65,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1478347.248502201633528 6892208.147168586961925,1478342.172605789732188 6892190.916759766638279,1478325.657281069783494 6892141.203251630999148)",66,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1479405.974123598309234 6890464.384051165543497,1479414.754304702393711 6890467.663866545073688,1479438.323632521787658 6890477.058859107084572,1479453.616636599646881 6890482.744903990067542)",68,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478942.192081137793139 6890130.999331175349653,1478922.700265695340931 6890097.880774687975645,1478913.39756584004499 6890080.455656515434384)",69,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478371.433655687142164 6890928.767115697264671,1478421.474156513577327 6890821.386014446616173,1478431.82189386873506 6890796.433831455186009,1478464.609945313073695 6890729.379055060446262,1478502.968419844750315 6890668.378852861002088,1478530.932503562653437 6890635.120143613778055,1478590.24771217443049 6890558.411064649000764,1478600.64210298541002 6890542.839440878480673,1478604.346387683181092 6890537.306617256253958,1478629.184689603513107 6890499.098052786663175,1478658.809636487159878 6890449.410331619903445,1478680.783415985293686 6890415.018393527716398)",70,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1479356.241535600507632 6892244.984189610928297,1479354.879254579078406 6892263.487076595425606)",71,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1478687.930726005230099 6892209.189578847959638,1478735.713199388701469 6892210.431273595429957,1478922.243061791639775 6892224.595805050805211)",72,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478357.316318792523816 6892236.261633796617389,1478331.460971454158425 6892240.814530819654465,1478302.573149230098352 6892246.517152946442366,1478272.724265742348507 6892252.940272497013211,1478243.276602006983012 6892261.908121032640338,1478210.040677348850295 6892275.42889619525522,1478139.976511632790789 6892311.59171611443162,1478016.484803919447586 6892382.200895741581917,1477743.403443159302697 6892544.331485021859407,1477660.07103352015838 6892595.227919272147119,1477634.187694100197405 6892612.566507063806057,1477623.578697375254706 6892624.202238139696419,1477615.778238917700946 6892632.756580822169781,1477604.963966968702152 6892661.623721974901855,1477604.609400675399229 6892681.859910343773663)",73,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478512.980252289446071 6892501.529672888107598,1478525.371411173837259 6892530.396342795342207,1478531.641636149259284 6892551.858618092723191,1478539.078197620576248 6892576.92356213927269,1478543.603583205491304 6892616.000502363778651,1478545.647004743106663 6892654.541068081744015,1478545.684327509021387 6892718.913729729130864,1478543.836850505322218 6892759.263800947926939,1478540.533785562496632 6892805.838337119668722,1478537.08142954739742 6892857.456974725238979)",74,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478185.743555557215586 6892242.623426643200219,1478266.323411077726632 6892206.675530795939267,1478294.147534419083968 6892193.936677500605583)",75,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1477462.521623944398016 6891132.436495768837631,1477504.994933616137132 6891184.151682637631893,1477516.453023307025433 6891195.61674244236201,1477529.674613774055615 6891209.641537031158805,1477544.967617851914838 6891218.546911101788282,1477559.924717016518116 6891225.87354295141995,1477576.020160598680377 6891231.130941885523498,1477592.899382304633036 6891232.878299727104604,1477611.047578108729795 6891232.878299727104604,1477626.340582186589018 6891228.111385807394981,1477641.6242555687204 6891222.363503010012209,1477687.951141010504216 6891192.24466432724148,1477698.952026794664562 6891185.101994454860687)",77,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1478086.567631015786901 6891649.909905299544334,1478125.196695613209158 6891674.772766153328121,1478142.915679592173547 6891681.685942734591663,1478159.589626074302942 6891686.315168510191143,1478175.087905370397493 6891688.721753821708262,1478194.67302773357369 6891689.365553838200867,1478206.467022337485105 6891687.633425346575677)",78,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478237.248975021298975 6891675.033351420424879,1478242.875382254831493 6891699.988261526450515)",79,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478347.248502201633528 6892208.147168586961925,1478371.750899214530364 6892203.548301403410733)",80,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478371.750899214530364 6892203.548301403410733,1478382.453202857170254 6892232.153297962620854)",81,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478357.316318792523816 6892236.261633796617389,1478347.248502201633528 6892208.147168586961925)",82,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478382.453202857170254 6892232.153297962620854,1478357.316318792523816 6892236.261633796617389)",83,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1479591.626900956500322 6890520.325010627508163,1479585.384668057085946 6890546.502448085695505)",84,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1478242.875382254831493 6891699.988261526450515,1478212.02811472909525 6891713.140204788185656)",85,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478913.39756584004499 6890080.455656515434384,1478902.919198798481375 6890060.471222716383636,1478901.482272242428735 6890051.766362176276743,1478896.611651054350659 6890025.77444030251354,1478895.202716574305668 6890003.031577592715621,1478891.041227969806641 6889935.293782743625343)",86,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478206.467022337485105 6891687.633425346575677,1478237.248975021298975 6891675.033351420424879)",87,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478891.041227969806641 6889935.293782743625343,1478923.241445826832205 6889993.42258417326957,1478944.664714500773698 6890030.004252052865922,1478948.424983350094408 6890035.276194448582828,1478965.164244676940143 6890062.325604433193803)",88,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1480004.127460559597239 6892298.699399212375283,1479952.398104491410777 6892295.096912450157106,1479897.916194301797077 6892292.076956707052886,1479756.929439219413325 6892285.025287828408182,1479744.82753178384155 6892283.798911259509623,1479593.00784336659126 6892275.26026960555464,1479563.980060763191432 6892273.619992980733514,1479551.467602882767096 6892272.914827428758144,1479354.879254579078406 6892263.487076595425606,1479238.124306440819055 6892256.75735551957041)",89,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1477166.010895744198933 6890934.453480053693056,1477233.434475639369339 6890900.503951973281801,1477338.096847037784755 6890853.449989835731685,1477440.221270225942135 6890807.515166061930358)",90,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478922.690935002407059 6892238.254484030418098,1478922.243061791639775 6892224.595805050805211)",91,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1477743.403443159302697 6892544.331485021859407,1477711.763066816842183 6892498.678270866163075)",93,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1478394.097906388808042 6892344.934010887518525,1478418.469673712505028 6892336.287995646707714)",94,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1478206.467022337485105 6891687.633425346575677,1478203.621161298360676 6891671.952314448542893,1478190.950081655522808 6891606.959570964798331,1478184.297298308229074 6891568.669280803762376,1478181.7500194106251 6891550.612513891421258,1478178.904158371733502 6891520.431132415309548,1478177.205972440075129 6891489.069593496620655)",95,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478739.464137542527169 6892228.489522617310286,1478735.713199388701469 6892210.431273595429957)",96,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478544.135432646842673 6892221.683182909153402,1478529.290301782777533 6892221.10065860580653,1478515.340917346067727 6892220.410827253945172,1478479.884288007859141 6892219.751655120402575,1478450.119380745105445 6892221.514557450078428,1478435.358226108597592 6892223.185482617467642,1478397.102389190113172 6892229.700561141595244,1478382.453202857170254 6892232.153297962620854)",99,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478371.750899214530364 6892203.548301403410733,1478390.356298925122246 6892200.773652814328671,1478423.946789876557887 6892198.397573292255402,1478426.568714311579242 6892198.351584662683308,1478451.742921142140403 6892197.86103930324316,1478527.237549557816237 6892200.804311908781528)",100,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478472.802292829845101 6892429.708376270718873,1478484.279043906368315 6892448.686919055879116)",101,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478431.579295878997073 6892449.652710394002497,1478394.097906388808042 6892344.934010887518525,1478379.915254652500153 6892302.271228101104498,1478363.931779373902828 6892254.166644357144833,1478357.316318792523816 6892236.261633796617389)",103,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478382.453202857170254 6892232.153297962620854,1478389.077994128456339 6892251.89785656798631,1478418.469673712505028 6892336.287995646707714,1478423.265649365726858 6892349.165043009445071,1478442.53352820710279 6892385.251545143313706,1478472.802292829845101 6892429.708376270718873)",104,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1480128.794835455948487 6890683.199713693931699,1480037.745943589601666 6890661.297954847104847,1479908.067987125832587 6890628.069927993230522,1479700.842650018632412 6890575.729933591559529,1479627.876639111666009 6890557.491479728370905,1479585.384668057085946 6890546.502448085695505)",105,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1479285.906779821496457 6890425.80800533015281,1479266.862837587017566 6890414.650566106662154)",106,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1479220.367999695939943 6892255.622961183078587,1479175.095482441131026 6892253.338843335397542,1478949.302068391814828 6892240.109368146397173,1478922.690935002407059 6892238.254484030418098,1478739.464137542527169 6892228.489522617310286)",108,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478973.058010046370327 6890074.815872622653842,1478987.24999247584492 6890117.681394563056529,1478991.019592018099502 6890132.409286628477275,1478995.115765775088221 6890146.44755226187408,1479000.21032356726937 6890161.589289834722877,1479007.926805797265843 6890178.493510303087533,1479018.778400514973328 6890192.562507837079465,1479037.449115067487583 6890212.026194254867733,1479094.002438864903525 6890258.861840659752488,1479124.859037083573639 6890282.417699187062681,1479175.655323958257213 6890321.176968595944345,1479186.796170124784112 6890329.437667407095432)",111,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1479233.776204001158476 6892239.772116457112134,1479356.241535600507632 6892244.984189610928297,1479565.510294239735231 6892254.902467562817037,1479746.880284008570015 6892264.08493363391608,1479758.142429168568924 6892264.774768739938736,1479997.623968284577131 6892279.721210523508489)",113,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1479173.966468716738746 6890346.066372577100992,1479186.796170124784112 6890329.437667407095432)",114,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1479078.233569500269368 6890275.796917401254177,1479094.002438864903525 6890258.861840659752488)",116,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1477871.81242551933974 6890936.997784550301731,1477872.456243261462077 6890928.291974918916821,1477877.485486214514822 6890906.496837940067053,1477884.352875475771725 6890890.617998971603811,1477892.591876451391727 6890882.540647934190929,1477899.328636026475579 6890876.057315123267472,1477917.271556612337008 6890861.695908572524786)",117,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1478191.472600403940305 6891373.802427344955504,1478196.94038587808609 6891352.28198526147753,1478203.341240539913997 6891334.992099165916443,1478208.361152797238901 6891321.442249881103635,1478221.190854205284268 6891283.076680599711835,1478240.664008267689496 6891229.552189072594047,1478281.392478548688814 6891130.99570990819484,1478329.772116212407127 6891020.117283202707767)",118,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478420.186521029798314 6891416.536923290230334,1478405.378712934441864 6891441.123156609944999,1478385.07512729219161 6891463.931400388479233)",119,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478385.07512729219161 6891463.931400388479233,1478355.739431857131422 6891480.838359414599836,1478325.330706852255389 6891498.09790275990963,1478305.652277571614832 6891510.099898357875645,1478287.214830313343555 6891523.757363410666585,1478269.365216647740453 6891538.748412380926311,1478261.592750268988311 6891547.424226494506001,1478253.922921500634402 6891557.556240336969495,1478246.822264939546585 6891571.428382882848382,1478241.718376454431564 6891583.645085142925382,1478236.801101807504892 6891598.774201380088925,1478234.319137751823291 6891611.496783165261149,1478233.152801261516288 6891624.955150639638305,1478233.227446796139702 6891641.785805906169116,1478234.375121903605759 6891657.788756710477173,1478237.248975021298975 6891675.033351420424879)",121,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478922.243061791639775 6892224.595805050805211,1478942.052120761480182 6892225.622887848876417,1479174.98351413779892 6892237.625969672575593,1479215.245449822163209 6892238.729702232405543)",122,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478436.51523190876469 6891092.385810512118042,1478442.458882669685408 6891118.810350452549756,1478447.432141468161717 6891137.770471206866205,1478455.363229612121359 6891162.769696334376931,1478465.543014509370551 6891191.432300264947116,1478473.483433340443298 6891211.542166809551418,1478480.826687894295901 6891235.974496131762862,1478485.594671468948945 6891257.954459356144071,1478487.899352376582101 6891275.734668834134936,1478489.158995784586295 6891289.759603191167116,1478489.158995784586295 6891306.911441416479647)",123,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478739.464137542527169 6892228.489522617310286,1478695.637877542292699 6892227.661724239587784)",124,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1479563.980060763191432 6892273.619992980733514,1479565.510294239735231 6892254.902467562817037)",126,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1478942.192081137793139 6890130.999331175349653,1478922.401683553820476 6890133.711963083595037,1478910.029186052503064 6890135.275175113230944,1478897.096847034059465 6890139.121904042549431,1478884.817656453233212 6890149.711912300437689,1478838.360141325276345 6890218.141173175536096,1478809.602948790416121 6890263.490247231908143,1478795.187029757071286 6890294.724398334510624,1478786.481494184816256 6890326.46442789491266,1478781.480243310332298 6890359.43066562525928,1478776.385685515357181 6890382.649645018391311,1478763.472007882548496 6890417.455250608734787,1478747.693807828007266 6890450.713059439323843)",127,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478680.783415985293686 6890415.018393527716398,1478708.486240330385044 6890367.231622180901468,1478737.150125944754109 6890321.376206131651998,1478779.343514857813716 6890266.785306516103446,1478790.773612475488335 6890251.980539125390351,1478894.400277064414695 6890106.524382934905589,1478899.942708073183894 6890099.612560700625181,1478913.39756584004499 6890080.455656515434384)",128,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478809.602948790416121 6890263.490247231908143,1478790.773612475488335 6890251.980539125390351)",129,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478747.693807828007266 6890450.713059439323843,1478714.336584170814604 6890522.455372669734061,1478696.636261577485129 6890557.292236343957484,1478687.492183484369889 6890575.28546657320112,1478674.457206855295226 6890599.087476109154522,1478663.092424082104117 6890614.521270107477903,1478635.884126409655437 6890651.596215098164976,1478600.660764371277764 6890704.365850842557847,1478580.217218346660957 6890739.310790088959038,1478575.94376144465059 6890746.238489062525332,1478525.688654698198661 6890826.290629548951983,1478502.744483237853274 6890866.248027193360031,1478484.400342902867123 6890899.676290327683091,1478466.102856026496738 6890932.568242912180722,1478451.155087549006566 6890967.130994181148708)",130,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478212.02811472909525 6891713.140204788185656,1478199.170421248069033 6891718.367265134118497,1478187.143159347353503 6891720.421301508322358,1478175.936998336343095 6891718.750480834394693,1478161.875645596301183 6891715.209568447433412,1478141.842650016769767 6891706.65620210301131,1478116.659112496068701 6891686.514439879916608,1478086.567631015786901 6891649.909905299544334)",131,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1479186.796170124784112 6890329.437667407095432,1479194.130093982676044 6890335.261541805230081,1479279.664546919055283 6890398.466176299378276,1479297.47683781851083 6890409.209787493571639)",132,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478086.567631015786901 6891649.909905299544334,1478075.426784849492833 6891635.39383159019053,1478052.874502453953028 6891606.26979230903089,1478037.180278623942286 6891587.247253092937171,1478002.040892810327932 6891541.829398297704756,1477825.784122222103179 6891305.424640764482319,1477691.104914883850142 6891132.620425897650421,1477677.911316492594779 6891115.560924383811653,1477601.352989191422239 6891019.243627357296646,1477547.608203666983172 6890950.087170991115272,1477456.633957332465798 6890828.666303563863039,1477454.497228882741183 6890826.259975696913898,1477452.211209358181804 6890823.685052404180169,1477440.221270225942135 6890807.515166061930358)",133,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1479627.876639111666009 6890557.491479728370905,1479634.464107617270201 6890532.50946301408112)",134,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1478016.484803919447586 6892382.200895741581917,1477995.042873862665147 6892323.962841073982418)",136,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1478472.802292829845101 6892429.708376270718873,1478431.579295878997073 6892449.652710394002497)",137,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1476901.859007160179317 6891178.373176074586809,1476933.797965641599149 6891127.102523874491453,1476969.217272213893011 6891077.533540516160429,1477002.779771094908938 6891043.859300371259451,1477030.258658833103254 6891020.699720491655171,1477070.79118458321318 6890988.573769110254943,1477117.099408636335284 6890959.789270952343941,1477166.010895744198933 6890934.453480053693056)",139,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1477342.883491998305544 6890867.014377377927303,1477338.096847037784755 6890853.449989835731685)",141,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1477452.211209358181804 6890823.685052404180169,1477342.883491998305544 6890867.014377377927303,1477317.485348558053374 6890876.701050061732531,1477166.010895744198933 6890934.453480053693056)",142,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1477801.412354895845056 6891105.552087247371674,1477825.746799453394488 6891083.940398719161749,1477842.486060780240223 6891060.520138014107943,1477854.112102926243097 6891041.897400882095098,1477860.41031997743994 6891025.880348713137209,1477868.43471504189074 6891004.698037818074226,1477870.207546508172527 6890978.105273565277457)",144,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1478212.02811472909525 6891713.140204788185656,1478206.467022337485105 6891687.633425346575677)",145,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478325.657281069783494 6892141.203251630999148,1478321.449139009229839 6892126.425690860487521,1478318.136743376497179 6892116.154995526187122,1478308.647429679986089 6892080.483592945151031,1478266.19278139132075 6891904.336327421478927,1478249.052300312556326 6891837.149678730405867,1478217.355939821107313 6891730.72214855439961,1478215.956336030969396 6891726.108225850388408,1478212.02811472909525 6891713.140204788185656)",146,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478185.743555557215586 6892242.623426643200219,1478218.251686245668679 6892235.403175389394164,1478245.870534363202751 6892229.562594718299806,1478299.018155604368076 6892218.111389826983213,1478347.248502201633528 6892208.147168586961925)",147,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1479585.384668057085946 6890546.502448085695505,1479467.789957643020898 6890509.550598309375346)",148,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1479591.626900956500322 6890520.325010627508163,1479634.464107617270201 6890532.50946301408112)",149,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478973.058010046370327 6890074.815872622653842,1478972.078287394251674 6890093.298440041951835,1478970.389432155527174 6890104.179573393426836,1478967.524909733561799 6890114.463024233467877,1478959.080633534118533 6890122.340371028520167,1478942.192081137793139 6890130.999331175349653)",150,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478965.164244676940143 6890062.325604433193803,1478973.058010046370327 6890074.815872622653842)",151,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478913.39756584004499 6890080.455656515434384,1478927.160336438566446 6890063.367736498825252,1478940.176651681773365 6890058.325657619163394,1478952.801077865762636 6890058.877374304458499,1478965.164244676940143 6890062.325604433193803)",152,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478242.875382254831493 6891699.988261526450515,1478246.253092732280493 6891712.113187463954091,1478248.763048860942945 6891721.111089956946671,1478265.091759745730087 6891789.477083542384207,1478290.042029966600239 6891901.331847446970642,1478313.816633009817451 6892003.132225465960801,1478335.35186998709105 6892086.538675913587213,1478348.993341592140496 6892131.4230787018314,1478366.684333492536098 6892186.885094705037773,1478371.750899214530364 6892203.548301403410733)",153,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1477711.763066816842183 6892498.678270866163075,1477867.380346852121875 6892398.006031540222466,1477903.396817710250616 6892373.278902645222843,1477936.726049288874492 6892354.607134696096182,1477974.254092237679288 6892334.525068153627217,1477995.042873862665147 6892323.962841073982418,1478115.819350223056972 6892267.411472347564995,1478185.743555557215586 6892242.623426643200219)",154,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478512.00052963453345 6892854.268168974667788,1478514.146588779985905 6892802.557567667216063,1478515.00501243583858 6892781.048631047829986,1478514.333202617941424 6892738.414194788783789,1478511.673955417005345 6892685.2786047719419,1478511.56198711367324 6892666.652103416621685,1478509.882462567882612 6892647.565733219496906,1478505.338415597099811 6892630.104427010752261,1478498.247089728945866 6892607.768114305101335,1478458.563656944548711 6892511.739540040493011,1478431.579295878997073 6892449.652710394002497)",155,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1477587.123683996265754 6892602.264529967680573,1477695.331718327244744 6892512.33741554338485,1477711.763066816842183 6892498.678270866163075)",156,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478115.819350223056972 6892267.411472347564995,1478139.976511632790789 6892311.59171611443162)",157,secondary,0,0,0,mainroads,5,0
|
||||||
|
"LINESTRING (1478489.158995784586295 6891306.911441416479647,1478483.047392571577802 6891339.299239296466112,1478476.786498283268884 6891360.712351007387042,1478468.631473538232967 6891378.140244230628014,1478458.498342099832371 6891397.361552857793868,1478446.163167367456481 6891415.663224364630878,1478431.457996882498264 6891431.757693529129028,1478410.566577647114173 6891449.216396995820105,1478385.07512729219161 6891463.931400388479233)",158,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478294.147534419083968 6892193.936677500605583,1478305.512317192507908 6892186.823776624165475,1478311.166716501815245 6892179.726211540400982,1478316.130644607590511 6892167.67722771782428,1478325.657281069783494 6892141.203251630999148)",159,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1479634.464107617270201 6890532.50946301408112,1479915.066006073495373 6890602.474631934426725,1480044.492033854592592 6890635.825165513902903,1480127.133972293231636 6890656.025601936504245)",160,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1479266.862837587017566 6890414.650566106662154,1479180.236693697748706 6890350.648851290345192,1479173.966468716738746 6890346.066372577100992,1479161.817907822318375 6890337.253920855000615,1479078.233569500269368 6890275.796917401254177)",161,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1479467.789957643020898 6890509.550598309375346,1479446.292043434455991 6890501.872114131227136,1479396.176897070370615 6890481.549454870633781)",162,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1479453.616636599646881 6890482.744903990067542,1479477.671160398516804 6890489.641729325987399,1479591.626900956500322 6890520.325010627508163)",163,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1479078.233569500269368 6890275.796917401254177,1479020.719184436369687 6890226.708281797356904,1478981.269018949009478 6890181.160181148909032,1478961.497282745083794 6890155.520330861210823,1478951.065569168189541 6890141.650631228461862,1478942.192081137793139 6890130.999331175349653)",164,secondary,0,0,1,mainroads,5,0
|
||||||
|
"LINESTRING (1478662.672542944317684 6890646.814319248311222,1478692.838669959222898 6890659.106249583885074,1478720.354880469152704 6890669.221817328594625,1478746.378180262632668 6890677.222320823930204,1478774.342263983329758 6890683.613533364608884,1478827.965750514063984 6890691.230884444899857,1478891.339810111327097 6890693.790438639931381,1478955.012451852904633 6890686.755498230457306,1478996.935250700218603 6890678.03463292773813,1479037.234509153524414 6890665.926593106240034,1479067.913824223913252 6890655.213292057625949,1479097.352157269604504 6890641.112831750884652,1479130.522767085814849 6890623.793821963481605,1479163.77735312958248 6890603.80803756415844,1479240.186389355920255 6890541.674635590054095,1479271.705466702114791 6890510.700072621926665,1479303.32718165894039 6890476.185262273997068,1479403.389521929202601 6890361.407724624499679,1479517.373254568781704 6890228.70063394960016,1479567.199149484280497 6890173.895804021507502)",683,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1476778.273992526577786 6891183.002112032845616,1476810.838107366813347 6891118.825677935034037,1476844.288637944497168 6891066.17594079952687,1476886.575333778047934 6891009.372855611145496,1476930.149665095610544 6890957.382903834804893,1476992.422703049844131 6890898.036294349469244,1477053.594719349872321 6890849.986093406565487,1477124.750576021615416 6890812.741637612693012,1477186.743693214608356 6890783.666558920405805,1477242.522569580934942 6890762.929363554343581,1477299.747703199042007 6890745.947280360385776,1477363.233731099637225 6890724.581786209717393,1477492.921018256340176 6890688.380124446004629,1477610.926279115257785 6890655.443191071972251,1477670.204164955532178 6890644.070861050859094,1477770.350481458939612 6890631.3498101439327,1477885.024685293668881 6890629.909114081412554,1477979.656562864314765 6890634.936224867589772,1478114.718328571645543 6890651.703501258045435,1478209.443513062782586 6890670.325334578752518,1478311.623920405516401 6890696.625873879529536,1478387.155871592927724 6890721.531766928732395,1478441.24589272052981 6890743.985453568398952)",684,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1479267.721261245664209 6890576.89474381506443,1479349.710051246453077 6890499.956325806677341)",685,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1480035.058704312890768 6891629.36974533367902,1479728.956024808576331 6891543.530838788487017,1479512.717239294666797 6891494.143226150423288,1479401.821965686744079 6891469.265595769509673,1479333.754568046657369 6891453.922129524871707,1479271.490860788151622 6891437.490397951565683,1479207.566290363902226 6891415.111414563842118)",686,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1476557.509821424959227 6892224.91772651206702,1476579.56757715344429 6892197.033244075253606,1476602.661039686063305 6892155.474967340938747,1476614.604325356660411 6892127.820666904561222,1476626.193044736748561 6892100.902270716615021,1476640.860892452765256 6892073.416780357249081,1476659.326331784250215 6892043.785288944840431,1476691.171983344946057 6891992.432471443898976,1476760.032489801989868 6891879.840651011094451,1476778.273992526577786 6891853.275649514980614,1476800.042496806709096 6891828.059673327021301,1476826.420362893491983 6891804.192709765397012,1476842.833050002809614 6891792.113631258718669,1476896.139293009182438 6891750.480804309248924,1476928.358172246254981 6891725.740338440053165,1476937.716856256127357 6891718.275293369777501,1476958.085756740299985 6891704.908741282299161,1476967.575070433784276 6891697.474372724071145,1477252.002552584279329 6891480.071950710378587,1477319.762037389911711 6891425.979008984751999,1477450.111803674371913 6891326.285858543589711)",687,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1479344.55950930272229 6890482.33109465893358,1479381.891607720637694 6890430.850314672105014,1479559.622627633390948 6890217.144998343661427,1479616.707800869364291 6890150.324937810190022,1479735.832744759973139 6890003.951099094934762,1479757.517272809520364 6889977.315668813884258,1479906.463108111871406 6889794.287592766806483,1479968.549532222328708 6889699.85574609786272,1480013.924687087535858 6889632.978685894981027,1480063.200071178842336 6889572.814326574094594,1480595.105495428200811 6888922.40596410445869,1480676.674404293997213 6888823.617269230075181,1481192.549699805909768 6888190.108256537467241,1481629.319389119045809 6887662.561815643683076,1481736.099827584112063 6887530.067787102423608,1481774.91550601972267 6887482.558607625775039,1481844.793057894799858 6887399.016058546490967,1481868.278409486636519 6887371.761121637187898)",688,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1479315.839639539364725 6890486.729735681787133,1479082.600333325797692 6890751.342306513339281,1478999.1466246873606 6890835.195578991435468,1478910.113162280060351 6890921.118885340169072,1478875.048422001069412 6890958.17991707008332,1478845.218199896393344 6890996.482626908458769,1478808.305982613703236 6891048.641432393342257,1478761.083350750152022 6891124.619469199329615)",689,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1476557.509821424959227 6892224.91772651206702,1476576.040575603721663 6892207.426679218187928,1476622.861987715121359 6892172.689970703795552,1476647.1591095039621 6892154.43256404530257,1476668.713007867103443 6892134.718903675675392,1476686.254708698019385 6892114.39211630821228,1476697.955396381672472 6892099.200712250545621,1476709.628091989317909 6892081.188741613179445,1476879.773259358713403 6891804.805861446075141,1476894.207839777693152 6891782.165266772732139,1476907.783996538026258 6891763.433556890115142,1476948.400498515926301 6891721.019118160009384,1476956.704814333235845 6891716.067971306852996,1476966.007514191325754 6891708.173734177835286,1477005.746931127505377 6891679.095416892319918,1477256.22935602767393 6891486.632411575876176,1477326.153561364393681 6891432.983940120786428,1477454.375929886475205 6891332.524308172985911)",690,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478578.537693798076361 6892046.973773205652833,1478584.938548462698236 6892094.35663787741214,1478595.808804563246667 6892162.1739446753636,1478606.221856760093942 6892214.478280032984912,1478616.578924805158749 6892272.623563419096172,1478646.530445903539658 6892364.080981981940567,1478711.369424138218164 6892514.636937133036554,1478787.84377520903945 6892676.55557119846344,1478826.81807540403679 6892755.92172808945179,1478854.548891827696934 6892815.098086142912507,1478923.894594261655584 6892997.93432189617306,1478943.321094862185419 6893067.721645668148994,1478958.240871261106804 6893144.040726294741035,1478968.271365088876337 6893217.554868974722922,1478973.869780246401206 6893291.606290957890451,1478974.466944529442117 6893364.12521836720407)",691,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1479276.548095814418048 6891179.446108014322817,1479307.358040571212769 6891231.606100558303297,1479339.17570005916059 6891279.306043236516416,1479366.542619493789971 6891318.974463047459722,1479402.260508207604289 6891358.597094771452248,1479431.306952188257128 6891389.360332677140832,1479472.697901599807665 6891421.380589242093265,1479515.283179575111717 6891449.063115849159658,1479565.827537767123431 6891472.499836646020412,1479622.035625964170322 6891492.334498732350767,1479731.885862075258046 6891519.496109201572835,1480048.737498683854938 6891593.869114982895553)",692,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478602.097690927330405 6891164.808263186365366,1478585.890279041836038 6891284.364215715788305,1478582.717843782622367 6891342.10424639005214,1478565.502717171795666 6891616.09531166497618,1478560.296191073488444 6891715.332197420299053,1478556.013403475517407 6891851.006974860094488,1478567.415509017417207 6891960.501914793625474,1478578.537693798076361 6892046.973773205652833)",693,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1475827.439161936519668 6888429.393967813812196,1475897.979192936560139 6888504.029522120021284,1476023.309046963695437 6888628.280639900825918,1476225.150574827333912 6888800.601991452276707,1476400.138371311826631 6888947.490241937339306,1476464.28687833994627 6889000.647103982046247,1476631.903428197605535 6889142.129735194146633,1476745.103382710367441 6889237.949506449513137,1476791.197000852320343 6889272.33640996273607,1476838.662230708403513 6889305.65077849291265,1477053.790663880994543 6889449.851177944801748,1477102.916756902821362 6889486.154534038156271,1477127.755058822920546 6889504.834965611808002,1477167.513137144735083 6889537.935754880309105,1477506.179931489285082 6889826.255522099323571,1477606.680814286228269 6889910.988007251173258,1477636.93091752869077 6889934.542846583761275,1477663.88728651846759 6889953.79135469160974,1477695.201088640838861 6889973.530318510718644,1477754.889524928759784 6890008.701961868442595,1477817.227877719327807 6890043.245416264049709,1477908.538028964074329 6890093.375067686662078,1477952.914799788501114 6890118.462998975068331,1478006.174389333231375 6890147.750230991281569,1478042.330820570699871 6890171.137181520462036,1478075.501430386910215 6890194.033776975236833,1478102.308508307440206 6890215.076020252890885,1478166.429023256991059 6890265.697170505300164,1478183.560173645848408 6890279.046004079282284)",695,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478598.449390378547832 6890845.709869343787432,1478556.414623227668926 6890825.447648616507649)",696,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478927.88813040801324 6890978.978924939408898,1479441.859964764444157 6891217.979787161573768,1479558.960148505866528 6891274.753690734505653,1479694.432464661076665 6891336.67816798388958,1479814.882366804173216 6891392.165357237681746,1480077.364061532309279 6891515.142887800931931)",697,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478569.785504766972736 6890803.361579650081694,1478595.75282041169703 6890816.082902735099196)",700,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478850.574017061386257 6890963.099942809902132,1478627.402527447091416 6890858.032757756300271)",703,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478183.560173645848408 6890279.046004079282284,1478405.86390891415067 6890456.521695459261537,1478453.245162542676553 6890498.408369177952409,1478496.56756518012844 6890547.360726167447865,1478533.153208245523274 6890597.539500389248133)",704,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478343.516225425293669 6890759.5421401290223,1478223.607503416249529 6890749.472439081408083,1478071.965098144253716 6890723.922736717388034,1477935.876956322928891 6890680.27232330199331,1477861.231420873198658 6890651.795460822060704)",705,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1479207.566290363902226 6891415.111414563842118,1479145.39589002286084 6891388.195404731668532,1479060.327971686143428 6891345.599010691978037,1478962.775587541749701 6891295.568845461122692,1478908.82552679348737 6891268.132091694511473,1478785.175197315169498 6891204.261530964635313,1478658.75365233537741 6891138.674794974736869)",708,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478183.560173645848408 6890279.046004079282284,1478275.262213947018608 6890340.70227038115263,1478305.01779051986523 6890362.756416314281523,1478420.541087323101237 6890454.559939289465547,1478460.187197338789701 6890491.067073968239129,1478510.171714016469195 6890538.195547109469771,1478530.773881800472736 6890556.893749584443867,1478551.954552487237379 6890575.162854988127947)",709,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478575.831793141085654 6891339.988995048217475,1478579.592061987845227 6891283.046025006100535,1478593.50412365840748 6891161.252267209812999)",710,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477781.108769256155938 6890678.065286220051348,1477905.421577859437093 6890735.141912166029215,1478103.250908190850168 6890828.69695742521435,1478294.856667005689815 6890931.571979558095336,1478411.714252757374197 6890990.995472802780569,1478613.145230175927281 6891098.501459069550037,1478665.191829765914008 6891124.772744154557586)",713,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478604.868906431598589 6891027.229151873849332,1478611.251099710585549 6890982.580821967683733,1478613.247867786558345 6890914.635521415621042,1478611.652319462504238 6890865.451023075729609,1478607.640121933305636 6890811.484831825830042,1478591.227434826781973 6890756.093610955402255)",714,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478625.956270195310935 6890829.907785100862384,1478861.276320709846914 6890948.416510410606861)",715,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1479616.707800869364291 6890150.324937810190022,1479664.443620794219896 6890101.926717818714678,1479699.98422635695897 6890058.524888642132282,1479734.657077576732263 6890015.874237441457808,1479788.523162097437307 6889964.457745274528861)",718,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478782.273352124495432 6891113.062545800581574,1478812.280857374193147 6891067.999899725429714,1478834.945108078885823 6891038.540714574977756,1478859.28888332657516 6891009.74071024172008,1478876.867906926199794 6890991.439962794072926,1478897.348775716731325 6890970.962793939746916,1478936.528351138578728 6890935.541706578806043,1478983.667006774339825 6890894.219856407493353,1479029.200783401727676 6890851.304213112220168,1479066.794141192454845 6890814.289654764346778,1479101.980180467711762 6890775.926505616866052,1479143.14719326980412 6890729.808203851804137,1479181.440352956997231 6890681.77433499135077,1479267.721261245664209 6890576.89474381506443,1479344.55950930272229 6890482.33109465893358)",719,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1479735.832744759973139 6890003.951099094934762,1479699.98422635695897 6890058.524888642132282,1479669.062313296599314 6890105.972662986256182,1479632.952535520773381 6890164.209978073835373)",720,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478572.827310339780524 6890796.249909016303718,1478594.185264169238508 6890806.013130874373019)",723,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478714.065994105068967 6891217.213403515517712,1478673.654767348431051 6891300.887601297348738,1478632.870312915416434 6891389.360332677140832,1478605.372763794381171 6891470.307910224422812,1478585.83429489005357 6891564.484644450247288,1478578.593677949858829 6891611.80335165001452,1478569.23499394278042 6891715.255554312840104,1478573.153884557308629 6891842.852014512754977,1478573.49912015767768 6891933.752698284573853,1478578.537693798076361 6892046.973773205652833)",724,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478438.502669292036444 6890750.315412051975727,1478385.625638116383925 6890728.62804473284632,1478310.177663156529889 6890703.384942455217242,1478208.071901348652318 6890677.774079982191324,1478114.541045426623896 6890658.554491711780429,1477979.628570788539946 6890640.561075114645064,1477885.481889200396836 6890636.698779699392617,1477771.03162196977064 6890638.5839474638924,1477672.135618184227496 6890651.933400171808898,1477611.794033464044333 6890663.01453560963273,1477495.402982309227809 6890694.725365828722715,1477367.273920707637444 6890730.942382912151515,1477302.826831534970552 6890753.058906504884362,1477244.845911874435842 6890771.420418604277074,1477189.309633497847244 6890792.32623135112226,1477128.520175561308861 6890819.209592456929386,1477058.07345147873275 6890859.25891683716327,1476996.164310513529927 6890906.328240063972771,1476934.367137851659209 6890964.709297677502036,1476892.463000384392217 6891013.940385126508772,1476850.120320399058983 6891069.716567330062389,1476816.053964158287272 6891122.121087796986103,1476784.497564045945182 6891185.623133247718215)",727,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477785.139628168661147 6890619.962187672965229,1477670.577392631676048 6890570.948082859627903,1477610.665019739652053 6890546.318531366065145,1477551.331149747828022 6890517.719532645307481)",728,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478598.971909126965329 6890754.806160444393754,1478614.376881508156657 6890813.262752261944115,1478617.549316764576361 6890865.542985087260604,1478618.976912630489096 6890914.083746002987027,1478617.614631609292701 6890981.584552413783967,1478611.950901604257524 6891032.133892551995814)",730,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478624.789933702209964 6890819.929957416839898,1478866.398870577802882 6890942.408266056329012)",731,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478565.502717171795666 6891616.09531166497618,1478561.677133480552584 6891537.138942591845989)",735,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478595.276955124922097 6890826.290629548951983,1478565.344095406820998 6890811.423524235375226)",736,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1476576.040575603721663 6892207.426679218187928,1476618.149988292017952 6892167.615909783169627,1476640.273058862425387 6892146.093342563137412,1476655.827322310302407 6892126.916231859475374,1476670.784421477932483 6892106.114253824576735,1476680.329719322966412 6892090.386338596232235,1476691.657179324654862 6892070.780140379443765,1476829.630120918620378 6891846.576929586008191,1476847.059853446204215 6891819.168952871114016,1476865.683914539869875 6891793.661837009713054,1476884.354629097972065 6891773.197953407652676,1476901.187197342514992 6891757.54733301512897,1476948.400498515926301 6891721.019118160009384)",737,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1476937.716856256127357 6891718.275293369777501,1476957.72185975429602 6891707.821176195517182,1476966.875268540112302 6891701.980978826992214,1477005.746931127505377 6891679.095416892319918)",739,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477252.002552584279329 6891480.071950710378587,1477286.414144428446889 6891458.857786803506315,1477326.153561364393681 6891432.983940120786428)",741,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478855.416646176483482 6890957.168323368765414,1478625.368436602409929 6890839.900952127762139)",742,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477256.22935602767393 6891486.632411575876176,1477286.414144428446889 6891458.857786803506315,1477319.762037389911711 6891425.979008984751999)",743,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478430.310321775265038 6890777.137325343675911,1478363.717173459939659 6890762.914036750793457)",746,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478932.544145682128146 6890972.940003331750631,1479191.92805068846792 6891093.642660211771727,1479300.29470678162761 6891144.070084678940475,1479955.859791199443862 6891450.764536706730723,1480073.361194689990953 6891504.167875309474766,1480081.059015537146479 6891508.153213307261467)",747,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478614.35822012508288 6895547.603960990905762,1478615.365934853209183 6895453.089168295264244,1478618.7716374094598 6895322.46029799990356,1478627.934376885648817 6895235.953195017762482,1478677.928224253468215 6894754.545370802283287,1478689.899502002634108 6894669.838488157838583,1478708.728838320123032 6894564.201485143043101,1478728.612542824819684 6894486.274192513898015,1478750.604983708821237 6894401.156126040033996,1478775.648560852976516 6894316.60630351677537,1478799.17123521049507 6894234.572051984257996,1478819.176238714251667 6894162.305936777964234,1478835.234359527472407 6894088.062495077960193,1478888.839184675598517 6893836.372824227437377,1478909.506667304085568 6893747.121864621527493,1478924.529081313405186 6893665.614724689163268,1478939.710117084905505 6893584.200404370203614,1478951.018915706546977 6893509.088375779800117,1478957.755675281397998 6893436.798119088634849,1478962.271730176173151 6893365.505077449604869,1478961.907833192963153 6893291.146342131309211,1478955.684261673595756 6893219.30265864636749,1478946.036326214903966 6893145.742505932226777,1478932.404185302788392 6893069.54605878982693,1478912.567134257173166 6893000.47927956096828,1478842.764227916719392 6892818.547498689033091,1478815.686559933237731 6892760.919507294893265,1478777.505368549609557 6892681.10871759429574,1478695.451263701310381 6892523.329134689643979,1478630.239057793281972 6892371.377998174168169,1478598.673326985212043 6892274.539774225093424,1478586.73937200778164 6892214.110370276495814,1478576.382303962484002 6892165.36247589904815,1478565.717323085758835 6892097.821070521138608,1478557.963518089847639 6892049.073881317861378,1478550.666917 6892009.018629167228937,1478547.363852057838812 6891970.695765716023743,1478545.954917574767023 6891928.402865662239492,1478544.294054409023374 6891850.393819660879672,1478547.634442123584449 6891714.841681536287069,1478555.74281340977177 6891610.715033587068319,1478561.677133480552584 6891537.138942591845989,1478566.193188372533768 6891473.710761290974915,1478575.831793141085654 6891339.988995048217475)",749,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477556.565667921910062 6890511.175188716500998,1477614.798516265349463 6890538.701317588798702,1477682.334064466878772 6890563.668027113191783,1477739.55919808219187 6890579.638179088011384,1477786.753837872762233 6890589.339832002297044,1477886.918815756216645 6890608.05347993876785,1477979.441956950351596 6890621.326249268837273,1478115.203524554148316 6890637.250536070205271,1478210.255283262813464 6890657.389669657684863,1478313.182145957835019 6890686.479618338868022,1478388.508821921423078 6890711.523420327343047,1478445.080807101679966 6890735.663021787069738)",750,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478347.229840818792582 6891012.392329533584416,1478476.030712238047272 6891063.922815636731684)",751,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478094.470727083971724 6890836.620984894223511,1478107.888262082124129 6890843.119612865149975,1478290.601871486520395 6890940.323774167336524,1478460.821684390539303 6891029.313666300848126,1478546.72936500585638 6891074.130857136100531,1478570.382669050013646 6891085.365848724730313,1478660.983687705593184 6891132.375185729004443,1478788.133026657626033 6891198.023180870339274,1478968.12207401660271 6891290.617960623465478,1479014.626242603408173 6891313.885613084770739,1479051.445152965839952 6891332.922833372838795,1479137.968659247271717 6891374.814073477871716,1479237.54580354061909 6891417.272669827565551,1479286.979809394106269 6891432.999268201179802)",753,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477521.612895943690091 6890502.255271850153804,1477475.761875794501975 6890473.181315985508263,1477442.637919437140226 6890448.153582629747689,1477408.198335519991815 6890419.110474707558751,1477351.449067191453651 6890359.875120709650218,1477284.827926800120622 6890281.743360051885247,1477035.661129459738731 6889969.653018221259117,1477000.447098108474165 6889923.002958968281746,1476967.005898226518184 6889873.855176855809987,1476902.036290308227763 6889765.446070476435125,1476666.398996269330382 6889354.24341909494251,1476618.523215968394652 6889274.71162486448884,1476574.892900496488437 6889215.837150192819536,1476535.629348847083747 6889162.648217984475195,1476495.936585372779518 6889113.780909334309399,1476444.403173832688481 6889058.600589515641332,1476398.720106138614938 6889012.645371961407363,1476350.088539789430797 6888967.02753147855401,1476127.411576841957867 6888777.08111983910203,1476049.882857584161684 6888709.813339100219309,1475992.648393273120746 6888654.528531948104501,1475915.940774908289313 6888571.127032433636487,1475859.518080794485286 6888503.707749617286026,1475810.438641237094998 6888443.337326082400978)",754,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478087.146133915986866 6890851.273559163324535,1478099.686583872418851 6890857.588275128975511,1478284.284993046661839 6890953.198585663922131,1478356.989744574995711 6890988.497132927179337,1478420.373134867986664 6891017.419679494574666)",755,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477405.483104167273268 6890465.763412615284324,1477442.693903588689864 6890498.193800956942141,1477484.448749980889261 6890527.267847270704806,1477538.921329480595887 6890561.752224069088697,1477579.621807685820386 6890584.404708518646657,1477683.612369260750711 6890631.518402252346277)",757,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478638.020854862174019 6891161.880697418935597,1478549.817824034951627 6891106.839593932963908,1478476.030712238047272 6891063.922815636731684)",758,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477654.761869808426127 6890641.77187445666641,1477570.934933496639132 6890599.225414553657174,1477528.592253511305898 6890576.43495028745383,1477478.915649668080732 6890539.130456198938191,1477438.289816997246817 6890504.661502741277218,1477401.172324493527412 6890470.315307054668665)",759,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478908.82552679348737 6891268.132091694511473,1478968.12207401660271 6891290.617960623465478)",760,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477344.973566989181563 6890408.949243260547519,1477311.504375034244731 6890367.109013764187694,1476949.016324184834957 6889894.743330676108599,1476911.338990163756534 6889833.412309887818992,1476874.352127346210182 6889766.059066688641906,1476800.67698385566473 6889633.913489734753966,1476653.438665177905932 6889368.648105666041374,1476600.757578530581668 6889286.419145964086056,1476556.250178016955033 6889229.536690140143037)",761,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478951.550765147898346 6891271.872068259865046,1479014.626242603408173 6891313.885613084770739)",762,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478665.191829765914008 6891124.772744154557586,1478570.382669050013646 6891085.365848724730313)",764,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478613.145230175927281 6891098.501459069550037,1478512.373757313471287 6891032.731658027507365,1478391.186730505200103 6890953.244567170739174)",766,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1475352.861508915899321 6893202.392042903229594,1475384.884443622082472 6893185.496794159524143,1475415.40513693029061 6893166.639162816107273,1475452.914518496021628 6893139.104034236632288,1475485.021429432556033 6893109.6065957788378,1475514.525077319936827 6893077.932231985032558,1475539.596646539866924 6893046.978557553142309,1475559.415036202641204 6893018.186688029207289,1475577.078036027029157 6892989.057638514786959,1475610.024709239369258 6892929.052129200659692,1475653.543056407710537 6892853.762252791784704,1475678.120098955230787 6892816.385866651311517,1475710.124372278340161 6892775.744226446375251,1475739.320107336854562 6892744.73039329610765,1475768.805093838367611 6892714.682502984069288,1475840.838035549037158 6892642.246086311526597,1475907.869726384989917 6892584.328083496540785,1475976.898185294354334 6892529.445871927775443,1476109.086097889812663 6892446.571376527659595,1476194.667204285040498 6892393.790303630754352,1476235.65693393885158 6892368.557302054949105,1476273.334267959930003 6892339.721872925758362,1476309.854596180841327 6892310.288686713203788,1476343.585047514177859 6892278.724780205637217,1476371.26921047619544 6892251.223352207802236,1476396.396763845114037 6892220.564123103395104,1476441.333376189693809 6892160.288419598713517,1476485.271604493027553 6892090.876877398230135,1476503.046572620980442 6892057.520307081751525,1476521.353390193078667 6892020.162952153012156,1476548.636333400150761 6891949.31168732047081,1476565.347602651221678 6891885.28242499101907,1476579.390294005395845 6891822.020113877020776,1476596.904002760536969 6891745.790226866491139,1476612.318305834662169 6891669.8369763167575,1476641.18746667006053 6891532.141924168914557,1476660.623297963757068 6891452.527270408347249,1476674.292761641787365 6891406.190494714304805,1476690.145607233978808 6891361.524732173420489,1476706.138413205510005 6891325.274218517355621,1476725.210347512969747 6891292.150741980411112,1476789.237555547850206 6891203.280561587773263,1476851.547916265204549 6891125.75370395090431,1476899.52633417956531 6891059.339930346235633,1476944.845504887402058 6891000.314440655522048,1476973.220139053184539 6890965.077150264754891,1476999.598005142761394 6890935.066565403714776,1477026.824964198283851 6890910.297954620793462,1477054.87302414374426 6890884.992973770014942,1477130.479620868572965 6890828.405745735391974,1477242.401270584436134 6890777.627784022130072,1477373.040288320509717 6890737.992688745260239,1477489.468662241240963 6890705.561333095654845)",767,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478411.714252757374197 6890990.995472802780569,1478512.373757313471287 6891032.731658027507365,1478671.266110216034576 6891093.428076104260981)",768,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477489.468662241240963 6890705.561333095654845,1477590.081513338722289 6890676.256742395460606,1477641.279019968351349 6890665.849960001185536,1477684.806697827065364 6890661.926345975138247,1477737.515776550164446 6890662.217551639303565,1477788.27474065637216 6890666.984130036085844,1477827.081088401842862 6890675.505737031809986,1477872.446912571322173 6890688.977864359505475,1477922.702019314747304 6890709.776175797916949,1478339.364067516522482 6890923.509914490394294,1478391.186730505200103 6890953.244567170739174,1478671.266110216034576 6891093.428076104260981,1478812.467471212381497 6891164.624332321807742,1478920.47023032233119 6891225.199124677106738,1478966.713139536324888 6891258.153720107860863,1479043.168829224305227 6891308.045701892115176,1479111.833391147432849 6891342.71736282389611,1479235.297106784768403 6891399.41550721321255)",769,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478460.821684390539303 6891029.313666300848126,1478493.917648672126234 6891050.955862689763308,1478535.485881229164079 6891075.832198646850884)",770,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478546.72936500585638 6891074.130857136100531,1478493.917648672126234 6891050.955862689763308,1478458.08779165497981 6891036.594143707305193)",772,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478560.296191073488444 6891715.332197420299053,1478571.828926299000159 6891609.948612500913441,1478579.424109532730654 6891563.518959445878863,1478599.410451650619507 6891468.039343643933535,1478627.72910166461952 6891387.229740903712809,1478666.022261348785833 6891297.469495555385947,1478708.467578947311267 6891213.902627007104456)",773,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478749.074750232277438 6891229.766776816919446,1478697.252087243599817 6891335.283329210244119,1478680.839400137076154 6891369.265349286608398,1478665.275805993471295 6891403.860634117387235,1478650.579966201679781 6891440.893235126510262,1478636.807864910224453 6891480.31720149051398,1478625.71367220277898 6891516.50710129737854,1478615.524556615622714 6891556.452601296827197,1478606.27784091187641 6891606.162493411451578,1478598.524035915965214 6891650.400417221710086,1478592.160504020052031 6891714.366494299843907,1478591.815268416889012 6891798.812305805273354,1478593.541446424322203 6891856.908596065826714,1478596.872503443155438 6891908.797062506899238,1478605.195480649126694 6892008.037561585195363,1478619.499431378906593 6892103.09436908364296,1478629.772523196646944 6892163.722221702337265,1478641.538525721756741 6892218.479299768805504,1478655.889129913412035 6892270.998617016710341,1478670.920874612871557 6892319.547864924184978,1478688.173323994968086 6892364.908794411458075,1478723.713929563527927 6892447.276557306759059,1478779.240877247182652 6892575.543838411569595,1478816.097110378323123 6892663.448042929172516,1478871.092208620626479 6892789.173881882801652,1478923.194792367983609 6892912.464073054492474,1478951.923992824042216 6892984.013724349439144,1478964.156529946019873 6893022.080790019594133,1478974.028402008581907 6893060.37800376676023,1478982.360709904693067 6893100.990420570597053,1478987.305976627394557 6893130.380508157424629)",774,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478162.239542582305148 6890271.275784828700125,1478102.308508307440206 6890215.076020252890885)",775,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477639.31024397094734 6890001.207860252819955,1477597.219492668518797 6889960.565124080516398,1477572.390521438326687 6889934.420244771055877,1477555.05409582844004 6889916.489749496802688,1477065.258084264583886 6889497.847038632258773,1477030.715862737037241 6889473.036882025189698,1476963.954761966597289 6889426.634892208501697,1476919.242086228914559 6889398.606871547177434)",776,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477532.455159971257672 6889929.485523279756308,1477564.646047132555395 6889952.427406344562769,1477596.025164099410176 6889970.817740640603006,1477639.31024397094734 6890001.207860252819955)",777,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478526.565739739919081 6890602.627896940335631,1478491.594306378625333 6890551.6980971544981,1478448.131943361833692 6890503.527355609461665,1478399.733644315274432 6890460.41455677524209,1478162.239542582305148 6890271.275784828700125,1478101.907288549700752 6890224.102898960933089,1478071.293288323795423 6890200.317325276322663,1478038.579882414080203 6890177.742551427334547,1478001.96624727291055 6890154.355581684969366,1477949.630396228516474 6890124.501278791576624,1477904.553823507856578 6890099.152794464491308,1477813.999458313919604 6890050.080562806688249,1477751.007957082940266 6890014.740159252658486,1477691.636764322407544 6889979.752393233589828,1477660.929457176011056 6889961.024882393889129,1477632.35887848213315 6889940.381760180927813,1477601.996806936105713 6889916.796253352425992,1477500.964074700837955 6889831.695906238630414,1477162.465232811402529 6889543.621135639958084,1477122.604516879189759 6889510.397727609612048,1477098.494008928304538 6889492.268960924819112,1477048.098941802745685 6889454.93884819932282,1476833.278421464608982 6889311.933632552623749,1476738.459930056007579 6889246.285711977630854,1476692.198359458940104 6889212.803027050569654,1476648.502729142317548 6889177.5735699608922,1476570.432829750468954 6889112.309837851673365,1476404.710410355357453 6888972.559274631552398)",778,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477852.236633849330246 6890212.394012399949133,1478308.479477224871516 6890605.202749434858561,1478362.784104266436771 6890650.676619523204863,1478396.178650686750188 6890676.946441259235144,1478453.133194239344448 6890714.128961123526096)",779,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1482784.748301694169641 6886965.537159140221775,1482693.28885937994346 6886972.002020028419793,1482596.454938515089452 6886983.813426220789552,1482487.295173607533798 6887003.177429282106459,1482381.643748866859823 6887039.102067950181663,1482275.889686515787616 6887083.636586944572628,1482198.407620716840029 6887123.973706754855812,1482126.533300768584013 6887170.745409660041332,1482052.44760683295317 6887226.985180730931461,1481981.702300606062636 6887286.71834568399936,1481968.443387370323762 6887300.031594241969287,1481893.564584620529786 6887373.415718881413341,1481786.998752072220668 6887491.950112945400178,1481743.732333586551249 6887544.959467724896967,1481636.671974362805486 6887667.648355164565146,1481197.382998225279152 6888196.696677305735648,1480772.771200496470556 6888722.807162684388459,1480690.84772533737123 6888841.269510939717293,1480527.495301691815257 6889044.931987857446074,1480432.555511289509013 6889146.512319353409111,1480354.168368370272219 6889229.996406652964652,1480070.375373274553567 6889577.472987326793373,1480025.877303453860804 6889645.238416977226734,1479985.932611293857917 6889713.004417773336172,1479958.108487955294549 6889763.959554866887629,1479928.418226227164268 6889811.788715708069503,1479883.397637658054009 6889871.648361132480204,1479800.475778460968286 6889970.710463566705585,1479752.823934766696766 6890021.713210099376738,1479702.307568650459871 6890079.44417324475944,1479632.952535520773381 6890164.209978073835373,1479578.181373882573098 6890234.309874192811549,1479501.660369355697185 6890327.797787746414542,1479399.125395719893277 6890440.429178510792553,1479372.187688112957403 6890474.959161611273885,1479349.710051246453077 6890499.956325806677341,1479267.189411807339638 6890593.876469925045967,1479186.413611755473539 6890685.71328535862267,1479147.700570930493996 6890733.747177755460143,1479106.981431342195719 6890780.861746666021645,1479071.1049208662007 6890819.224919372238219,1479033.035697785904631 6890855.687729027122259,1478987.819164683111012 6890899.323767800815403,1478941.10039018210955 6890940.752934218384326,1478905.223879706114531 6890974.625996216200292,1478886.235921626212075 6890995.65495538059622,1478870.345753268105909 6891016.116859840229154,1478849.874215167714283 6891047.476553818210959,1478830.513029411667958 6891078.085327141918242,1478803.090125825256109 6891124.665451684966683)",780,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477856.34213829645887 6890206.462946793064475,1478312.584981674794108 6890600.190983732230961,1478372.161449659382924 6890649.036674340255558,1478398.940535501111299 6890670.218048175796866,1478437.774875319562852 6890694.98591932002455)",781,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1482783.740586966043338 6886947.980951749719679,1482690.806895327055827 6886951.780197567306459,1482595.2606099487748 6886967.00783793721348,1482485.121122389100492 6886988.62378338817507,1482377.426276116399094 6887024.134725640527904,1482269.460839775390923 6887069.113434969447553,1482189.804722755216062 6887109.159404909238219,1482114.440724022919312 6887154.138589794747531,1482034.290080333128572 6887211.098286444321275,1481972.978103650966659 6887259.325908213853836,1481901.262405461864546 6887325.861504116095603,1481730.342790664173663 6887524.123379080556333,1481461.170989822829142 6887854.10595522634685,1481188.752108187647536 6888186.614863532595336,1480670.170912018744275 6888817.763843473047018,1480055.054377123713493 6889565.443227421492338,1479862.077006594510749 6889808.447867930866778,1479841.60546849691309 6889834.730262932367623,1479692.510342122521251 6890026.310829350724816,1479549.928038716083393 6890208.225407693535089,1479413.634621670935303 6890373.821827123872936,1479315.839639539364725 6890486.729735681787133)",782,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477861.343389173736796 6890200.087439280003309,1478318.509971052641049 6890594.719426577910781,1478390.477597918594256 6890656.393440401181579,1478437.774875319562852 6890694.98591932002455,1478455.288584077497944 6890709.31637466698885)",783,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1480071.877614675322548 6891532.785711640492082,1479083.878638119669631 6891071.034723062068224,1478918.445470173377544 6890994.888592929579318)",784,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477866.363301434088498 6890193.696611104533076,1478323.520552617264912 6890589.707667414098978,1478345.643623190466315 6890607.563031607307494,1478390.477597918594256 6890656.393440401181579)",785,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1479235.297106784768403 6891399.41550721321255,1479323.42549207736738 6891429.473809752613306,1479404.817117797909304 6891454.412629490718246,1479515.861682475078851 6891481.696737250313163,1479730.990115647669882 6891529.674072655849159,1480047.17927313153632 6891600.766893580555916)",786,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477872.288290809141472 6890185.972451457753778,1478330.359949802746996 6890582.412268224172294,1478408.961698635946959 6890650.630639746785164,1478459.636686514364555 6890694.801999206654727,1478463.210341525729746 6890697.438187943771482)",787,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478805.488113650586456 6894342.55076818075031,1478857.320107331965119 6894072.714029368944466,1478926.292582089779899 6893755.217427032999694,1478940.615194202633575 6893690.161840692162514,1478969.521677806740627 6893554.241368629038334,1478978.189890613080934 6893508.015132857486606,1478983.816297846613452 6893465.484164356254041,1478989.190776400035247 6893405.965717462822795,1478991.168883087579161 6893344.040629624389112,1478990.7023484937381 6893285.075020092539489,1478985.887711454415694 6893222.721581661142409,1478980.597209128318354 6893177.72376514505595,1478972.638128911377862 6893132.434905360452831,1478968.709907609736547 6893107.061603565700352,1478959.323231523856521 6893066.157863318920135,1478950.49639695812948 6893030.804198566824198,1478937.797325239283964 6892990.912695890292525,1478857.497390477219597 6892791.243522559292614,1478802.642252611462027 6892668.445764632895589,1478757.547018504701555 6892584.742001041769981,1478697.793267377885059 6892455.217510379850864,1478660.498491725884378 6892373.738798955455422,1478642.947460204828531 6892327.228085407055914,1478624.09013180853799 6892263.195812923833728,1478611.559012545039877 6892213.55850566457957,1478604.887567814672366 6892161.637413104996085,1478597.898879556916654 6892089.83448248077184,1478592.841644530883059 6892002.932946247048676,1478584.938548462698236 6891893.805323468521237,1478581.840758743695915 6891800.866362730972469,1478581.532845909241587 6891711.040184433571994,1478585.181146452436224 6891648.944210037589073,1478590.415664629545063 6891604.461039665155113,1478597.721596408868209 6891552.206658062525094,1478605.596700401278213 6891511.44878276437521,1478616.131051591597497 6891471.442193754017353,1478628.074337264988571 6891433.029924367554486,1478641.19329012138769 6891395.13899090141058,1478656.962159483227879 6891360.574399496428668,1478672.087211105972528 6891325.688071240670979,1478697.252087243599817 6891275.382129811681807,1478725.31880857469514 6891220.416887637227774)",788,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477882.775988540612161 6890173.665918780490756,1478339.476035819854587 6890570.105128699913621,1478400.685374894412234 6890626.399334325455129,1478459.636686514364555 6890694.801999206654727)",789,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477908.538028964074329 6890093.375067686662078,1477813.999458313919604 6890050.080562806688249)",790,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477877.298872376326472 6890180.041405342519283,1478334.922658159164712 6890576.036462583579123,1478373.15050300443545 6890608.819805517792702,1478408.961698635946959 6890650.630639746785164)",791,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478441.880379769485444 6890723.922736717388034,1478448.113281978992745 6890727.11069754883647)",792,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477872.288290809141472 6890238.830985979177058,1478303.935430257115513 6890611.578578202985227,1478358.687930509448051 6890655.504497475922108,1478392.194445233326405 6890681.43714867066592,1478448.794422489590943 6890719.355371965095401)",793,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478374.52211471600458 6890689.882137652486563,1478441.880379769485444 6890723.922736717388034)",794,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477881.404376826249063 6890257.972941686399281,1478297.543906279606745 6890617.050146820954978,1478351.223376962356269 6890659.979866296984255,1478385.718945034081116 6890686.908764844760299,1478441.880379769485444 6890723.922736717388034)",795,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477639.31024397094734 6890001.207860252819955,1477650.339121833909303 6890011.138695799745619,1477667.871491971891373 6890027.245678919367492,1477711.333854988683015 6890056.072814892046154,1477872.288290809141472 6890185.972451457753778)",796,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477711.333854988683015 6890056.072814892046154,1477765.601159261539578 6890092.271629626862705,1477877.298872376326472 6890180.041405342519283)",797,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477765.601159261539578 6890092.271629626862705,1477828.779274330707267 6890136.347967855632305,1477882.775988540612161 6890173.665918780490756)",798,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477667.871491971891373 6890027.245678919367492,1477709.663661133032292 6890068.854257536120713,1477866.363301434088498 6890193.696611104533076)",799,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477709.663661133032292 6890068.854257536120713,1477738.43018435779959 6890100.348186734132469,1477861.343389173736796 6890200.087439280003309)",800,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477738.43018435779959 6890100.348186734132469,1477767.485959034180269 6890134.800081231631339,1477856.34213829645887 6890206.462946793064475)",801,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477767.485959034180269 6890134.800081231631339,1477796.280474334955215 6890170.96859906706959,1477852.236633849330246 6890212.394012399949133)",802,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477796.280474334955215 6890170.96859906706959,1477825.522862849291414 6890206.815438941121101,1477872.288290809141472 6890238.830985979177058)",803,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477825.522862849291414 6890206.815438941121101,1477854.522653371095657 6890233.896077645942569,1477881.404376826249063 6890257.972941686399281)",804,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477335.922795813763514 6889793.260820533148944,1477382.669562393333763 6889831.527330902405083,1477414.291277347132564 6889860.415065491572022,1477448.665546425385401 6889897.256655850447714,1477629.102466995362192 6890037.329800856299698,1477696.330102362437174 6890102.263879836536944,1477741.44399785483256 6890151.443709483370185,1477774.763898740522563 6890185.328771825879812,1477834.890877549303696 6890236.608744276687503,1478292.505332639208063 6890623.870454665273428,1478342.340558242052794 6890664.056745544075966,1478374.52211471600458 6890689.882137652486563)",805,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477335.922795813763514 6889793.260820533148944,1477374.542529721045867 6889835.496514805592597,1477399.390162334311754 6889867.6638342756778,1477427.400899513624609 6889893.532643830403686,1477590.072182645788416 6890022.694035316817462,1477621.115394705208018 6890055.337192909792066,1477774.763898740522563 6890185.328771825879812)",806,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478113.020142643013969 6890567.867468994110823,1478206.914895548252389 6890612.88133230060339,1478324.761534644989297 6890666.15649242606014)",807,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478632.758344612084329 6890816.420094702392817,1478872.753071786370128 6890934.054974609985948)",808,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477627.702863208018243 6890097.421008551493287,1477642.613308914005756 6890109.068425429053605,1477684.3868166890461 6890145.849852683022618,1477714.636919934535399 6890174.52415706217289,1477745.222928084433079 6890205.788614028133452,1477770.891661590430886 6890232.807946092449129,1478127.641336897388101 6890537.229985372163355,1478178.017742637079209 6890574.044024353846908,1478255.014612456317991 6890619.533044742420316)",809,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1477633.282616982702166 6890089.78889452945441,1477648.622274519409984 6890102.432460854761302,1477690.694364438997582 6890138.202367076650262,1477719.246281747007743 6890165.696567691862583,1477750.653390789870173 6890198.846054994501173,1477777.712397390045226 6890226.217856734059751,1478134.965930065372959 6890527.988186067901552,1478179.100102899828926 6890562.058752524666488,1478255.014612456317991 6890619.533044742420316)",810,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478119.13174585881643 6890559.131406237371266,1478211.729532587574795 6890605.67787111364305,1478274.851663501933217 6890634.675673317164183)",811,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478578.658992794342339 6890784.938687206245959,1478592.291133706457913 6890793.812937114387751)",814,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478576.662224721163511 6890790.042529220692813,1478592.869636606657878 6890797.951191720552742)",816,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478255.014612456317991 6890619.533044742420316,1478274.851663501933217 6890634.675673317164183,1478324.761534644989297 6890666.15649242606014,1478374.52211471600458 6890689.882137652486563)",819,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478624.575327788246796 6890811.791369803249836,1478632.758344612084329 6890816.420094702392817)",821,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478624.575327788246796 6890812.481080299243331,1478632.758344612084329 6890816.420094702392817)",823,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1479311.071655961917713 6890483.128060797229409,1479409.174550930503756 6890368.840857767499983,1479522.103915374726057 6890231.44395041000098,1479567.199149484280497 6890173.895804021507502,1479618.872521397890523 6890109.175704349763691,1479907.088264473713934 6889740.297941270284355,1480050.090449015144259 6889560.462758839130402,1480664.171277103479952 6888813.320146127603948,1481185.187783869216219 6888181.696536475792527,1481455.404622207395732 6887849.387007832527161,1481725.210910100489855 6887521.289062367752194,1481896.998279252555221 6887321.387990654446185,1481969.926967390812933 6887255.449916490353644,1482031.50020344578661 6887206.440996480174363,1482112.350649032043293 6887148.7459767004475,1482187.733309147180989 6887103.322546837851405,1482267.604032081319019 6887064.410267961211503,1482375.364193198736757 6887018.619642356410623,1482484.141399736981839 6886983.154683265835047,1482594.028958613984287 6886961.53875251673162,1482690.424336957978085 6886945.468548243865371,1482783.236729600699618 6886939.279460026882589)",824,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1479076.507391492836177 6891028.424682137556374,1479191.92805068846792 6891093.642660211771727)",825,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478938.59976474638097 6890964.157518833875656,1479076.507391492836177 6891028.424682137556374,1479885.31042950367555 6891405.531389341689646,1479995.26330322236754 6891461.448241677135229,1480073.361194689990953 6891504.167875309474766)",827,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1475815.159971352899447 6888439.460763610899448,1475864.211418837308884 6888499.693255602382123,1475920.802065403433517 6888566.576213048771024,1475997.071141253225505 6888649.85508313588798,1476055.490603434853256 6888704.557588589377701,1476132.328851491678506 6888770.982559802941978,1476354.128729394637048 6888961.802259580232203,1476403.460097637493163 6889007.343453120440245,1476449.217810868984088 6889054.064817779697478,1476500.732561023207381 6889108.907986088655889,1476539.548239458817989 6889157.376847730018198,1476580.500646346947178 6889211.990862969309092,1476624.84009440545924 6889271.003225136548281,1476671.465561988530681 6889351.255216074176133,1476907.158840176416561 6889762.457714626565576,1476971.960495642386377 6889870.391702450811863,1477004.384650106076151 6889919.784666567109525,1477040.15852296887897 6889966.741212910972536,1477288.289613505359739 6890277.007661812007427,1477353.996346088824794 6890353.8979682167992,1477413.740766525734216 6890414.619913823902607,1477448.021728683495894 6890442.958000471815467,1477480.277930689277127 6890466.284504777751863,1477526.68879235861823 6890495.281804216094315)",828,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1475804.159085565945134 6888448.485649089328945,1475830.975494176382199 6888481.704669660888612,1475911.042161641409621 6888576.367373092100024,1475986.294192070141435 6888660.810877257026732,1476043.97652958938852 6888715.605394661426544,1476111.773337163729593 6888773.20439646858722,1476344.24752664193511 6888971.976985700428486,1476393.14968305407092 6889017.380325557664037,1476438.403538923012093 6889064.254984210245311,1476487.604277476668358 6889117.994917658157647,1476533.557935239281505 6889174.907231950201094,1476567.698937014909461 6889219.606819932349026,1476608.427407295908779 6889281.208990493789315,1476659.587591157061979 6889363.897621073760092,1476806.275399013189599 6889630.894533473998308,1476879.651960362214595 6889764.051504278555512,1476916.340241038240492 6889830.99095484893769,1476954.605408649425954 6889891.371798135340214,1477316.729562512831762 6890362.909676750190556,1477349.396314963698387 6890405.439559964463115)",829,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478755.951470183674246 6891121.998467871919274,1478802.306347704026848 6891043.660044934600592,1478839.731753036612645 6890992.834741913713515,1478870.849610630888492 6890954.65466683357954,1478904.841321337036788 6890917.057202836498618,1478994.527932184981182 6890830.566843283362687,1479078.056286355247721 6890746.790252956561744,1479311.071655961917713 6890483.128060797229409)",831,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478476.030712238047272 6891063.922815636731684,1478281.896335911471397 6890962.59414563048631,1477896.856002663495019 6890755.863709062337875,1477714.347668485715985 6890670.003475363366306)",832,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478476.030712238047272 6891063.922815636731684,1478633.626098963664845 6891126.550733875483274)",833,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478633.626098963664845 6891126.550733875483274,1478535.485881229164079 6891075.832198646850884,1478458.08779165497981 6891036.594143707305193,1478420.373134867986664 6891017.419679494574666,1478287.233491696184501 6890945.580986365675926,1478057.745123639237136 6890824.282802382484078,1478049.450138514628634 6890819.79201518651098)",834,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1479207.566290363902226 6891415.111414563842118,1479099.610184715595096 6891375.703095939941704,1478899.448181400541216 6891294.403931108303368,1478781.23764532036148 6891236.143100920133293,1478638.020854862174019 6891161.880697418935597)",835,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478638.020854862174019 6891161.880697418935597,1478347.229840818792582 6891012.392329533584416,1478274.310483370674774 6890973.691036481410265,1477887.81456218380481 6890777.459188850596547,1477799.630192739423364 6890730.620521273463964,1477771.712762480368838 6890717.776719653978944,1477743.422104542376474 6890708.212852067314088,1477709.010512698208913 6890701.438452739268541,1477673.143332915147766 6890694.740692501887679,1477614.537256892537698 6890691.997217950411141,1477570.645682045025751 6890694.648732445202768,1477526.22225776175037 6890703.461575921624899,1477450.475700660608709 6890727.95366817060858,1477383.070782145252451 6890752.73704397585243,1477250.239051808137447 6890804.419134659692645,1477138.028150640428066 6890855.948287741281092,1477061.32986296294257 6890902.18992966786027,1477035.62380669103004 6890922.253091386519372,1477009.283263367367908 6890945.443041983060539,1476980.022213472751901 6890972.051025399938226,1476950.705179423559457 6891005.096546770073473,1476903.846444540657103 6891063.493649013340473,1476855.672082100762054 6891129.723526864312589,1476793.529673835728317 6891209.472932793200016,1476732.255019919481128 6891296.519170454703271,1476712.110056042205542 6891330.976191231049597,1476696.051935228751972 6891364.161139542236924,1476680.646962850354612 6891407.355425265617669,1476666.734901179792359 6891453.354988979175687,1476646.729897676035762 6891533.07694885134697,1476618.121996216243133 6891670.986616539768875,1476602.045214017154649 6891746.771262445487082,1476585.455243762582541 6891822.893856970593333,1476570.768734660698101 6891886.907293429598212,1476553.786875346908346 6891951.166504768654704,1476526.279995532939211 6892021.971798327751458,1476508.187783877598122 6892059.191198166459799,1476490.170217757113278 6892094.923823652788997,1476446.866476502502337 6892164.733967241831124,1476401.873880009399727 6892224.289213199168444,1476348.166417250875384 6892284.197483622469008,1476315.499664797214791 6892317.447686146944761,1476280.761498738545924 6892349.870215245522559,1476244.129202214302495 6892379.34953604824841,1476205.294862395850942 6892409.380842979066074,1476120.198951980331913 6892465.657269499264657,1475994.131973290815949 6892548.271348089911044,1475918.823958713328466 6892599.934322696179152,1475847.500149589264765 6892656.135431186296046,1475775.420554416952655 6892722.209795576520264,1475745.310411553597078 6892752.058416236191988,1475710.488269264576957 6892789.52648729365319,1475659.496037861565128 6892857.211681927554309,1475614.400803754804656 6892932.133648023940623,1475582.536490808241069 6892991.587262314744294,1475563.931091094622388 6893021.605525500141084,1475543.394238155335188 6893050.612043621018529,1475518.527944159228355 6893081.657719410024583,1475488.809690357884392 6893114.466613277792931,1475455.89100922155194 6893143.642111292108893,1475418.689540492836386 6893171.989819569513202,1475387.095817609224468 6893190.74014341738075,1475353.1974138233345 6893208.371313671581447)",836,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478658.75365233537741 6891138.674794974736869,1478633.626098963664845 6891126.550733875483274)",837,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478665.191829765914008 6891124.772744154557586,1478792.53711324906908 6891190.098797177895904,1478951.550765147898346 6891271.872068259865046,1479057.696716560982168 6891325.611431846395135,1479110.443118050228804 6891347.499672620557249,1479235.297106784768403 6891399.41550721321255)",838,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478557.963518089847639 6892049.073881317861378,1478556.050726244226098 6892008.252170108258724,1478555.892104479251429 6891960.287307545542717,1478556.013403475517407 6891851.006974860094488)",839,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478566.193188372533768 6891473.710761290974915,1478566.314487369032577 6891421.901743350550532,1478564.35504206456244 6891386.677933054976165,1478562.041030463995412 6891340.556127598509192,1478559.988278241828084 6891280.026449425145984,1478552.421087084105238 6891228.617199691012502,1478536.680209795245901 6891184.841425079852343,1478515.882097477559 6891146.093319251202047,1478490.17604120564647 6891115.22371987067163,1478460.448456714395434 6891086.806626409292221,1478416.528889790875837 6891054.77237503696233,1478271.417968872701749 6890980.772209639661014,1477885.407243662746623 6890784.019076376222074,1477796.569725786335766 6890736.781874912790954,1477769.296113269403577 6890724.014697107486427,1477741.248053323943168 6890714.527455672621727,1477707.312326766550541 6890707.385210207663476,1477672.322232022183016 6890701.285185849294066,1477614.070722295902669 6890697.269594454206526,1477572.231899673352018 6890700.074377545155585,1477526.175604302901775 6890708.120891856960952,1477455.775533676613122 6890734.314267538487911,1477389.107739823870361 6890759.603447327390313,1477324.548682353226468 6890788.141999081708491,1477257.99285680684261 6890813.109483245760202,1477200.954337026691064 6890839.057969767600298,1477139.474407889414579 6890870.033797833137214,1477067.376151334261522 6890914.604867226444185,1477017.195690128253773 6890957.275613599456847,1476964.794524239376187 6891008.238637273199856,1476915.929690593155101 6891070.344990382902324,1476870.666504034306854 6891132.22191062476486,1476788.761690261075273 6891251.961311405524611,1476754.90060923830606 6891323.971348975785077,1476738.030718227848411 6891370.399618566036224,1476719.761223427485675 6891450.917817885056138,1476702.368813663022593 6891509.915959592908621,1476623.253876777132973 6891838.284014022909105,1476608.446068681776524 6891899.1704620430246,1476585.417920996667817 6891971.646170520223677,1476560.598280456615612 6892035.553486871533096,1476540.061427514301613 6892081.755926453508437,1476514.971196911530569 6892126.241737992502749,1476469.894624190637842 6892196.55802833661437,1476420.703216326888651 6892263.563724930398166,1476371.01728179352358 6892312.496171937324107,1476327.321651474107057 6892356.41605613194406,1476278.49414059962146 6892398.205320552922785,1476225.598448038101196 6892436.177632182836533,1476038.051540214335546 6892556.212400928139687,1476025.800341709284112 6892564.613368845544755)",840,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478564.35504206456244 6891386.677933054976165,1478557.991510165855289 6891469.69478405546397,1478557.17973996582441 6891485.973299608565867)",841,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1479372.187688112957403 6890474.959161611273885,1479284.45119188237004 6890585.155705378390849,1479257.214902134146541 6890621.678759607486427,1479238.068322289036587 6890653.343446989543736,1479217.820720798335969 6890695.077879380434752,1479200.521617954364046 6890742.973886811174452,1479189.595377702033147 6890782.241162405349314,1479182.326768688624725 6890823.608417795971036,1479178.603822610806674 6890869.190812314860523,1479179.844804635737091 6890923.985054980032146,1479185.153968344675377 6890968.203897933475673,1479195.361745317699388 6891013.066729949787259,1479215.254780515097082 6891069.072816937230527)",842,light_rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1479618.872521397890523 6890109.175704349763691,1479692.510342122521251 6890026.310829350724816)",843,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1479213.220689673209563 6891123.270649696700275,1479083.878638119669631 6891071.034723062068224)",844,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1479300.29470678162761 6891144.070084678940475,1479441.859964764444157 6891217.979787161573768)",845,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1479384.009674790082499 6891203.495148631744087,1479558.960148505866528 6891274.753690734505653)",846,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1480034.237603422952816 6891507.38680200651288,1479869.214985921513289 6891429.1672482220456,1479384.009674790082499 6891203.495148631744087,1479213.220689673209563 6891123.270649696700275,1478922.187077639857307 6890988.451151218265295)",847,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1476931.73588272370398 6891636.221568983048201,1476803.457530052866787 6891734.431683016009629,1476778.572574671125039 6891759.448092334903777,1476760.209772950038314 6891782.226581771858037,1476741.193822791567072 6891808.684046884998679,1476723.484169505303726 6891841.487745635211468,1476712.809857935877517 6891868.19066839851439,1476703.031292790779844 6891897.499604214914143,1476694.307095838477835 6891943.869869998656213)",848,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1476934.208516089478508 6891653.941301063634455,1476814.523730684537441 6891746.801919807679951,1476788.603068495867774 6891772.722762719728053,1476773.235418886179104 6891792.128960026428103,1476754.74198747612536 6891818.172579637728631,1476737.676151934778318 6891848.401065579615533,1476720.880906458944082 6891883.688214769586921,1476708.900298016844317 6891916.369587530381978,1476699.78421199973673 6891943.992502459324896)",849,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1476935.00162490340881 6891674.266924197785556,1476822.473480205750093 6891761.793384700082242,1476799.939859193284065 6891783.790114367380738,1476785.346657011890784 6891800.345184058882296,1476766.722595915198326 6891824.54937045276165,1476723.736098188208416 6891895.798088805750012,1476711.624860059702769 6891917.672553083859384,1476699.78421199973673 6891943.992502459324896)",850,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1476691.171983344946057 6891992.432471443898976,1476706.772900257259607 6891960.961787490174174,1476716.439497095998377 6891939.271154,1476729.035931204212829 6891916.139652455225587,1476782.090245527913794 6891832.382406485266984,1476799.4173404420726 6891808.806677283719182,1476812.181727005401626 6891794.474261927418411,1476832.625273029785603 6891774.68484057392925,1476935.253553586313501 6891694.699898800812662)",851,rail,0,0,0,railways,7,0
|
||||||
|
"LINESTRING (1478630.015121186384931 6891858.76339219789952,1478635.520229423418641 6891908.122586939483881,1478636.070740247843787 6891978.06907045096159,1478638.916601286735386 6892047.004431717097759,1478643.134074043016881 6892094.463943293318152,1478650.887879036134109 6892145.250223226845264,1478658.464400883996859 6892179.312314847484231,1478671.471385437063873 6892218.341333535499871,1478691.635010700207204 6892270.921968608163297,1478834.935777385951951 6892617.579527481459081)",1,motorway,0,0,1,motorways,9,0
|
||||||
|
"LINESTRING (1478313.583365709986538 6891281.068739344365895,1478311.064078888390213 6891244.052202273160219,1478311.791872860630974 6891206.913214413449168,1478314.357813141075894 6891179.61471161711961,1478320.152172832516953 6891150.063152204267681,1478327.019562090979889 6891118.93297032918781,1478335.622460052836686 6891089.810801983810961,1478345.895551870344207 6891061.240524603053927,1478354.07856869418174 6891040.180739216506481)",2,motorway,0,0,1,motorways,9,0
|
||||||
|
"LINESTRING (1478376.7148273200728 6891043.997246447019279,1478366.012523674638942 6891069.379364733584225,1478349.170624737394974 6891124.496849230490625,1478341.099576216889545 6891155.581069990992546,1478337.404622212052345 6891183.400629828684032,1478334.409470103681087 6891212.032651987858117,1478334.120218652067706 6891244.757277576252818,1478336.770135160302743 6891278.29440912604332)",3,motorway,0,0,1,motorways,9,0
|
||||||
|
"LINESTRING (1478997.037888313643634 6890015.629031332209706,1479043.672686586854979 6889994.847840843722224,1479081.350020605139434 6889979.614465416409075,1479123.524748138152063 6889968.564922427758574,1479170.215530562913045 6889961.760495744645596,1479209.572389130014926 6889960.028739424422383,1479277.229236325016245 6889958.00580330286175,1479339.371644590049982 6889955.538434940390289,1479394.28276660759002 6889949.515607272274792,1479445.900154372444376 6889934.450895222835243,1479482.691072656074539 6889919.309585420414805,1479513.939559936523438 6889901.930829749442637,1479538.787192549789324 6889886.636329824104905,1479557.066018043085933 6889872.138764577917755,1479576.044645432848483 6889857.028222269378603,1479623.267277299193665 6889818.424440407194197,1479929.099366740556434 6889533.936068938113749)",6,motorway,0,0,1,motorways,9,0
|
||||||
|
"LINESTRING (1479942.302295821951702 6889547.176416218280792,1479792.936579379020259 6889681.205510908737779,1479634.277493779081851 6889834.561687532812357,1479584.358291943091899 6889878.774539081379771,1479537.527549138991162 6889912.305973013862967,1479500.783284314209595 6889934.512196131981909,1479450.145619201473892 6889955.569085474126041,1479395.169182339450344 6889971.124246567487717,1479341.666994804749265 6889978.327139240689576,1479278.190297594293952 6889979.032103547826409,1479243.788036443060264 6889981.116346220485866,1479210.038923726649955 6889982.848107086494565,1479169.683681121794507 6889986.541509824804962,1479130.242846327135339 6889994.863166186027229,1479095.224759506992996 6890005.008548954501748,1479058.321872920030728 6890019.537004569545388,1479016.87493935925886 6890040.272282585501671)",8,motorway,0,0,1,motorways,9,0
|
||||||
|
"LINESTRING (1478777.253439866937697 6890329.912772791460156,1478754.393244634149596 6890382.84888407215476,1478729.78821000806056 6890439.463628521189094,1478709.120727382134646 6890476.890270238742232,1478688.985094192204997 6890512.937716416083276,1478670.454340018797666 6890542.195732670836151,1478633.747397957136855 6890586.473781661130488,1478588.71747869788669 6890651.550235321745276,1478534.739425873849541 6890732.521037810482085,1478511.935214792611077 6890776.462944713421166,1478472.820954215712845 6890853.679894518107176,1478458.908892544917762 6890873.620319033972919,1478415.84774928027764 6890956.907761368900537)",18,motorway,0,0,1,motorways,9,0
|
||||||
|
"LINESTRING (1478394.163221230730414 6890950.225115459412336,1478448.831745258299634 6890845.265387403778732,1478487.684746459824964 6890764.078874094411731,1478528.161288061179221 6890690.694451033137739,1478570.830542263807729 6890627.870682856999338,1478588.708148004952818 6890605.53993255738169,1478636.835856985999271 6890548.770754639059305,1478661.664828216191381 6890514.378391520120203,1478677.918893560534343 6890487.618659947998822,1478693.202566948253661 6890460.874343669973314,1478710.613638089969754 6890427.81573298573494,1478734.294934212695807 6890372.963567573577166,1478758.974614370847121 6890316.165379947982728)",20,motorway,0,0,1,motorways,9,0
|
||||||
|
"LINESTRING (1477398.289140685694292 6890680.900715908035636,1477271.680981867713854 6890519.972504733130336,1476953.084505865816027 6890110.692934914492071,1476865.413324474124238 6889991.261711636558175)",32,motorway,0,0,1,motorways,9,0
|
||||||
|
"LINESTRING (1476973.733327108668163 6890098.677702718414366,1477006.950590386521071 6890149.282794474624097,1477137.477639816235751 6890317.958516811951995,1477307.492177499225363 6890529.505495676770806,1477414.468560495181009 6890666.92282354272902)",44,motorway,0,0,1,motorways,9,0
|
||||||
|
"LINESTRING (1476882.217900645453483 6889977.560873750597239,1476973.733327108668163 6890098.677702718414366)",49,motorway,0,0,1,motorways,9,0
|
||||||
|
"LINESTRING (1478361.561783624347299 6891449.124428308568895,1478345.746260801097378 6891406.083198485895991,1478336.760804470162839 6891379.550418416969478)",53,motorway,0,0,1,motorways,9,0
|
||||||
|
"LINESTRING (1478843.389384278329089 6893924.490144995972514,1478859.260891250800341 6893860.031164361163974,1478879.54581551020965 6893775.931677811779082,1478890.938590359175578 6893720.826675555668771,1478904.066873905947432 6893655.58737968839705,1478915.562286365544423 6893583.970421583391726,1478926.843092911178246 6893487.393564508296549,1478932.180248695891351 6893415.977419194765389,1478936.435044218087569 6893333.093783299438655,1478934.214339534984902 6893251.146226578392088,1478925.770063341362402 6893158.988803039304912,1478919.71444427408278 6893114.221312643960118,1478911.20485323574394 6893073.302204750478268,1478903.451048239832744 6893044.080968570895493,1478888.521941148210317 6892996.8458161521703,1478859.027623953763396 6892921.984570599161088,1478827.620514913694933 6892843.919889785349369,1478773.241242334712297 6892718.913729729130864,1478735.255995481973514 6892636.665826476179063,1478681.044675360899419 6892531.377474130131304,1478640.75474760052748 6892447.521837593987584,1478616.914829715620726 6892391.18421838991344,1478585.778310738503933 6892312.450182654894888,1478550.256366555579007 6892207.533986137248576,1478535.308598081115633 6892151.82655640784651,1478521.71377993770875 6892092.363823323510587,1478508.650811232859269 6892023.658011235296726,1478497.593941294122487 6891948.391943287104368,1478489.672183843096718 6891879.334796157665551,1478479.958933542715386 6891808.776019685901701,1478470.609580228338018 6891754.910796630196273,1478462.314595098374411 6891717.861420435830951,1478450.408632193692029 6891673.592468312941492,1478431.31803650339134 6891617.70479725766927,1478396.617193207610399 6891531.804702173918486)",57,motorway,0,0,1,motorways,9,0
|
||||||
|
"LINESTRING (1478357.829506850801408 6891368.391655500978231,1478371.993497204268351 6891403.906618202105165,1478390.850825597764924 6891440.249455007724464)",61,motorway,0,0,1,motorways,9,0
|
||||||
|
"LINESTRING (1477495.477627843851224 6890800.066300450824201,1477451.250148088904098 6890745.763359077274799)",64,motorway,0,0,1,motorways,9,0
|
||||||
|
"LINESTRING (1478967.31030381959863 6890667.658501483500004,1478973.720489174127579 6890696.33466696832329)",206,service,0,1,0,minorroads,10,1
|
||||||
|
"LINESTRING (1479327.960208358010277 6889996.932087614201009,1479283.12623362406157 6889933.470080768689513)",208,footway,0,1,0,minorroads,10,1
|
||||||
|
"LINESTRING (1478931.601745795924217 6891332.723570773378015,1479038.970017851097509 6891272.239934901706874)",252,footway,0,1,0,minorroads,10,1
|
||||||
|
"LINESTRING (1479334.09980364702642 6891680.858200660906732,1479344.391556847607717 6891681.793242639862001)",260,footway,0,1,0,minorroads,10,1
|
||||||
|
"LINESTRING (1478994.415963881416246 6892026.73918299935758,1479007.749522649217397 6892003.975329895503819)",268,footway,0,1,0,minorroads,10,1
|
||||||
|
"LINESTRING (1478550.844200145918876 6890545.552211744710803,1478684.179787848610431 6890636.959331315010786)",290,path,0,1,0,minorroads,10,1
|
||||||
|
"LINESTRING (1478483.35530540603213 6892391.046249195933342,1478493.69371206802316 6892418.992724485695362,1478523.77586285257712 6892467.619516485370696)",329,service,0,1,1,minorroads,10,1
|
||||||
|
"LINESTRING (1478314.525765596190467 6891576.70133616309613,1478278.31335021276027 6891560.652561791241169,1478215.200549985514954 6891534.686417824588716)",376,service,0,1,1,minorroads,10,1
|
||||||
|
"LINESTRING (1478215.228542061522603 6891874.245591463521123,1478297.571898355614394 6891853.750844960100949,1478291.20836645970121 6891823.66029835306108)",378,footway,0,1,0,minorroads,10,1
|
||||||
|
"LINESTRING (1477112.210126065183431 6890858.29331654496491,1477075.419207778759301 6890879.996360674500465,1477069.279612489743158 6890889.912954720668495,1477083.490256302058697 6890932.47628013510257)",501,footway,0,1,0,minorroads,10,1
|
||||||
|
"LINESTRING (1477502.205056728795171 6890571.39254963491112,1477519.588135797530413 6890535.436799609102309)",541,service,0,1,0,minorroads,10,1
|
||||||
|
"LINESTRING (1477221.817764186300337 6890863.182627168484032,1477209.725187440868467 6890834.291289354674518,1477200.338511357782409 6890838.981335008516908,1477183.972477710107341 6890800.265549850650132,1477192.883288506418467 6890795.897391020320356,1477188.460540529107675 6890785.490453751757741)",556,footway,0,1,0,minorroads,10,1
|
||||||
|
"LINESTRING (1477943.453478170791641 6891735.30541658680886,1477934.290738694835454 6891718.244636114686728)",570,footway,0,1,0,minorroads,10,1
|
||||||
|
"LINESTRING (1477770.406465607928112 6892066.840511322021484,1477790.178201811853796 6892050.76009990926832)",583,footway,0,1,0,minorroads,10,1
|
||||||
|
"LINESTRING (1477118.508343119407073 6891093.428076104260981,1477088.584814094239846 6891117.76808157004416)",613,footway,0,1,0,minorroads,10,1
|
||||||
|
"LINESTRING (1478304.32731931633316 6891039.64428252261132,1478336.73281239438802 6891063.202428812161088,1478362.868080493994057 6891085.381176148541272,1478384.421978857368231 6891108.402995181269944,1478394.816369665553793 6891123.469907105900347)",23,motorway_link,0,1,1,motorways,13,1
|
||||||
|
"LINESTRING (1478416.715503631858155 6890979.362105399370193,1478402.775449885288253 6891019.994664833880961,1478396.486563521204516 6891050.220149672590196)",29,motorway_link,0,1,1,motorways,13,1
|
||||||
|
"LINESTRING (1478444.334351749392226 6890965.598274794407189,1478436.291295301867649 6890993.279232017695904,1478432.251105696661398 6891019.442882195115089,1478432.932246207259595 6891054.266572091728449)",30,motorway_link,0,1,1,motorways,13,1
|
||||||
|
"LINESTRING (1477430.918570373440161 6890653.711285330355167,1477490.821612572530285 6890732.214502855204046)",34,motorway_link,0,1,1,motorways,13,1
|
||||||
|
"LINESTRING (1478402.159624219173566 6891432.263520221225917,1478419.636010205605999 6891465.801433998160064,1478516.63788352557458 6891599.647920207120478,1478542.959765463601798 6891648.515012176707387)",55,motorway_link,0,1,1,motorways,13,1
|
||||||
|
"LINESTRING (1478395.805423010606319 6891558.521924624219537,1478375.240577995311469 6891530.716394937597215,1478359.005174034042284 6891515.434124372899532,1478339.886586264939979 6891502.06790954247117,1478316.951745497528464 6891488.686388740316033,1478294.97796599916182 6891479.136932187713683,1478269.187933499692008 6891469.572158829309046)",58,motorway_link,0,1,1,motorways,13,1
|
||||||
|
"LINESTRING (1478350.271646386012435 6891029.512921379879117,1478380.699032773729414 6890977.676111518405378)",60,motorway_link,0,1,1,motorways,13,1
|
||||||
|
"LINESTRING (1479445.853500913595781 6890008.594684292562306,1479466.810234990902245 6889974.786993312649429,1479481.711350003723055 6889943.24758021812886,1479491.517907224595547 6889916.918854899704456,1479498.478603403549641 6889887.111409046687186)",172,residential,0,1,0,minorroads,13,1
|
||||||
|
"LINESTRING (1478553.951320560649037 6891315.418398878537118,1478598.850610133260489 6891319.848151468671858)",317,unclassified,0,1,0,minorroads,13,1
|
||||||
|
"LINESTRING (1477416.483989951433614 6890762.960017169825733,1477397.141465578228235 6890736.030863894149661,1477367.992383987177163 6890698.603015801869333)",135,tertiary,0,1,0,mainroads,14,1
|
||||||
|
"LINESTRING (1478177.205972440075129 6891489.069593496620655,1478177.317940743407235 6891468.652469684369862,1478178.577584154205397 6891445.077807144261897,1478182.907025211025029 6891420.261640835553408,1478186.732608902268112 6891397.361552857793868,1478191.472600403940305 6891373.802427344955504)",92,secondary,0,1,1,mainroads,15,1
|
||||||
|
"LINESTRING (1478695.637877542292699 6892227.661724239587784,1478544.135432646842673 6892221.683182909153402)",97,secondary,0,1,1,mainroads,15,1
|
||||||
|
"LINESTRING (1478527.237549557816237 6892200.804311908781528,1478681.837784175062552 6892208.622385010123253,1478687.930726005230099 6892209.189578847959638)",102,secondary,0,1,1,mainroads,15,1
|
||||||
|
"LINESTRING (1479238.124306440819055 6892256.75735551957041,1479220.367999695939943 6892255.622961183078587)",107,secondary,0,1,1,mainroads,15,1
|
||||||
|
"LINESTRING (1479396.176897070370615 6890481.549454870633781,1479348.459738528588787 6890459.663571572862566,1479285.906779821496457 6890425.80800533015281)",109,secondary,0,1,1,mainroads,15,1
|
||||||
|
"LINESTRING (1479215.245449822163209 6892238.729702232405543,1479233.776204001158476 6892239.772116457112134)",110,secondary,0,1,1,mainroads,15,1
|
||||||
|
"LINESTRING (1479297.47683781851083 6890409.209787493571639,1479361.448061698814854 6890444.184096252545714,1479405.974123598309234 6890464.384051165543497)",112,secondary,0,1,1,mainroads,15,1
|
||||||
|
"LINESTRING (1478329.772116212407127 6891020.117283202707767,1478371.433655687142164 6890928.767115697264671)",120,secondary,0,1,1,mainroads,15,1
|
||||||
|
"LINESTRING (1478451.155087549006566 6890967.130994181148708,1478439.454399868380278 6891002.920075045898557,1478435.899406239856035 6891020.515792922116816,1478432.932246207259595 6891054.266572091728449,1478436.51523190876469 6891092.385810512118042)",125,secondary,0,1,1,mainroads,15,1
|
||||||
|
"LINESTRING (1478484.279043906368315 6892448.686919055879116,1478512.980252289446071 6892501.529672888107598)",138,secondary,0,1,1,mainroads,15,1
|
||||||
|
"LINESTRING (1478441.24589272052981 6890743.985453568398952,1478569.785504766972736 6890803.361579650081694)",698,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478556.414623227668926 6890825.447648616507649,1478501.363540833583102 6890799.943685433827341,1478430.310321775265038 6890777.137325343675911)",699,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478627.402527447091416 6890858.032757756300271,1478598.449390378547832 6890845.709869343787432)",701,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478595.75282041169703 6890816.082902735099196,1478625.956270195310935 6890829.907785100862384)",702,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1477861.231420873198658 6890651.795460822060704,1477785.139628168661147 6890619.962187672965229)",706,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478533.153208245523274 6890597.539500389248133,1478563.608586709247902 6890651.657521475106478,1478583.986817886354402 6890702.90981500223279,1478598.971909126965329 6890754.806160444393754)",707,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478551.954552487237379 6890575.162854988127947,1478588.605510394554585 6890603.547487018629909,1478617.885221674805507 6890622.138555723242462,1478642.714192904997617 6890636.468881220556796,1478662.672542944317684 6890646.814319248311222)",711,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478591.227434826781973 6890756.093610955402255,1478577.12875931779854 6890705.745253457687795,1478556.750528137898073 6890657.573588914237916,1478526.565739739919081 6890602.627896940335631)",712,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478593.50412365840748 6891161.252267209812999,1478604.868906431598589 6891027.229151873849332)",716,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478861.276320709846914 6890948.416510410606861,1478927.88813040801324 6890978.978924939408898)",717,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478445.080807101679966 6890735.663021787069738,1478572.827310339780524 6890796.249909016303718)",721,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478725.31880857469514 6891220.416887637227774,1478753.684112047543749 6891165.635952131822705,1478782.273352124495432 6891113.062545800581574)",722,light_rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478565.344095406820998 6890811.423524235375226,1478438.502669292036444 6890750.315412051975727)",725,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478761.083350750152022 6891124.619469199329615,1478714.065994105068967 6891217.213403515517712)",726,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478594.185264169238508 6890806.013130874373019,1478624.789933702209964 6890819.929957416839898)",729,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478611.950901604257524 6891032.133892551995814,1478602.097690927330405 6891164.808263186365366)",732,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478625.368436602409929 6890839.900952127762139,1478595.276955124922097 6890826.290629548951983)",733,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478918.445470173377544 6890994.888592929579318,1478850.574017061386257 6890963.099942809902132)",738,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478922.187077639857307 6890988.451151218265295,1478855.416646176483482 6890957.168323368765414)",740,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478363.717173459939659 6890762.914036750793457,1478343.516225425293669 6890759.5421401290223)",744,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478866.398870577802882 6890942.408266056329012,1478932.544145682128146 6890972.940003331750631)",745,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1477526.68879235861823 6890495.281804216094315,1477556.565667921910062 6890511.175188716500998)",748,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1477551.331149747828022 6890517.719532645307481,1477521.612895943690091 6890502.255271850153804)",752,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478803.090125825256109 6891124.665451684966683,1478749.074750232277438 6891229.766776816919446)",771,light_rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478455.288584077497944 6890709.31637466698885,1478485.305420020362362 6890732.873553024604917,1478551.777269339188933 6890776.279022733680904)",812,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478463.210341525729746 6890697.438187943771482,1478515.826113325776532 6890741.441210155375302,1478545.09649391612038 6890764.354756650514901,1478578.658992794342339 6890784.938687206245959)",813,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478448.113281978992745 6890727.11069754883647,1478488.795098801376298 6890745.211595254950225,1478551.777269339188933 6890776.279022733680904,1478576.662224721163511 6890790.042529220692813)",815,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478448.794422489590943 6890719.355371965095401,1478488.795098801376298 6890745.211595254950225)",817,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478453.133194239344448 6890714.128961123526096,1478485.305420020362362 6890732.873553024604917)",818,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478592.291133706457913 6890793.812937114387751,1478624.575327788246796 6890811.791369803249836)",820,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478592.869636606657878 6890797.951191720552742,1478624.575327788246796 6890812.481080299243331)",822,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478872.753071786370128 6890934.054974609985948,1478938.59976474638097 6890964.157518833875656)",826,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478708.467578947311267 6891213.902627007104456,1478755.951470183674246 6891121.998467871919274)",830,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1478556.050726244226098 6890567.974754032678902,1478593.896012717625126 6890597.156338127329946,1478621.766789517831057 6890615.134331055916846,1478643.236711653415114 6890627.472192604094744,1478666.591433558845893 6890639.610827658325434)",852,rail,0,1,0,railways,17,1
|
||||||
|
"LINESTRING (1477451.250148088904098 6890745.763359077274799,1477398.289140685694292 6890680.900715908035636)",24,motorway,0,1,1,motorways,19,1
|
||||||
|
"LINESTRING (1478390.850825597764924 6891440.249455007724464,1478416.4169214903377 6891479.535464659333229,1478439.883611699100584 6891511.923958003520966,1478473.362134346971288 6891559.089072591625154,1478503.668221738422289 6891600.536967532709241,1478542.959765463601798 6891648.515012176707387,1478591.927236720221117 6891731.335294630378485,1478610.709919579094276 6891779.927269681356847,1478623.922179353423417 6891826.787379971705377,1478630.015121186384931 6891858.76339219789952)",25,motorway,0,1,1,motorways,19,1
|
||||||
|
"LINESTRING (1478354.07856869418174 6891040.180739216506481,1478380.699032773729414 6890977.676111518405378,1478394.163221230730414 6890950.225115459412336)",26,motorway,0,1,1,motorways,19,1
|
||||||
|
"LINESTRING (1478415.84774928027764 6890956.907761368900537,1478376.7148273200728 6891043.997246447019279)",27,motorway,0,1,1,motorways,19,1
|
||||||
|
"LINESTRING (1477414.468560495181009 6890666.92282354272902,1477470.023500254843384 6890738.375857715494931)",33,motorway,0,1,1,motorways,19,1
|
||||||
|
"LINESTRING (1478336.770135160302743 6891278.29440912604332,1478342.517841390101239 6891313.25717099942267,1478349.375899961218238 6891340.387520620599389,1478357.829506850801408 6891368.391655500978231)",52,motorway,0,1,1,motorways,19,1
|
||||||
|
"LINESTRING (1478336.760804470162839 6891379.550418416969478,1478326.310429504606873 6891342.334165048785508,1478318.892529421718791 6891313.10389244556427,1478313.583365709986538 6891281.068739344365895)",54,motorway,0,1,1,motorways,19,1
|
||||||
|
"LINESTRING (1478396.617193207610399 6891531.804702173918486,1478382.845091919181868 6891499.554082627408206,1478361.561783624347299 6891449.124428308568895)",56,motorway,0,1,1,motorways,19,1
|
|
87
benchmark/data/roads.xml
Normal file
87
benchmark/data/roads.xml
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!DOCTYPE Map[]>
|
||||||
|
<Map
|
||||||
|
srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
|
||||||
|
font-directory="../../fonts/dejavu-fonts-ttf-2.33/ttf/DejaVuSans.ttf"
|
||||||
|
background-color="#dfd8c9">
|
||||||
|
|
||||||
|
<Style name="marking" filter-mode="first">
|
||||||
|
<Rule>
|
||||||
|
<Filter>([class] = 'railways')</Filter>
|
||||||
|
<LineSymbolizer stroke="#ffffff" stroke-width="1.8" stroke-dasharray="5, 5" clip="false" />
|
||||||
|
</Rule>
|
||||||
|
</Style>
|
||||||
|
<Style name="fill" filter-mode="first">
|
||||||
|
<Rule>
|
||||||
|
<Filter>([class] = 'minorroads')</Filter>
|
||||||
|
<LineSymbolizer stroke-width="2.5" stroke="#ffffff" stroke-linecap="round" clip="false" />
|
||||||
|
</Rule>
|
||||||
|
<Rule>
|
||||||
|
<Filter>([class] = 'mainroads')</Filter>
|
||||||
|
<LineSymbolizer stroke-width="4" stroke="#ff9999" stroke-linecap="round" clip="false" />
|
||||||
|
</Rule>
|
||||||
|
<Rule>
|
||||||
|
<Filter>([class] = 'motorways')</Filter>
|
||||||
|
<LineSymbolizer stroke-width="6" stroke="#ff6666" stroke-linecap="round" clip="false" />
|
||||||
|
</Rule>
|
||||||
|
<Rule>
|
||||||
|
<Filter>([class] = 'railways')</Filter>
|
||||||
|
<LineSymbolizer stroke-width="3" stroke="#333333" stroke-linecap="round" clip="false" />
|
||||||
|
</Rule>
|
||||||
|
</Style>
|
||||||
|
<Style name="bridge" filter-mode="first">
|
||||||
|
<Rule>
|
||||||
|
<Filter>([class] = 'railways') and ([bridge] = 1)</Filter>
|
||||||
|
<LineSymbolizer stroke-width="6" stroke="#ffffff" clip="false" />
|
||||||
|
</Rule>
|
||||||
|
</Style>
|
||||||
|
<Style name="casing" filter-mode="first">
|
||||||
|
<Rule>
|
||||||
|
<Filter>([class] = 'railways') and ([bridge] = 1)</Filter>
|
||||||
|
<LineSymbolizer stroke-width="8" stroke="#333333" clip="false" />
|
||||||
|
</Rule>
|
||||||
|
<Rule>
|
||||||
|
<Filter>([class] = 'minorroads')</Filter>
|
||||||
|
<LineSymbolizer stroke-width="3" stroke="#a69269" clip="false" />
|
||||||
|
</Rule>
|
||||||
|
<Rule>
|
||||||
|
<Filter>([class] = 'mainroads')</Filter>
|
||||||
|
<LineSymbolizer stroke-width="5" stroke="#ff0000" clip="false" />
|
||||||
|
</Rule>
|
||||||
|
<Rule>
|
||||||
|
<Filter>([class] = 'motorways')</Filter>
|
||||||
|
<LineSymbolizer stroke-width="8" stroke="#990000" clip="false" />
|
||||||
|
</Rule>
|
||||||
|
</Style>
|
||||||
|
<Style name="labels">
|
||||||
|
<Rule>
|
||||||
|
<TextSymbolizer
|
||||||
|
halo-rasterizer="fast"
|
||||||
|
placement="line"
|
||||||
|
face-name="DejaVu Sans Book"
|
||||||
|
halo-radius="2"
|
||||||
|
allow-overlap="false"
|
||||||
|
clip="false"
|
||||||
|
>[type]</TextSymbolizer>
|
||||||
|
</Rule>
|
||||||
|
</Style>
|
||||||
|
<Layer name="layer"
|
||||||
|
srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over">
|
||||||
|
<!--
|
||||||
|
<StyleName>casing</StyleName>
|
||||||
|
<StyleName>bridge</StyleName>
|
||||||
|
<StyleName>fill</StyleName>
|
||||||
|
<StyleName>marking</StyleName>
|
||||||
|
-->
|
||||||
|
<StyleName>labels</StyleName>
|
||||||
|
<Datasource>
|
||||||
|
<!--
|
||||||
|
ogr2ogr -f CSV tests/visual_tests/data/roads.csv -lco GEOMETRY=AS_WKT tests/visual_tests/data/grouped-rendering.sqlite roads -sql "SELECT fid,geometry, type, tunnel, bridge, oneway, class, z_order, CAST((z_order / 10.0) AS INTEGER) AS z FROM roads ORDER BY z_order"
|
||||||
|
-->
|
||||||
|
<Parameter name="file">./roads.csv</Parameter>
|
||||||
|
<Parameter name="extent">1477001.12245,6890242.37746,1480004.49012,6892244.62256</Parameter>
|
||||||
|
<Parameter name="type">csv</Parameter>
|
||||||
|
</Datasource>
|
||||||
|
</Layer>
|
||||||
|
|
||||||
|
</Map>
|
31
benchmark/run
Executable file
31
benchmark/run
Executable file
|
@ -0,0 +1,31 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd "$( dirname "${BASH_SOURCE[0]}" )"
|
||||||
|
cd ../
|
||||||
|
source ./localize.sh
|
||||||
|
|
||||||
|
BASE=./benchmark/out
|
||||||
|
function run {
|
||||||
|
${BASE}/$1 --threads 0 --iterations $3;
|
||||||
|
${BASE}/$1 --threads $2 --iterations $(expr $3 / $2);
|
||||||
|
}
|
||||||
|
|
||||||
|
run test_array_allocation 20 100000
|
||||||
|
run test_png_encoding1 10 1000
|
||||||
|
run test_png_encoding2 10 50
|
||||||
|
run test_to_string1 10 100000
|
||||||
|
run test_to_string2 10 100000
|
||||||
|
run test_proj_transform1 10 100
|
||||||
|
run test_expression_parse 10 10000
|
||||||
|
run test_face_ptr_creation 10 10000
|
||||||
|
run test_polygon_clipping 10 1000
|
||||||
|
run test_polygon_clipping_rendering 10 100
|
||||||
|
|
||||||
|
./benchmark/out/test_rendering \
|
||||||
|
--name "text rendering" \
|
||||||
|
--map benchmark/data/roads.xml \
|
||||||
|
--extent 1477001.12245,6890242.37746,1480004.49012,6892244.62256 \
|
||||||
|
--width 600 \
|
||||||
|
--height 600 \
|
||||||
|
--iterations 20 \
|
||||||
|
--threads 10
|
|
@ -1,933 +0,0 @@
|
||||||
#include <mapnik/graphics.hpp>
|
|
||||||
#include <mapnik/image_data.hpp>
|
|
||||||
#include <mapnik/image_util.hpp>
|
|
||||||
#include <mapnik/image_reader.hpp>
|
|
||||||
#include <mapnik/util/conversions.hpp>
|
|
||||||
|
|
||||||
|
|
||||||
// stl
|
|
||||||
#include <string>
|
|
||||||
#include <iostream>
|
|
||||||
#include <fstream>
|
|
||||||
#include <sstream>
|
|
||||||
#include <cstdio>
|
|
||||||
#include <set>
|
|
||||||
#include <stdexcept>
|
|
||||||
|
|
||||||
// boost
|
|
||||||
#include <boost/version.hpp>
|
|
||||||
#include <boost/shared_ptr.hpp>
|
|
||||||
#include <boost/make_shared.hpp>
|
|
||||||
#include <boost/bind.hpp>
|
|
||||||
|
|
||||||
#define BOOST_CHRONO_HEADER_ONLY
|
|
||||||
#include <boost/chrono/process_cpu_clocks.hpp>
|
|
||||||
#include <boost/chrono.hpp>
|
|
||||||
#include <boost/thread/thread.hpp>
|
|
||||||
|
|
||||||
using namespace boost::chrono;
|
|
||||||
using namespace mapnik;
|
|
||||||
|
|
||||||
static bool dry_run = false;
|
|
||||||
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;
|
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
void benchmark(T & test_runner, std::string const& name)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
bool should_run_test = true;
|
|
||||||
if (!test_set.empty())
|
|
||||||
{
|
|
||||||
should_run_test = test_set.find(test_num) != test_set.end();
|
|
||||||
}
|
|
||||||
if (should_run_test || dry_run)
|
|
||||||
{
|
|
||||||
if (!test_runner.validate())
|
|
||||||
{
|
|
||||||
std::clog << "test did not validate: " << name << "\n";
|
|
||||||
//throw std::runtime_error(std::string("test did not validate: ") + name);
|
|
||||||
}
|
|
||||||
if (dry_run)
|
|
||||||
{
|
|
||||||
std::clog << test_num << ") " << (test_runner.threads_ ? "threaded -> ": "")
|
|
||||||
<< name << "\n";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
process_cpu_clock::time_point start;
|
|
||||||
dur elapsed;
|
|
||||||
if (test_runner.threads_ > 0)
|
|
||||||
{
|
|
||||||
boost::thread_group tg;
|
|
||||||
for (unsigned i=0;i<test_runner.threads_;++i)
|
|
||||||
{
|
|
||||||
tg.create_thread(test_runner);
|
|
||||||
//tg.create_thread(boost::bind(&T::operator(),&test_runner));
|
|
||||||
}
|
|
||||||
start = process_cpu_clock::now();
|
|
||||||
tg.join_all();
|
|
||||||
elapsed = process_cpu_clock::now() - start;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
start = process_cpu_clock::now();
|
|
||||||
test_runner();
|
|
||||||
elapsed = process_cpu_clock::now() - start;
|
|
||||||
}
|
|
||||||
std::clog << test_num << ") " << (test_runner.threads_ ? "threaded -> ": "")
|
|
||||||
<< name << ": "
|
|
||||||
<< boost::chrono::duration_cast<milliseconds>(elapsed) << "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (std::exception const& ex)
|
|
||||||
{
|
|
||||||
std::clog << "test runner did not complete: " << ex.what() << "\n";
|
|
||||||
}
|
|
||||||
++test_num;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool compare_images(std::string const& src_fn,std::string const& dest_fn)
|
|
||||||
{
|
|
||||||
std::auto_ptr<mapnik::image_reader> reader1(mapnik::get_image_reader(dest_fn,"png"));
|
|
||||||
if (!reader1.get())
|
|
||||||
{
|
|
||||||
throw mapnik::image_reader_exception("Failed to load: " + dest_fn);
|
|
||||||
}
|
|
||||||
boost::shared_ptr<image_32> image_ptr1 = boost::make_shared<image_32>(reader1->width(),reader1->height());
|
|
||||||
reader1->read(0,0,image_ptr1->data());
|
|
||||||
|
|
||||||
std::auto_ptr<mapnik::image_reader> reader2(mapnik::get_image_reader(src_fn,"png"));
|
|
||||||
if (!reader2.get())
|
|
||||||
{
|
|
||||||
throw mapnik::image_reader_exception("Failed to load: " + src_fn);
|
|
||||||
}
|
|
||||||
boost::shared_ptr<image_32> image_ptr2 = boost::make_shared<image_32>(reader2->width(),reader2->height());
|
|
||||||
reader2->read(0,0,image_ptr2->data());
|
|
||||||
|
|
||||||
image_data_32 const& dest = image_ptr1->data();
|
|
||||||
image_data_32 const& src = image_ptr2->data();
|
|
||||||
|
|
||||||
unsigned int width = src.width();
|
|
||||||
unsigned int height = src.height();
|
|
||||||
if ((width != dest.width()) || height != dest.height()) return false;
|
|
||||||
for (unsigned int y = 0; y < height; ++y)
|
|
||||||
{
|
|
||||||
const unsigned int* row_from = src.getRow(y);
|
|
||||||
const unsigned int* row_to = dest.getRow(y);
|
|
||||||
for (unsigned int x = 0; x < width; ++x)
|
|
||||||
{
|
|
||||||
if (row_from[x] != row_to[x]) return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct test1
|
|
||||||
{
|
|
||||||
unsigned iter_;
|
|
||||||
unsigned threads_;
|
|
||||||
explicit test1(unsigned iterations, unsigned threads=0) :
|
|
||||||
iter_(iterations),
|
|
||||||
threads_(threads)
|
|
||||||
{}
|
|
||||||
|
|
||||||
bool validate()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator()()
|
|
||||||
{
|
|
||||||
mapnik::image_data_32 im(256,256);
|
|
||||||
std::string out;
|
|
||||||
for (unsigned i=0;i<iter_;++i) {
|
|
||||||
out.clear();
|
|
||||||
out = mapnik::save_to_string(im,"png");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct test2
|
|
||||||
{
|
|
||||||
unsigned iter_;
|
|
||||||
unsigned threads_;
|
|
||||||
boost::shared_ptr<image_32> im_;
|
|
||||||
explicit test2(unsigned iterations, unsigned threads=0) :
|
|
||||||
iter_(iterations),
|
|
||||||
threads_(threads),
|
|
||||||
im_()
|
|
||||||
{
|
|
||||||
std::string filename("./benchmark/data/multicolor.png");
|
|
||||||
std::auto_ptr<mapnik::image_reader> reader(mapnik::get_image_reader(filename,"png"));
|
|
||||||
if (!reader.get())
|
|
||||||
{
|
|
||||||
throw mapnik::image_reader_exception("Failed to load: " + filename);
|
|
||||||
}
|
|
||||||
im_ = boost::make_shared<image_32>(reader->width(),reader->height());
|
|
||||||
reader->read(0,0,im_->data());
|
|
||||||
}
|
|
||||||
|
|
||||||
bool validate()
|
|
||||||
{
|
|
||||||
std::string expected("./benchmark/data/multicolor-hextree-expected.png");
|
|
||||||
std::string actual("./benchmark/data/multicolor-hextree-actual.png");
|
|
||||||
mapnik::save_to_file(im_->data(),actual, "png8:m=h");
|
|
||||||
return compare_images(actual,expected);
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator()()
|
|
||||||
{
|
|
||||||
std::string out;
|
|
||||||
for (unsigned i=0;i<iter_;++i) {
|
|
||||||
out.clear();
|
|
||||||
out = mapnik::save_to_string(im_->data(),"png8:m=h");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct test3
|
|
||||||
{
|
|
||||||
unsigned iter_;
|
|
||||||
unsigned threads_;
|
|
||||||
double val_;
|
|
||||||
explicit test3(unsigned iterations, unsigned threads=0) :
|
|
||||||
iter_(iterations),
|
|
||||||
threads_(threads),
|
|
||||||
val_(-0.123) {}
|
|
||||||
bool validate()
|
|
||||||
{
|
|
||||||
std::ostringstream s;
|
|
||||||
s << val_;
|
|
||||||
return (s.str() == "-0.123");
|
|
||||||
}
|
|
||||||
void operator()()
|
|
||||||
{
|
|
||||||
std::string out;
|
|
||||||
for (unsigned i=0;i<iter_;++i) {
|
|
||||||
std::ostringstream s;
|
|
||||||
s << val_;
|
|
||||||
out = s.str();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct test4
|
|
||||||
{
|
|
||||||
unsigned iter_;
|
|
||||||
unsigned threads_;
|
|
||||||
double val_;
|
|
||||||
explicit test4(unsigned iterations, unsigned threads=0) :
|
|
||||||
iter_(iterations),
|
|
||||||
threads_(threads),
|
|
||||||
val_(-0.123) {}
|
|
||||||
|
|
||||||
bool validate()
|
|
||||||
{
|
|
||||||
std::string s;
|
|
||||||
mapnik::util::to_string(s,val_);
|
|
||||||
return (s == "-0.123");
|
|
||||||
}
|
|
||||||
void operator()()
|
|
||||||
{
|
|
||||||
std::string out;
|
|
||||||
for (unsigned i=0;i<iter_;++i) {
|
|
||||||
out.clear();
|
|
||||||
mapnik::util::to_string(out,val_);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
struct test5
|
|
||||||
{
|
|
||||||
unsigned iter_;
|
|
||||||
unsigned threads_;
|
|
||||||
double val_;
|
|
||||||
explicit test5(unsigned iterations, unsigned threads=0) :
|
|
||||||
iter_(iterations),
|
|
||||||
threads_(threads),
|
|
||||||
val_(-0.123) {}
|
|
||||||
|
|
||||||
bool validate()
|
|
||||||
{
|
|
||||||
std::string s;
|
|
||||||
to_string_impl(s,val_);
|
|
||||||
return (s == "-0.123");
|
|
||||||
}
|
|
||||||
bool to_string_impl(std::string &s , double val)
|
|
||||||
{
|
|
||||||
s.resize(s.capacity());
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
size_t n2 = static_cast<size_t>(snprintf(&s[0], s.size()+1, "%g", val));
|
|
||||||
if (n2 <= s.size())
|
|
||||||
{
|
|
||||||
s.resize(n2);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
s.resize(n2);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
void operator()()
|
|
||||||
{
|
|
||||||
std::string out;
|
|
||||||
for (unsigned i=0;i<iter_;++i)
|
|
||||||
{
|
|
||||||
out.clear();
|
|
||||||
to_string_impl(out , val_);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#include <mapnik/box2d.hpp>
|
|
||||||
#include <mapnik/projection.hpp>
|
|
||||||
#include <mapnik/proj_transform.hpp>
|
|
||||||
|
|
||||||
struct test6
|
|
||||||
{
|
|
||||||
unsigned iter_;
|
|
||||||
unsigned threads_;
|
|
||||||
std::string src_;
|
|
||||||
std::string dest_;
|
|
||||||
mapnik::box2d<double> from_;
|
|
||||||
mapnik::box2d<double> to_;
|
|
||||||
bool defer_proj4_init_;
|
|
||||||
explicit test6(unsigned iterations,
|
|
||||||
unsigned threads,
|
|
||||||
std::string const& src,
|
|
||||||
std::string const& dest,
|
|
||||||
mapnik::box2d<double> from,
|
|
||||||
mapnik::box2d<double> to,
|
|
||||||
bool defer_proj) :
|
|
||||||
iter_(iterations),
|
|
||||||
threads_(threads),
|
|
||||||
src_(src),
|
|
||||||
dest_(dest),
|
|
||||||
from_(from),
|
|
||||||
to_(to),
|
|
||||||
defer_proj4_init_(defer_proj) {}
|
|
||||||
|
|
||||||
bool validate()
|
|
||||||
{
|
|
||||||
mapnik::projection src(src_,defer_proj4_init_);
|
|
||||||
mapnik::projection dest(dest_,defer_proj4_init_);
|
|
||||||
mapnik::proj_transform tr(src,dest);
|
|
||||||
mapnik::box2d<double> bbox = from_;
|
|
||||||
if (!tr.forward(bbox)) return false;
|
|
||||||
return ((std::fabs(bbox.minx() - to_.minx()) < .5) &&
|
|
||||||
(std::fabs(bbox.maxx() - to_.maxx()) < .5) &&
|
|
||||||
(std::fabs(bbox.miny() - to_.miny()) < .5) &&
|
|
||||||
(std::fabs(bbox.maxy() - to_.maxy()) < .5)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
void operator()()
|
|
||||||
{
|
|
||||||
unsigned count=0;
|
|
||||||
for (int i=-180;i<180;++i)
|
|
||||||
{
|
|
||||||
for (int j=-85;j<85;++j)
|
|
||||||
{
|
|
||||||
mapnik::projection src(src_,defer_proj4_init_);
|
|
||||||
mapnik::projection dest(dest_,defer_proj4_init_);
|
|
||||||
mapnik::proj_transform tr(src,dest);
|
|
||||||
mapnik::box2d<double> box(i,j,i,j);
|
|
||||||
if (!tr.forward(box)) throw std::runtime_error("could not transform coords");
|
|
||||||
++count;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#include <mapnik/unicode.hpp>
|
|
||||||
#include <mapnik/expression.hpp>
|
|
||||||
#include <mapnik/expression_string.hpp>
|
|
||||||
|
|
||||||
struct test7
|
|
||||||
{
|
|
||||||
unsigned iter_;
|
|
||||||
unsigned threads_;
|
|
||||||
std::string expr_;
|
|
||||||
explicit test7(unsigned iterations,
|
|
||||||
unsigned threads,
|
|
||||||
std::string const& expr) :
|
|
||||||
iter_(iterations),
|
|
||||||
threads_(threads),
|
|
||||||
expr_(expr)
|
|
||||||
{}
|
|
||||||
|
|
||||||
bool validate()
|
|
||||||
{
|
|
||||||
mapnik::expression_ptr expr = mapnik::parse_expression(expr_,"utf-8");
|
|
||||||
return mapnik::to_expression_string(*expr) == expr_;
|
|
||||||
}
|
|
||||||
void operator()()
|
|
||||||
{
|
|
||||||
for (unsigned i=0;i<iter_;++i) {
|
|
||||||
mapnik::expression_ptr expr = mapnik::parse_expression(expr_,"utf-8");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#include <mapnik/expression_grammar.hpp>
|
|
||||||
|
|
||||||
struct test8
|
|
||||||
{
|
|
||||||
unsigned iter_;
|
|
||||||
unsigned threads_;
|
|
||||||
std::string expr_;
|
|
||||||
explicit test8(unsigned iterations,
|
|
||||||
unsigned threads,
|
|
||||||
std::string const& expr) :
|
|
||||||
iter_(iterations),
|
|
||||||
threads_(threads),
|
|
||||||
expr_(expr)
|
|
||||||
{}
|
|
||||||
|
|
||||||
bool validate()
|
|
||||||
{
|
|
||||||
transcoder tr("utf-8");
|
|
||||||
mapnik::expression_grammar<std::string::const_iterator> expr_grammar(tr);
|
|
||||||
mapnik::expression_ptr expr = mapnik::parse_expression(expr_,expr_grammar);
|
|
||||||
return mapnik::to_expression_string(*expr) == expr_;
|
|
||||||
}
|
|
||||||
void operator()()
|
|
||||||
{
|
|
||||||
transcoder tr("utf-8");
|
|
||||||
mapnik::expression_grammar<std::string::const_iterator> expr_grammar(tr);
|
|
||||||
for (unsigned i=0;i<iter_;++i) {
|
|
||||||
mapnik::expression_ptr expr = mapnik::parse_expression(expr_,expr_grammar);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#include "agg_conv_clip_polygon.h"
|
|
||||||
#include <mapnik/wkt/wkt_factory.hpp>
|
|
||||||
#include <mapnik/util/geometry_to_wkt.hpp>
|
|
||||||
#include <mapnik/geometry.hpp>
|
|
||||||
|
|
||||||
#include "agg_conv_clip_polygon.h"
|
|
||||||
|
|
||||||
struct test11a
|
|
||||||
{
|
|
||||||
unsigned iter_;
|
|
||||||
unsigned threads_;
|
|
||||||
std::string wkt_in_;
|
|
||||||
mapnik::box2d<double> extent_;
|
|
||||||
typedef agg::conv_clip_polygon<mapnik::geometry_type> conv_clip;
|
|
||||||
test11a(unsigned iterations,
|
|
||||||
unsigned threads,
|
|
||||||
std::string wkt_in,
|
|
||||||
mapnik::box2d<double> const& extent)
|
|
||||||
: iter_(iterations),
|
|
||||||
threads_(threads),
|
|
||||||
wkt_in_(wkt_in),
|
|
||||||
extent_(extent) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool validate()
|
|
||||||
{
|
|
||||||
std::string expected_wkt("Polygon((181 286.666667,233 454,315 340,421 446,463 324,559 466,631 321.320755,631 234.386861,528 178,394 229,329 138,212 134,183 228,200 264,181 238.244444),(313 190,440 256,470 248,510 305,533 237,613 263,553 397,455 262,405 378,343 287,249 334,229 191,313 190,313 190))");
|
|
||||||
boost::ptr_vector<geometry_type> paths;
|
|
||||||
if (!mapnik::from_wkt(wkt_in_, paths))
|
|
||||||
{
|
|
||||||
throw std::runtime_error("Failed to parse WKT");
|
|
||||||
}
|
|
||||||
BOOST_FOREACH (geometry_type & geom , paths)
|
|
||||||
{
|
|
||||||
conv_clip clipped(geom);
|
|
||||||
clipped.clip_box(
|
|
||||||
extent_.minx(),
|
|
||||||
extent_.miny(),
|
|
||||||
extent_.maxx(),
|
|
||||||
extent_.maxy());
|
|
||||||
unsigned cmd;
|
|
||||||
double x,y;
|
|
||||||
mapnik::geometry_type geom2(mapnik::Polygon);
|
|
||||||
while ((cmd = clipped.vertex(&x, &y)) != SEG_END) {
|
|
||||||
geom2.push_vertex(x,y,(mapnik::CommandType)cmd);
|
|
||||||
}
|
|
||||||
std::string wkt;
|
|
||||||
bool result = mapnik::util::to_wkt(wkt,geom2);
|
|
||||||
if (result) {
|
|
||||||
return (wkt == expected_wkt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
void operator()()
|
|
||||||
{
|
|
||||||
boost::ptr_vector<geometry_type> paths;
|
|
||||||
if (!mapnik::from_wkt(wkt_in_, paths))
|
|
||||||
{
|
|
||||||
throw std::runtime_error("Failed to parse WKT");
|
|
||||||
}
|
|
||||||
for (unsigned i=0;i<iter_;++i)
|
|
||||||
{
|
|
||||||
BOOST_FOREACH (geometry_type & geom , paths)
|
|
||||||
{
|
|
||||||
conv_clip clipped(geom);
|
|
||||||
clipped.clip_box(
|
|
||||||
extent_.minx(),
|
|
||||||
extent_.miny(),
|
|
||||||
extent_.maxx(),
|
|
||||||
extent_.maxy());
|
|
||||||
unsigned cmd;
|
|
||||||
double x,y;
|
|
||||||
while ((cmd = clipped.vertex(&x, &y)) != SEG_END) {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#include "agg_conv_clipper.h"
|
|
||||||
#include "agg_path_storage.h"
|
|
||||||
|
|
||||||
struct test11
|
|
||||||
{
|
|
||||||
unsigned iter_;
|
|
||||||
unsigned threads_;
|
|
||||||
std::string wkt_in_;
|
|
||||||
mapnik::box2d<double> extent_;
|
|
||||||
typedef agg::conv_clipper<mapnik::geometry_type, agg::path_storage> poly_clipper;
|
|
||||||
test11(unsigned iterations,
|
|
||||||
unsigned threads,
|
|
||||||
std::string wkt_in,
|
|
||||||
mapnik::box2d<double> const& extent)
|
|
||||||
: iter_(iterations),
|
|
||||||
threads_(threads),
|
|
||||||
wkt_in_(wkt_in),
|
|
||||||
extent_(extent) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool validate()
|
|
||||||
{
|
|
||||||
std::string expected_wkt("Polygon((212 134,329 138,394 229,528 178,631 234.4,631 321.3,559 466,463 324,421 446,315 340,233 454,181 286.7,181 238.2,200 264,183 228),(313 190,229 191,249 334,343 287,405 378,455 262,553 397,613 263,533 237,510 305,470 248,440 256))");
|
|
||||||
boost::ptr_vector<geometry_type> paths;
|
|
||||||
if (!mapnik::from_wkt(wkt_in_, paths))
|
|
||||||
{
|
|
||||||
throw std::runtime_error("Failed to parse WKT");
|
|
||||||
}
|
|
||||||
agg::path_storage ps;
|
|
||||||
ps.move_to(extent_.minx(), extent_.miny());
|
|
||||||
ps.line_to(extent_.minx(), extent_.maxy());
|
|
||||||
ps.line_to(extent_.maxx(), extent_.maxy());
|
|
||||||
ps.line_to(extent_.maxx(), extent_.miny());
|
|
||||||
ps.close_polygon();
|
|
||||||
BOOST_FOREACH (geometry_type & geom , paths)
|
|
||||||
{
|
|
||||||
poly_clipper clipped(geom,ps,
|
|
||||||
agg::clipper_and,
|
|
||||||
agg::clipper_non_zero,
|
|
||||||
agg::clipper_non_zero,
|
|
||||||
1);
|
|
||||||
clipped.rewind(0);
|
|
||||||
unsigned cmd;
|
|
||||||
double x,y;
|
|
||||||
mapnik::geometry_type geom2(mapnik::Polygon);
|
|
||||||
while ((cmd = clipped.vertex(&x, &y)) != SEG_END) {
|
|
||||||
geom2.push_vertex(x,y,(mapnik::CommandType)cmd);
|
|
||||||
}
|
|
||||||
std::string wkt;
|
|
||||||
bool result = mapnik::util::to_wkt(wkt,geom2);
|
|
||||||
if (result) {
|
|
||||||
return (wkt == expected_wkt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
void operator()()
|
|
||||||
{
|
|
||||||
boost::ptr_vector<geometry_type> paths;
|
|
||||||
if (!mapnik::from_wkt(wkt_in_, paths))
|
|
||||||
{
|
|
||||||
throw std::runtime_error("Failed to parse WKT");
|
|
||||||
}
|
|
||||||
agg::path_storage ps;
|
|
||||||
ps.move_to(extent_.minx(), extent_.miny());
|
|
||||||
ps.line_to(extent_.minx(), extent_.maxy());
|
|
||||||
ps.line_to(extent_.maxx(), extent_.maxy());
|
|
||||||
ps.line_to(extent_.maxx(), extent_.miny());
|
|
||||||
ps.close_polygon();
|
|
||||||
for (unsigned i=0;i<iter_;++i)
|
|
||||||
{
|
|
||||||
BOOST_FOREACH (geometry_type & geom , paths)
|
|
||||||
{
|
|
||||||
poly_clipper clipped(geom,ps,
|
|
||||||
agg::clipper_and,
|
|
||||||
agg::clipper_non_zero,
|
|
||||||
agg::clipper_non_zero,
|
|
||||||
1);
|
|
||||||
clipped.rewind(0);
|
|
||||||
unsigned cmd;
|
|
||||||
double x,y;
|
|
||||||
while ((cmd = clipped.vertex(&x, &y)) != SEG_END) {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#include <mapnik/polygon_clipper.hpp>
|
|
||||||
|
|
||||||
struct test12
|
|
||||||
{
|
|
||||||
unsigned iter_;
|
|
||||||
unsigned threads_;
|
|
||||||
std::string wkt_in_;
|
|
||||||
mapnik::box2d<double> extent_;
|
|
||||||
typedef mapnik::polygon_clipper<mapnik::geometry_type> poly_clipper;
|
|
||||||
test12(unsigned iterations,
|
|
||||||
unsigned threads,
|
|
||||||
std::string wkt_in,
|
|
||||||
mapnik::box2d<double> const& extent)
|
|
||||||
: iter_(iterations),
|
|
||||||
threads_(threads),
|
|
||||||
wkt_in_(wkt_in),
|
|
||||||
extent_(extent)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool validate()
|
|
||||||
{
|
|
||||||
std::string expected_wkt("Polygon((181 286.666667,233 454,315 340,421 446,463 324,559 466,631 321.320755,631 234.386861,528 178,394 229,329 138,212 134,183 228,200 264,181 238.244444,181 286.666667),(313 190,440 256,470 248,510 305,533 237,613 263,553 397,455 262,405 378,343 287,249 334,229 191,313 190))");
|
|
||||||
boost::ptr_vector<geometry_type> paths;
|
|
||||||
if (!mapnik::from_wkt(wkt_in_, paths))
|
|
||||||
{
|
|
||||||
throw std::runtime_error("Failed to parse WKT");
|
|
||||||
}
|
|
||||||
BOOST_FOREACH ( geometry_type & geom , paths)
|
|
||||||
{
|
|
||||||
poly_clipper clipped(extent_, geom);
|
|
||||||
unsigned cmd;
|
|
||||||
double x,y;
|
|
||||||
mapnik::geometry_type geom2(mapnik::Polygon);
|
|
||||||
while ((cmd = clipped.vertex(&x, &y)) != SEG_END) {
|
|
||||||
geom2.push_vertex(x,y,(mapnik::CommandType)cmd);
|
|
||||||
}
|
|
||||||
std::string wkt;
|
|
||||||
bool result = mapnik::util::to_wkt(wkt,geom2);
|
|
||||||
if (result) {
|
|
||||||
return (wkt == expected_wkt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
void operator()()
|
|
||||||
{
|
|
||||||
boost::ptr_vector<geometry_type> paths;
|
|
||||||
if (!mapnik::from_wkt(wkt_in_, paths))
|
|
||||||
{
|
|
||||||
throw std::runtime_error("Failed to parse WKT");
|
|
||||||
}
|
|
||||||
for (unsigned i=0;i<iter_;++i)
|
|
||||||
{
|
|
||||||
BOOST_FOREACH ( geometry_type & geom , paths)
|
|
||||||
{
|
|
||||||
poly_clipper clipped(extent_, geom);
|
|
||||||
unsigned cmd;
|
|
||||||
double x,y;
|
|
||||||
while ((cmd = clipped.vertex(&x, &y)) != SEG_END) {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#include <mapnik/font_engine_freetype.hpp>
|
|
||||||
#include <boost/format.hpp>
|
|
||||||
struct test13
|
|
||||||
{
|
|
||||||
unsigned iter_;
|
|
||||||
unsigned threads_;
|
|
||||||
|
|
||||||
test13(unsigned iterations,
|
|
||||||
unsigned threads)
|
|
||||||
: iter_(iterations),
|
|
||||||
threads_(threads)
|
|
||||||
{}
|
|
||||||
|
|
||||||
bool validate()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator()()
|
|
||||||
{
|
|
||||||
mapnik::freetype_engine engine;
|
|
||||||
unsigned long count = 0;
|
|
||||||
for (unsigned i=0;i<iter_;++i)
|
|
||||||
{
|
|
||||||
BOOST_FOREACH( std::string const& name , mapnik::freetype_engine::face_names())
|
|
||||||
{
|
|
||||||
mapnik::face_ptr f = engine.create_face(name);
|
|
||||||
if (f) ++count;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#include <mapnik/map.hpp>
|
|
||||||
#include <mapnik/load_map.hpp>
|
|
||||||
#include <mapnik/agg_renderer.hpp>
|
|
||||||
#include <mapnik/datasource_cache.hpp>
|
|
||||||
|
|
||||||
struct test14
|
|
||||||
{
|
|
||||||
unsigned iter_;
|
|
||||||
unsigned threads_;
|
|
||||||
std::string xml_;
|
|
||||||
mapnik::box2d<double> extent_;
|
|
||||||
test14(unsigned iterations,
|
|
||||||
unsigned threads,
|
|
||||||
std::string const& xml,
|
|
||||||
mapnik::box2d<double> const& extent)
|
|
||||||
: iter_(iterations),
|
|
||||||
threads_(threads),
|
|
||||||
xml_(xml),
|
|
||||||
extent_(extent)
|
|
||||||
{}
|
|
||||||
|
|
||||||
bool validate()
|
|
||||||
{
|
|
||||||
mapnik::Map m(256,256);
|
|
||||||
mapnik::load_map(m,xml_);
|
|
||||||
m.zoom_to_box(extent_);
|
|
||||||
mapnik::image_32 im(m.width(),m.height());
|
|
||||||
mapnik::agg_renderer<mapnik::image_32> ren(m,im);
|
|
||||||
ren.apply();
|
|
||||||
//mapnik::save_to_file(im,"test.png");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void operator()()
|
|
||||||
{
|
|
||||||
mapnik::Map m(256,256);
|
|
||||||
mapnik::load_map(m,xml_);
|
|
||||||
m.zoom_to_box(extent_);
|
|
||||||
for (unsigned i=0;i<iter_;++i)
|
|
||||||
{
|
|
||||||
mapnik::image_32 im(m.width(),m.height());
|
|
||||||
mapnik::agg_renderer<mapnik::image_32> ren(m,im);
|
|
||||||
ren.apply();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
int main( int argc, char** argv)
|
|
||||||
{
|
|
||||||
if (argc > 0) {
|
|
||||||
for (int i=0;i<argc;++i) {
|
|
||||||
std::string opt(argv[i]);
|
|
||||||
if (opt == "-d" || opt == "--dry-run") {
|
|
||||||
dry_run = true;
|
|
||||||
} else if (opt[0] != '-') {
|
|
||||||
int arg;
|
|
||||||
if (mapnik::util::string2int(opt,arg)) {
|
|
||||||
test_set.insert(static_cast<unsigned>(arg));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mapnik::datasource_cache::instance().register_datasources("./plugins/input/");
|
|
||||||
try
|
|
||||||
{
|
|
||||||
std::cout << "starting benchmark…\n";
|
|
||||||
|
|
||||||
{
|
|
||||||
test1 runner(100);
|
|
||||||
benchmark(runner,"encoding blank image as png");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test2 runner(100);
|
|
||||||
benchmark(runner,"encoding multicolor image as png8:m=h");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test1 runner(10,10);
|
|
||||||
benchmark(runner,"encoding blank image as png");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test2 runner(10,10);
|
|
||||||
benchmark(runner,"encoding multicolor image as png8:m=h");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test3 runner(1000000);
|
|
||||||
benchmark(runner,"double to string conversion with std::ostringstream");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test4 runner(1000000);
|
|
||||||
benchmark(runner,"double to string conversion with mapnik::util_to_string");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test5 runner(1000000);
|
|
||||||
benchmark(runner,"double to string conversion with snprintf");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test3 runner(100000,10);
|
|
||||||
benchmark(runner,"double to string conversion with std::ostringstream");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test4 runner(100000,10);
|
|
||||||
benchmark(runner,"double to string conversion with mapnik::util_to_string");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test5 runner(100000,10);
|
|
||||||
benchmark(runner,"double to string conversion with snprintf");
|
|
||||||
}
|
|
||||||
|
|
||||||
mapnik::box2d<double> from(-180,-80,180,80);
|
|
||||||
mapnik::box2d<double> to(-20037508.3427892476,-15538711.0963092316,20037508.3427892476,15538711.0963092316);
|
|
||||||
|
|
||||||
{
|
|
||||||
// echo -180 -60 | cs2cs -f "%.10f" +init=epsg:4326 +to +init=epsg:3857
|
|
||||||
test6 runner(100000000,100,
|
|
||||||
"+init=epsg:4326",
|
|
||||||
"+init=epsg:3857",
|
|
||||||
from,to,true);
|
|
||||||
benchmark(runner,"lonlat -> merc coord transformation (epsg)");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test6 runner(100000000,100,
|
|
||||||
"+init=epsg:3857",
|
|
||||||
"+init=epsg:4326",
|
|
||||||
to,from,true);
|
|
||||||
benchmark(runner,"merc -> lonlat coord transformation (epsg)");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test6 runner(100000000,100,
|
|
||||||
"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs",
|
|
||||||
"+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
|
|
||||||
from,to,true);
|
|
||||||
benchmark(runner,"lonlat -> merc coord transformation (literal)");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test6 runner(100000000,100,
|
|
||||||
"+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
|
|
||||||
"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs",
|
|
||||||
to,from,true);
|
|
||||||
benchmark(runner,"merc -> lonlat coord transformation (literal)");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test7 runner(10000,100,"([foo]=1)");
|
|
||||||
benchmark(runner,"expression parsing with grammer per parse");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test8 runner(10000,100,"([foo]=1)");
|
|
||||||
benchmark(runner,"expression parsing by re-using grammar");
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO - consider bring back rule cache benchmarks after c++11 is in master
|
|
||||||
// previously test 9/10
|
|
||||||
|
|
||||||
// polygon/rect clipping
|
|
||||||
// IN : POLYGON ((155 203, 233 454, 315 340, 421 446, 463 324, 559 466, 665 253, 528 178, 394 229, 329 138, 212 134, 183 228, 200 264, 155 203),(313 190, 440 256, 470 248, 510 305, 533 237, 613 263, 553 397, 455 262, 405 378, 343 287, 249 334, 229 191, 313 190))
|
|
||||||
// RECT : POLYGON ((181 106, 181 470, 631 470, 631 106, 181 106))
|
|
||||||
// OUT (expected)
|
|
||||||
// POLYGON ((181 286.6666666666667, 233 454, 315 340, 421 446, 463 324, 559 466, 631 321.3207547169811, 631 234.38686131386862, 528 178, 394 229, 329 138, 212 134, 183 228, 200 264, 181 238.24444444444444, 181 286.6666666666667),(313 190, 440 256, 470 248, 510 305, 533 237, 613 263, 553 397, 455 262, 405 378, 343 287, 249 334, 229 191, 313 190))
|
|
||||||
|
|
||||||
mapnik::box2d<double> clipping_box(181,106,631,470);
|
|
||||||
|
|
||||||
{
|
|
||||||
std::string filename_("benchmark/data/polygon.wkt");
|
|
||||||
std::ifstream in(filename_.c_str(),std::ios_base::in | std::ios_base::binary);
|
|
||||||
if (!in.is_open())
|
|
||||||
throw std::runtime_error("could not open: '" + filename_ + "'");
|
|
||||||
std::string wkt_in( (std::istreambuf_iterator<char>(in) ),
|
|
||||||
(std::istreambuf_iterator<char>()) );
|
|
||||||
test11a runner(10000,10,wkt_in,clipping_box);
|
|
||||||
benchmark(runner,"clipping polygon with conv_clip_polygon");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
std::string filename_("benchmark/data/polygon.wkt");
|
|
||||||
std::ifstream in(filename_.c_str(),std::ios_base::in | std::ios_base::binary);
|
|
||||||
if (!in.is_open())
|
|
||||||
throw std::runtime_error("could not open: '" + filename_ + "'");
|
|
||||||
std::string wkt_in( (std::istreambuf_iterator<char>(in) ),
|
|
||||||
(std::istreambuf_iterator<char>()) );
|
|
||||||
test11 runner(10000,10,wkt_in,clipping_box);
|
|
||||||
benchmark(runner,"clipping polygon with agg_conv_clipper");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
{
|
|
||||||
std::string filename_("benchmark/data/polygon.wkt");
|
|
||||||
std::ifstream in(filename_.c_str(),std::ios_base::in | std::ios_base::binary);
|
|
||||||
if (!in.is_open())
|
|
||||||
throw std::runtime_error("could not open: '" + filename_ + "'");
|
|
||||||
std::string wkt_in( (std::istreambuf_iterator<char>(in) ),
|
|
||||||
(std::istreambuf_iterator<char>()) );
|
|
||||||
test12 runner(10000,10,wkt_in,clipping_box);
|
|
||||||
benchmark(runner,"clipping polygon with mapnik::polygon_clipper");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
bool success = mapnik::freetype_engine::register_fonts("./fonts", true);
|
|
||||||
if (!success) {
|
|
||||||
std::clog << "warning, did not register any new fonts!\n";
|
|
||||||
}
|
|
||||||
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());
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test14 runner(500,10,
|
|
||||||
"benchmark/data/polygon_rendering_clip.xml",
|
|
||||||
mapnik::box2d<double>(-20037508.3428,-8317435.0606,20037508.3428,18399242.7298));
|
|
||||||
benchmark(runner, "rendering polygon with clipping at full extent");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test14 runner(500,10,
|
|
||||||
"benchmark/data/polygon_rendering_no_clip.xml",
|
|
||||||
mapnik::box2d<double>(-20037508.3428,-8317435.0606,20037508.3428,18399242.7298));
|
|
||||||
benchmark(runner, "rendering polygon without clipping at full extent");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
// note: bbox below is for 16/10491/22911.png
|
|
||||||
test14 runner(500,10,
|
|
||||||
"benchmark/data/polygon_rendering_clip.xml",
|
|
||||||
mapnik::box2d<double>(-13622912.929097254,6026906.8062295765,-13621689.93664469,6028129.79868214));
|
|
||||||
benchmark(runner, "rendering polygon with clipping at z16 extent");
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
test14 runner(500,10,
|
|
||||||
"benchmark/data/polygon_rendering_no_clip.xml",
|
|
||||||
mapnik::box2d<double>(-13622912.929097254,6026906.8062295765,-13621689.93664469,6028129.79868214));
|
|
||||||
benchmark(runner, "rendering polygon without clipping at z16 extent");
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "...benchmark done\n";
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
catch (std::exception const& ex)
|
|
||||||
{
|
|
||||||
std::clog << "test error: " << ex.what() << "\n";
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
17
benchmark/template.cpp
Normal file
17
benchmark/template.cpp
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#include "bench_framework.hpp"
|
||||||
|
|
||||||
|
class test : public benchmark::test_case
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
test(mapnik::parameters const& params)
|
||||||
|
: test_case(params) {}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
BENCHMARK(test,"test name")
|
347
benchmark/test_array_allocation.cpp
Normal file
347
benchmark/test_array_allocation.cpp
Normal file
|
@ -0,0 +1,347 @@
|
||||||
|
#include "bench_framework.hpp"
|
||||||
|
#include <cstring>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <stdexcept>
|
||||||
|
//#include <array>
|
||||||
|
#include <valarray>
|
||||||
|
#include <boost/version.hpp>
|
||||||
|
#if BOOST_VERSION >= 105400
|
||||||
|
#include <boost/container/static_vector.hpp>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// http://stackoverflow.com/questions/17347254/why-is-allocation-and-deallocation-of-stdvector-slower-than-dynamic-array-on-m
|
||||||
|
|
||||||
|
#define FULL_ZERO_CHECK
|
||||||
|
|
||||||
|
inline void ensure_zero(uint8_t * data, uint32_t size) {
|
||||||
|
#ifdef FULL_ZERO_CHECK
|
||||||
|
for (std::size_t i=0;i<size;++i) {
|
||||||
|
if (data[i] != 0) {
|
||||||
|
throw std::runtime_error("found non zero value");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
if (data[0] != 0) {
|
||||||
|
throw std::runtime_error("found non zero value");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
class test1 : public benchmark::test_case
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
uint32_t size_;
|
||||||
|
std::vector<uint8_t> array_;
|
||||||
|
test1(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
size_(*params.get<mapnik::value_integer>("size",256*256)),
|
||||||
|
array_(size_,0) { }
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
// NOTE: sizeof(uint8_t) == 1
|
||||||
|
uint8_t *data = (uint8_t *)malloc(sizeof(uint8_t)*size_);
|
||||||
|
memcpy(data, &array_[0], size_);
|
||||||
|
ensure_zero(data,size_);
|
||||||
|
free(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class test1b : public benchmark::test_case
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
uint32_t size_;
|
||||||
|
std::vector<uint8_t> array_;
|
||||||
|
test1b(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
size_(*params.get<mapnik::value_integer>("size",256*256)),
|
||||||
|
array_(size_,0) { }
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
// NOTE: sizeof(uint8_t) == 1
|
||||||
|
uint8_t *data = (uint8_t *)malloc(sizeof(uint8_t)*size_);
|
||||||
|
memset(data, 0, sizeof(uint8_t)*size_);
|
||||||
|
ensure_zero(data,size_);
|
||||||
|
free(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class test2 : public benchmark::test_case
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
uint32_t size_;
|
||||||
|
std::vector<uint8_t> array_;
|
||||||
|
test2(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
size_(*params.get<mapnik::value_integer>("size",256*256)),
|
||||||
|
array_(size_,0) { }
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
uint8_t * data = static_cast<uint8_t*>(::operator new(sizeof(uint8_t)*size_));
|
||||||
|
memcpy(data, &array_[0], size_);
|
||||||
|
ensure_zero(data,size_);
|
||||||
|
::operator delete(data),data=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class test3 : public benchmark::test_case
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
uint32_t size_;
|
||||||
|
std::vector<uint8_t> array_;
|
||||||
|
test3(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
size_(*params.get<mapnik::value_integer>("size",256*256)),
|
||||||
|
array_(size_,0) { }
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
std::vector<uint8_t> data(size_);
|
||||||
|
ensure_zero(&data[0],data.size());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class test3b : public benchmark::test_case
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
uint32_t size_;
|
||||||
|
std::vector<uint8_t> array_;
|
||||||
|
test3b(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
size_(*params.get<mapnik::value_integer>("size",256*256)),
|
||||||
|
array_(size_,0) { }
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
std::vector<uint8_t> data(0);
|
||||||
|
data.resize(size_,0);
|
||||||
|
ensure_zero(&data[0],data.size());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class test3c : public benchmark::test_case
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
uint32_t size_;
|
||||||
|
std::vector<uint8_t> array_;
|
||||||
|
test3c(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
size_(*params.get<mapnik::value_integer>("size",256*256)),
|
||||||
|
array_(size_,0) { }
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
std::vector<uint8_t> data(0);
|
||||||
|
data.assign(size_,0);
|
||||||
|
ensure_zero(&data[0],data.size());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class test4 : public benchmark::test_case
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
uint32_t size_;
|
||||||
|
std::vector<uint8_t> array_;
|
||||||
|
test4(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
size_(*params.get<mapnik::value_integer>("size",256*256)),
|
||||||
|
array_(size_,0) { }
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
uint8_t *data = (uint8_t *)calloc(size_,sizeof(uint8_t));
|
||||||
|
ensure_zero(data,size_);
|
||||||
|
free(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class test5 : public benchmark::test_case
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
uint32_t size_;
|
||||||
|
std::vector<uint8_t> array_;
|
||||||
|
test5(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
size_(*params.get<mapnik::value_integer>("size",256*256)),
|
||||||
|
array_(size_,0) { }
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
std::string data(array_.begin(),array_.end());
|
||||||
|
ensure_zero((uint8_t *)&data[0],size_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class test5b : public benchmark::test_case
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
uint32_t size_;
|
||||||
|
std::vector<char> array_;
|
||||||
|
test5b(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
size_(*params.get<mapnik::value_integer>("size",256*256)),
|
||||||
|
array_(size_,0) { }
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
std::string data(&array_[0],array_.size());
|
||||||
|
ensure_zero((uint8_t *)&data[0],size_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// C++14 dynarray<T>
|
||||||
|
// http://isocpp.org/blog/2013/04/trip-report-iso-c-spring-2013-meeting
|
||||||
|
// http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20130909/088700.html
|
||||||
|
// http://stackoverflow.com/questions/17303902/any-alternative-to-stddynarray-presently-available
|
||||||
|
|
||||||
|
class test6 : public benchmark::test_case
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
uint32_t size_;
|
||||||
|
std::vector<uint8_t> array_;
|
||||||
|
test6(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
size_(*params.get<mapnik::value_integer>("size",256*256)),
|
||||||
|
array_(size_,0) { }
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
std::valarray<uint8_t> data(static_cast<uint8_t>(0),static_cast<size_t>(size_));
|
||||||
|
ensure_zero(&data[0],size_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#if BOOST_VERSION >= 105400
|
||||||
|
// http://i42.co.uk/stuff/vecarray.htm
|
||||||
|
// http://www.boost.org/doc/libs/1_54_0/doc/html/boost/container/static_vector.html
|
||||||
|
|
||||||
|
class test7 : public benchmark::test_case
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
uint32_t size_;
|
||||||
|
std::vector<uint8_t> array_;
|
||||||
|
test7(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
size_(*params.get<mapnik::value_integer>("size",256*256)),
|
||||||
|
array_(size_,0) { }
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
boost::container::static_vector<uint8_t,256*256> data(size_,0);
|
||||||
|
ensure_zero(&data[0],size_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
mapnik::parameters params;
|
||||||
|
benchmark::handle_args(argc,argv,params);
|
||||||
|
{
|
||||||
|
test4 test_runner4(params);
|
||||||
|
run(test_runner4,"calloc");
|
||||||
|
}
|
||||||
|
{
|
||||||
|
test1 test_runner(params);
|
||||||
|
run(test_runner,"malloc/memcpy");
|
||||||
|
}
|
||||||
|
{
|
||||||
|
test1b test_runner(params);
|
||||||
|
run(test_runner,"malloc/memset");
|
||||||
|
|
||||||
|
}
|
||||||
|
{
|
||||||
|
test2 test_runner(params);
|
||||||
|
run(test_runner,"new");
|
||||||
|
}
|
||||||
|
{
|
||||||
|
test3 test_runner(params);
|
||||||
|
run(test_runner,"vector(N)");
|
||||||
|
}
|
||||||
|
{
|
||||||
|
test3b test_runner(params);
|
||||||
|
run(test_runner,"vector/resize");
|
||||||
|
}
|
||||||
|
{
|
||||||
|
test3c test_runner(params);
|
||||||
|
run(test_runner,"vector/assign");
|
||||||
|
}
|
||||||
|
{
|
||||||
|
test5 test_runner(params);
|
||||||
|
run(test_runner,"std::string range");
|
||||||
|
}
|
||||||
|
{
|
||||||
|
test5b test_runner(params);
|
||||||
|
run(test_runner,"std::string &[0]");
|
||||||
|
}
|
||||||
|
{
|
||||||
|
test6 test_runner(params);
|
||||||
|
run(test_runner,"valarray");
|
||||||
|
}
|
||||||
|
#if BOOST_VERSION >= 105400
|
||||||
|
{
|
||||||
|
test7 test_runner(params);
|
||||||
|
run(test_runner,"static_vector");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
40
benchmark/test_expression_parse.cpp
Normal file
40
benchmark/test_expression_parse.cpp
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
#include "bench_framework.hpp"
|
||||||
|
#include <mapnik/unicode.hpp>
|
||||||
|
#include <mapnik/expression.hpp>
|
||||||
|
#include <mapnik/expression_string.hpp>
|
||||||
|
#include <mapnik/expression_grammar.hpp>
|
||||||
|
|
||||||
|
class test : public benchmark::test_case
|
||||||
|
{
|
||||||
|
std::string expr_;
|
||||||
|
public:
|
||||||
|
test(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
expr_("((([mapnik::geometry_type]=2) and ([oneway]=1)) and ([class]='path'))") {}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
mapnik::expression_ptr expr = mapnik::parse_expression(expr_,"utf-8");
|
||||||
|
std::string result = mapnik::to_expression_string(*expr);
|
||||||
|
bool ret = (result == expr_);
|
||||||
|
if (!ret)
|
||||||
|
{
|
||||||
|
std::clog << result << " != " << expr_ << "\n";
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
mapnik::expression_ptr expr = mapnik::parse_expression(expr_,"utf-8");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
mapnik::parameters params;
|
||||||
|
benchmark::handle_args(argc,argv,params);
|
||||||
|
test test_runner(params);
|
||||||
|
run(test_runner,"expr parsing");
|
||||||
|
}
|
43
benchmark/test_face_ptr_creation.cpp
Normal file
43
benchmark/test_face_ptr_creation.cpp
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
#include "bench_framework.hpp"
|
||||||
|
#include <mapnik/font_engine_freetype.hpp>
|
||||||
|
#include <boost/format.hpp>
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
|
||||||
|
class test : public benchmark::test_case
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
test(mapnik::parameters const& params)
|
||||||
|
: test_case(params) {}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
mapnik::freetype_engine engine;
|
||||||
|
unsigned long count = 0;
|
||||||
|
for (unsigned i=0;i<iterations_;++i)
|
||||||
|
{
|
||||||
|
BOOST_FOREACH ( std::string const& name , mapnik::freetype_engine::face_names())
|
||||||
|
{
|
||||||
|
mapnik::face_ptr f = engine.create_face(name);
|
||||||
|
if (f) ++count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
mapnik::parameters params;
|
||||||
|
benchmark::handle_args(argc,argv,params);
|
||||||
|
bool success = mapnik::freetype_engine::register_fonts("./fonts", true);
|
||||||
|
if (!success) {
|
||||||
|
std::clog << "warning, did not register any new fonts!\n";
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
std::size_t face_count = mapnik::freetype_engine::face_names().size();
|
||||||
|
test test_runner(params);
|
||||||
|
return run(test_runner,(boost::format("font_engine: creating %ld faces") % (face_count * 1000 * 10)).str());
|
||||||
|
}
|
||||||
|
|
26
benchmark/test_font_registration.cpp
Normal file
26
benchmark/test_font_registration.cpp
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
#include "bench_framework.hpp"
|
||||||
|
#include <mapnik/font_engine_freetype.hpp>
|
||||||
|
#include <boost/format.hpp>
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
|
||||||
|
class test : public benchmark::test_case
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
test(mapnik::parameters const& params)
|
||||||
|
: test_case(params) {}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
return mapnik::freetype_engine::register_fonts("./fonts", true);
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
unsigned long count = 0;
|
||||||
|
for (unsigned i=0;i<iterations_;++i)
|
||||||
|
{
|
||||||
|
mapnik::freetype_engine::register_fonts("./fonts", true);
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
BENCHMARK(test,"font registration")
|
26
benchmark/test_png_encoding1.cpp
Normal file
26
benchmark/test_png_encoding1.cpp
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
#include "bench_framework.hpp"
|
||||||
|
#include <mapnik/image_util.hpp>
|
||||||
|
#include <mapnik/graphics.hpp>
|
||||||
|
|
||||||
|
class test : public benchmark::test_case
|
||||||
|
{
|
||||||
|
mapnik::image_data_32 im_;
|
||||||
|
public:
|
||||||
|
test(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
im_(256,256) {}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
std::string out;
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
out.clear();
|
||||||
|
out = mapnik::save_to_string(im_,"png8:m=h:z=1");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
BENCHMARK(test,"encoding blank png")
|
36
benchmark/test_png_encoding2.cpp
Normal file
36
benchmark/test_png_encoding2.cpp
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
#include "bench_framework.hpp"
|
||||||
|
#include "compare_images.hpp"
|
||||||
|
|
||||||
|
class test : public benchmark::test_case
|
||||||
|
{
|
||||||
|
boost::shared_ptr<image_32> im_;
|
||||||
|
public:
|
||||||
|
test(mapnik::parameters const& params)
|
||||||
|
: test_case(params) {
|
||||||
|
std::string filename("./benchmark/data/multicolor.png");
|
||||||
|
std::auto_ptr<mapnik::image_reader> reader(mapnik::get_image_reader(filename,"png"));
|
||||||
|
if (!reader.get())
|
||||||
|
{
|
||||||
|
throw mapnik::image_reader_exception("Failed to load: " + filename);
|
||||||
|
}
|
||||||
|
im_ = boost::make_shared<image_32>(reader->width(),reader->height());
|
||||||
|
reader->read(0,0,im_->data());
|
||||||
|
}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
std::string expected("./benchmark/data/multicolor-hextree-expected.png");
|
||||||
|
std::string actual("./benchmark/data/multicolor-hextree-actual.png");
|
||||||
|
mapnik::save_to_file(im_->data(),actual, "png8:m=h:z=1");
|
||||||
|
return benchmark::compare_images(actual,expected);
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
std::string out;
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
out.clear();
|
||||||
|
out = mapnik::save_to_string(im_->data(),"png8:m=h:z=1");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
BENCHMARK(test,"encoding multicolor png")
|
321
benchmark/test_polygon_clipping.cpp
Normal file
321
benchmark/test_polygon_clipping.cpp
Normal file
|
@ -0,0 +1,321 @@
|
||||||
|
#include "bench_framework.hpp"
|
||||||
|
#include "compare_images.hpp"
|
||||||
|
#include "agg_conv_clip_polygon.h"
|
||||||
|
#include <mapnik/geometry.hpp>
|
||||||
|
#include <mapnik/vertex.hpp>
|
||||||
|
#include <mapnik/ctrans.hpp>
|
||||||
|
#include <mapnik/graphics.hpp>
|
||||||
|
#include <mapnik/wkt/wkt_factory.hpp>
|
||||||
|
//#include <mapnik/util/geometry_to_wkt.hpp>
|
||||||
|
#include <mapnik/geometry.hpp>
|
||||||
|
#include <mapnik/proj_transform.hpp>
|
||||||
|
#include <mapnik/util/fs.hpp>
|
||||||
|
|
||||||
|
// agg
|
||||||
|
#include "agg_conv_clip_polygon.h"
|
||||||
|
// clipper
|
||||||
|
#include "agg_conv_clipper.h"
|
||||||
|
#include "agg_path_storage.h"
|
||||||
|
// boost
|
||||||
|
#include <mapnik/polygon_clipper.hpp>
|
||||||
|
|
||||||
|
// rendering
|
||||||
|
#include "agg_basics.h"
|
||||||
|
#include "agg_rendering_buffer.h"
|
||||||
|
#include "agg_pixfmt_rgba.h"
|
||||||
|
#include "agg_rasterizer_scanline_aa.h"
|
||||||
|
#include "agg_scanline_u.h"
|
||||||
|
#include "agg_renderer_scanline.h"
|
||||||
|
#include <mapnik/image_util.hpp>
|
||||||
|
#include <boost/foreach.hpp>
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
void render(mapnik::geometry_type & geom,
|
||||||
|
mapnik::box2d<double> const& extent,
|
||||||
|
std::string const& name)
|
||||||
|
{
|
||||||
|
typedef mapnik::coord_transform<mapnik::CoordTransform,mapnik::geometry_type> path_type;
|
||||||
|
typedef agg::renderer_base<agg::pixfmt_rgba32_plain> ren_base;
|
||||||
|
typedef agg::renderer_scanline_aa_solid<ren_base> renderer;
|
||||||
|
mapnik::image_32 im(256,256);
|
||||||
|
im.set_background(mapnik::color("white"));
|
||||||
|
mapnik::box2d<double> padded_extent = extent;
|
||||||
|
padded_extent.pad(10);
|
||||||
|
mapnik::CoordTransform tr(im.width(),im.height(),padded_extent,0,0);
|
||||||
|
agg::rendering_buffer buf(im.raw_data(),im.width(),im.height(), im.width() * 4);
|
||||||
|
agg::pixfmt_rgba32_plain pixf(buf);
|
||||||
|
ren_base renb(pixf);
|
||||||
|
renderer ren(renb);
|
||||||
|
ren.color(agg::rgba8(127,127,127,255));
|
||||||
|
agg::rasterizer_scanline_aa<> ras;
|
||||||
|
mapnik::proj_transform prj_trans(mapnik::projection("+init=epsg:4326"),mapnik::projection("+init=epsg:4326"));
|
||||||
|
geom.rewind(0);
|
||||||
|
path_type path(tr,geom,prj_trans);
|
||||||
|
ras.add_path(path);
|
||||||
|
agg::scanline_u8 sl;
|
||||||
|
agg::render_scanlines(ras, sl, ren);
|
||||||
|
mapnik::save_to_file(im,name);
|
||||||
|
geom.rewind(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
class test1 : public benchmark::test_case
|
||||||
|
{
|
||||||
|
std::string wkt_in_;
|
||||||
|
mapnik::box2d<double> extent_;
|
||||||
|
std::string expected_;
|
||||||
|
public:
|
||||||
|
typedef agg::conv_clip_polygon<mapnik::geometry_type> conv_clip;
|
||||||
|
test1(mapnik::parameters const& params,
|
||||||
|
std::string const& wkt_in,
|
||||||
|
mapnik::box2d<double> const& extent)
|
||||||
|
: test_case(params),
|
||||||
|
wkt_in_(wkt_in),
|
||||||
|
extent_(extent),
|
||||||
|
expected_("./benchmark/data/polygon_clipping_agg") {}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
std::string expected_wkt("Polygon((181 286.666667,233 454,315 340,421 446,463 324,559 466,631 321.320755,631 234.386861,528 178,394 229,329 138,212 134,183 228,200 264,181 238.244444),(313 190,440 256,470 248,510 305,533 237,613 263,553 397,455 262,405 378,343 287,249 334,229 191,313 190,313 190))");
|
||||||
|
boost::ptr_vector<mapnik::geometry_type> paths;
|
||||||
|
if (!mapnik::from_wkt(wkt_in_, paths))
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Failed to parse WKT");
|
||||||
|
}
|
||||||
|
if (paths.size() != 1)
|
||||||
|
{
|
||||||
|
std::clog << "paths.size() != 1\n";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
mapnik::geometry_type & geom = paths[0];
|
||||||
|
conv_clip clipped(geom);
|
||||||
|
clipped.clip_box(
|
||||||
|
extent_.minx(),
|
||||||
|
extent_.miny(),
|
||||||
|
extent_.maxx(),
|
||||||
|
extent_.maxy());
|
||||||
|
unsigned cmd;
|
||||||
|
double x,y;
|
||||||
|
mapnik::geometry_type geom2(mapnik::Polygon);
|
||||||
|
while ((cmd = clipped.vertex(&x, &y)) != mapnik::SEG_END) {
|
||||||
|
geom2.push_vertex(x,y,(mapnik::CommandType)cmd);
|
||||||
|
}
|
||||||
|
std::string expect = expected_+".png";
|
||||||
|
std::string actual = expected_+"_actual.png";
|
||||||
|
if (!mapnik::util::exists(expect))
|
||||||
|
{
|
||||||
|
std::clog << "generating expected image: " << expect << "\n";
|
||||||
|
render(geom2,geom.envelope(),expect);
|
||||||
|
}
|
||||||
|
render(geom2,geom.envelope(),actual);
|
||||||
|
return benchmark::compare_images(actual,expect);
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
boost::ptr_vector<mapnik::geometry_type> paths;
|
||||||
|
if (!mapnik::from_wkt(wkt_in_, paths))
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Failed to parse WKT");
|
||||||
|
}
|
||||||
|
for (unsigned i=0;i<iterations_;++i)
|
||||||
|
{
|
||||||
|
BOOST_FOREACH (mapnik::geometry_type & geom , paths)
|
||||||
|
{
|
||||||
|
conv_clip clipped(geom);
|
||||||
|
clipped.clip_box(
|
||||||
|
extent_.minx(),
|
||||||
|
extent_.miny(),
|
||||||
|
extent_.maxx(),
|
||||||
|
extent_.maxy());
|
||||||
|
unsigned cmd;
|
||||||
|
double x,y;
|
||||||
|
while ((cmd = clipped.vertex(&x, &y)) != mapnik::SEG_END) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class test2 : public benchmark::test_case
|
||||||
|
{
|
||||||
|
std::string wkt_in_;
|
||||||
|
mapnik::box2d<double> extent_;
|
||||||
|
std::string expected_;
|
||||||
|
public:
|
||||||
|
typedef agg::conv_clipper<mapnik::geometry_type, agg::path_storage> poly_clipper;
|
||||||
|
test2(mapnik::parameters const& params,
|
||||||
|
std::string const& wkt_in,
|
||||||
|
mapnik::box2d<double> const& extent)
|
||||||
|
: test_case(params),
|
||||||
|
wkt_in_(wkt_in),
|
||||||
|
extent_(extent),
|
||||||
|
expected_("./benchmark/data/polygon_clipping_clipper") {}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
std::string expected_wkt("Polygon((212 134,329 138,394 229,528 178,631 234.4,631 321.3,559 466,463 324,421 446,315 340,233 454,181 286.7,181 238.2,200 264,183 228),(313 190,229 191,249 334,343 287,405 378,455 262,553 397,613 263,533 237,510 305,470 248,440 256))");
|
||||||
|
boost::ptr_vector<mapnik::geometry_type> paths;
|
||||||
|
if (!mapnik::from_wkt(wkt_in_, paths))
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Failed to parse WKT");
|
||||||
|
}
|
||||||
|
agg::path_storage ps;
|
||||||
|
ps.move_to(extent_.minx(), extent_.miny());
|
||||||
|
ps.line_to(extent_.minx(), extent_.maxy());
|
||||||
|
ps.line_to(extent_.maxx(), extent_.maxy());
|
||||||
|
ps.line_to(extent_.maxx(), extent_.miny());
|
||||||
|
ps.close_polygon();
|
||||||
|
if (paths.size() != 1)
|
||||||
|
{
|
||||||
|
std::clog << "paths.size() != 1\n";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
mapnik::geometry_type & geom = paths[0];
|
||||||
|
poly_clipper clipped(geom,ps,
|
||||||
|
agg::clipper_and,
|
||||||
|
agg::clipper_non_zero,
|
||||||
|
agg::clipper_non_zero,
|
||||||
|
1);
|
||||||
|
clipped.rewind(0);
|
||||||
|
unsigned cmd;
|
||||||
|
double x,y;
|
||||||
|
mapnik::geometry_type geom2(mapnik::Polygon);
|
||||||
|
while ((cmd = clipped.vertex(&x, &y)) != mapnik::SEG_END) {
|
||||||
|
geom2.push_vertex(x,y,(mapnik::CommandType)cmd);
|
||||||
|
}
|
||||||
|
std::string expect = expected_+".png";
|
||||||
|
std::string actual = expected_+"_actual.png";
|
||||||
|
if (!mapnik::util::exists(expect))
|
||||||
|
{
|
||||||
|
std::clog << "generating expected image: " << expect << "\n";
|
||||||
|
render(geom2,geom.envelope(),expect);
|
||||||
|
}
|
||||||
|
render(geom2,geom.envelope(),actual);
|
||||||
|
return benchmark::compare_images(actual,expect);
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
boost::ptr_vector<mapnik::geometry_type> paths;
|
||||||
|
if (!mapnik::from_wkt(wkt_in_, paths))
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Failed to parse WKT");
|
||||||
|
}
|
||||||
|
agg::path_storage ps;
|
||||||
|
ps.move_to(extent_.minx(), extent_.miny());
|
||||||
|
ps.line_to(extent_.minx(), extent_.maxy());
|
||||||
|
ps.line_to(extent_.maxx(), extent_.maxy());
|
||||||
|
ps.line_to(extent_.maxx(), extent_.miny());
|
||||||
|
ps.close_polygon();
|
||||||
|
for (unsigned i=0;i<iterations_;++i)
|
||||||
|
{
|
||||||
|
BOOST_FOREACH (mapnik::geometry_type & geom , paths)
|
||||||
|
{
|
||||||
|
poly_clipper clipped(geom,ps,
|
||||||
|
agg::clipper_and,
|
||||||
|
agg::clipper_non_zero,
|
||||||
|
agg::clipper_non_zero,
|
||||||
|
1);
|
||||||
|
clipped.rewind(0);
|
||||||
|
unsigned cmd;
|
||||||
|
double x,y;
|
||||||
|
while ((cmd = clipped.vertex(&x, &y)) != mapnik::SEG_END) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class test3 : public benchmark::test_case
|
||||||
|
{
|
||||||
|
std::string wkt_in_;
|
||||||
|
mapnik::box2d<double> extent_;
|
||||||
|
std::string expected_;
|
||||||
|
public:
|
||||||
|
typedef mapnik::polygon_clipper<mapnik::geometry_type> poly_clipper;
|
||||||
|
test3(mapnik::parameters const& params,
|
||||||
|
std::string const& wkt_in,
|
||||||
|
mapnik::box2d<double> const& extent)
|
||||||
|
: test_case(params),
|
||||||
|
wkt_in_(wkt_in),
|
||||||
|
extent_(extent),
|
||||||
|
expected_("./benchmark/data/polygon_clipping_boost") {}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
std::string expected_wkt("Polygon((181 286.666667,233 454,315 340,421 446,463 324,559 466,631 321.320755,631 234.386861,528 178,394 229,329 138,212 134,183 228,200 264,181 238.244444,181 286.666667),(313 190,440 256,470 248,510 305,533 237,613 263,553 397,455 262,405 378,343 287,249 334,229 191,313 190))");
|
||||||
|
boost::ptr_vector<mapnik::geometry_type> paths;
|
||||||
|
if (!mapnik::from_wkt(wkt_in_, paths))
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Failed to parse WKT");
|
||||||
|
}
|
||||||
|
if (paths.size() != 1)
|
||||||
|
{
|
||||||
|
std::clog << "paths.size() != 1\n";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
mapnik::geometry_type & geom = paths[0];
|
||||||
|
poly_clipper clipped(extent_, geom);
|
||||||
|
unsigned cmd;
|
||||||
|
double x,y;
|
||||||
|
mapnik::geometry_type geom2(mapnik::Polygon);
|
||||||
|
while ((cmd = clipped.vertex(&x, &y)) != mapnik::SEG_END) {
|
||||||
|
geom2.push_vertex(x,y,(mapnik::CommandType)cmd);
|
||||||
|
}
|
||||||
|
std::string expect = expected_+".png";
|
||||||
|
std::string actual = expected_+"_actual.png";
|
||||||
|
if (!mapnik::util::exists(expect))
|
||||||
|
{
|
||||||
|
std::clog << "generating expected image: " << expect << "\n";
|
||||||
|
render(geom2,geom.envelope(),expect);
|
||||||
|
}
|
||||||
|
render(geom2,geom.envelope(),actual);
|
||||||
|
return benchmark::compare_images(actual,expect);
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
boost::ptr_vector<mapnik::geometry_type> paths;
|
||||||
|
if (!mapnik::from_wkt(wkt_in_, paths))
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Failed to parse WKT");
|
||||||
|
}
|
||||||
|
for (unsigned i=0;i<iterations_;++i)
|
||||||
|
{
|
||||||
|
BOOST_FOREACH ( mapnik::geometry_type & geom , paths)
|
||||||
|
{
|
||||||
|
poly_clipper clipped(extent_, geom);
|
||||||
|
unsigned cmd;
|
||||||
|
double x,y;
|
||||||
|
while ((cmd = clipped.vertex(&x, &y)) != mapnik::SEG_END) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
mapnik::parameters params;
|
||||||
|
benchmark::handle_args(argc,argv,params);
|
||||||
|
|
||||||
|
// polygon/rect clipping
|
||||||
|
// IN : POLYGON ((155 203, 233 454, 315 340, 421 446, 463 324, 559 466, 665 253, 528 178, 394 229, 329 138, 212 134, 183 228, 200 264, 155 203),(313 190, 440 256, 470 248, 510 305, 533 237, 613 263, 553 397, 455 262, 405 378, 343 287, 249 334, 229 191, 313 190))
|
||||||
|
// RECT : POLYGON ((181 106, 181 470, 631 470, 631 106, 181 106))
|
||||||
|
// OUT (expected)
|
||||||
|
// POLYGON ((181 286.6666666666667, 233 454, 315 340, 421 446, 463 324, 559 466, 631 321.3207547169811, 631 234.38686131386862, 528 178, 394 229, 329 138, 212 134, 183 228, 200 264, 181 238.24444444444444, 181 286.6666666666667),(313 190, 440 256, 470 248, 510 305, 533 237, 613 263, 553 397, 455 262, 405 378, 343 287, 249 334, 229 191, 313 190))
|
||||||
|
|
||||||
|
mapnik::box2d<double> clipping_box(181,106,631,470);
|
||||||
|
std::string filename_("./benchmark/data/polygon.wkt");
|
||||||
|
std::ifstream in(filename_.c_str(),std::ios_base::in | std::ios_base::binary);
|
||||||
|
if (!in.is_open())
|
||||||
|
throw std::runtime_error("could not open: '" + filename_ + "'");
|
||||||
|
std::string wkt_in( (std::istreambuf_iterator<char>(in) ),
|
||||||
|
(std::istreambuf_iterator<char>()) );
|
||||||
|
{
|
||||||
|
test1 test_runner(params,wkt_in,clipping_box);
|
||||||
|
run(test_runner,"clipping polygon with agg");
|
||||||
|
}
|
||||||
|
{
|
||||||
|
test2 test_runner(params,wkt_in,clipping_box);
|
||||||
|
run(test_runner,"clipping polygon with clipper");
|
||||||
|
}
|
||||||
|
{
|
||||||
|
test3 test_runner(params,wkt_in,clipping_box);
|
||||||
|
run(test_runner,"clipping polygon with boost");
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
79
benchmark/test_polygon_clipping_rendering.cpp
Normal file
79
benchmark/test_polygon_clipping_rendering.cpp
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
#include "bench_framework.hpp"
|
||||||
|
#include <mapnik/map.hpp>
|
||||||
|
#include <mapnik/load_map.hpp>
|
||||||
|
#include <mapnik/graphics.hpp>
|
||||||
|
#include <mapnik/agg_renderer.hpp>
|
||||||
|
#include <mapnik/datasource_cache.hpp>
|
||||||
|
|
||||||
|
class test : public benchmark::test_case
|
||||||
|
{
|
||||||
|
std::string xml_;
|
||||||
|
mapnik::box2d<double> extent_;
|
||||||
|
public:
|
||||||
|
test(mapnik::parameters const& params,
|
||||||
|
std::string const& xml,
|
||||||
|
mapnik::box2d<double> const& extent)
|
||||||
|
: test_case(params),
|
||||||
|
xml_(xml),
|
||||||
|
extent_(extent)
|
||||||
|
{}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
mapnik::Map m(256,256);
|
||||||
|
mapnik::load_map(m,xml_);
|
||||||
|
m.zoom_to_box(extent_);
|
||||||
|
mapnik::image_32 im(m.width(),m.height());
|
||||||
|
mapnik::agg_renderer<mapnik::image_32> ren(m,im);
|
||||||
|
ren.apply();
|
||||||
|
//mapnik::save_to_file(im,"test.png");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
mapnik::Map m(256,256);
|
||||||
|
mapnik::load_map(m,xml_);
|
||||||
|
m.zoom_to_box(extent_);
|
||||||
|
for (unsigned i=0;i<iterations_;++i)
|
||||||
|
{
|
||||||
|
mapnik::image_32 im(m.width(),m.height());
|
||||||
|
mapnik::agg_renderer<mapnik::image_32> ren(m,im);
|
||||||
|
ren.apply();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
mapnik::parameters params;
|
||||||
|
benchmark::handle_args(argc,argv,params);
|
||||||
|
mapnik::datasource_cache::instance().register_datasources("./plugins/input/");
|
||||||
|
mapnik::box2d<double> z1(-20037508.3428,-8317435.0606,20037508.3428,18399242.7298);
|
||||||
|
// bbox for 16/10491/22911.png
|
||||||
|
mapnik::box2d<double> z16(-13622912.929097254,6026906.8062295765,-13621689.93664469,6028129.79868214);
|
||||||
|
{
|
||||||
|
test test_runner(params,
|
||||||
|
"benchmark/data/polygon_rendering_clip.xml",
|
||||||
|
z1);
|
||||||
|
run(test_runner,"polygon clip render z1");
|
||||||
|
}
|
||||||
|
{
|
||||||
|
test test_runner(params,
|
||||||
|
"benchmark/data/polygon_rendering_no_clip.xml",
|
||||||
|
z1);
|
||||||
|
run(test_runner,"polygon noclip render z1");
|
||||||
|
}
|
||||||
|
{
|
||||||
|
test test_runner(params,
|
||||||
|
"benchmark/data/polygon_rendering_clip.xml",
|
||||||
|
z16);
|
||||||
|
run(test_runner,"polygon clip render z16");
|
||||||
|
}
|
||||||
|
{
|
||||||
|
test test_runner(params,
|
||||||
|
"benchmark/data/polygon_rendering_no_clip.xml",
|
||||||
|
z16);
|
||||||
|
run(test_runner,"polygon noclip render z16");
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
96
benchmark/test_proj_transform1.cpp
Normal file
96
benchmark/test_proj_transform1.cpp
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
#include "bench_framework.hpp"
|
||||||
|
#include <mapnik/box2d.hpp>
|
||||||
|
#include <mapnik/projection.hpp>
|
||||||
|
#include <mapnik/proj_transform.hpp>
|
||||||
|
|
||||||
|
class test : public benchmark::test_case
|
||||||
|
{
|
||||||
|
std::string src_;
|
||||||
|
std::string dest_;
|
||||||
|
mapnik::box2d<double> from_;
|
||||||
|
mapnik::box2d<double> to_;
|
||||||
|
bool defer_proj4_init_;
|
||||||
|
public:
|
||||||
|
test(mapnik::parameters const& params,
|
||||||
|
std::string const& src,
|
||||||
|
std::string const& dest,
|
||||||
|
mapnik::box2d<double> const& from,
|
||||||
|
mapnik::box2d<double> const& to,
|
||||||
|
bool defer_proj)
|
||||||
|
: test_case(params),
|
||||||
|
src_(src),
|
||||||
|
dest_(dest),
|
||||||
|
from_(from),
|
||||||
|
to_(to),
|
||||||
|
defer_proj4_init_(defer_proj) {}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
mapnik::projection src(src_,defer_proj4_init_);
|
||||||
|
mapnik::projection dest(dest_,defer_proj4_init_);
|
||||||
|
mapnik::proj_transform tr(src,dest);
|
||||||
|
mapnik::box2d<double> bbox = from_;
|
||||||
|
if (!tr.forward(bbox)) return false;
|
||||||
|
return ((std::fabs(bbox.minx() - to_.minx()) < .5) &&
|
||||||
|
(std::fabs(bbox.maxx() - to_.maxx()) < .5) &&
|
||||||
|
(std::fabs(bbox.miny() - to_.miny()) < .5) &&
|
||||||
|
(std::fabs(bbox.maxy() - to_.maxy()) < .5)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
for (int i=-180;i<180;++i)
|
||||||
|
{
|
||||||
|
for (int j=-85;j<85;++j)
|
||||||
|
{
|
||||||
|
mapnik::projection src(src_,defer_proj4_init_);
|
||||||
|
mapnik::projection dest(dest_,defer_proj4_init_);
|
||||||
|
mapnik::proj_transform tr(src,dest);
|
||||||
|
mapnik::box2d<double> box(i,j,i,j);
|
||||||
|
if (!tr.forward(box)) throw std::runtime_error("could not transform coords");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// echo -180 -60 | cs2cs -f "%.10f" +init=epsg:4326 +to +init=epsg:3857
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
mapnik::parameters params;
|
||||||
|
benchmark::handle_args(argc,argv,params);
|
||||||
|
mapnik::box2d<double> from(-180,-80,180,80);
|
||||||
|
mapnik::box2d<double> to(-20037508.3427892476,-15538711.0963092316,20037508.3427892476,15538711.0963092316);
|
||||||
|
std::string from_str("+init=epsg:4326");
|
||||||
|
std::string to_str("+init=epsg:3857");
|
||||||
|
std::string from_str2("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs");
|
||||||
|
std::string to_str2("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over");
|
||||||
|
test test_runner(params,
|
||||||
|
from_str,
|
||||||
|
to_str,
|
||||||
|
from,
|
||||||
|
to,
|
||||||
|
true);
|
||||||
|
run(test_runner,"lonlat->merc epsg");
|
||||||
|
test test_runner2(params,
|
||||||
|
from_str2,
|
||||||
|
to_str2,
|
||||||
|
from,
|
||||||
|
to,
|
||||||
|
true);
|
||||||
|
run(test_runner2,"lonlat->merc literal");
|
||||||
|
test test_runner3(params,
|
||||||
|
to_str,
|
||||||
|
from_str,
|
||||||
|
to,
|
||||||
|
from,
|
||||||
|
true);
|
||||||
|
run(test_runner3,"merc->lonlat epsg");
|
||||||
|
test test_runner4(params,
|
||||||
|
to_str2,
|
||||||
|
from_str2,
|
||||||
|
to,
|
||||||
|
from,
|
||||||
|
true);
|
||||||
|
return run(test_runner4,"merc->lonlat literal");
|
||||||
|
}
|
100
benchmark/test_rendering.cpp
Normal file
100
benchmark/test_rendering.cpp
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
#include "bench_framework.hpp"
|
||||||
|
#include <mapnik/map.hpp>
|
||||||
|
#include <mapnik/image_util.hpp>
|
||||||
|
#include <mapnik/load_map.hpp>
|
||||||
|
#include <mapnik/graphics.hpp>
|
||||||
|
#include <mapnik/agg_renderer.hpp>
|
||||||
|
#include <mapnik/datasource_cache.hpp>
|
||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
|
class test : public benchmark::test_case
|
||||||
|
{
|
||||||
|
std::string xml_;
|
||||||
|
mapnik::box2d<double> extent_;
|
||||||
|
mapnik::value_integer width_;
|
||||||
|
mapnik::value_integer height_;
|
||||||
|
std::string preview_;
|
||||||
|
public:
|
||||||
|
test(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
xml_(),
|
||||||
|
extent_(),
|
||||||
|
width_(*params.get<mapnik::value_integer>("width",256)),
|
||||||
|
height_(*params.get<mapnik::value_integer>("height",256)),
|
||||||
|
preview_(*params.get<std::string>("preview",""))
|
||||||
|
{
|
||||||
|
boost::optional<std::string> map = params.get<std::string>("map");
|
||||||
|
if (!map)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("please provide a --map=<path to xml> arg");
|
||||||
|
}
|
||||||
|
xml_ = *map;
|
||||||
|
|
||||||
|
boost::optional<std::string> ext = params.get<std::string>("extent");
|
||||||
|
if (ext && !ext->empty())
|
||||||
|
{
|
||||||
|
if (!extent_.from_string(*ext))
|
||||||
|
throw std::runtime_error("could not parse `extent` string" + *ext);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw std::runtime_error("please provide a --extent=<minx,miny,maxx,maxy> arg");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
mapnik::Map m(width_,height_);
|
||||||
|
mapnik::load_map(m,xml_,true);
|
||||||
|
m.zoom_to_box(extent_);
|
||||||
|
mapnik::image_32 im(m.width(),m.height());
|
||||||
|
mapnik::agg_renderer<mapnik::image_32> ren(m,im);
|
||||||
|
ren.apply();
|
||||||
|
if (!preview_.empty()) mapnik::save_to_file(im,preview_);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
mapnik::Map m(width_,height_);
|
||||||
|
mapnik::load_map(m,xml_);
|
||||||
|
m.zoom_to_box(extent_);
|
||||||
|
for (unsigned i=0;i<iterations_;++i)
|
||||||
|
{
|
||||||
|
mapnik::image_32 im(m.width(),m.height());
|
||||||
|
mapnik::agg_renderer<mapnik::image_32> ren(m,im);
|
||||||
|
ren.apply();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
mapnik::parameters params;
|
||||||
|
benchmark::handle_args(argc,argv,params);
|
||||||
|
boost::optional<std::string> name = params.get<std::string>("name");
|
||||||
|
if (!name)
|
||||||
|
{
|
||||||
|
std::clog << "please provide a name for this test\n";
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
bool success = mapnik::freetype_engine::register_fonts("./fonts", true);
|
||||||
|
if (!success) {
|
||||||
|
std::clog << "warning, did not register any new fonts!\n";
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
mapnik::datasource_cache::instance().register_datasources("./plugins/input/");
|
||||||
|
{
|
||||||
|
test test_runner(params);
|
||||||
|
run(test_runner,*name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (std::exception const& ex)
|
||||||
|
{
|
||||||
|
std::clog << ex.what() << "\n";
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
29
benchmark/test_to_bool.cpp
Normal file
29
benchmark/test_to_bool.cpp
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
#include "bench_framework.hpp"
|
||||||
|
#include <mapnik/util/conversions.hpp>
|
||||||
|
|
||||||
|
class test : public benchmark::test_case
|
||||||
|
{
|
||||||
|
std::string value_;
|
||||||
|
public:
|
||||||
|
test(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
value_("true") {}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
bool result = false;
|
||||||
|
mapnik::util::string2bool(value_.data(),value_.data()+value_.size(),result);
|
||||||
|
if (!result) return result;
|
||||||
|
mapnik::util::string2bool(value_,result);
|
||||||
|
return (result == true);
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
bool result = false;
|
||||||
|
mapnik::util::string2bool(value_,result);
|
||||||
|
mapnik::util::string2bool(value_.data(),value_.data()+value_.size(),result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
BENCHMARK(test,"string->bool")
|
31
benchmark/test_to_double.cpp
Normal file
31
benchmark/test_to_double.cpp
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
#include "bench_framework.hpp"
|
||||||
|
#include <mapnik/util/conversions.hpp>
|
||||||
|
|
||||||
|
class test : public benchmark::test_case
|
||||||
|
{
|
||||||
|
std::string value_;
|
||||||
|
public:
|
||||||
|
test(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
value_("1.23456789") {}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
double result = 0;
|
||||||
|
if (!mapnik::util::string2double(value_.data(),value_.data()+value_.size(),result)) return false;
|
||||||
|
if (result != 1.23456789) return false;
|
||||||
|
result = 0;
|
||||||
|
if (!mapnik::util::string2double(value_,result)) return false;
|
||||||
|
if (result != 1.23456789) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
double result = 0;
|
||||||
|
mapnik::util::string2double(value_,result);
|
||||||
|
mapnik::util::string2double(value_.data(),value_.data()+value_.size(),result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
BENCHMARK(test,"string->double")
|
31
benchmark/test_to_int.cpp
Normal file
31
benchmark/test_to_int.cpp
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
#include "bench_framework.hpp"
|
||||||
|
#include <mapnik/util/conversions.hpp>
|
||||||
|
|
||||||
|
class test : public benchmark::test_case
|
||||||
|
{
|
||||||
|
std::string value_;
|
||||||
|
public:
|
||||||
|
test(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
value_("123456789") {}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
mapnik::value_integer result = 0;
|
||||||
|
if (!mapnik::util::string2int(value_.data(),value_.data()+value_.size(),result)) return false;
|
||||||
|
if (result != 123456789) return false;
|
||||||
|
result = 0;
|
||||||
|
if (!mapnik::util::string2int(value_,result)) return false;
|
||||||
|
if (result != 123456789) return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
mapnik::value_integer result = 0;
|
||||||
|
mapnik::util::string2int(value_,result);
|
||||||
|
mapnik::util::string2int(value_.data(),value_.data()+value_.size(),result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
BENCHMARK(test,"string->int")
|
27
benchmark/test_to_string1.cpp
Normal file
27
benchmark/test_to_string1.cpp
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
#include "bench_framework.hpp"
|
||||||
|
#include <mapnik/util/conversions.hpp>
|
||||||
|
|
||||||
|
class test : public benchmark::test_case
|
||||||
|
{
|
||||||
|
double value_;
|
||||||
|
public:
|
||||||
|
test(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
value_(-0.1234) {}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
std::string s;
|
||||||
|
mapnik::util::to_string(s,value_);
|
||||||
|
return (s == "-0.1234");
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
std::string out;
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
out.clear();
|
||||||
|
mapnik::util::to_string(out,value_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
BENCHMARK(test,"to_string double->string")
|
28
benchmark/test_to_string2.cpp
Normal file
28
benchmark/test_to_string2.cpp
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
#include "bench_framework.hpp"
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
|
class test : public benchmark::test_case
|
||||||
|
{
|
||||||
|
double value_;
|
||||||
|
public:
|
||||||
|
test(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
value_(-0.1234) {}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
std::ostringstream s;
|
||||||
|
s << value_;
|
||||||
|
return (s.str() == "-0.1234");
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
std::string out;
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
std::ostringstream s;
|
||||||
|
s << value_;
|
||||||
|
out = s.str();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
BENCHMARK(test,"ostringstream double->string")
|
36
benchmark/test_transcoding.cpp
Normal file
36
benchmark/test_transcoding.cpp
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
#include "bench_framework.hpp"
|
||||||
|
#include <mapnik/unicode.hpp>
|
||||||
|
#include <mapnik/value.hpp>
|
||||||
|
|
||||||
|
class test : public benchmark::test_case
|
||||||
|
{
|
||||||
|
std::string expr_;
|
||||||
|
public:
|
||||||
|
test(mapnik::parameters const& params)
|
||||||
|
: test_case(params),
|
||||||
|
expr_("this is a fairly long string that might contain unicode") {}
|
||||||
|
bool validate() const
|
||||||
|
{
|
||||||
|
mapnik::transcoder tr_("utf-8");
|
||||||
|
mapnik::value_unicode_string ustr = tr_.transcode(expr_.data(),expr_.size());
|
||||||
|
std::string utf8;
|
||||||
|
mapnik::to_utf8(ustr,utf8);
|
||||||
|
return utf8 == expr_;
|
||||||
|
}
|
||||||
|
void operator()() const
|
||||||
|
{
|
||||||
|
mapnik::transcoder tr_("utf-8");
|
||||||
|
mapnik::value_unicode_string ustr;
|
||||||
|
for (std::size_t i=0;i<iterations_;++i) {
|
||||||
|
ustr = tr_.transcode(expr_.data(),expr_.size());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
mapnik::parameters params;
|
||||||
|
benchmark::handle_args(argc,argv,params);
|
||||||
|
test test_runner(params);
|
||||||
|
return run(test_runner,"transcode");
|
||||||
|
}
|
|
@ -44,11 +44,12 @@ target_path = os.path.normpath(env['PYTHON_INSTALL_LOCATION'] + os.path.sep + 'm
|
||||||
target_path_deprecated = os.path.normpath(env['PYTHON_INSTALL_LOCATION'] + os.path.sep + 'mapnik2')
|
target_path_deprecated = os.path.normpath(env['PYTHON_INSTALL_LOCATION'] + os.path.sep + 'mapnik2')
|
||||||
|
|
||||||
py_env = env.Clone()
|
py_env = env.Clone()
|
||||||
|
|
||||||
py_env.Append(CPPPATH = env['PYTHON_INCLUDES'])
|
py_env.Append(CPPPATH = env['PYTHON_INCLUDES'])
|
||||||
|
|
||||||
py_env.Append(CPPDEFINES = env['LIBMAPNIK_DEFINES'])
|
py_env.Append(CPPDEFINES = env['LIBMAPNIK_DEFINES'])
|
||||||
|
|
||||||
py_env['LIBS'] = ['mapnik',env['BOOST_PYTHON_LIB']]
|
py_env['LIBS'] = [env['MAPNIK_NAME'],env['BOOST_PYTHON_LIB']]
|
||||||
|
|
||||||
link_all_libs = env['LINKING'] == 'static' or env['RUNTIME_LINK'] == 'static' or (env['PLATFORM'] == 'Darwin' and not env['PYTHON_DYNAMIC_LOOKUP'])
|
link_all_libs = env['LINKING'] == 'static' or env['RUNTIME_LINK'] == 'static' or (env['PLATFORM'] == 'Darwin' and not env['PYTHON_DYNAMIC_LOOKUP'])
|
||||||
|
|
||||||
|
@ -184,8 +185,8 @@ if 'uninstall' not in COMMAND_LINE_TARGETS:
|
||||||
py_env.Append(LIBS=env['CAIRO_ALL_LIBS'])
|
py_env.Append(LIBS=env['CAIRO_ALL_LIBS'])
|
||||||
|
|
||||||
if env['HAS_PYCAIRO']:
|
if env['HAS_PYCAIRO']:
|
||||||
py_env.ParseConfig('pkg-config --cflags pycairo')
|
|
||||||
py_env.Append(CPPDEFINES = '-DHAVE_PYCAIRO')
|
py_env.Append(CPPDEFINES = '-DHAVE_PYCAIRO')
|
||||||
|
py_env.Append(CPPPATH = env['PYCAIRO_PATHS'])
|
||||||
|
|
||||||
_mapnik = py_env.LoadableModule('mapnik/_mapnik', sources, LDMODULEPREFIX='', LDMODULESUFFIX='.so',LINKFLAGS=linkflags)
|
_mapnik = py_env.LoadableModule('mapnik/_mapnik', sources, LDMODULEPREFIX='', LDMODULESUFFIX='.so',LINKFLAGS=linkflags)
|
||||||
|
|
||||||
|
|
|
@ -439,6 +439,52 @@ def PostGIS(**keywords):
|
||||||
keywords['type'] = 'postgis'
|
keywords['type'] = 'postgis'
|
||||||
return CreateDatasource(keywords)
|
return CreateDatasource(keywords)
|
||||||
|
|
||||||
|
def PgRaster(**keywords):
|
||||||
|
"""Create a PgRaster Datasource.
|
||||||
|
|
||||||
|
Required keyword arguments:
|
||||||
|
dbname -- database name to connect to
|
||||||
|
table -- table name or subselect query
|
||||||
|
|
||||||
|
*Note: if using subselects for the 'table' value consider also
|
||||||
|
passing the 'raster_field' and 'srid' and 'extent_from_subquery'
|
||||||
|
options and/or specifying the 'raster_table' option.
|
||||||
|
|
||||||
|
Optional db connection keyword arguments:
|
||||||
|
user -- database user to connect as (default: see postgres docs)
|
||||||
|
password -- password for database user (default: see postgres docs)
|
||||||
|
host -- portgres hostname (default: see postgres docs)
|
||||||
|
port -- postgres port (default: see postgres docs)
|
||||||
|
initial_size -- integer size of connection pool (default: 1)
|
||||||
|
max_size -- integer max of connection pool (default: 10)
|
||||||
|
persist_connection -- keep connection open (default: True)
|
||||||
|
|
||||||
|
Optional table-level keyword arguments:
|
||||||
|
extent -- manually specified data extent (comma delimited string, default: None)
|
||||||
|
estimate_extent -- boolean, direct PostGIS to use the faster, less accurate `estimate_extent` over `extent` (default: False)
|
||||||
|
extent_from_subquery -- boolean, direct Mapnik to query Postgis for the extent of the raw 'table' value (default: uses 'geometry_table')
|
||||||
|
raster_table -- specify geometry table to use to look up metadata (default: automatically parsed from 'table' value)
|
||||||
|
raster_field -- specify geometry field to use (default: first entry in raster_columns)
|
||||||
|
srid -- specify srid to use (default: auto-detected from geometry_field)
|
||||||
|
row_limit -- integer limit of rows to return (default: 0)
|
||||||
|
cursor_size -- integer size of binary cursor to use (default: 0, no binary cursor is used)
|
||||||
|
use_overviews -- boolean, use overviews when available (default: false)
|
||||||
|
prescale_rasters -- boolean, scale rasters on the db side (default: false)
|
||||||
|
clip_rasters -- boolean, clip rasters on the db side (default: false)
|
||||||
|
band -- integer, if non-zero interprets the given band (1-based offset) as a data raster (default: 0)
|
||||||
|
|
||||||
|
>>> from mapnik import PgRaster, Layer
|
||||||
|
>>> params = dict(dbname='mapnik',table='osm',user='postgres',password='gis')
|
||||||
|
>>> params['estimate_extent'] = False
|
||||||
|
>>> params['extent'] = '-20037508,-19929239,20037508,19929239'
|
||||||
|
>>> pgraster = PgRaster(**params)
|
||||||
|
>>> lyr = Layer('PgRaster Layer')
|
||||||
|
>>> lyr.datasource = pgraster
|
||||||
|
|
||||||
|
"""
|
||||||
|
keywords['type'] = 'pgraster'
|
||||||
|
return CreateDatasource(keywords)
|
||||||
|
|
||||||
|
|
||||||
def Raster(**keywords):
|
def Raster(**keywords):
|
||||||
"""Create a Raster (Tiff) Datasource.
|
"""Create a Raster (Tiff) Datasource.
|
||||||
|
@ -976,17 +1022,6 @@ class _TextSymbolizer(TextSymbolizer,_injector):
|
||||||
self.properties.maximum_angle_char_delta = maximum_angle_char_delta
|
self.properties.maximum_angle_char_delta = maximum_angle_char_delta
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@property
|
|
||||||
def force_odd_labels(self):
|
|
||||||
return self.properties.force_odd_labels
|
|
||||||
|
|
||||||
@force_odd_labels.setter
|
|
||||||
def force_odd_labels(self, force_odd_labels):
|
|
||||||
self.properties.force_odd_labels = force_odd_labels
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def allow_overlap(self):
|
def allow_overlap(self):
|
||||||
return self.properties.allow_overlap
|
return self.properties.allow_overlap
|
||||||
|
|
|
@ -134,6 +134,7 @@ void export_map()
|
||||||
.value("ADJUST_BBOX_HEIGHT",mapnik::Map::ADJUST_BBOX_HEIGHT)
|
.value("ADJUST_BBOX_HEIGHT",mapnik::Map::ADJUST_BBOX_HEIGHT)
|
||||||
.value("ADJUST_CANVAS_WIDTH",mapnik::Map::ADJUST_CANVAS_WIDTH)
|
.value("ADJUST_CANVAS_WIDTH",mapnik::Map::ADJUST_CANVAS_WIDTH)
|
||||||
.value("ADJUST_CANVAS_HEIGHT", mapnik::Map::ADJUST_CANVAS_HEIGHT)
|
.value("ADJUST_CANVAS_HEIGHT", mapnik::Map::ADJUST_CANVAS_HEIGHT)
|
||||||
|
.value("RESPECT", mapnik::Map::RESPECT)
|
||||||
;
|
;
|
||||||
|
|
||||||
class_<std::vector<layer> >("Layers")
|
class_<std::vector<layer> >("Layers")
|
||||||
|
|
|
@ -345,9 +345,6 @@ void export_shield_symbolizer()
|
||||||
.add_property("fontset",
|
.add_property("fontset",
|
||||||
make_function(&shield_symbolizer::get_fontset,return_value_policy<copy_const_reference>()),
|
make_function(&shield_symbolizer::get_fontset,return_value_policy<copy_const_reference>()),
|
||||||
&shield_symbolizer::set_fontset)
|
&shield_symbolizer::set_fontset)
|
||||||
.add_property("force_odd_labels",
|
|
||||||
&shield_symbolizer::get_force_odd_labels,
|
|
||||||
&shield_symbolizer::set_force_odd_labels)
|
|
||||||
.add_property("halo_fill",
|
.add_property("halo_fill",
|
||||||
make_function(&shield_symbolizer::get_halo_fill,return_value_policy<copy_const_reference>()),
|
make_function(&shield_symbolizer::get_halo_fill,return_value_policy<copy_const_reference>()),
|
||||||
&shield_symbolizer::set_halo_fill)
|
&shield_symbolizer::set_halo_fill)
|
||||||
|
|
|
@ -431,7 +431,6 @@ void export_text_placement()
|
||||||
.def_readwrite("minimum_padding", &text_symbolizer_properties::minimum_padding)
|
.def_readwrite("minimum_padding", &text_symbolizer_properties::minimum_padding)
|
||||||
.def_readwrite("minimum_path_length", &text_symbolizer_properties::minimum_path_length)
|
.def_readwrite("minimum_path_length", &text_symbolizer_properties::minimum_path_length)
|
||||||
.def_readwrite("maximum_angle_char_delta", &text_symbolizer_properties::max_char_angle_delta)
|
.def_readwrite("maximum_angle_char_delta", &text_symbolizer_properties::max_char_angle_delta)
|
||||||
.def_readwrite("force_odd_labels", &text_symbolizer_properties::force_odd_labels)
|
|
||||||
.def_readwrite("allow_overlap", &text_symbolizer_properties::allow_overlap)
|
.def_readwrite("allow_overlap", &text_symbolizer_properties::allow_overlap)
|
||||||
.def_readwrite("largest_bbox_only", &text_symbolizer_properties::largest_bbox_only)
|
.def_readwrite("largest_bbox_only", &text_symbolizer_properties::largest_bbox_only)
|
||||||
.def_readwrite("text_ratio", &text_symbolizer_properties::text_ratio)
|
.def_readwrite("text_ratio", &text_symbolizer_properties::text_ratio)
|
||||||
|
|
144
bootstrap.sh
Executable file
144
bootstrap.sh
Executable file
|
@ -0,0 +1,144 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
#set -eu
|
||||||
|
|
||||||
|
: '
|
||||||
|
|
||||||
|
todo
|
||||||
|
|
||||||
|
- gdal shared lib / avoid dlclose atexit crash
|
||||||
|
- clang debs to s3
|
||||||
|
- docs for base setup: sudo apt-get -y install zlib1g-dev python-dev make git python-dev
|
||||||
|
- shrink icu data
|
||||||
|
- cairo/pycairo
|
||||||
|
- pkg-config-less
|
||||||
|
'
|
||||||
|
|
||||||
|
function setup_mason() {
|
||||||
|
if [[ ! -d ./.mason ]]; then
|
||||||
|
git clone --depth 1 https://github.com/mapbox/mason.git ./.mason
|
||||||
|
else
|
||||||
|
echo "Updating to latest mason"
|
||||||
|
(cd ./.mason && git pull)
|
||||||
|
fi
|
||||||
|
export MASON_DIR=$(pwd)/.mason
|
||||||
|
if [[ $(uname -s) == 'Linux' ]]; then source ./.mason/scripts/setup_cpp11_toolchain.sh; fi
|
||||||
|
export PATH=$(pwd)/.mason:$PATH
|
||||||
|
export CXX=${CXX:-clang++}
|
||||||
|
export CC=${CC:-clang}
|
||||||
|
}
|
||||||
|
|
||||||
|
function ip() {
|
||||||
|
if [[ ! -d ./mason_packages/${3}/${1}/ ]]; then
|
||||||
|
mason install $1 $2
|
||||||
|
mason link $1 $2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_mason_deps() {
|
||||||
|
MASON_PLATFORM_ID=$(mason env MASON_PLATFORM_ID)
|
||||||
|
ip freetype 2.5.4 $MASON_PLATFORM_ID
|
||||||
|
ip harfbuzz 2cd5323 $MASON_PLATFORM_ID
|
||||||
|
ip jpeg_turbo 1.4.0 $MASON_PLATFORM_ID
|
||||||
|
ip libxml2 2.9.2 $MASON_PLATFORM_ID
|
||||||
|
ip libpng 1.6.16 $MASON_PLATFORM_ID
|
||||||
|
ip webp 0.4.2 $MASON_PLATFORM_ID
|
||||||
|
ip icu 54.1 $MASON_PLATFORM_ID
|
||||||
|
ip proj 4.8.0 $MASON_PLATFORM_ID
|
||||||
|
ip libtiff 4.0.4beta $MASON_PLATFORM_ID
|
||||||
|
ip boost 1.57.0 $MASON_PLATFORM_ID
|
||||||
|
ip boost_libsystem 1.57.0 $MASON_PLATFORM_ID
|
||||||
|
ip boost_libthread 1.57.0 $MASON_PLATFORM_ID
|
||||||
|
ip boost_libfilesystem 1.57.0 $MASON_PLATFORM_ID
|
||||||
|
ip boost_libprogram_options 1.57.0 $MASON_PLATFORM_ID
|
||||||
|
ip boost_libregex 1.57.0 $MASON_PLATFORM_ID
|
||||||
|
ip boost_libpython 1.57.0 $MASON_PLATFORM_ID
|
||||||
|
ip libpq 9.4.0 $MASON_PLATFORM_ID
|
||||||
|
ip sqlite 3.8.8.1 $MASON_PLATFORM_ID
|
||||||
|
ip gdal 1.11.1 $MASON_PLATFORM_ID
|
||||||
|
ip expat 2.1.0 $MASON_PLATFORM_ID
|
||||||
|
ip pixman 0.32.6 $MASON_PLATFORM_ID
|
||||||
|
ip cairo 1.12.18 $MASON_PLATFORM_ID
|
||||||
|
}
|
||||||
|
|
||||||
|
function setup_nose() {
|
||||||
|
if [[ ! -d $(pwd)/nose-1.3.4 ]]; then
|
||||||
|
wget -q https://pypi.python.org/packages/source/n/nose/nose-1.3.4.tar.gz
|
||||||
|
tar -xzf nose-1.3.4.tar.gz
|
||||||
|
fi
|
||||||
|
export PYTHONPATH=$(pwd)/nose-1.3.4:${PYTHONPATH}
|
||||||
|
}
|
||||||
|
|
||||||
|
function make_config() {
|
||||||
|
local MASON_LINKED_REL=./mason_packages/.link
|
||||||
|
export C_INCLUDE_PATH="${MASON_LINKED_REL}/include"
|
||||||
|
export CPLUS_INCLUDE_PATH="${MASON_LINKED_REL}/include"
|
||||||
|
export LIBRARY_PATH="${MASON_LINKED_REL}/lib"
|
||||||
|
export PATH="${MASON_LINKED_REL}/bin":${PATH}
|
||||||
|
|
||||||
|
echo "
|
||||||
|
CXX = '$CXX'
|
||||||
|
CC = '$CC'
|
||||||
|
CUSTOM_CXXFLAGS = '-fvisibility-inlines-hidden -DU_CHARSET_IS_UTF8=1'
|
||||||
|
CUSTOM_LDFLAGS = '-L${MASON_LINKED_REL}/lib'
|
||||||
|
RUNTIME_LINK = 'static'
|
||||||
|
INPUT_PLUGINS = 'all'
|
||||||
|
PATH = '${MASON_LINKED_REL}/bin'
|
||||||
|
PKG_CONFIG_PATH = '${MASON_LINKED_REL}/lib/pkgconfig'
|
||||||
|
PATH_REMOVE = '/usr:/usr/local'
|
||||||
|
PATH_REPLACE = '/Users/travis/build/mapbox/mason/mason_packages:./mason_packages'
|
||||||
|
BOOST_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||||
|
BOOST_LIBS = '${MASON_LINKED_REL}/lib'
|
||||||
|
ICU_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||||
|
ICU_LIBS = '${MASON_LINKED_REL}/lib'
|
||||||
|
HB_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||||
|
HB_LIBS = '${MASON_LINKED_REL}/lib'
|
||||||
|
PNG_INCLUDES = '${MASON_LINKED_REL}/include/libpng16'
|
||||||
|
PNG_LIBS = '${MASON_LINKED_REL}/lib'
|
||||||
|
JPEG_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||||
|
JPEG_LIBS = '${MASON_LINKED_REL}/lib'
|
||||||
|
TIFF_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||||
|
TIFF_LIBS = '${MASON_LINKED_REL}/lib'
|
||||||
|
WEBP_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||||
|
WEBP_LIBS = '${MASON_LINKED_REL}/lib'
|
||||||
|
PROJ_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||||
|
PROJ_LIBS = '${MASON_LINKED_REL}/lib'
|
||||||
|
FREETYPE_INCLUDES = '${MASON_LINKED_REL}/include/freetype2'
|
||||||
|
FREETYPE_LIBS = '${MASON_LINKED_REL}/lib'
|
||||||
|
XML2_INCLUDES = '${MASON_LINKED_REL}/include/libxml2'
|
||||||
|
XML2_LIBS = '${MASON_LINKED_REL}/lib'
|
||||||
|
SVG_RENDERER = True
|
||||||
|
CAIRO_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||||
|
CAIRO_LIBS = '${MASON_LINKED_REL}/lib'
|
||||||
|
SQLITE_INCLUDES = '${MASON_LINKED_REL}/include'
|
||||||
|
SQLITE_LIBS = '${MASON_LINKED_REL}/lib'
|
||||||
|
FRAMEWORK_PYTHON = False
|
||||||
|
BENCHMARK = True
|
||||||
|
CPP_TESTS = True
|
||||||
|
PGSQL2SQLITE = True
|
||||||
|
BINDINGS = 'python'
|
||||||
|
XMLPARSER = 'ptree'
|
||||||
|
SVG2PNG = True
|
||||||
|
SAMPLE_INPUT_PLUGINS = True
|
||||||
|
" > ./config.py
|
||||||
|
}
|
||||||
|
|
||||||
|
function setup_runtime_settings() {
|
||||||
|
local MASON_LINKED_ABS=$(pwd)/mason_packages/.link
|
||||||
|
export PROJ_LIB=${MASON_LINKED_ABS}/share/proj/
|
||||||
|
export ICU_DATA=${MASON_LINKED_ABS}/share/icu/54.1/
|
||||||
|
export GDAL_DATA=${MASON_LINKED_ABS}/share/gdal
|
||||||
|
}
|
||||||
|
|
||||||
|
function main() {
|
||||||
|
setup_mason
|
||||||
|
install_mason_deps
|
||||||
|
setup_nose
|
||||||
|
make_config
|
||||||
|
setup_runtime_settings
|
||||||
|
echo "Ready, now run:"
|
||||||
|
echo ""
|
||||||
|
echo " ./configure && make"
|
||||||
|
}
|
||||||
|
|
||||||
|
main
|
4
configure
vendored
4
configure
vendored
|
@ -1,3 +1,5 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
python scons/scons.py --implicit-deps-changed configure "$@"
|
PYTHON=${PYTHON:-python}
|
||||||
|
|
||||||
|
$PYTHON scons/scons.py --implicit-deps-changed configure "$@"
|
||||||
|
|
|
@ -40,7 +40,7 @@ if env['HAS_CAIRO']:
|
||||||
demo_env.PrependUnique(CPPPATH=env['CAIRO_CPPPATHS'])
|
demo_env.PrependUnique(CPPPATH=env['CAIRO_CPPPATHS'])
|
||||||
demo_env.Append(CPPDEFINES = '-DHAVE_CAIRO')
|
demo_env.Append(CPPDEFINES = '-DHAVE_CAIRO')
|
||||||
|
|
||||||
libraries = ['mapnik']
|
libraries = [env['MAPNIK_NAME']]
|
||||||
libraries.extend(copy(env['LIBMAPNIK_LIBS']))
|
libraries.extend(copy(env['LIBMAPNIK_LIBS']))
|
||||||
rundemo = demo_env.Program('rundemo', source, LIBS=libraries, LINKFLAGS=env["CUSTOM_LDFLAGS"])
|
rundemo = demo_env.Program('rundemo', source, LIBS=libraries, LINKFLAGS=env["CUSTOM_LDFLAGS"])
|
||||||
|
|
||||||
|
|
16
deps/agg/src/agg_pixfmt_rgba.cpp
vendored
16
deps/agg/src/agg_pixfmt_rgba.cpp
vendored
|
@ -1,6 +1,7 @@
|
||||||
#include "agg_pixfmt_rgba.h"
|
#include "agg_pixfmt_rgba.h"
|
||||||
#include <boost/gil/gil_all.hpp>
|
#include <boost/gil/gil_all.hpp>
|
||||||
#include <boost/gil/extension/toolbox/hsv.hpp>
|
#include <boost/gil/extension/toolbox/hsv.hpp>
|
||||||
|
#include <boost/gil/extension/toolbox/hsl.hpp>
|
||||||
//#include <iostream>
|
//#include <iostream>
|
||||||
|
|
||||||
namespace agg
|
namespace agg
|
||||||
|
@ -88,15 +89,16 @@ void comp_op_rgba_color<ColorT,Order>::blend_pix(value_type* p,
|
||||||
{
|
{
|
||||||
using namespace boost;
|
using namespace boost;
|
||||||
using namespace gil;
|
using namespace gil;
|
||||||
using namespace hsv_color_space;
|
using namespace hsl_color_space;
|
||||||
rgb8_pixel_t rgb_src(sr,sg,sb);
|
rgb8_pixel_t rgb_src(sr,sg,sb);
|
||||||
rgb8_pixel_t rgb_dst(p[Order::R],p[Order::G],p[Order::B]);
|
rgb8_pixel_t rgb_dst(p[Order::R],p[Order::G],p[Order::B]);
|
||||||
hsv32f_pixel_t hsv_src,hsv_dst;
|
hsl32f_pixel_t hsl_src,hsl_dst;
|
||||||
color_convert( rgb_src, hsv_src);
|
color_convert( rgb_src, hsl_src);
|
||||||
color_convert( rgb_dst, hsv_dst);
|
color_convert( rgb_dst, hsl_dst);
|
||||||
get_color(hsv_dst,hue_t()) = get_color(hsv_src,hue_t());
|
get_color(hsl_dst,hue_t()) = get_color(hsl_src,hue_t());
|
||||||
get_color(hsv_dst,saturation_t()) = get_color(hsv_src,saturation_t());
|
get_color(hsl_dst,saturation_t()) = get_color(hsl_src,saturation_t());
|
||||||
color_convert(hsv_dst, rgb_dst);
|
get_color(hsl_dst,lightness_t()) = get_color(hsl_dst,lightness_t());
|
||||||
|
color_convert(hsl_dst, rgb_dst);
|
||||||
p[Order::R] = get_color(rgb_dst,red_t());
|
p[Order::R] = get_color(rgb_dst,red_t());
|
||||||
p[Order::G] = get_color(rgb_dst,green_t());
|
p[Order::G] = get_color(rgb_dst,green_t());
|
||||||
p[Order::B] = get_color(rgb_dst,blue_t());
|
p[Order::B] = get_color(rgb_dst,blue_t());
|
||||||
|
|
|
@ -127,6 +127,8 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
void painted(bool painted);
|
void painted(bool painted);
|
||||||
|
bool painted();
|
||||||
|
|
||||||
inline eAttributeCollectionPolicy attribute_collection_policy() const
|
inline eAttributeCollectionPolicy attribute_collection_policy() const
|
||||||
{
|
{
|
||||||
return DEFAULT;
|
return DEFAULT;
|
||||||
|
|
|
@ -115,6 +115,12 @@ public:
|
||||||
// cairo renderer doesn't support processing of multiple symbolizers.
|
// cairo renderer doesn't support processing of multiple symbolizers.
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool painted()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void painted(bool /*painted*/)
|
void painted(bool /*painted*/)
|
||||||
{
|
{
|
||||||
// nothing to do
|
// nothing to do
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
|
|
||||||
namespace mapnik
|
namespace mapnik
|
||||||
{
|
{
|
||||||
|
|
||||||
template <typename T0, typename T1>
|
template <typename T0, typename T1>
|
||||||
struct evaluate : boost::static_visitor<T1>
|
struct evaluate : boost::static_visitor<T1>
|
||||||
{
|
{
|
||||||
|
@ -84,22 +85,22 @@ struct evaluate : boost::static_visitor<T1>
|
||||||
|
|
||||||
value_type operator() (binary_node<tags::logical_and> const & x) const
|
value_type operator() (binary_node<tags::logical_and> const & x) const
|
||||||
{
|
{
|
||||||
return (boost::apply_visitor(evaluate<feature_type,value_type>(feature_),x.left).to_bool())
|
return (boost::apply_visitor(*this, x.left).to_bool())
|
||||||
&& (boost::apply_visitor(evaluate<feature_type,value_type>(feature_),x.right).to_bool());
|
&& (boost::apply_visitor(*this, x.right).to_bool());
|
||||||
}
|
}
|
||||||
|
|
||||||
value_type operator() (binary_node<tags::logical_or> const & x) const
|
value_type operator() (binary_node<tags::logical_or> const & x) const
|
||||||
{
|
{
|
||||||
return (boost::apply_visitor(evaluate<feature_type,value_type>(feature_),x.left).to_bool())
|
return (boost::apply_visitor(*this,x.left).to_bool())
|
||||||
|| (boost::apply_visitor(evaluate<feature_type,value_type>(feature_),x.right).to_bool());
|
|| (boost::apply_visitor(*this,x.right).to_bool());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Tag>
|
template <typename Tag>
|
||||||
value_type operator() (binary_node<Tag> const& x) const
|
value_type operator() (binary_node<Tag> const& x) const
|
||||||
{
|
{
|
||||||
typename make_op<Tag>::type operation;
|
typename make_op<Tag>::type operation;
|
||||||
return operation(boost::apply_visitor(evaluate<feature_type,value_type>(feature_),x.left),
|
return operation(boost::apply_visitor(*this, x.left),
|
||||||
boost::apply_visitor(evaluate<feature_type,value_type>(feature_),x.right));
|
boost::apply_visitor(*this, x.right));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Tag>
|
template <typename Tag>
|
||||||
|
@ -111,12 +112,12 @@ struct evaluate : boost::static_visitor<T1>
|
||||||
|
|
||||||
value_type operator() (unary_node<tags::logical_not> const& x) const
|
value_type operator() (unary_node<tags::logical_not> const& x) const
|
||||||
{
|
{
|
||||||
return ! (boost::apply_visitor(evaluate<feature_type,value_type>(feature_),x.expr).to_bool());
|
return ! (boost::apply_visitor(*this,x.expr).to_bool());
|
||||||
}
|
}
|
||||||
|
|
||||||
value_type operator() (regex_match_node const& x) const
|
value_type operator() (regex_match_node const& x) const
|
||||||
{
|
{
|
||||||
value_type v = boost::apply_visitor(evaluate<feature_type,value_type>(feature_),x.expr);
|
value_type v = boost::apply_visitor(*this, x.expr);
|
||||||
#if defined(BOOST_REGEX_HAS_ICU)
|
#if defined(BOOST_REGEX_HAS_ICU)
|
||||||
return boost::u32regex_match(v.to_unicode(),x.pattern);
|
return boost::u32regex_match(v.to_unicode(),x.pattern);
|
||||||
#else
|
#else
|
||||||
|
@ -127,7 +128,7 @@ struct evaluate : boost::static_visitor<T1>
|
||||||
|
|
||||||
value_type operator() (regex_replace_node const& x) const
|
value_type operator() (regex_replace_node const& x) const
|
||||||
{
|
{
|
||||||
value_type v = boost::apply_visitor(evaluate<feature_type,value_type>(feature_),x.expr);
|
value_type v = boost::apply_visitor(*this, x.expr);
|
||||||
#if defined(BOOST_REGEX_HAS_ICU)
|
#if defined(BOOST_REGEX_HAS_ICU)
|
||||||
return boost::u32regex_replace(v.to_unicode(),x.pattern,x.format);
|
return boost::u32regex_replace(v.to_unicode(),x.pattern,x.format);
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -704,7 +704,7 @@ void feature_style_processor<Processor>::render_style(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
p.painted(was_painted);
|
p.painted(p.painted() | was_painted);
|
||||||
p.end_style_processing(*style);
|
p.end_style_processing(*style);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -154,7 +154,7 @@ inline void read_double_xdr(const char* data, double & val)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _WINDOWS
|
#if defined(_MSC_VER) && _MSC_VER < 1800
|
||||||
// msvc doesn't have rint in <cmath>
|
// msvc doesn't have rint in <cmath>
|
||||||
inline int rint(double val)
|
inline int rint(double val)
|
||||||
{
|
{
|
||||||
|
@ -165,7 +165,9 @@ inline double round(double val)
|
||||||
{
|
{
|
||||||
return std::floor(val);
|
return std::floor(val);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_MSC_VER)
|
||||||
#define _USE_MATH_DEFINES
|
#define _USE_MATH_DEFINES
|
||||||
#ifndef M_PI
|
#ifndef M_PI
|
||||||
#define M_PI 3.14159265358979323846
|
#define M_PI 3.14159265358979323846
|
||||||
|
|
|
@ -114,14 +114,22 @@ public:
|
||||||
// grid renderer doesn't support processing of multiple symbolizers.
|
// grid renderer doesn't support processing of multiple symbolizers.
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool painted()
|
||||||
|
{
|
||||||
|
return pixmap_.painted();
|
||||||
|
}
|
||||||
|
|
||||||
void painted(bool painted)
|
void painted(bool painted)
|
||||||
{
|
{
|
||||||
pixmap_.painted(painted);
|
pixmap_.painted(painted);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline eAttributeCollectionPolicy attribute_collection_policy() const
|
inline eAttributeCollectionPolicy attribute_collection_policy() const
|
||||||
{
|
{
|
||||||
return DEFAULT;
|
return DEFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline double scale_factor() const
|
inline double scale_factor() const
|
||||||
{
|
{
|
||||||
return scale_factor_;
|
return scale_factor_;
|
||||||
|
|
|
@ -408,7 +408,7 @@ private:
|
||||||
// clip extreme alfa values
|
// clip extreme alfa values
|
||||||
void create_palette_rek(std::vector<rgba> & palette, node * itr) const
|
void create_palette_rek(std::vector<rgba> & palette, node * itr) const
|
||||||
{
|
{
|
||||||
if (itr->count >= 3)
|
if (itr->count != 0)
|
||||||
{
|
{
|
||||||
unsigned count = itr->count;
|
unsigned count = itr->count;
|
||||||
byte a = byte(itr->alphas/float(count));
|
byte a = byte(itr->alphas/float(count));
|
||||||
|
|
|
@ -39,9 +39,10 @@ template <class T> class ImageData
|
||||||
public:
|
public:
|
||||||
typedef T pixel_type;
|
typedef T pixel_type;
|
||||||
|
|
||||||
ImageData(int width,int height)
|
ImageData(int width, int height)
|
||||||
: width_(static_cast<unsigned>(width)),
|
: width_(static_cast<unsigned>(width)),
|
||||||
height_(static_cast<unsigned>(height))
|
height_(static_cast<unsigned>(height)),
|
||||||
|
owns_data_(true)
|
||||||
{
|
{
|
||||||
if (width < 0)
|
if (width < 0)
|
||||||
{
|
{
|
||||||
|
@ -55,9 +56,26 @@ public:
|
||||||
if (pData_) std::memset(pData_,0,sizeof(T)*width_*height_);
|
if (pData_) std::memset(pData_,0,sizeof(T)*width_*height_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ImageData(int width, int height, T * data)
|
||||||
|
: width_(static_cast<unsigned>(width)),
|
||||||
|
height_(static_cast<unsigned>(height)),
|
||||||
|
owns_data_(false),
|
||||||
|
pData_(data)
|
||||||
|
{
|
||||||
|
if (width < 0)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("negative width not allowed for image_data");
|
||||||
|
}
|
||||||
|
if (height < 0)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("negative height not allowed for image_data");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ImageData(const ImageData<T>& rhs)
|
ImageData(const ImageData<T>& rhs)
|
||||||
:width_(rhs.width_),
|
:width_(rhs.width_),
|
||||||
height_(rhs.height_),
|
height_(rhs.height_),
|
||||||
|
owns_data_(true),
|
||||||
pData_((rhs.width_!=0 && rhs.height_!=0)?
|
pData_((rhs.width_!=0 && rhs.height_!=0)?
|
||||||
static_cast<T*>(::operator new(sizeof(T)*rhs.width_*rhs.height_)) :0)
|
static_cast<T*>(::operator new(sizeof(T)*rhs.width_*rhs.height_)) :0)
|
||||||
{
|
{
|
||||||
|
@ -135,15 +153,19 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
inline ~ImageData()
|
inline ~ImageData()
|
||||||
|
{
|
||||||
|
if (owns_data_)
|
||||||
{
|
{
|
||||||
::operator delete(pData_),pData_=0;
|
::operator delete(pData_),pData_=0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const unsigned width_;
|
const unsigned width_;
|
||||||
const unsigned height_;
|
const unsigned height_;
|
||||||
|
bool owns_data_;
|
||||||
T *pData_;
|
T *pData_;
|
||||||
ImageData& operator=(const ImageData&);
|
ImageData& operator=(ImageData const&);
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef ImageData<unsigned> image_data_32;
|
typedef ImageData<unsigned> image_data_32;
|
||||||
|
|
|
@ -394,8 +394,12 @@ void apply_convolution_3x3(Src const& src_view, Dst & dst_view, Filter const& fi
|
||||||
template <typename Src, typename Filter>
|
template <typename Src, typename Filter>
|
||||||
void apply_filter(Src & src, Filter const& filter)
|
void apply_filter(Src & src, Filter const& filter)
|
||||||
{
|
{
|
||||||
|
{
|
||||||
|
src.demultiply();
|
||||||
double_buffer<Src> tb(src);
|
double_buffer<Src> tb(src);
|
||||||
apply_convolution_3x3(tb.src_view, tb.dst_view, filter);
|
apply_convolution_3x3(tb.src_view, tb.dst_view, filter);
|
||||||
|
} // ensure ~double_buffer() is called before premultiplying
|
||||||
|
src.premultiply();
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Src>
|
template <typename Src>
|
||||||
|
|
|
@ -57,6 +57,7 @@ struct MAPNIK_DECL image_reader : private mapnik::noncopyable
|
||||||
{
|
{
|
||||||
virtual unsigned width() const=0;
|
virtual unsigned width() const=0;
|
||||||
virtual unsigned height() const=0;
|
virtual unsigned height() const=0;
|
||||||
|
virtual bool has_alpha() const=0;
|
||||||
virtual bool premultiplied_alpha() const=0;
|
virtual bool premultiplied_alpha() const=0;
|
||||||
virtual void read(unsigned x,unsigned y,image_data_32& image)=0;
|
virtual void read(unsigned x,unsigned y,image_data_32& image)=0;
|
||||||
virtual ~image_reader() {}
|
virtual ~image_reader() {}
|
||||||
|
|
|
@ -29,6 +29,10 @@
|
||||||
#include <boost/optional.hpp>
|
#include <boost/optional.hpp>
|
||||||
#include <mapnik/config.hpp>
|
#include <mapnik/config.hpp>
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#include <mapnik/image_data.hpp>
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace mapnik
|
namespace mapnik
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -54,11 +58,11 @@ enum scaling_method_e
|
||||||
SCALING_BILINEAR8
|
SCALING_BILINEAR8
|
||||||
};
|
};
|
||||||
|
|
||||||
boost::optional<scaling_method_e> scaling_method_from_string(std::string const& name);
|
MAPNIK_DECL boost::optional<scaling_method_e> scaling_method_from_string(std::string const& name);
|
||||||
boost::optional<std::string> scaling_method_to_string(scaling_method_e scaling_method);
|
MAPNIK_DECL boost::optional<std::string> scaling_method_to_string(scaling_method_e scaling_method);
|
||||||
|
|
||||||
template <typename Image>
|
template <typename Image>
|
||||||
void scale_image_agg(Image & target,
|
MAPNIK_DECL void scale_image_agg(Image & target,
|
||||||
Image const& source,
|
Image const& source,
|
||||||
scaling_method_e scaling_method,
|
scaling_method_e scaling_method,
|
||||||
double image_ratio_x,
|
double image_ratio_x,
|
||||||
|
@ -67,6 +71,18 @@ void scale_image_agg(Image & target,
|
||||||
double y_off_f=0,
|
double y_off_f=0,
|
||||||
double filter_radius=2);
|
double filter_radius=2);
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
template MAPNIK_DECL void scale_image_agg<mapnik::image_data_32>(
|
||||||
|
mapnik::image_data_32 & target,
|
||||||
|
mapnik::image_data_32 const& source,
|
||||||
|
scaling_method_e scaling_method,
|
||||||
|
double image_ratio_x,
|
||||||
|
double image_ratio_y,
|
||||||
|
double x_off_f,
|
||||||
|
double y_off_f,
|
||||||
|
double filter_radius);
|
||||||
|
#endif
|
||||||
|
|
||||||
template <typename Image>
|
template <typename Image>
|
||||||
void scale_image_bilinear_old(Image & target,
|
void scale_image_bilinear_old(Image & target,
|
||||||
Image const& source,
|
Image const& source,
|
||||||
|
|
|
@ -263,6 +263,8 @@ template MAPNIK_DECL void save_to_file<image_view<image_data_32> > (image_view<i
|
||||||
template MAPNIK_DECL void save_to_file<image_view<image_data_32> > (image_view<image_data_32> const&,
|
template MAPNIK_DECL void save_to_file<image_view<image_data_32> > (image_view<image_data_32> const&,
|
||||||
std::string const&);
|
std::string const&);
|
||||||
|
|
||||||
|
template MAPNIK_DECL std::string save_to_string<image_data_32>(image_data_32 const&,
|
||||||
|
std::string const&);
|
||||||
|
|
||||||
template MAPNIK_DECL std::string save_to_string<image_data_32>(image_data_32 const&,
|
template MAPNIK_DECL std::string save_to_string<image_data_32>(image_data_32 const&,
|
||||||
std::string const&,
|
std::string const&,
|
||||||
|
|
|
@ -79,7 +79,7 @@ struct feature_collection_grammar :
|
||||||
start = feature_collection | feature_from_geometry(_val) | feature(_val)
|
start = feature_collection | feature_from_geometry(_val) | feature(_val)
|
||||||
;
|
;
|
||||||
|
|
||||||
feature_collection = lit('{') >> (type | features) % lit(',') >> lit('}')
|
feature_collection = lit('{') >> (type | features | json.key_value) % lit(',') >> lit('}')
|
||||||
;
|
;
|
||||||
|
|
||||||
type = lit("\"type\"") >> lit(':') >> lit("\"FeatureCollection\"")
|
type = lit("\"type\"") >> lit(':') >> lit("\"FeatureCollection\"")
|
||||||
|
|
|
@ -268,7 +268,7 @@ struct geometry_generator_grammar :
|
||||||
;
|
;
|
||||||
|
|
||||||
polygon_coord %= ( &uint_(mapnik::SEG_MOVETO) << eps[_r1 += 1]
|
polygon_coord %= ( &uint_(mapnik::SEG_MOVETO) << eps[_r1 += 1]
|
||||||
<< karma::string[ if_ (_r1 > 1) [_1 = "],["]
|
<< karma::string[ if_ (_r1 > 1u) [_1 = "],["]
|
||||||
.else_[_1 = '[' ]]
|
.else_[_1 = '[' ]]
|
||||||
|
|
|
|
||||||
&uint_(mapnik::SEG_LINETO)
|
&uint_(mapnik::SEG_LINETO)
|
||||||
|
@ -340,9 +340,9 @@ struct multi_geometry_generator_grammar :
|
||||||
geometry = ( &bool_(true)[_1 = not_empty_(_val)] << lit("{\"type\":")
|
geometry = ( &bool_(true)[_1 = not_empty_(_val)] << lit("{\"type\":")
|
||||||
<< geometry_types[_1 = phoenix::at_c<0>(_a)][_a = multi_type_(_val)]
|
<< geometry_types[_1 = phoenix::at_c<0>(_a)][_a = multi_type_(_val)]
|
||||||
<< lit(",\"coordinates\":")
|
<< lit(",\"coordinates\":")
|
||||||
<< karma::string[ phoenix::if_ (phoenix::at_c<0>(_a) > 3) [_1 = '['].else_[_1 = ""]]
|
<< karma::string[ phoenix::if_ (phoenix::at_c<0>(_a) > 3u) [_1 = '['].else_[_1 = ""]]
|
||||||
<< coordinates
|
<< coordinates
|
||||||
<< karma::string[ phoenix::if_ (phoenix::at_c<0>(_a) > 3) [_1 = ']'].else_[_1 = ""]]
|
<< karma::string[ phoenix::if_ (phoenix::at_c<0>(_a) > 3u) [_1 = ']'].else_[_1 = ""]]
|
||||||
<< lit('}')) | lit("null")
|
<< lit('}')) | lit("null")
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
@ -63,9 +63,10 @@ public:
|
||||||
ADJUST_BBOX_HEIGHT,
|
ADJUST_BBOX_HEIGHT,
|
||||||
// adjust the width of the map, leave height and geo bbox unchanged
|
// adjust the width of the map, leave height and geo bbox unchanged
|
||||||
ADJUST_CANVAS_WIDTH,
|
ADJUST_CANVAS_WIDTH,
|
||||||
//adjust the height of the map, leave width and geo bbox unchanged
|
// adjust the height of the map, leave width and geo bbox unchanged
|
||||||
ADJUST_CANVAS_HEIGHT,
|
ADJUST_CANVAS_HEIGHT,
|
||||||
//
|
// do nothing
|
||||||
|
RESPECT,
|
||||||
aspect_fix_mode_MAX
|
aspect_fix_mode_MAX
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -124,12 +124,12 @@ public:
|
||||||
|
|
||||||
inline bool is_bitmap() const
|
inline bool is_bitmap() const
|
||||||
{
|
{
|
||||||
return bitmap_data_;
|
return bitmap_data_ ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool is_vector() const
|
inline bool is_vector() const
|
||||||
{
|
{
|
||||||
return vector_data_;
|
return vector_data_ ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
boost::optional<mapnik::image_ptr> get_bitmap_data() const
|
boost::optional<mapnik::image_ptr> get_bitmap_data() const
|
||||||
|
|
|
@ -76,13 +76,13 @@ public:
|
||||||
spacing_left_(0.0),
|
spacing_left_(0.0),
|
||||||
marker_nr_(0)
|
marker_nr_(0)
|
||||||
{
|
{
|
||||||
if (spacing >= 0)
|
if (spacing >= 1)
|
||||||
{
|
{
|
||||||
spacing_ = spacing;
|
spacing_ = spacing;
|
||||||
}
|
}
|
||||||
else if (spacing < 0)
|
else
|
||||||
{
|
{
|
||||||
spacing_ = find_optimal_spacing(-spacing);
|
spacing_ = 100;
|
||||||
}
|
}
|
||||||
rewind();
|
rewind();
|
||||||
}
|
}
|
||||||
|
@ -140,20 +140,20 @@ public:
|
||||||
spacing_left_ -= error_;
|
spacing_left_ -= error_;
|
||||||
error_ = 0.0;
|
error_ = 0.0;
|
||||||
double max_err_allowed = max_error_ * spacing_;
|
double max_err_allowed = max_error_ * spacing_;
|
||||||
//Loop exits when a position is found or when no more segments are available
|
// Loop exits when a position is found or when no more segments are available
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
//Do not place markers too close to the beginning of a segment
|
// Do not place markers too close to the beginning of a segment
|
||||||
if (spacing_left_ < marker_width_/2)
|
if (spacing_left_ < marker_width_/2)
|
||||||
{
|
{
|
||||||
set_spacing_left(marker_width_/2); //Only moves forward
|
set_spacing_left(marker_width_/2); //Only moves forward
|
||||||
}
|
}
|
||||||
//Error for this marker is too large. Skip to the next position.
|
// Error for this marker is too large. Skip to the next position.
|
||||||
if (std::fabs(error_) > max_err_allowed)
|
if (std::fabs(error_) > max_err_allowed)
|
||||||
{
|
{
|
||||||
while (error_ > spacing_)
|
if (error_ > spacing_)
|
||||||
{
|
{
|
||||||
error_ -= spacing_; //Avoid moving backwards
|
error_ = spacing_; // Avoid moving backwards
|
||||||
}
|
}
|
||||||
spacing_left_ += spacing_ - error_;
|
spacing_left_ += spacing_ - error_;
|
||||||
error_ = 0.0;
|
error_ = 0.0;
|
||||||
|
@ -215,7 +215,7 @@ public:
|
||||||
box2d<double> box = perform_transform(angle, x, y);
|
box2d<double> box = perform_transform(angle, x, y);
|
||||||
if (!allow_overlap_ && !detector_.has_placement(box))
|
if (!allow_overlap_ && !detector_.has_placement(box))
|
||||||
{
|
{
|
||||||
//10.0 is the approxmiate number of positions tried and choosen arbitrarily
|
//10.0 is the approximate number of positions tried and choosen arbitrarily
|
||||||
set_spacing_left(spacing_left_ + spacing_ * max_error_ / 10.0); //Only moves forward
|
set_spacing_left(spacing_left_ + spacing_ * max_error_ / 10.0); //Only moves forward
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -269,32 +269,6 @@ private:
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Automatically chooses spacing. */
|
|
||||||
double find_optimal_spacing(double s)
|
|
||||||
{
|
|
||||||
rewind();
|
|
||||||
//Calculate total path length
|
|
||||||
unsigned cmd = agg::path_cmd_move_to;
|
|
||||||
double length = 0;
|
|
||||||
while (!agg::is_stop(cmd))
|
|
||||||
{
|
|
||||||
double dx = next_x - last_x;
|
|
||||||
double dy = next_y - last_y;
|
|
||||||
length += std::sqrt(dx * dx + dy * dy);
|
|
||||||
last_x = next_x;
|
|
||||||
last_y = next_y;
|
|
||||||
while (agg::is_move_to(cmd = locator_.vertex(&next_x, &next_y)))
|
|
||||||
{
|
|
||||||
//Skip over "move" commands
|
|
||||||
last_x = next_x;
|
|
||||||
last_y = next_y;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
unsigned points = static_cast<unsigned>(round(length / s));
|
|
||||||
if (points == 0) return 0.0; //Path to short
|
|
||||||
return length / points;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set spacing_left_, adjusts error_ and performs sanity checks. */
|
/** Set spacing_left_, adjusts error_ and performs sanity checks. */
|
||||||
void set_spacing_left(double sl, bool allow_negative=false)
|
void set_spacing_left(double sl, bool allow_negative=false)
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,12 +25,17 @@
|
||||||
|
|
||||||
// mapnik
|
// mapnik
|
||||||
#include <mapnik/palette.hpp>
|
#include <mapnik/palette.hpp>
|
||||||
|
#include <mapnik/config.hpp>
|
||||||
|
|
||||||
// stl
|
// stl
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#include <mapnik/graphics.hpp>
|
||||||
|
#endif
|
||||||
|
|
||||||
/* miniz.c porting issues:
|
/* miniz.c porting issues:
|
||||||
- duplicate symbols in python bindings require moving miniz.c include to just cpp file
|
- duplicate symbols in python bindings require moving miniz.c include to just cpp file
|
||||||
- due to http://code.google.com/p/miniz/issues/detail?id=7
|
- due to http://code.google.com/p/miniz/issues/detail?id=7
|
||||||
|
@ -48,7 +53,7 @@ namespace mapnik { namespace MiniZ {
|
||||||
|
|
||||||
using mapnik::rgb;
|
using mapnik::rgb;
|
||||||
|
|
||||||
class PNGWriter {
|
class MAPNIK_DECL PNGWriter {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PNGWriter(int level, int strategy);
|
PNGWriter(int level, int strategy);
|
||||||
|
@ -79,6 +84,15 @@ private:
|
||||||
static const unsigned char IEND_tpl[];
|
static const unsigned char IEND_tpl[];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
template MAPNIK_DECL void PNGWriter::writeIDAT<image_data_8>(image_data_8 const& image);
|
||||||
|
template MAPNIK_DECL void PNGWriter::writeIDAT<image_view<image_data_8> >(image_view<image_data_8> const& image);
|
||||||
|
template MAPNIK_DECL void PNGWriter::writeIDAT<image_data_32>(image_data_32 const& image);
|
||||||
|
template MAPNIK_DECL void PNGWriter::writeIDAT<image_view<image_data_32> >(image_view<image_data_32> const& image);
|
||||||
|
template MAPNIK_DECL void PNGWriter::writeIDATStripAlpha<image_data_32>(image_data_32 const& image);
|
||||||
|
template MAPNIK_DECL void PNGWriter::writeIDATStripAlpha<image_view<image_data_32> >(image_view<image_data_32> const& image);
|
||||||
|
#endif
|
||||||
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
#endif // MAPNIK_MINIZ_PNG_HPP
|
#endif // MAPNIK_MINIZ_PNG_HPP
|
||||||
|
|
|
@ -59,7 +59,7 @@ namespace mapnik {
|
||||||
typedef boost::uint8_t byte;
|
typedef boost::uint8_t byte;
|
||||||
struct rgba;
|
struct rgba;
|
||||||
|
|
||||||
struct rgb {
|
struct MAPNIK_DECL rgb {
|
||||||
byte r;
|
byte r;
|
||||||
byte g;
|
byte g;
|
||||||
byte b;
|
byte b;
|
||||||
|
@ -73,7 +73,7 @@ struct rgb {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct rgba
|
struct MAPNIK_DECL rgba
|
||||||
{
|
{
|
||||||
byte r;
|
byte r;
|
||||||
byte g;
|
byte g;
|
||||||
|
@ -104,7 +104,7 @@ struct rgba
|
||||||
}
|
}
|
||||||
|
|
||||||
// ordering by mean(a,r,g,b), a, r, g, b
|
// ordering by mean(a,r,g,b), a, r, g, b
|
||||||
struct mean_sort_cmp
|
struct MAPNIK_DECL mean_sort_cmp
|
||||||
{
|
{
|
||||||
bool operator() (const rgba& x, const rgba& y) const;
|
bool operator() (const rgba& x, const rgba& y) const;
|
||||||
};
|
};
|
||||||
|
|
|
@ -541,7 +541,7 @@ void save_as_png8_oct(T1 & file,
|
||||||
trees[j].create_palette(pal);
|
trees[j].create_palette(pal);
|
||||||
leftovers = cols[j] - static_cast<unsigned>(pal.size());
|
leftovers = cols[j] - static_cast<unsigned>(pal.size());
|
||||||
cols[j] = static_cast<unsigned>(pal.size());
|
cols[j] = static_cast<unsigned>(pal.size());
|
||||||
palette.insert(palette.begin(), pal.begin(), pal.end());
|
palette.insert(palette.end(), pal.begin(), pal.end());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -127,9 +127,14 @@ public:
|
||||||
mapnik::feature_impl & feature,
|
mapnik::feature_impl & feature,
|
||||||
proj_transform const& prj_trans);
|
proj_transform const& prj_trans);
|
||||||
|
|
||||||
void painted(bool /*painted*/)
|
bool painted() const
|
||||||
{
|
{
|
||||||
// nothing to do
|
return painted_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void painted(bool painted)
|
||||||
|
{
|
||||||
|
painted_ = painted;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline eAttributeCollectionPolicy attribute_collection_policy() const
|
inline eAttributeCollectionPolicy attribute_collection_policy() const
|
||||||
|
|
|
@ -111,6 +111,7 @@ protected:
|
||||||
|
|
||||||
text_placement_info_ptr placement_;
|
text_placement_info_ptr placement_;
|
||||||
boost::scoped_ptr<placement_finder<DetectorT> > finder_;
|
boost::scoped_ptr<placement_finder<DetectorT> > finder_;
|
||||||
|
double scale_factor_;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename FaceManagerT, typename DetectorT>
|
template <typename FaceManagerT, typename DetectorT>
|
||||||
|
@ -182,6 +183,7 @@ protected:
|
||||||
using text_symbolizer_helper<FaceManagerT, DetectorT>::point_placement_;
|
using text_symbolizer_helper<FaceManagerT, DetectorT>::point_placement_;
|
||||||
using text_symbolizer_helper<FaceManagerT, DetectorT>::angle_;
|
using text_symbolizer_helper<FaceManagerT, DetectorT>::angle_;
|
||||||
using text_symbolizer_helper<FaceManagerT, DetectorT>::finder_;
|
using text_symbolizer_helper<FaceManagerT, DetectorT>::finder_;
|
||||||
|
using text_symbolizer_helper<FaceManagerT, DetectorT>::scale_factor_;
|
||||||
};
|
};
|
||||||
} //namespace
|
} //namespace
|
||||||
#endif // SYMBOLIZER_HELPERS_HPP
|
#endif // SYMBOLIZER_HELPERS_HPP
|
||||||
|
|
|
@ -163,8 +163,6 @@ struct MAPNIK_DECL text_symbolizer_properties
|
||||||
double minimum_padding;
|
double minimum_padding;
|
||||||
double minimum_path_length;
|
double minimum_path_length;
|
||||||
double max_char_angle_delta;
|
double max_char_angle_delta;
|
||||||
/** Always try render an odd amount of labels */
|
|
||||||
bool force_odd_labels;
|
|
||||||
bool allow_overlap;
|
bool allow_overlap;
|
||||||
/** Only consider geometry with largest bbox (polygons) */
|
/** Only consider geometry with largest bbox (polygons) */
|
||||||
bool largest_bbox_only;
|
bool largest_bbox_only;
|
||||||
|
|
|
@ -37,12 +37,6 @@
|
||||||
// stl
|
// stl
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#if (!defined(NO_DEPRECATION_WARNINGS) && __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
|
|
||||||
#define func_deprecated __attribute__ ((deprecated))
|
|
||||||
#else
|
|
||||||
#define func_deprecated
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace mapnik
|
namespace mapnik
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -69,73 +63,71 @@ struct MAPNIK_DECL text_symbolizer : public symbolizer_base
|
||||||
);
|
);
|
||||||
text_symbolizer(text_symbolizer const& rhs);
|
text_symbolizer(text_symbolizer const& rhs);
|
||||||
text_symbolizer& operator=(text_symbolizer const& rhs);
|
text_symbolizer& operator=(text_symbolizer const& rhs);
|
||||||
expression_ptr get_name() const func_deprecated;
|
expression_ptr get_name() const;
|
||||||
void set_name(expression_ptr expr);
|
void set_name(expression_ptr expr);
|
||||||
|
|
||||||
expression_ptr get_orientation() const func_deprecated; // orienation (rotation angle atm)
|
expression_ptr get_orientation() const; // orienation (rotation angle atm)
|
||||||
void set_orientation(expression_ptr expr);
|
void set_orientation(expression_ptr expr);
|
||||||
|
|
||||||
double get_text_ratio() const func_deprecated; // target ratio for text bounding box in pixels
|
double get_text_ratio() const; // target ratio for text bounding box in pixels
|
||||||
void set_text_ratio(double ratio);
|
void set_text_ratio(double ratio);
|
||||||
double get_wrap_width() const func_deprecated; // width to wrap text at, or trigger ratio
|
double get_wrap_width() const; // width to wrap text at, or trigger ratio
|
||||||
void set_wrap_width(double width);
|
void set_wrap_width(double width);
|
||||||
unsigned char get_wrap_char() const func_deprecated; // character used to wrap lines
|
unsigned char get_wrap_char() const; // character used to wrap lines
|
||||||
std::string get_wrap_char_string() const func_deprecated; // character used to wrap lines as std::string
|
std::string get_wrap_char_string() const; // character used to wrap lines as std::string
|
||||||
void set_wrap_char(unsigned char character);
|
void set_wrap_char(unsigned char character);
|
||||||
void set_wrap_char_from_string(std::string const& character);
|
void set_wrap_char_from_string(std::string const& character);
|
||||||
text_transform_e get_text_transform() const func_deprecated; // text conversion on strings before display
|
text_transform_e get_text_transform() const; // text conversion on strings before display
|
||||||
void set_text_transform(text_transform_e convert);
|
void set_text_transform(text_transform_e convert);
|
||||||
double get_line_spacing() const func_deprecated; // spacing between lines of text
|
double get_line_spacing() const; // spacing between lines of text
|
||||||
void set_line_spacing(double spacing);
|
void set_line_spacing(double spacing);
|
||||||
double get_character_spacing() const func_deprecated; // spacing between characters in text
|
double get_character_spacing() const; // spacing between characters in text
|
||||||
void set_character_spacing(double spacing);
|
void set_character_spacing(double spacing);
|
||||||
double get_label_spacing() const func_deprecated; // spacing between repeated labels on lines
|
double get_label_spacing() const; // spacing between repeated labels on lines
|
||||||
void set_label_spacing(double spacing);
|
void set_label_spacing(double spacing);
|
||||||
double get_label_position_tolerance() const func_deprecated; //distance the label can be moved on the line to fit, if 0 the default is used
|
double get_label_position_tolerance() const; //distance the label can be moved on the line to fit, if 0 the default is used
|
||||||
void set_label_position_tolerance(double tolerance);
|
void set_label_position_tolerance(double tolerance);
|
||||||
bool get_force_odd_labels() const func_deprecated; // try render an odd amount of labels
|
double get_max_char_angle_delta() const; // maximum change in angle between adjacent characters
|
||||||
void set_force_odd_labels(bool force);
|
|
||||||
double get_max_char_angle_delta() const func_deprecated; // maximum change in angle between adjacent characters
|
|
||||||
void set_max_char_angle_delta(double angle);
|
void set_max_char_angle_delta(double angle);
|
||||||
double get_text_size() const func_deprecated;
|
double get_text_size() const;
|
||||||
void set_text_size(double size);
|
void set_text_size(double size);
|
||||||
std::string const& get_face_name() const func_deprecated;
|
std::string const& get_face_name() const;
|
||||||
void set_face_name(std::string face_name);
|
void set_face_name(std::string face_name);
|
||||||
boost::optional<font_set> const& get_fontset() const func_deprecated;
|
boost::optional<font_set> const& get_fontset() const;
|
||||||
void set_fontset(font_set const& fset);
|
void set_fontset(font_set const& fset);
|
||||||
color const& get_fill() const func_deprecated;
|
color const& get_fill() const;
|
||||||
void set_fill(color const& fill);
|
void set_fill(color const& fill);
|
||||||
void set_halo_fill(color const& fill);
|
void set_halo_fill(color const& fill);
|
||||||
color const& get_halo_fill() const func_deprecated;
|
color const& get_halo_fill() const;
|
||||||
void set_halo_radius(double radius);
|
void set_halo_radius(double radius);
|
||||||
double get_halo_radius() const func_deprecated;
|
double get_halo_radius() const;
|
||||||
void set_halo_rasterizer(halo_rasterizer_e rasterizer_p);
|
void set_halo_rasterizer(halo_rasterizer_e rasterizer_p);
|
||||||
halo_rasterizer_e get_halo_rasterizer() const;
|
halo_rasterizer_e get_halo_rasterizer() const;
|
||||||
void set_label_placement(label_placement_e label_p);
|
void set_label_placement(label_placement_e label_p);
|
||||||
label_placement_e get_label_placement() const func_deprecated;
|
label_placement_e get_label_placement() const;
|
||||||
void set_vertical_alignment(vertical_alignment_e valign);
|
void set_vertical_alignment(vertical_alignment_e valign);
|
||||||
vertical_alignment_e get_vertical_alignment() const func_deprecated;
|
vertical_alignment_e get_vertical_alignment() const;
|
||||||
void set_displacement(double x, double y);
|
void set_displacement(double x, double y);
|
||||||
void set_displacement(position const& p);
|
void set_displacement(position const& p);
|
||||||
position const& get_displacement() const func_deprecated;
|
position const& get_displacement() const;
|
||||||
void set_avoid_edges(bool avoid);
|
void set_avoid_edges(bool avoid);
|
||||||
bool get_avoid_edges() const func_deprecated;
|
bool get_avoid_edges() const;
|
||||||
void set_minimum_distance(double distance);
|
void set_minimum_distance(double distance);
|
||||||
double get_minimum_distance() const func_deprecated;
|
double get_minimum_distance() const;
|
||||||
void set_minimum_padding(double distance);
|
void set_minimum_padding(double distance);
|
||||||
double get_minimum_padding() const func_deprecated;
|
double get_minimum_padding() const;
|
||||||
void set_minimum_path_length(double size);
|
void set_minimum_path_length(double size);
|
||||||
double get_minimum_path_length() const;
|
double get_minimum_path_length() const;
|
||||||
void set_allow_overlap(bool overlap);
|
void set_allow_overlap(bool overlap);
|
||||||
bool get_allow_overlap() const func_deprecated;
|
bool get_allow_overlap() const;
|
||||||
void set_text_opacity(double opacity);
|
void set_text_opacity(double opacity);
|
||||||
double get_text_opacity() const func_deprecated;
|
double get_text_opacity() const;
|
||||||
void set_wrap_before(bool wrap_before);
|
void set_wrap_before(bool wrap_before);
|
||||||
bool get_wrap_before() const func_deprecated; // wrap text at wrap_char immediately before current work
|
bool get_wrap_before() const; // wrap text at wrap_char immediately before current work
|
||||||
void set_horizontal_alignment(horizontal_alignment_e valign);
|
void set_horizontal_alignment(horizontal_alignment_e valign);
|
||||||
horizontal_alignment_e get_horizontal_alignment() const func_deprecated;
|
horizontal_alignment_e get_horizontal_alignment() const;
|
||||||
void set_justify_alignment(justify_alignment_e valign);
|
void set_justify_alignment(justify_alignment_e valign);
|
||||||
justify_alignment_e get_justify_alignment() const func_deprecated;
|
justify_alignment_e get_justify_alignment() const;
|
||||||
text_placements_ptr get_placement_options() const;
|
text_placements_ptr get_placement_options() const;
|
||||||
void set_placement_options(text_placements_ptr placement_options);
|
void set_placement_options(text_placements_ptr placement_options);
|
||||||
void set_largest_bbox_only(bool val);
|
void set_largest_bbox_only(bool val);
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
// stl
|
// stl
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
namespace mapnik { namespace util {
|
namespace mapnik { namespace util {
|
||||||
|
|
||||||
|
@ -38,6 +39,29 @@ to avoid the compile time overhead given it is included
|
||||||
by many other headers inside mapnik.
|
by many other headers inside mapnik.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
MAPNIK_DECL inline bool string2bool(std::string const& value, bool & result)
|
||||||
|
{
|
||||||
|
if (value == "true") {
|
||||||
|
return result = true;
|
||||||
|
} else if (value == "false") {
|
||||||
|
result = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
std::string val(value);
|
||||||
|
std::transform(val.begin(), val.end(), val.begin(), ::tolower);
|
||||||
|
if (val == "true" || val == "yes" || val == "1" || val == "on") {
|
||||||
|
return result = true;
|
||||||
|
}
|
||||||
|
result = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
MAPNIK_DECL inline bool string2bool(const char * iter, const char * end, bool & result)
|
||||||
|
{
|
||||||
|
std::string val(iter,end);
|
||||||
|
return string2bool(val,result);
|
||||||
|
}
|
||||||
|
|
||||||
MAPNIK_DECL bool string2bool(std::string const& value, bool & result);
|
MAPNIK_DECL bool string2bool(std::string const& value, bool & result);
|
||||||
MAPNIK_DECL bool string2bool(const char * iter, const char * end, bool & result);
|
MAPNIK_DECL bool string2bool(const char * iter, const char * end, bool & result);
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@ namespace mapnik { namespace util {
|
||||||
|
|
||||||
MAPNIK_DECL bool exists(std::string const& value);
|
MAPNIK_DECL bool exists(std::string const& value);
|
||||||
MAPNIK_DECL bool is_directory(std::string const& value);
|
MAPNIK_DECL bool is_directory(std::string const& value);
|
||||||
|
MAPNIK_DECL bool is_regular_file(std::string const& value);
|
||||||
MAPNIK_DECL bool remove(std::string const& value);
|
MAPNIK_DECL bool remove(std::string const& value);
|
||||||
MAPNIK_DECL bool is_relative(std::string const& value);
|
MAPNIK_DECL bool is_relative(std::string const& value);
|
||||||
MAPNIK_DECL std::string make_relative(std::string const& filepath, std::string const& base);
|
MAPNIK_DECL std::string make_relative(std::string const& filepath, std::string const& base);
|
||||||
|
|
|
@ -194,7 +194,7 @@ namespace mapnik { namespace util {
|
||||||
;
|
;
|
||||||
|
|
||||||
svg_path %= ((&uint_(mapnik::SEG_MOVETO) << lit('M')
|
svg_path %= ((&uint_(mapnik::SEG_MOVETO) << lit('M')
|
||||||
| &uint_(mapnik::SEG_LINETO) [_a +=1] << karma::string [if_(_a == 1) [_1 = "L" ].else_[_1 =""]])
|
| &uint_(mapnik::SEG_LINETO) [_a +=1] << karma::string [if_(_a == 1u) [_1 = "L" ].else_[_1 =""]])
|
||||||
<< lit(' ') << coordinate << lit(' ') << coordinate) % lit(' ')
|
<< lit(' ') << coordinate << lit(' ') << coordinate) % lit(' ')
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
|
@ -495,6 +495,7 @@ struct div: public boost::static_visitor<V>
|
||||||
template <typename T>
|
template <typename T>
|
||||||
value_type operator() (T lhs, T rhs) const
|
value_type operator() (T lhs, T rhs) const
|
||||||
{
|
{
|
||||||
|
if (rhs == 0) return value_type();
|
||||||
return lhs / rhs;
|
return lhs / rhs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -513,11 +514,13 @@ struct div: public boost::static_visitor<V>
|
||||||
|
|
||||||
value_type operator() (value_double lhs, value_integer rhs) const
|
value_type operator() (value_double lhs, value_integer rhs) const
|
||||||
{
|
{
|
||||||
|
if (rhs == 0) return value_type();
|
||||||
return lhs / rhs;
|
return lhs / rhs;
|
||||||
}
|
}
|
||||||
|
|
||||||
value_type operator() (value_integer lhs, value_double rhs) const
|
value_type operator() (value_integer lhs, value_double rhs) const
|
||||||
{
|
{
|
||||||
|
if (rhs == 0) return value_type();
|
||||||
return lhs / rhs;
|
return lhs / rhs;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -53,12 +53,26 @@ struct value_null
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
bool operator==(T const& other) const
|
||||||
|
{
|
||||||
|
boost::ignore_unused_variable_warning(other);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool operator!=(value_null const& other) const
|
bool operator!=(value_null const& other) const
|
||||||
{
|
{
|
||||||
boost::ignore_unused_variable_warning(other);
|
boost::ignore_unused_variable_warning(other);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
bool operator!=(T const& other) const
|
||||||
|
{
|
||||||
|
boost::ignore_unused_variable_warning(other);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
value_null operator+ (T const& other) const
|
value_null operator+ (T const& other) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -46,6 +46,7 @@
|
||||||
#include <mapnik/offset_converter.hpp>
|
#include <mapnik/offset_converter.hpp>
|
||||||
#include <mapnik/simplify_converter.hpp>
|
#include <mapnik/simplify_converter.hpp>
|
||||||
#include <mapnik/noncopyable.hpp>
|
#include <mapnik/noncopyable.hpp>
|
||||||
|
#include <mapnik/geometry.hpp>
|
||||||
|
|
||||||
// agg
|
// agg
|
||||||
#include "agg_conv_clip_polygon.h"
|
#include "agg_conv_clip_polygon.h"
|
||||||
|
@ -358,10 +359,8 @@ struct vertex_converter : private mapnik::noncopyable
|
||||||
boost::cref(affine_trans),
|
boost::cref(affine_trans),
|
||||||
scale_factor)) {}
|
scale_factor)) {}
|
||||||
|
|
||||||
template <typename Geometry>
|
void apply(geometry_type & geom)
|
||||||
void apply(Geometry & geom)
|
|
||||||
{
|
{
|
||||||
typedef Geometry geometry_type;
|
|
||||||
disp_.template apply<geometry_type>(geom);
|
disp_.template apply<geometry_type>(geom);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,13 +25,14 @@
|
||||||
|
|
||||||
// mapnik
|
// mapnik
|
||||||
#include <mapnik/image_scaling.hpp>
|
#include <mapnik/image_scaling.hpp>
|
||||||
|
#include <mapnik/config.hpp>
|
||||||
|
|
||||||
namespace mapnik {
|
namespace mapnik {
|
||||||
|
|
||||||
class raster;
|
class raster;
|
||||||
class proj_transform;
|
class proj_transform;
|
||||||
|
|
||||||
void reproject_and_scale_raster(raster & target,
|
MAPNIK_DECL void reproject_and_scale_raster(raster & target,
|
||||||
raster const& source,
|
raster const& source,
|
||||||
proj_transform const& prj_trans,
|
proj_transform const& prj_trans,
|
||||||
double offset_x, double offset_y,
|
double offset_x, double offset_y,
|
||||||
|
|
|
@ -180,7 +180,18 @@ struct do_xml_attribute_cast<mapnik::expression_ptr>
|
||||||
{
|
{
|
||||||
static inline boost::optional<mapnik::expression_ptr> xml_attribute_cast_impl(xml_tree const& tree, std::string const& source)
|
static inline boost::optional<mapnik::expression_ptr> xml_attribute_cast_impl(xml_tree const& tree, std::string const& source)
|
||||||
{
|
{
|
||||||
return parse_expression(source, tree.expr_grammar);
|
|
||||||
|
std::map<std::string,mapnik::expression_ptr>::const_iterator itr = tree.expr_cache_.find(source);
|
||||||
|
if (itr != tree.expr_cache_.end())
|
||||||
|
{
|
||||||
|
return itr->second;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mapnik::expression_ptr expr = parse_expression(source, tree.expr_grammar);
|
||||||
|
tree.expr_cache_.insert(std::make_pair(source,expr));
|
||||||
|
return expr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -118,7 +118,7 @@ public:
|
||||||
template <typename T>
|
template <typename T>
|
||||||
T get_attr(std::string const& name) const;
|
T get_attr(std::string const& name) const;
|
||||||
|
|
||||||
std::string get_text() const;
|
std::string const& get_text() const;
|
||||||
|
|
||||||
xml_tree const& get_tree() const
|
xml_tree const& get_tree() const
|
||||||
{
|
{
|
||||||
|
@ -136,6 +136,7 @@ private:
|
||||||
unsigned line_;
|
unsigned line_;
|
||||||
mutable bool processed_;
|
mutable bool processed_;
|
||||||
static std::string xml_text;
|
static std::string xml_text;
|
||||||
|
static std::string empty_text;
|
||||||
};
|
};
|
||||||
|
|
||||||
} //ns mapnik
|
} //ns mapnik
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
// mapnik
|
// mapnik
|
||||||
#include <mapnik/xml_node.hpp>
|
#include <mapnik/xml_node.hpp>
|
||||||
|
#include <mapnik/expression.hpp>
|
||||||
#include <mapnik/expression_grammar.hpp>
|
#include <mapnik/expression_grammar.hpp>
|
||||||
#include <mapnik/path_expression_grammar.hpp>
|
#include <mapnik/path_expression_grammar.hpp>
|
||||||
#include <mapnik/transform_expression_grammar.hpp>
|
#include <mapnik/transform_expression_grammar.hpp>
|
||||||
|
@ -43,7 +44,7 @@ class xml_tree
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
xml_tree(std::string const& encoding="utf8");
|
xml_tree(std::string const& encoding="utf8");
|
||||||
void set_filename(std::string fn);
|
void set_filename(std::string const& fn);
|
||||||
std::string const& filename() const;
|
std::string const& filename() const;
|
||||||
xml_node &root();
|
xml_node &root();
|
||||||
xml_node const& root() const;
|
xml_node const& root() const;
|
||||||
|
@ -52,6 +53,7 @@ private:
|
||||||
std::string file_;
|
std::string file_;
|
||||||
transcoder tr_;
|
transcoder tr_;
|
||||||
public:
|
public:
|
||||||
|
mutable std::map<std::string,mapnik::expression_ptr> expr_cache_;
|
||||||
mapnik::css_color_grammar<std::string::const_iterator> color_grammar;
|
mapnik::css_color_grammar<std::string::const_iterator> color_grammar;
|
||||||
mapnik::expression_grammar<std::string::const_iterator> expr_grammar;
|
mapnik::expression_grammar<std::string::const_iterator> expr_grammar;
|
||||||
path_expression_grammar<std::string::const_iterator> path_expr_grammar;
|
path_expression_grammar<std::string::const_iterator> path_expr_grammar;
|
||||||
|
|
13
localize.sh
Executable file
13
localize.sh
Executable file
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/bash
|
||||||
|
UNAME=$(uname -s)
|
||||||
|
export CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
if [ ${UNAME} = 'Darwin' ]; then
|
||||||
|
export DYLD_LIBRARY_PATH="${CURRENT_DIR}/src/"
|
||||||
|
else
|
||||||
|
export LD_LIBRARY_PATH="${CURRENT_DIR}/src/"
|
||||||
|
fi
|
||||||
|
export PYTHONPATH="${CURRENT_DIR}/bindings/python/":${PYTHONPATH}
|
||||||
|
export MAPNIK_FONT_DIRECTORY="${CURRENT_DIR}/fonts/dejavu-fonts-ttf-2.33/ttf/"
|
||||||
|
export MAPNIK_INPUT_PLUGINS_DIRECTORY="${CURRENT_DIR}/plugins/input/"
|
||||||
|
export PATH="${CURRENT_DIR}/utils/mapnik-config/":${PATH}
|
||||||
|
export PATH="${CURRENT_DIR}/utils/nik2img":${PATH}
|
|
@ -48,7 +48,7 @@ else:
|
||||||
libraries.append(env['ICU_LIB_NAME'])
|
libraries.append(env['ICU_LIB_NAME'])
|
||||||
|
|
||||||
if env['PLUGIN_LINKING'] == 'shared':
|
if env['PLUGIN_LINKING'] == 'shared':
|
||||||
libraries.append('mapnik')
|
libraries.append(env['MAPNIK_NAME'])
|
||||||
|
|
||||||
TARGET = plugin_env.SharedLibrary('../%s' % PLUGIN_NAME,
|
TARGET = plugin_env.SharedLibrary('../%s' % PLUGIN_NAME,
|
||||||
SHLIBPREFIX='',
|
SHLIBPREFIX='',
|
||||||
|
|
|
@ -45,7 +45,7 @@ if env['RUNTIME_LINK'] == 'static':
|
||||||
libraries = copy(plugin_env['LIBS'])
|
libraries = copy(plugin_env['LIBS'])
|
||||||
|
|
||||||
if env['PLUGIN_LINKING'] == 'shared':
|
if env['PLUGIN_LINKING'] == 'shared':
|
||||||
libraries.insert(0,'mapnik')
|
libraries.insert(0,env['MAPNIK_NAME'])
|
||||||
libraries.append(env['ICU_LIB_NAME'])
|
libraries.append(env['ICU_LIB_NAME'])
|
||||||
libraries.append('boost_system%s' % env['BOOST_APPEND'])
|
libraries.append('boost_system%s' % env['BOOST_APPEND'])
|
||||||
|
|
||||||
|
|
|
@ -48,10 +48,6 @@ using mapnik::geometry_type;
|
||||||
using mapnik::datasource_exception;
|
using mapnik::datasource_exception;
|
||||||
using mapnik::feature_factory;
|
using mapnik::feature_factory;
|
||||||
|
|
||||||
#ifdef _WINDOWS
|
|
||||||
using mapnik::rint;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
gdal_featureset::gdal_featureset(GDALDataset& dataset,
|
gdal_featureset::gdal_featureset(GDALDataset& dataset,
|
||||||
int band,
|
int band,
|
||||||
gdal_query q,
|
gdal_query q,
|
||||||
|
@ -108,6 +104,7 @@ feature_ptr gdal_featureset::get_feature(mapnik::query const& q)
|
||||||
GDALRasterBand * blue = 0;
|
GDALRasterBand * blue = 0;
|
||||||
GDALRasterBand * alpha = 0;
|
GDALRasterBand * alpha = 0;
|
||||||
GDALRasterBand * grey = 0;
|
GDALRasterBand * grey = 0;
|
||||||
|
CPLErr raster_io_error = CE_None;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#ifdef MAPNIK_LOG
|
#ifdef MAPNIK_LOG
|
||||||
|
@ -219,9 +216,12 @@ feature_ptr gdal_featureset::get_feature(mapnik::query const& q)
|
||||||
float* imageData = (float*)image.getBytes();
|
float* imageData = (float*)image.getBytes();
|
||||||
GDALRasterBand * band = dataset_.GetRasterBand(band_);
|
GDALRasterBand * band = dataset_.GetRasterBand(band_);
|
||||||
raster_nodata = band->GetNoDataValue(&raster_has_nodata);
|
raster_nodata = band->GetNoDataValue(&raster_has_nodata);
|
||||||
band->RasterIO(GF_Read, x_off, y_off, width, height,
|
raster_io_error = band->RasterIO(GF_Read, x_off, y_off, width, height,
|
||||||
imageData, image.width(), image.height(),
|
imageData, image.width(), image.height(),
|
||||||
GDT_Float32, 0, 0);
|
GDT_Float32, 0, 0);
|
||||||
|
if (raster_io_error == CE_Failure) {
|
||||||
|
throw datasource_exception(CPLGetLastErrorMsg());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else // working with all bands
|
else // working with all bands
|
||||||
{
|
{
|
||||||
|
@ -277,8 +277,21 @@ feature_ptr gdal_featureset::get_feature(mapnik::query const& q)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case GCI_Undefined:
|
case GCI_Undefined:
|
||||||
|
#if GDAL_VERSION_NUM <= 1730
|
||||||
|
if (nbands_ == 4)
|
||||||
|
{
|
||||||
|
MAPNIK_LOG_DEBUG(gdal) << "gdal_featureset: Found undefined band (assumming alpha band)";
|
||||||
|
alpha = band;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
MAPNIK_LOG_DEBUG(gdal) << "gdal_featureset: Found undefined band (assumming gray band)";
|
MAPNIK_LOG_DEBUG(gdal) << "gdal_featureset: Found undefined band (assumming gray band)";
|
||||||
grey = band;
|
grey = band;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
MAPNIK_LOG_DEBUG(gdal) << "gdal_featureset: Found undefined band (assumming gray band)";
|
||||||
|
grey = band;
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
MAPNIK_LOG_WARN(gdal) << "gdal_featureset: Band type unknown!";
|
MAPNIK_LOG_WARN(gdal) << "gdal_featureset: Band type unknown!";
|
||||||
|
@ -298,9 +311,12 @@ feature_ptr gdal_featureset::get_feature(mapnik::query const& q)
|
||||||
// TODO - we assume here the nodata value for the red band applies to all bands
|
// TODO - we assume here the nodata value for the red band applies to all bands
|
||||||
// more details about this at http://trac.osgeo.org/gdal/ticket/2734
|
// more details about this at http://trac.osgeo.org/gdal/ticket/2734
|
||||||
float* imageData = (float*)image.getBytes();
|
float* imageData = (float*)image.getBytes();
|
||||||
red->RasterIO(GF_Read, x_off, y_off, width, height,
|
raster_io_error = red->RasterIO(GF_Read, x_off, y_off, width, height,
|
||||||
imageData, image.width(), image.height(),
|
imageData, image.width(), image.height(),
|
||||||
GDT_Float32, 0, 0);
|
GDT_Float32, 0, 0);
|
||||||
|
if (raster_io_error == CE_Failure) {
|
||||||
|
throw datasource_exception(CPLGetLastErrorMsg());
|
||||||
|
}
|
||||||
int len = image.width() * image.height();
|
int len = image.width() * image.height();
|
||||||
for (int i = 0; i < len; ++i)
|
for (int i = 0; i < len; ++i)
|
||||||
{
|
{
|
||||||
|
@ -314,12 +330,21 @@ feature_ptr gdal_featureset::get_feature(mapnik::query const& q)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
red->RasterIO(GF_Read, x_off, y_off, width, height, image.getBytes() + 0,
|
raster_io_error = red->RasterIO(GF_Read, x_off, y_off, width, height, image.getBytes() + 0,
|
||||||
image.width(), image.height(), GDT_Byte, 4, 4 * image.width());
|
image.width(), image.height(), GDT_Byte, 4, 4 * image.width());
|
||||||
green->RasterIO(GF_Read, x_off, y_off, width, height, image.getBytes() + 1,
|
if (raster_io_error == CE_Failure) {
|
||||||
|
throw datasource_exception(CPLGetLastErrorMsg());
|
||||||
|
}
|
||||||
|
raster_io_error = green->RasterIO(GF_Read, x_off, y_off, width, height, image.getBytes() + 1,
|
||||||
image.width(), image.height(), GDT_Byte, 4, 4 * image.width());
|
image.width(), image.height(), GDT_Byte, 4, 4 * image.width());
|
||||||
blue->RasterIO(GF_Read, x_off, y_off, width, height, image.getBytes() + 2,
|
if (raster_io_error == CE_Failure) {
|
||||||
|
throw datasource_exception(CPLGetLastErrorMsg());
|
||||||
|
}
|
||||||
|
raster_io_error = blue->RasterIO(GF_Read, x_off, y_off, width, height, image.getBytes() + 2,
|
||||||
image.width(), image.height(), GDT_Byte, 4, 4 * image.width());
|
image.width(), image.height(), GDT_Byte, 4, 4 * image.width());
|
||||||
|
if (raster_io_error == CE_Failure) {
|
||||||
|
throw datasource_exception(CPLGetLastErrorMsg());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (grey)
|
else if (grey)
|
||||||
{
|
{
|
||||||
|
@ -333,9 +358,12 @@ feature_ptr gdal_featureset::get_feature(mapnik::query const& q)
|
||||||
MAPNIK_LOG_DEBUG(gdal) << "gdal_featureset: applying nodata value for layer=" << apply_nodata;
|
MAPNIK_LOG_DEBUG(gdal) << "gdal_featureset: applying nodata value for layer=" << apply_nodata;
|
||||||
// first read the data in and create an alpha channel from the nodata values
|
// first read the data in and create an alpha channel from the nodata values
|
||||||
float* imageData = (float*)image.getBytes();
|
float* imageData = (float*)image.getBytes();
|
||||||
grey->RasterIO(GF_Read, x_off, y_off, width, height,
|
raster_io_error = grey->RasterIO(GF_Read, x_off, y_off, width, height,
|
||||||
imageData, image.width(), image.height(),
|
imageData, image.width(), image.height(),
|
||||||
GDT_Float32, 0, 0);
|
GDT_Float32, 0, 0);
|
||||||
|
if (raster_io_error == CE_Failure) {
|
||||||
|
throw datasource_exception(CPLGetLastErrorMsg());
|
||||||
|
}
|
||||||
int len = image.width() * image.height();
|
int len = image.width() * image.height();
|
||||||
for (int i = 0; i < len; ++i)
|
for (int i = 0; i < len; ++i)
|
||||||
{
|
{
|
||||||
|
@ -349,12 +377,21 @@ feature_ptr gdal_featureset::get_feature(mapnik::query const& q)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
grey->RasterIO(GF_Read, x_off, y_off, width, height, image.getBytes() + 0,
|
raster_io_error = grey->RasterIO(GF_Read, x_off, y_off, width, height, image.getBytes() + 0,
|
||||||
image.width(), image.height(), GDT_Byte, 4, 4 * image.width());
|
image.width(), image.height(), GDT_Byte, 4, 4 * image.width());
|
||||||
grey->RasterIO(GF_Read,x_off, y_off, width, height, image.getBytes() + 1,
|
if (raster_io_error == CE_Failure) {
|
||||||
|
throw datasource_exception(CPLGetLastErrorMsg());
|
||||||
|
}
|
||||||
|
raster_io_error = grey->RasterIO(GF_Read,x_off, y_off, width, height, image.getBytes() + 1,
|
||||||
image.width(), image.height(), GDT_Byte, 4, 4 * image.width());
|
image.width(), image.height(), GDT_Byte, 4, 4 * image.width());
|
||||||
grey->RasterIO(GF_Read,x_off, y_off, width, height, image.getBytes() + 2,
|
if (raster_io_error == CE_Failure) {
|
||||||
|
throw datasource_exception(CPLGetLastErrorMsg());
|
||||||
|
}
|
||||||
|
raster_io_error = grey->RasterIO(GF_Read,x_off, y_off, width, height, image.getBytes() + 2,
|
||||||
image.width(), image.height(), GDT_Byte, 4, 4 * image.width());
|
image.width(), image.height(), GDT_Byte, 4, 4 * image.width());
|
||||||
|
if (raster_io_error == CE_Failure) {
|
||||||
|
throw datasource_exception(CPLGetLastErrorMsg());
|
||||||
|
}
|
||||||
|
|
||||||
if (color_table)
|
if (color_table)
|
||||||
{
|
{
|
||||||
|
@ -385,8 +422,11 @@ feature_ptr gdal_featureset::get_feature(mapnik::query const& q)
|
||||||
MAPNIK_LOG_DEBUG(gdal) << "gdal_featureset: processing alpha band...";
|
MAPNIK_LOG_DEBUG(gdal) << "gdal_featureset: processing alpha band...";
|
||||||
if (!raster_has_nodata)
|
if (!raster_has_nodata)
|
||||||
{
|
{
|
||||||
alpha->RasterIO(GF_Read, x_off, y_off, width, height, image.getBytes() + 3,
|
raster_io_error = alpha->RasterIO(GF_Read, x_off, y_off, width, height, image.getBytes() + 3,
|
||||||
image.width(), image.height(), GDT_Byte, 4, 4 * image.width());
|
image.width(), image.height(), GDT_Byte, 4, 4 * image.width());
|
||||||
|
if (raster_io_error == CE_Failure) {
|
||||||
|
throw datasource_exception(CPLGetLastErrorMsg());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -417,6 +457,8 @@ feature_ptr gdal_featureset::get_feature(mapnik::query const& q)
|
||||||
|
|
||||||
feature_ptr gdal_featureset::get_feature_at_point(mapnik::coord2d const& pt)
|
feature_ptr gdal_featureset::get_feature_at_point(mapnik::coord2d const& pt)
|
||||||
{
|
{
|
||||||
|
CPLErr raster_io_error = CE_None;
|
||||||
|
|
||||||
if (band_ > 0)
|
if (band_ > 0)
|
||||||
{
|
{
|
||||||
unsigned raster_xsize = dataset_.GetRasterXSize();
|
unsigned raster_xsize = dataset_.GetRasterXSize();
|
||||||
|
@ -444,7 +486,10 @@ feature_ptr gdal_featureset::get_feature_at_point(mapnik::coord2d const& pt)
|
||||||
int raster_has_nodata;
|
int raster_has_nodata;
|
||||||
double nodata = band->GetNoDataValue(&raster_has_nodata);
|
double nodata = band->GetNoDataValue(&raster_has_nodata);
|
||||||
double value;
|
double value;
|
||||||
band->RasterIO(GF_Read, x, y, 1, 1, &value, 1, 1, GDT_Float64, 0, 0);
|
raster_io_error = band->RasterIO(GF_Read, x, y, 1, 1, &value, 1, 1, GDT_Float64, 0, 0);
|
||||||
|
if (raster_io_error == CE_Failure) {
|
||||||
|
throw datasource_exception(CPLGetLastErrorMsg());
|
||||||
|
}
|
||||||
if (! raster_has_nodata || value != nodata)
|
if (! raster_has_nodata || value != nodata)
|
||||||
{
|
{
|
||||||
// construct feature
|
// construct feature
|
||||||
|
|
|
@ -51,7 +51,7 @@ else:
|
||||||
libraries.append('boost_thread%s' % env['BOOST_APPEND'])
|
libraries.append('boost_thread%s' % env['BOOST_APPEND'])
|
||||||
|
|
||||||
if env['PLUGIN_LINKING'] == 'shared':
|
if env['PLUGIN_LINKING'] == 'shared':
|
||||||
libraries.append('mapnik')
|
libraries.append(env['MAPNIK_NAME'])
|
||||||
|
|
||||||
TARGET = plugin_env.SharedLibrary('../%s' % PLUGIN_NAME,
|
TARGET = plugin_env.SharedLibrary('../%s' % PLUGIN_NAME,
|
||||||
SHLIBPREFIX='',
|
SHLIBPREFIX='',
|
||||||
|
|
|
@ -32,10 +32,6 @@
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
#include <boost/spirit/include/support_multi_pass.hpp>
|
#include <boost/spirit/include/support_multi_pass.hpp>
|
||||||
#include <boost/foreach.hpp>
|
#include <boost/foreach.hpp>
|
||||||
#include <boost/geometry/geometries/box.hpp>
|
|
||||||
#include <boost/geometry/geometries/geometries.hpp>
|
|
||||||
#include <boost/geometry.hpp>
|
|
||||||
#include <boost/geometry/extensions/index/rtree/rtree.hpp>
|
|
||||||
|
|
||||||
// mapnik
|
// mapnik
|
||||||
#include <mapnik/unicode.hpp>
|
#include <mapnik/unicode.hpp>
|
||||||
|
@ -103,7 +99,11 @@ geojson_datasource::geojson_datasource(parameters const& params)
|
||||||
extent_(),
|
extent_(),
|
||||||
tr_(new mapnik::transcoder(*params.get<std::string>("encoding","utf-8"))),
|
tr_(new mapnik::transcoder(*params.get<std::string>("encoding","utf-8"))),
|
||||||
features_(),
|
features_(),
|
||||||
|
#if BOOST_VERSION >= 105600
|
||||||
|
tree_()
|
||||||
|
#else
|
||||||
tree_(16,1)
|
tree_(16,1)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
if (file_.empty()) throw mapnik::datasource_exception("GeoJSON Plugin: missing <file> parameter");
|
if (file_.empty()) throw mapnik::datasource_exception("GeoJSON Plugin: missing <file> parameter");
|
||||||
|
|
||||||
|
@ -140,15 +140,13 @@ geojson_datasource::geojson_datasource(parameters const& params)
|
||||||
throw mapnik::datasource_exception("geojson_datasource: Failed parse GeoJSON file '" + file_ + "'");
|
throw mapnik::datasource_exception("geojson_datasource: Failed parse GeoJSON file '" + file_ + "'");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool first = true;
|
std::size_t geometry_index = 0;
|
||||||
std::size_t count=0;
|
|
||||||
BOOST_FOREACH (mapnik::feature_ptr const& f, features_)
|
BOOST_FOREACH (mapnik::feature_ptr const& f, features_)
|
||||||
{
|
{
|
||||||
mapnik::box2d<double> box = f->envelope();
|
mapnik::box2d<double> box = f->envelope();
|
||||||
if (first)
|
if (geometry_index == 0)
|
||||||
{
|
{
|
||||||
extent_ = box;
|
extent_ = box;
|
||||||
first = false;
|
|
||||||
mapnik::feature_kv_iterator f_itr = f->begin();
|
mapnik::feature_kv_iterator f_itr = f->begin();
|
||||||
mapnik::feature_kv_iterator f_end = f->end();
|
mapnik::feature_kv_iterator f_end = f->end();
|
||||||
for ( ;f_itr!=f_end; ++f_itr)
|
for ( ;f_itr!=f_end; ++f_itr)
|
||||||
|
@ -161,7 +159,12 @@ geojson_datasource::geojson_datasource(parameters const& params)
|
||||||
{
|
{
|
||||||
extent_.expand_to_include(box);
|
extent_.expand_to_include(box);
|
||||||
}
|
}
|
||||||
tree_.insert(box_type(point_type(box.minx(),box.miny()),point_type(box.maxx(),box.maxy())), count++);
|
#if BOOST_VERSION >= 105600
|
||||||
|
tree_.insert(std::make_pair(box_type(point_type(box.minx(),box.miny()),point_type(box.maxx(),box.maxy())),geometry_index));
|
||||||
|
#else
|
||||||
|
tree_.insert(box_type(point_type(box.minx(),box.miny()),point_type(box.maxx(),box.maxy())),geometry_index);
|
||||||
|
#endif
|
||||||
|
++geometry_index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -216,7 +219,11 @@ mapnik::featureset_ptr geojson_datasource::features(mapnik::query const& q) cons
|
||||||
if (extent_.intersects(b))
|
if (extent_.intersects(b))
|
||||||
{
|
{
|
||||||
box_type box(point_type(b.minx(),b.miny()),point_type(b.maxx(),b.maxy()));
|
box_type box(point_type(b.minx(),b.miny()),point_type(b.maxx(),b.maxy()));
|
||||||
|
#if BOOST_VERSION >= 105600
|
||||||
|
tree_.query(boost::geometry::index::intersects(box),std::back_inserter(index_array_));
|
||||||
|
#else
|
||||||
index_array_ = tree_.find(box);
|
index_array_ = tree_.find(box);
|
||||||
|
#endif
|
||||||
return boost::make_shared<geojson_featureset>(features_, index_array_.begin(), index_array_.end());
|
return boost::make_shared<geojson_featureset>(features_, index_array_.begin(), index_array_.end());
|
||||||
}
|
}
|
||||||
// otherwise return an empty featureset pointer
|
// otherwise return an empty featureset pointer
|
||||||
|
|
|
@ -36,11 +36,19 @@
|
||||||
// boost
|
// boost
|
||||||
#include <boost/optional.hpp>
|
#include <boost/optional.hpp>
|
||||||
#include <boost/shared_ptr.hpp>
|
#include <boost/shared_ptr.hpp>
|
||||||
#include <boost/geometry/geometries/box.hpp>
|
#pragma clang diagnostic push
|
||||||
|
#pragma clang diagnostic ignored "-Wunused-variable"
|
||||||
#include <boost/geometry/geometries/point_xy.hpp>
|
#include <boost/geometry/geometries/point_xy.hpp>
|
||||||
#include <boost/geometry/algorithms/area.hpp>
|
#include <boost/geometry/geometries/box.hpp>
|
||||||
#include <boost/geometry/geometries/geometries.hpp>
|
#include <boost/geometry/geometries/geometries.hpp>
|
||||||
|
#include <boost/geometry.hpp>
|
||||||
|
#include <boost/version.hpp>
|
||||||
|
#if BOOST_VERSION >= 105600
|
||||||
|
#include <boost/geometry/index/rtree.hpp>
|
||||||
|
#else
|
||||||
#include <boost/geometry/extensions/index/rtree/rtree.hpp>
|
#include <boost/geometry/extensions/index/rtree/rtree.hpp>
|
||||||
|
#endif
|
||||||
|
#pragma clang diagnostic pop
|
||||||
|
|
||||||
// stl
|
// stl
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
@ -53,7 +61,14 @@ class geojson_datasource : public mapnik::datasource
|
||||||
public:
|
public:
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
||||||
typedef boost::geometry::model::box<point_type> box_type;
|
typedef boost::geometry::model::box<point_type> box_type;
|
||||||
|
#if BOOST_VERSION >= 105600
|
||||||
|
typedef std::pair<box_type,std::size_t> item_type;
|
||||||
|
typedef boost::geometry::index::linear<16,1> linear_type;
|
||||||
|
typedef boost::geometry::index::rtree<item_type,linear_type> spatial_index_type;
|
||||||
|
#else
|
||||||
|
typedef std::size_t item_type;
|
||||||
typedef boost::geometry::index::rtree<box_type,std::size_t> spatial_index_type;
|
typedef boost::geometry::index::rtree<box_type,std::size_t> spatial_index_type;
|
||||||
|
#endif
|
||||||
|
|
||||||
// constructor
|
// constructor
|
||||||
geojson_datasource(mapnik::parameters const& params);
|
geojson_datasource(mapnik::parameters const& params);
|
||||||
|
@ -74,7 +89,7 @@ private:
|
||||||
boost::shared_ptr<mapnik::transcoder> tr_;
|
boost::shared_ptr<mapnik::transcoder> tr_;
|
||||||
std::vector<mapnik::feature_ptr> features_;
|
std::vector<mapnik::feature_ptr> features_;
|
||||||
spatial_index_type tree_;
|
spatial_index_type tree_;
|
||||||
mutable std::deque<std::size_t> index_array_;
|
mutable std::deque<item_type> index_array_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -30,8 +30,8 @@
|
||||||
#include "geojson_featureset.hpp"
|
#include "geojson_featureset.hpp"
|
||||||
|
|
||||||
geojson_featureset::geojson_featureset(std::vector<mapnik::feature_ptr> const& features,
|
geojson_featureset::geojson_featureset(std::vector<mapnik::feature_ptr> const& features,
|
||||||
std::deque<std::size_t>::const_iterator index_itr,
|
array_type::const_iterator index_itr,
|
||||||
std::deque<std::size_t>::const_iterator index_end)
|
array_type::const_iterator index_end)
|
||||||
: features_(features),
|
: features_(features),
|
||||||
index_itr_(index_itr),
|
index_itr_(index_itr),
|
||||||
index_end_(index_end) {}
|
index_end_(index_end) {}
|
||||||
|
@ -42,7 +42,12 @@ mapnik::feature_ptr geojson_featureset::next()
|
||||||
{
|
{
|
||||||
if (index_itr_ != index_end_)
|
if (index_itr_ != index_end_)
|
||||||
{
|
{
|
||||||
|
#if BOOST_VERSION >= 105600
|
||||||
|
geojson_datasource::item_type const& item = *index_itr_++;
|
||||||
|
std::size_t index = item.second;
|
||||||
|
#else
|
||||||
std::size_t index = *index_itr_++;
|
std::size_t index = *index_itr_++;
|
||||||
|
#endif
|
||||||
if ( index < features_.size())
|
if ( index < features_.size())
|
||||||
{
|
{
|
||||||
return features_.at(index);
|
return features_.at(index);
|
||||||
|
|
|
@ -33,17 +33,18 @@
|
||||||
class geojson_featureset : public mapnik::Featureset
|
class geojson_featureset : public mapnik::Featureset
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
typedef std::deque<geojson_datasource::item_type> array_type;
|
||||||
geojson_featureset(std::vector<mapnik::feature_ptr> const& features,
|
geojson_featureset(std::vector<mapnik::feature_ptr> const& features,
|
||||||
std::deque<std::size_t>::const_iterator index_itr,
|
array_type::const_iterator index_itr,
|
||||||
std::deque<std::size_t>::const_iterator index_end);
|
array_type::const_iterator index_end);
|
||||||
virtual ~geojson_featureset();
|
virtual ~geojson_featureset();
|
||||||
mapnik::feature_ptr next();
|
mapnik::feature_ptr next();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
mapnik::box2d<double> box_;
|
mapnik::box2d<double> box_;
|
||||||
std::vector<mapnik::feature_ptr> const& features_;
|
std::vector<mapnik::feature_ptr> const& features_;
|
||||||
std::deque<std::size_t>::const_iterator index_itr_;
|
array_type::const_iterator index_itr_;
|
||||||
std::deque<std::size_t>::const_iterator index_end_;
|
array_type::const_iterator index_end_;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GEOJSON_FEATURESET_HPP
|
#endif // GEOJSON_FEATURESET_HPP
|
||||||
|
|
|
@ -41,7 +41,7 @@ libraries.append('boost_system%s' % env['BOOST_APPEND'])
|
||||||
libraries.append(env['ICU_LIB_NAME'])
|
libraries.append(env['ICU_LIB_NAME'])
|
||||||
|
|
||||||
if env['PLUGIN_LINKING'] == 'shared':
|
if env['PLUGIN_LINKING'] == 'shared':
|
||||||
libraries.append('mapnik')
|
libraries.append(env['MAPNIK_NAME'])
|
||||||
|
|
||||||
TARGET = plugin_env.SharedLibrary('../%s' % PLUGIN_NAME,
|
TARGET = plugin_env.SharedLibrary('../%s' % PLUGIN_NAME,
|
||||||
SHLIBPREFIX='',
|
SHLIBPREFIX='',
|
||||||
|
|
|
@ -58,7 +58,7 @@ if env.get('BOOST_LIB_VERSION_FROM_HEADER'):
|
||||||
plugin_env.Append(CXXFLAGS=cxxflags)
|
plugin_env.Append(CXXFLAGS=cxxflags)
|
||||||
|
|
||||||
if env['PLUGIN_LINKING'] == 'shared':
|
if env['PLUGIN_LINKING'] == 'shared':
|
||||||
libraries.insert(0,'mapnik')
|
libraries.insert(0,env['MAPNIK_NAME'])
|
||||||
libraries.append(env['ICU_LIB_NAME'])
|
libraries.append(env['ICU_LIB_NAME'])
|
||||||
libraries.append('boost_system%s' % env['BOOST_APPEND'])
|
libraries.append('boost_system%s' % env['BOOST_APPEND'])
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,11 @@ ogr_datasource::~ogr_datasource()
|
||||||
{
|
{
|
||||||
// free layer before destroying the datasource
|
// free layer before destroying the datasource
|
||||||
layer_.free_layer();
|
layer_.free_layer();
|
||||||
|
#if GDAL_VERSION_MAJOR >= 2
|
||||||
|
GDALClose(( GDALDatasetH) dataset_);
|
||||||
|
#else
|
||||||
OGRDataSource::DestroyDataSource (dataset_);
|
OGRDataSource::DestroyDataSource (dataset_);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void ogr_datasource::init(mapnik::parameters const& params)
|
void ogr_datasource::init(mapnik::parameters const& params)
|
||||||
|
@ -82,6 +86,7 @@ void ogr_datasource::init(mapnik::parameters const& params)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// initialize ogr formats
|
// initialize ogr formats
|
||||||
|
// NOTE: in GDAL >= 2.0 this is the same as GDALAllRegister()
|
||||||
OGRRegisterAll();
|
OGRRegisterAll();
|
||||||
|
|
||||||
boost::optional<std::string> file = params.get<std::string>("file");
|
boost::optional<std::string> file = params.get<std::string>("file");
|
||||||
|
@ -112,17 +117,26 @@ void ogr_datasource::init(mapnik::parameters const& params)
|
||||||
|
|
||||||
if (! driver.empty())
|
if (! driver.empty())
|
||||||
{
|
{
|
||||||
|
#if GDAL_VERSION_MAJOR >= 2
|
||||||
|
unsigned int nOpenFlags = GDAL_OF_READONLY | GDAL_OF_VECTOR;
|
||||||
|
const char* papszAllowedDrivers[] = { driver.c_str(), NULL };
|
||||||
|
dataset_ = reinterpret_cast<gdal_dataset_type>(GDALOpenEx(dataset_name_.c_str(),nOpenFlags,papszAllowedDrivers,NULL,NULL));
|
||||||
|
#else
|
||||||
OGRSFDriver * ogr_driver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(driver.c_str());
|
OGRSFDriver * ogr_driver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(driver.c_str());
|
||||||
if (ogr_driver && ogr_driver != NULL)
|
if (ogr_driver && ogr_driver != NULL)
|
||||||
{
|
{
|
||||||
dataset_ = ogr_driver->Open((dataset_name_).c_str(), FALSE);
|
dataset_ = ogr_driver->Open((dataset_name_).c_str(), FALSE);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// open ogr driver
|
// open ogr driver
|
||||||
dataset_ = OGRSFDriverRegistrar::Open((dataset_name_).c_str(), FALSE);
|
#if GDAL_VERSION_MAJOR >= 2
|
||||||
|
dataset_ = reinterpret_cast<gdal_dataset_type>(OGROpen(dataset_name_.c_str(), FALSE, NULL));
|
||||||
|
#else
|
||||||
|
dataset_ = OGRSFDriverRegistrar::Open(dataset_name_.c_str(), FALSE);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! dataset_)
|
if (! dataset_)
|
||||||
|
@ -240,9 +254,30 @@ void ogr_datasource::init(mapnik::parameters const& params)
|
||||||
OGRLayer* layer = layer_.layer();
|
OGRLayer* layer = layer_.layer();
|
||||||
|
|
||||||
// initialize envelope
|
// initialize envelope
|
||||||
|
boost::optional<std::string> ext = params.get<std::string>("extent");
|
||||||
|
if (ext && !ext->empty())
|
||||||
|
{
|
||||||
|
extent_.from_string(*ext);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
OGREnvelope envelope;
|
OGREnvelope envelope;
|
||||||
layer->GetExtent(&envelope);
|
OGRErr e = layer->GetExtent(&envelope);
|
||||||
|
if (e == OGRERR_FAILURE)
|
||||||
|
{
|
||||||
|
if (layer->GetFeatureCount() == 0)
|
||||||
|
{
|
||||||
|
MAPNIK_LOG_ERROR(ogr) << "could not determine extent, layer '" << layer->GetLayerDefn()->GetName() << "' appears to have no features";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::ostringstream s;
|
||||||
|
s << "OGR Plugin: Cannot determine extent for layer '" << layer->GetLayerDefn()->GetName() << "'. Please provide a manual extent string (minx,miny,maxx,maxy).";
|
||||||
|
throw datasource_exception(s.str());
|
||||||
|
}
|
||||||
|
}
|
||||||
extent_.init(envelope.MinX, envelope.MinY, envelope.MaxX, envelope.MaxY);
|
extent_.init(envelope.MinX, envelope.MinY, envelope.MaxX, envelope.MaxY);
|
||||||
|
}
|
||||||
|
|
||||||
// scan for index file
|
// scan for index file
|
||||||
// TODO - layer names don't match dataset name, so this will break for
|
// TODO - layer names don't match dataset name, so this will break for
|
||||||
|
|
|
@ -63,7 +63,7 @@ private:
|
||||||
mapnik::datasource::datasource_t type_;
|
mapnik::datasource::datasource_t type_;
|
||||||
std::string dataset_name_;
|
std::string dataset_name_;
|
||||||
std::string index_name_;
|
std::string index_name_;
|
||||||
OGRDataSource* dataset_;
|
gdal_dataset_type dataset_;
|
||||||
ogr_layer_ptr layer_;
|
ogr_layer_ptr layer_;
|
||||||
std::string layer_name_;
|
std::string layer_name_;
|
||||||
mapnik::layer_descriptor desc_;
|
mapnik::layer_descriptor desc_;
|
||||||
|
|
|
@ -29,9 +29,16 @@
|
||||||
// stl
|
// stl
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
// ogr
|
// gdal
|
||||||
|
#include <gdal_version.h>
|
||||||
#include <ogrsf_frmts.h>
|
#include <ogrsf_frmts.h>
|
||||||
|
|
||||||
|
#if GDAL_VERSION_MAJOR >= 2
|
||||||
|
typedef GDALDataset* gdal_dataset_type;
|
||||||
|
#else
|
||||||
|
typedef OGRDataSource* gdal_dataset_type;
|
||||||
|
#endif
|
||||||
|
|
||||||
class ogr_layer_ptr
|
class ogr_layer_ptr
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -62,7 +69,7 @@ public:
|
||||||
is_valid_ = false;
|
is_valid_ = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void layer_by_name(OGRDataSource* const datasource,
|
void layer_by_name(gdal_dataset_type const datasource,
|
||||||
std::string const& layer_name)
|
std::string const& layer_name)
|
||||||
{
|
{
|
||||||
free_layer();
|
free_layer();
|
||||||
|
@ -84,7 +91,7 @@ public:
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void layer_by_index(OGRDataSource* const datasource,
|
void layer_by_index(gdal_dataset_type const datasource,
|
||||||
int layer_index)
|
int layer_index)
|
||||||
{
|
{
|
||||||
free_layer();
|
free_layer();
|
||||||
|
@ -110,7 +117,7 @@ public:
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void layer_by_sql(OGRDataSource* const datasource,
|
void layer_by_sql(gdal_dataset_type const datasource,
|
||||||
std::string const& layer_sql)
|
std::string const& layer_sql)
|
||||||
{
|
{
|
||||||
free_layer();
|
free_layer();
|
||||||
|
@ -179,7 +186,7 @@ private:
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
OGRDataSource* datasource_;
|
gdal_dataset_type datasource_;
|
||||||
OGRLayer* layer_;
|
OGRLayer* layer_;
|
||||||
std::string layer_name_;
|
std::string layer_name_;
|
||||||
bool owns_layer_;
|
bool owns_layer_;
|
||||||
|
|
|
@ -34,24 +34,10 @@ plugin_sources = Split(
|
||||||
%(PLUGIN_NAME)s_featureset.cpp
|
%(PLUGIN_NAME)s_featureset.cpp
|
||||||
osmparser.cpp
|
osmparser.cpp
|
||||||
dataset_deliverer.cpp
|
dataset_deliverer.cpp
|
||||||
basiccurl.cpp
|
|
||||||
""" % locals()
|
""" % locals()
|
||||||
)
|
)
|
||||||
|
|
||||||
plugin_env['LIBS'] = []
|
plugin_env['LIBS'] = []
|
||||||
if env['RUNTIME_LINK'] == 'static':
|
|
||||||
# pkg-config is more reliable than pg_config across platforms
|
|
||||||
cmd = 'pkg-config libcurl --libs --static'
|
|
||||||
try:
|
|
||||||
plugin_env.ParseConfig(cmd)
|
|
||||||
except OSError, e:
|
|
||||||
# if this fails likely only system curl is available
|
|
||||||
# on OS X at least the system curl lacks a pkg-config file
|
|
||||||
# so static linking is not viable anyway
|
|
||||||
plugin_env.Append(LIBS='curl')
|
|
||||||
else:
|
|
||||||
plugin_env.Append(LIBS='curl')
|
|
||||||
|
|
||||||
plugin_env.Append(LIBS='xml2')
|
plugin_env.Append(LIBS='xml2')
|
||||||
|
|
||||||
# Link Library to Dependencies
|
# Link Library to Dependencies
|
||||||
|
@ -60,7 +46,7 @@ libraries.append(env['ICU_LIB_NAME'])
|
||||||
libraries.append('boost_system%s' % env['BOOST_APPEND'])
|
libraries.append('boost_system%s' % env['BOOST_APPEND'])
|
||||||
|
|
||||||
if env['PLUGIN_LINKING'] == 'shared':
|
if env['PLUGIN_LINKING'] == 'shared':
|
||||||
libraries.append('mapnik')
|
libraries.append(env['MAPNIK_NAME'])
|
||||||
|
|
||||||
TARGET = plugin_env.SharedLibrary('../%s' % PLUGIN_NAME,
|
TARGET = plugin_env.SharedLibrary('../%s' % PLUGIN_NAME,
|
||||||
SHLIBPREFIX='',
|
SHLIBPREFIX='',
|
||||||
|
|
|
@ -29,7 +29,6 @@
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
#include "dataset_deliverer.h"
|
#include "dataset_deliverer.h"
|
||||||
#include "basiccurl.h"
|
|
||||||
|
|
||||||
osm_dataset * dataset_deliverer::dataset = NULL;
|
osm_dataset * dataset_deliverer::dataset = NULL;
|
||||||
std::string dataset_deliverer::last_bbox = "";
|
std::string dataset_deliverer::last_bbox = "";
|
||||||
|
@ -65,32 +64,3 @@ osm_dataset* dataset_deliverer::load_from_file(const string& file, const string&
|
||||||
}
|
}
|
||||||
return dataset;
|
return dataset;
|
||||||
}
|
}
|
||||||
|
|
||||||
osm_dataset* dataset_deliverer::load_from_url(const string& url, const string& bbox, const string& parser)
|
|
||||||
{
|
|
||||||
if (dataset == NULL)
|
|
||||||
{
|
|
||||||
dataset = new osm_dataset;
|
|
||||||
if (dataset->load_from_url(url.c_str(), bbox, parser) == false)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
atexit(dataset_deliverer::release);
|
|
||||||
last_bbox = bbox;
|
|
||||||
}
|
|
||||||
else if (bbox != last_bbox)
|
|
||||||
{
|
|
||||||
MAPNIK_LOG_WARN(osm) << "osm_dataset_deliverer: BBoxes are different=" << last_bbox << "," << bbox;
|
|
||||||
|
|
||||||
// Reload the dataset
|
|
||||||
dataset->clear();
|
|
||||||
if (dataset->load_from_url(url.c_str(), bbox, parser) == false)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
last_bbox = bbox;
|
|
||||||
}
|
|
||||||
return dataset;
|
|
||||||
}
|
|
||||||
|
|
|
@ -37,7 +37,6 @@ private:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static osm_dataset *load_from_file(const string&, const string&);
|
static osm_dataset *load_from_file(const string&, const string&);
|
||||||
static osm_dataset *load_from_url(const string&, const string&, const string&);
|
|
||||||
|
|
||||||
static void release()
|
static void release()
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
#include "osm.h"
|
#include "osm.h"
|
||||||
#include "osmparser.h"
|
#include "osmparser.h"
|
||||||
#include "basiccurl.h"
|
|
||||||
|
|
||||||
#include <mapnik/debug.hpp>
|
#include <mapnik/debug.hpp>
|
||||||
|
|
||||||
|
@ -43,40 +42,6 @@ bool osm_dataset::load(const char* filename,std::string const& parser)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool osm_dataset::load_from_url(std::string const& url,
|
|
||||||
std::string const& bbox,
|
|
||||||
std::string const& parser)
|
|
||||||
{
|
|
||||||
if (parser == "libxml2")
|
|
||||||
{
|
|
||||||
MAPNIK_LOG_DEBUG(osm) << "osm_dataset: load_from_url url=" << url << ",bbox=" << bbox;
|
|
||||||
|
|
||||||
std::ostringstream str;
|
|
||||||
// use curl to grab the data
|
|
||||||
// fetch all the data we want - probably from osmxpai
|
|
||||||
|
|
||||||
str << url << "?bbox=" << bbox;
|
|
||||||
|
|
||||||
MAPNIK_LOG_DEBUG(osm) << "osm_dataset: Full url=" << str.str();
|
|
||||||
|
|
||||||
CURL_LOAD_DATA* resp = grab_http_response(str.str().c_str());
|
|
||||||
|
|
||||||
if (resp != NULL)
|
|
||||||
{
|
|
||||||
char *blx = new char[resp->nbytes + 1];
|
|
||||||
memcpy(blx, resp->data, resp->nbytes);
|
|
||||||
blx[resp->nbytes] = '\0';
|
|
||||||
|
|
||||||
MAPNIK_LOG_DEBUG(osm) << "osm_dataset: CURL Response=" << blx;
|
|
||||||
|
|
||||||
delete[] blx;
|
|
||||||
bool success = osmparser::parse(this, resp->data, resp->nbytes);
|
|
||||||
return success;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
osm_dataset::~osm_dataset()
|
osm_dataset::~osm_dataset()
|
||||||
{
|
{
|
||||||
clear();
|
clear();
|
||||||
|
|
|
@ -108,9 +108,6 @@ public:
|
||||||
~osm_dataset();
|
~osm_dataset();
|
||||||
|
|
||||||
bool load(const char* name, std::string const& parser = "libxml2");
|
bool load(const char* name, std::string const& parser = "libxml2");
|
||||||
bool load_from_url(std::string const&,
|
|
||||||
std::string const&,
|
|
||||||
std::string const& parser = "libxml2");
|
|
||||||
void clear();
|
void clear();
|
||||||
void add_node(osm_node* n) { nodes.push_back(n); }
|
void add_node(osm_node* n) { nodes.push_back(n); }
|
||||||
void add_way(osm_way* w) { ways.push_back(w); }
|
void add_way(osm_way* w) { ways.push_back(w); }
|
||||||
|
|
|
@ -64,13 +64,7 @@ osm_datasource::osm_datasource(const parameters& params)
|
||||||
// load the data
|
// load the data
|
||||||
if (url != "" && bbox != "")
|
if (url != "" && bbox != "")
|
||||||
{
|
{
|
||||||
// if we supplied a url and a bounding box, load from the url
|
throw datasource_exception("Error loading from URL is no longer supported (removed in >= Mapnik 2.3.x");
|
||||||
MAPNIK_LOG_DEBUG(osm) << "osm_datasource: loading_from_url url=" << url << ",bbox=" << bbox;
|
|
||||||
|
|
||||||
if ((osm_data_ = dataset_deliverer::load_from_url(url, bbox, parser)) == NULL)
|
|
||||||
{
|
|
||||||
throw datasource_exception("Error loading from URL");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (osm_filename != "")
|
else if (osm_filename != "")
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
#include "osm.h"
|
|
||||||
#include <iostream>
|
|
||||||
using std::cout;
|
|
||||||
using std::endl;
|
|
||||||
|
|
||||||
int main(int argc,char* argv[])
|
|
||||||
{
|
|
||||||
if(argc>=2)
|
|
||||||
{
|
|
||||||
osm_dataset dataset(argv[1]);
|
|
||||||
bounds b = dataset.get_bounds();
|
|
||||||
osm_item *item;
|
|
||||||
dataset.rewind();
|
|
||||||
while((item=dataset.next_item())!=NULL)
|
|
||||||
{
|
|
||||||
std::cerr << item->to_string() << endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
std::cerr<<"Usage: test OSMfile"<<std::endl;
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
|
||||||
<osm version='0.5' generator='JOSM'>
|
|
||||||
<bound box='0.0,0.0,0.0,0.0' origin='http://www.openstreetmap.org/api/0.5' />
|
|
||||||
<bound box='50.9,-1.45,51.0,-1.35' origin='http://www.openstreetmap.org/api/0.5' />
|
|
||||||
<node id='28418532' timestamp='2007-05-24T10:51:06+01:00' visible='true' lat='50.9664497' lon='-1.3641324'>
|
|
||||||
<tag k='created_by' v='JOSM' />
|
|
||||||
</node>
|
|
||||||
<node id='91109765' timestamp='2007-10-29T07:53:27+00:00' user='nickw' visible='true' lat='50.9300913' lon='-1.4308423'>
|
|
||||||
<tag k='created_by' v='JOSM' />
|
|
||||||
</node>
|
|
||||||
<way id='4698470' timestamp='2007-06-02T19:44:15+01:00' visible='true'>
|
|
||||||
<nd ref='29874141' />
|
|
||||||
<nd ref='29874142' />
|
|
||||||
<tag k='highway' v='residential' />
|
|
||||||
<tag k='maxspeed' v='48' />
|
|
||||||
<tag k='name' v='Arnold Road' />
|
|
||||||
<tag k='created_by' v='JOSM' />
|
|
||||||
</way>
|
|
||||||
<way id='3910609' timestamp='2006-10-28T01:56:05+01:00' user='Dean Earley' visible='true'>
|
|
||||||
<nd ref='20102965' />
|
|
||||||
<nd ref='20133094' />
|
|
||||||
<nd ref='20133102' />
|
|
||||||
<nd ref='20133106' />
|
|
||||||
<nd ref='20133109' />
|
|
||||||
<nd ref='20133112' />
|
|
||||||
<nd ref='20133120' />
|
|
||||||
<nd ref='20133121' />
|
|
||||||
<nd ref='20133126' />
|
|
||||||
<nd ref='20133127' />
|
|
||||||
<nd ref='20133128' />
|
|
||||||
<tag k='highway' v='residential' />
|
|
||||||
<tag k='name' v='Paulet Close' />
|
|
||||||
<tag k='created_by' v='JOSM' />
|
|
||||||
</way>
|
|
||||||
</osm>
|
|
|
@ -1,503 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!DOCTYPE Map>
|
|
||||||
<Map bgcolor="#b5d0d0" srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs">
|
|
||||||
|
|
||||||
<Style name="coast-poly">
|
|
||||||
<Rule>
|
|
||||||
<PolygonSymbolizer>
|
|
||||||
<CssParameter name="fill">#f2efe9</CssParameter>
|
|
||||||
</PolygonSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
<Style name="coast-line">
|
|
||||||
<Rule>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">skyblue</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
<Style name="leisure">
|
|
||||||
<Rule>
|
|
||||||
<Filter>[landuse] = 'reservoir'</Filter>
|
|
||||||
<PolygonSymbolizer>
|
|
||||||
<CssParameter name="fill">#89bac6</CssParameter>
|
|
||||||
</PolygonSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[landuse] = 'cemetery'</Filter>
|
|
||||||
<PolygonSymbolizer>
|
|
||||||
<CssParameter name="fill">grey</CssParameter>
|
|
||||||
</PolygonSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[landuse] = 'wood' or [landuse] = 'forest'</Filter>
|
|
||||||
<PolygonSymbolizer>
|
|
||||||
<CssParameter name="fill">#aed1a0</CssParameter>
|
|
||||||
</PolygonSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[leisure] = 'park' or [leisure] = 'common' or
|
|
||||||
[leisure] = 'golf_course'</Filter>
|
|
||||||
<PolygonSymbolizer>
|
|
||||||
<CssParameter name="fill">#d8e8d0</CssParameter>
|
|
||||||
</PolygonSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[natural] = 'wood'</Filter>
|
|
||||||
<PolygonSymbolizer>
|
|
||||||
<CssParameter name="fill">#aed1a0</CssParameter>
|
|
||||||
</PolygonSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[natural] = 'heath'</Filter>
|
|
||||||
<PolygonSymbolizer>
|
|
||||||
<CssParameter name="fill">#ffe0c0</CssParameter>
|
|
||||||
</PolygonSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
|
|
||||||
<Style name='lakes'>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[natural] = 'water'</Filter>
|
|
||||||
<PolygonSymbolizer>
|
|
||||||
<CssParameter name="fill">#89bac6</CssParameter>
|
|
||||||
</PolygonSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<Style name="text">
|
|
||||||
<Rule>
|
|
||||||
<Filter>[place] = 'city'</Filter>
|
|
||||||
<TextSymbolizer name="name" face_name="Bitstream Vera Sans Roman" size="16" fill="#000" halo_radius="2" wrap_width="0"/>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[place] = 'town'</Filter>
|
|
||||||
<TextSymbolizer name="name" face_name="Bitstream Vera Sans Roman" size="14" fill="#000" halo_radius="2" wrap_width="20"/>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[place] = 'village' or [place] = 'suburb'</Filter>
|
|
||||||
<TextSymbolizer name="name" face_name="Bitstream Vera Sans Roman" size="13" fill="#000" halo_radius="1" wrap_width="0"/>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[place] = 'hamlet'</Filter>
|
|
||||||
<TextSymbolizer name="name" face_name="Bitstream Vera Sans Roman" size="12" fill="#000" halo_radius="1" wrap_width="0"/>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[natural] = 'peak'</Filter>
|
|
||||||
<TextSymbolizer name="name" face_name="Bitstream Vera Sans Roman" size="11" fill="#000" halo_radius="1" wrap_width="0"/>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[natural] = 'wood' or [natural] = 'water' or [natural] = 'heath'
|
|
||||||
or [leisure] = 'golf_course' </Filter>
|
|
||||||
<TextSymbolizer name="name" face_name="Bitstream Vera Sans Roman"
|
|
||||||
size="10" fill="#000" halo_radius="2" wrap_width="0" />
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
<Style name="river">
|
|
||||||
<Rule>
|
|
||||||
<Filter>[waterway] = 'river'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#89bac6</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">6</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
<TextSymbolizer name="name" face_name="Bitstream Vera Sans Roman" size="9" fill="white" placement="line"/>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
<Style name="stream">
|
|
||||||
<Rule>
|
|
||||||
<Filter>[waterway] = 'stream'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#89bac6</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">2</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
<TextSymbolizer name="name" face_name="Bitstream Vera Sans Roman" size="9" fill="white" placement="line"/>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
|
|
||||||
<Style name="roads-casing">
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'motorway' or [highway]='motorway_link'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#506077</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">6</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'trunk' or [highway] = 'trunk_link'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#477147</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">6</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'primary' or [highway] = 'primary_link'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#8d4346</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">6</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'secondary' or [highway] = 'secondary_link'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#a37b48</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">6</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'tertiary' or [highway] = 'tertiary_link'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#999</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">6</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'minor' or [highway] = 'unclassified'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#999</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">6</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'residential' or [highway] = 'service'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#999</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">4</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'unsurfaced' or [highway] = 'track'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#999</CssParameter>
|
|
||||||
<CssParameter name="stroke-dasharray">6,4</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">4</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
<Style name="motorway">
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'motorway' or [highway] = 'motorway_link'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#809bc0</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">4</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
<Style name="trunk">
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'trunk' or [highway] = 'trunk_link'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#7fc97f</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">4</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
<Style name="primary">
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'primary' or [highway] = 'primary_link'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#e46d71</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">4</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
<Style name="secondary">
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'secondary' or [highway] = 'secondary_link'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#fdbf6f</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">4</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
<Style name="tertiary">
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'tertiary' or [highway] = 'tertiary_link'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#ffffc0</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">4</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
<Style name="unclassified">
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'minor' or [highway] = 'unclassified'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#fff</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">4</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
<Style name="residential">
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'residential' or [highway] = 'service' or
|
|
||||||
[highway] = 'unsurfaced' or [highway] = 'track'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#fff</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">2</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
<Style name="bridleway">
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'bridleway' and [newforest_pathtype] = ''</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#fff</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">6</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-opacity">0.4</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">magenta</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">2.0</CssParameter>
|
|
||||||
<CssParameter name="stroke-dasharray">6,4</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'bridleway' and [foot] = 'yes' and [horse] = 'yes'
|
|
||||||
and [bicycle] = 'yes'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#fff</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">6</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-opacity">0.4</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">red</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">2.0</CssParameter>
|
|
||||||
<CssParameter name="stroke-dasharray">6,4</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'bridleway' and [newforest_pathtype] = 'narrow'
|
|
||||||
</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#00c000</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">1.0</CssParameter>
|
|
||||||
<CssParameter name="stroke-dasharray">1,5</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'bridleway' and [newforest_pathtype] = 'path'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#fff</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">6</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-opacity">0.4</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#00c000</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">2.0</CssParameter>
|
|
||||||
<CssParameter name="stroke-dasharray">2,4</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'bridleway' and [newforest_pathtype] = 'gravel'
|
|
||||||
</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#fff</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">6</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-opacity">0.4</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">brown</CssParameter>
|
|
||||||
<CssParameter name="stroke-dasharray">6,4</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">2</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'bridleway' and [newforest_pathtype] = 'track'
|
|
||||||
</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">brown</CssParameter>
|
|
||||||
<CssParameter name="stroke-dasharray">2,4</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">2</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
<Style name="footway">
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'footway'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#fff</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">6</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-opacity">0.4</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">magenta</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">2.0</CssParameter>
|
|
||||||
<CssParameter name="stroke-dasharray">1,4</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'footway' and [foot] = 'yes'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#fff</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">6</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-opacity">0.4</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">red</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">2.0</CssParameter>
|
|
||||||
<CssParameter name="stroke-dasharray">1,4</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
<Style name="cycleway">
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'cycleway'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#fff</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">6</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-opacity">0.4</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">blue</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">2.0</CssParameter>
|
|
||||||
<CssParameter name="stroke-dasharray">4,4</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
<Style name="byway">
|
|
||||||
<Rule>
|
|
||||||
<Filter>[highway] = 'byway'</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#fff</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">6</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-opacity">0.4</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">red</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">2.0</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
<Style name="contours">
|
|
||||||
<Rule>
|
|
||||||
<Filter>[major] = 1</Filter>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#fb9b67</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">1.0</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
<Rule>
|
|
||||||
<ElseFilter/>
|
|
||||||
<LineSymbolizer>
|
|
||||||
<CssParameter name="stroke">#fb9b67</CssParameter>
|
|
||||||
<CssParameter name="stroke-width">0.5</CssParameter>
|
|
||||||
<CssParameter name="stroke-linejoin">round</CssParameter>
|
|
||||||
<CssParameter name="stroke-linecap">round</CssParameter>
|
|
||||||
</LineSymbolizer>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
<Style name="contours-text">
|
|
||||||
<Rule>
|
|
||||||
<TextSymbolizer name="height" face_name="Bitstream Vera Sans Roman"
|
|
||||||
size="8" fill="#fb9b67" halo_radius="0" placement="line"/>
|
|
||||||
</Rule>
|
|
||||||
</Style>
|
|
||||||
|
|
||||||
<Layer name="roads" status="on" srs="+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs">
|
|
||||||
<StyleName>roads-casing</StyleName>
|
|
||||||
<StyleName>footway</StyleName>
|
|
||||||
<StyleName>cycleway</StyleName>
|
|
||||||
<StyleName>bridleway</StyleName>
|
|
||||||
<StyleName>byway</StyleName>
|
|
||||||
<StyleName>residential</StyleName>
|
|
||||||
<StyleName>unclassified</StyleName>
|
|
||||||
<StyleName>tertiary</StyleName>
|
|
||||||
<StyleName>secondary</StyleName>
|
|
||||||
<StyleName>primary</StyleName>
|
|
||||||
<StyleName>trunk</StyleName>
|
|
||||||
<StyleName>motorway</StyleName>
|
|
||||||
<Datasource>
|
|
||||||
<Parameter name="type">osm</Parameter>
|
|
||||||
<Parameter name="parser">libxml2</Parameter>
|
|
||||||
<Parameter name="file">test2.osm</Parameter>
|
|
||||||
</Datasource>
|
|
||||||
</Layer>
|
|
||||||
</Map>
|
|
File diff suppressed because it is too large
Load diff
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue