Giter Site home page Giter Site logo

openstreetmap / mod_tile Goto Github PK

View Code? Open in Web Editor NEW
285.0 285.0 188.0 3.44 MB

Renders map tiles with mapnik and serves them using apache

Home Page: http://wiki.openstreetmap.org/wiki/Mod_tile

License: GNU General Public License v2.0

Shell 3.83% C 23.06% C++ 62.02% Makefile 0.38% M4 3.19% HTML 0.11% CMake 5.36% Dockerfile 2.05%

mod_tile's People

Contributors

apmon avatar avar avatar chrisderock avatar egore avatar hummeltech avatar is avatar jburgess777 avatar jocelynj avatar linsomniac avatar mazdermind avatar michaeljfazio-thales avatar pantierra avatar plepe avatar pnorman avatar rainerjung avatar ramunasd avatar rbuch703 avatar rusvdw avatar schmied avatar seemoritz avatar someoneelseosm avatar stephan2012 avatar stephankn avatar stoecker avatar tomhughes avatar twain47 avatar vholten avatar woodpeck avatar zerebubuth avatar zverik avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mod_tile's Issues

mod_tile/extra/meta2tile does not comile for me

I get six error: dereferencing pointer to incomplete type
for lines 106, 113, 115, 156, 158, 159
the source was missing an include for metatile.h but has been subsequently updated with more functionality by the author prior to me figuring this out and the include is now in there so this is no longer an issue.

Support for OpenSuse

i tried to build the mod_tile as in the http://switch2osm.org/serving-tiles/manually-building-a-tile-server-14-04/

when i run make

the following error is coming

Making all in iniparser3.0b
make[1]: Entering directory /root/src/mod_tile/iniparser3.0b' make[1]: Nothing to be done forall'.
make[1]: Leaving directory /root/src/mod_tile/iniparser3.0b' make[1]: Entering directory/root/src/mod_tile'
depbase=echo src/gen_tile.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';
g++ -DHAVE_CONFIG_H -I. -I./includes -I/usr/include/freetype2 -I/usr/local/inc lude -I/usr/local/include/mapnik/agg -I/opt/PostgreSQL/9.3/include -I/usr/includ e -I/usr/include/freetype2 -I/usr/include/libxml2 -I/usr/include/cairo -I/usr/in clude/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/incl ude/libdrm -I/usr/include/libpng12 -I/usr/include -I/usr/include/cairo -I/usr/i nclude/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/inc lude/freetype2 -I/usr/include/libdrm -I/usr/include/libpng12 -DSYSTEM_LIBINIPA RSER=0 -I/usr/local/include -I/usr/local/include/mapnik/agg -I/opt/PostgreSQL/ 9.3/include -I/usr/include -I/usr/include/freetype2 -I/usr/include/libxml2 -I/us r/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/inc lude/pixman-1 -I/usr/include/libdrm -I/usr/include/libpng12 -DSHAPE_MEMORY_MAPPE D_FILE -DBIGINT -DBOOST_REGEX_HAS_ICU -DHAVE_JPEG -DMAPNIK_USE_PROJ4 -DHAVE_PNG -DHAVE_TIFF -DLINUX -DMAPNIK_THREADSAFE -DBOOST_SPIRIT_NO_PREDEFINED_TERMINALS=1 -DBOOST_PHOENIX_NO_PREDEFINED_TERMINALS=1 -DBOOST_SPIRIT_USE_PHOENIX_V3=1 -DNDE BUG -DHAVE_CAIRO -DGRID_RENDERER -DHAVE_LIBXML2 -std=c++11 -Wall -Wsign-compare -pthread -ftemplate-depth-300 -Wno-pragmas -O3 -MT src/gen_tile.o -MD -MP -MF $d epbase.Tpo -c -o src/gen_tile.o src/gen_tile.cpp &&
mv -f $depbase.Tpo $depbase.Po
src/gen_tile.cpp: In function ‘void parameterize_map_max_connections(mapnik::Map &, int)’:
src/gen_tile.cpp:180:35: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = 0; i < m.layer_count(); i++) {
^
src/gen_tile.cpp:181:22: error: ‘class mapnik::Map’ has no member named ‘getLaye r’
layer& l = m.getLayer(i);
^
src/gen_tile.cpp:182:43: error: invalid use of incomplete type ‘class mapnik::da tasource’
parameters params = l.datasource()->params();
^
In file included from src/gen_tile.cpp:1:0:
/usr/local/include/mapnik/layer.hpp:37:7: error: forward declaration of ‘class m apnik::datasource’
class datasource;
^
src/gen_tile.cpp:188:9: error: ‘shared_ptr’ is not a member of ‘boost’
boost::shared_ptr ds = datasource_cache::instance().create( params);
^
src/gen_tile.cpp:188:9: note: suggested alternative:
In file included from /usr/include/c++/4.8/bits/shared_ptr.h:52:0,
from /usr/include/c++/4.8/memory:82,
from /usr/local/include/mapnik/layer.hpp:32,
from src/gen_tile.cpp:1:
/usr/include/c++/4.8/bits/shared_ptr_base.h:261:11: note: ‘std::shared_ptr’
class shared_ptr;
^
src/gen_tile.cpp:188:37: error: expected primary-expression before ‘>’ token
boost::shared_ptr ds = datasource_cache::instance().create( params);
^
src/gen_tile.cpp:188:39: error: ‘ds’ was not declared in this scope
boost::shared_ptr ds = datasource_cache::instance().create( params);
^
src/gen_tile.cpp: In function ‘protoCmd render(xmlmapconfig_, int, int, int, cha r_, metaTile&)’:
src/gen_tile.cpp:259:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (yy = 0; yy < render_size_ty; yy++) {
^
src/gen_tile.cpp:260:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (xx = 0; xx < render_size_tx; xx++) {
^
make[1]: *** [src/gen_tile.o] Error 1
make[1]: Leaving directory `/root/src/mod_tile'
make: *** [all-recursive] Error 1

problem compiling

hi,

i'm compiling mod_tile under CentOS 6.
mapnik has been installed under /opt/osm.

$ locate mapnik-config
/opt/osm/bin/mapnik-config

./configure --with-boost=/opt/boost/ --with-libmapnik=/opt/osm/bin/mapnik-config
[..]
checking for mapnik-config... /opt/osm/bin/mapnik-config
checking for mapnik libraries... yes

yet it fails to compile. any idea? here's the output: http://pastebin.com/raw.php?i=fwtvAbBh

render_list errors

Running cat foo | render_list -s /var/run/renderd/renderd.sock -n 8 -m default -f I get errors

Starting 8 rendering threads

Meta tiles rendered: Rendered 10 tiles in 0.00 seconds (11074.20 tiles/s)
Total tiles rendered: Rendered 640 tiles in 0.00 seconds (708748.62 tiles/s)
Total tiles handled from input: Rendered 10 tiles in 0.00 seconds (11074.20 tiles/s)
rendering failed, pausing

Meta tiles rendered: Rendered 20 tiles in 0.00 seconds (14836.79 tiles/s)
Total tiles rendered: Rendered 1280 tiles in 0.00 seconds (949554.88 tiles/s)
Total tiles handled from input: Rendered 20 tiles in 0.00 seconds (14836.79 tiles/s)

Meta tiles rendered: Rendered 30 tiles in 0.00 seconds (20876.83 tiles/s)
Total tiles rendered: Rendered 1920 tiles in 0.00 seconds (1336116.88 tiles/s)
Total tiles handled from input: Rendered 30 tiles in 0.00 seconds (20876.83 tiles/s)

Meta tiles rendered: Rendered 40 tiles in 0.00 seconds (26472.54 tiles/s)
Total tiles rendered: Rendered 2560 tiles in 0.00 seconds (1694242.25 tiles/s)
Total tiles handled from input: Rendered 40 tiles in 0.00 seconds (26472.54 tiles/s)
rendering failed, pausing
rendering failed, pausing
rendering failed, pausing
rendering failed, pausing
rendering failed, pausing
rendering failed, pausing
rendering failed, pausing

I ran renderd in foreground mode and got this

renderd[1845]: DEBUG: Got incoming connection, fd 8, number 1
renderd[1845]: DEBUG: Got incoming connection, fd 10, number 2
renderd[1845]: DEBUG: Got incoming connection, fd 11, number 3
renderd[1845]: DEBUG: Got incoming connection, fd 12, number 4
renderd[1845]: DEBUG: Got incoming connection, fd 13, number 5
renderd[1845]: DEBUG: Got incoming connection, fd 14, number 6
renderd[1845]: DEBUG: Got incoming request with protocol version 2
renderd[1845]: Recv Error on fd 10 (Success). Read 65 bytes
renderd[1845]: DEBUG: Got incoming connection, fd 15, number 7
renderd[1845]: DEBUG: Got incoming request with protocol version 0
renderd[1845]: DEBUG: Got command Ignore fd(10) xml(), z(0), x(0), y(0)
renderd[1845]: WARNING: Ignoring unknown command Ignore fd(10) xml(), z(0), x(0), y(0)
renderd[1845]: DEBUG: Sending NotDone response(4)
renderd[1845]: DEBUG: Got incoming request with protocol version 2
renderd[1845]: Recv Error on fd 11 (Success). Read 65 bytes
renderd[1845]: DEBUG: Got incoming connection, fd 16, number 8
renderd[1845]: DEBUG: Got incoming request with protocol version 2
renderd[1845]: Recv Error on fd 8 (Success). Read 65 bytes
renderd[1845]: DEBUG: Got incoming request with protocol version 0
renderd[1845]: DEBUG: Got command Ignore fd(8) xml(), z(0), x(0), y(0)
renderd[1845]: WARNING: Ignoring unknown command Ignore fd(8) xml(), z(0), x(0), y(0)
renderd[1845]: DEBUG: Sending NotDone response(4)
renderd[1845]: DEBUG: Got incoming request with protocol version 0

I did a git bisect and this is the commit where it was introduced

pnorman@osm2pgsqlbench:~/osm/mod_tile$ git bisect bad
fdc317a8f36f001d3eb2a864eb7cff55f11fdeb7 is the first bad commit
commit fdc317a8f36f001d3eb2a864eb7cff55f11fdeb7
Author: Kai Krueger <[email protected]>
Date:   Sun Oct 13 23:22:08 2013 -0600

    Update mod_tile to renderd protocol to version 3.

    Include an "options" string and a "mimetype" string.

:040000 040000 a0551beb9f9874fc84e2ae21078f98bf19130265 3e75c961b2ebcfceb9f8a9307ec964d83b46ad6a M      includes
:040000 040000 a1934c59e0d8e1885e4a16b8e318a8a6cb35cedc 67035c4dbbab00909fccbaa8ccd921988f20c60d M      src

Host name warning at startup/reload

If something (AddTileConfig/LoadTileConfig) tries to add a tile config before the ServerName directive is seen (normal on Ubuntu where module config files are loaded before it is set) then you get this warning:

08:08:35 2013] [warn] Could not determine host name of server to configure tile-json request. Using localhost instead

32-bit instead of 8-bit PNG output

Rendering meta tiles with mod_tile/renderd always made my hillshade look ugly. This results in the 8 bit PNGs, which Mapnik doesn't rasterize nicely. The difference can be seen here:
8-bit: png256
32-bit: png

Only two lines have to be changed in src/gen_tile.c:
Substitute both "png256" with "png"

There are two possible ways:

  • Introduce option in user config file (/usr/local/etc/renderd.conf) for bit depth
  • Improve Mapnik. Imagemagick can produce nice looking 8-bit PNGs for example by "convert -type Palette -quality 90 [...]"

Developer Documentation

I want to go into developing of mod-tile and renderd but can't find any developer documentation. Is there any and if so where to find it?

Add sysv init script

Example script (basic but fully functional) provided.

/etc/init.d/renderd

#!/bin/bash
#
# renderd        Startup script for renderd
#
# chkconfig: - 63 50
# description: Mapnik rendering daemon
# processname: renderd
# config: /usr/local/etc/renderd.conf
# pidfile: /var/run/renderd/renderd.pid
#
### END INIT INFO

# Source function library.
. /etc/init.d/functions

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Mapnik rendering daemon"
NAME=renderd
DAEMON=/usr/local/bin/$NAME
DAEMON_ARGS="-c /usr/local/etc/renderd.conf"
lockfile=${LOCKFILE-/var/lock/subsys/$NAME}
pidfile=/var/run/$NAME/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
RUNASUSER=geo
STOP_TIMEOUT=${STOP_TIMEOUT-10}

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
#. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
start() {
    echo -n $"Starting $DESC" "$NAME: "
    mkdir -p /var/run/renderd
    chown $RUNASUSER /var/run/renderd
    # Return
    #   0 if daemon has been started
    daemon --pidfile=$pidfile --user $RUNASUSER $DAEMON $DAEMON_ARGS
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && touch ${lockfile}
    return $RETVAL
}

#
# Function that stops the daemon/service
#
stop() {
        echo -n $"Stopping $DESC" "$NAME: "
        killproc -p ${pidfile} -d ${STOP_TIMEOUT} $NAME
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|force-reload)
        stop
        start
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 3
        ;;
esac

:

Incorrect ubuntu renderd.conf plugins_dir

Off of a clean install I got the error

An error occurred while loading the map layer 'default': Could not create datasource. No plugin found for type 'shape' (searched in: /usr/lib/mapnik/2.1/input

I traced this to an incorrect plugins_dir in renderd.conf and set plugins_dir=/usr/lib/mapnik/input but this should be set by default.

#2 (comment) suggests mapnik-config --input-plugins but a minimal install doesn't have mapnik-config which is part of libmapnik2-dev

Incompability with Postgis 2.1

I've got SQL error during pre-rendering process, because AsBinary and SetSRID functions has been renamed to ST_AsBinary and ST_SetSRID.

render_list default socket

The render_list default socket is reported as /tmp/osm-renderd but the default location in the renderd config file installed by packages is /var/run/renderd/renderd.sock. These should agree.

ModTileEnableTileThrottlingXForward=1 seems to block proxy requests

When configuring a tile server with ModTileEnableTileThrottlingXForward=1, I didn't get any answer when using X-Forwarded-for, but the same request without this header worked correctly. As soon as I changed the server configuration to ModTileEnableTileThrottlingXForward=0, the request worked correctly.

$ curl -v -H "Via: 1.1 guenievre (squid/3.3.8)" -H "Cache-Control: max-age=259200" -H "Connection: keep-alive" -A "Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0 Iceweasel/29.0.1" -e "http://tile.openstreetmap.fr/" -H "DNT: 1" -H "Accept: image/png,image/*;q=0.8,*/*;q=0.5" -H "Accept-Language: fr-fr,chrome://global/locale/intl.properties;q=0.5" -H "Accept-Encoding: gzip, deflate" -H "X-Forwarded-For: 10.1.2.22" http://a.tile.openstreetmap.fr/osmfr/6/32/25.png >/dev/null
* Hostname was NOT found in DNS cache
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 2a01:e0d:1:c:58bf:fac1:0:13...
* Connected to a.tile.openstreetmap.fr (2a01:e0d:1:c:58bf:fac1:0:13) port 80 (#0)
> GET /osmfr/6/32/25.png HTTP/1.1
> User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0 Iceweasel/29.0.1
> Host: a.tile.openstreetmap.fr
> Referer: http://tile.openstreetmap.fr/
> Via: 1.1 guenievre (squid/3.3.8)
> Cache-Control: max-age=259200
> Connection: keep-alive
> DNT: 1
> Accept: image/png,image/*;q=0.8,*/*;q=0.5
> Accept-Language: fr-fr,chrome://global/locale/intl.properties;q=0.5
> Accept-Encoding: gzip, deflate
> X-Forwarded-For: 10.1.2.22
> 
* Empty reply from server
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
* Connection #0 to host a.tile.openstreetmap.fr left intact
curl: (52) Empty reply from server

"Failed to read cmd on fd" errors since mod_tile update on 2nd June

I have a fairly standard Ubuntu 14.04 based map server, set up as per http://wiki.openstreetmap.org/wiki/User:SomeoneElse/Ubuntu_1404_tileserver .

I installed it on 26th April, and everything worked as expected. On 2nd June I updated mod_tile from github and started seeing "Failed to read cmd on fd" errors in syslog:

Jun 9 12:20:52 ubuntuvm38 renderd[21354]: DEBUG: Got incoming request with protocol version 2
Jun 9 12:20:52 ubuntuvm38 renderd[21354]: DEBUG: Got command RenderPrio fd(14) xml(default), z(18), x(130734), y(85209), mime(image/png), options()
Jun 9 12:20:55 ubuntuvm38 renderd[21354]: DEBUG: DONE TILE default 18 130728-130735 85208-85215 in 2.407 seconds
Jun 9 12:20:55 ubuntuvm38 renderd[21354]: DEBUG: Sending render cmd(3 default 18/130735/85209) with protocol version 2 to fd 8
Jun 9 12:20:55 ubuntuvm38 renderd[21354]: DEBUG: Failed to read cmd on fd 8
Jun 9 12:20:55 ubuntuvm38 renderd[21354]: DEBUG: Connection 0, fd 8 closed, now 5 left

This doesn't stop it working (all tiles are still being rendered as expected) but it does seem odd. Other server updates between 26th April and 2nd June include Ubuntu apt-get updates, a database reload from a new PBF file, but no changes to osm2pgsql style or (presumably) database columns etc.

http://forum.openstreetmap.org/viewtopic.php?id=25587

(from May 23rd) looks like it might be a similar issue.

mod_tile config parsing

Fetching tiles at /buildingclip does not work with this renderd.conf

[renderd]
stats_file=/var/run/renderd/renderd.stats
socketname=/var/run/renderd/renderd.sock
num_threads=4
tile_dir=/var/lib/mod_tile

[mapnik]
plugins_dir=/usr/lib/mapnik/input
font_dir=/usr/share/fonts/truetype/
font_dir_recurse=true

[default]
URI=/osm/
XML=/home/ubuntu/mapnik-stylesheets/osm.xml

[carto]
URI=/carto/
XML=/home/ubuntu/openstreetmap-carto/osm-carto.xml

[noamenity]
XML=/home/ubuntu/openstreetmap-carto/noamenity.xml

[nolandcover]
XML=/home/ubuntu/openstreetmap-carto/nolandcover.xml

[roadbbox]
XML=/home/ubuntu/openstreetmap-carto/roadbbox.xml

[z14road]
XML=/home/ubuntu/openstreetmap-carto/z14_road.xml

[buildingclip]
URI=/buildingclip/
XML=/home/ubuntu/openstreetmap-carto/building_clip.xml

But it does work with this second renderd.conf

[renderd]
stats_file=/var/run/renderd/renderd.stats
socketname=/var/run/renderd/renderd.sock
num_threads=4
tile_dir=/var/lib/mod_tile

[mapnik]
plugins_dir=/usr/lib/mapnik/input
font_dir=/usr/share/fonts/truetype/
font_dir_recurse=true

[default]
URI=/osm/
XML=/home/ubuntu/mapnik-stylesheets/osm.xml

[carto]
URI=/carto/
XML=/home/ubuntu/openstreetmap-carto/osm-carto.xml

[buildingclip]
URI=/buildingclip/
XML=/home/ubuntu/openstreetmap-carto/building_clip.xml

[noamenity]
XML=/home/ubuntu/openstreetmap-carto/noamenity.xml

[nolandcover]
XML=/home/ubuntu/openstreetmap-carto/nolandcover.xml

[roadbbox]
XML=/home/ubuntu/openstreetmap-carto/roadbbox.xml

[z14road]
XML=/home/ubuntu/openstreetmap-carto/z14_road.xml

The only difference is that the buildingclip style has been moved up. Perhaps the styles with no URI parameter are screwing up the config parsing?

Both config files result in a line with [notice] Loading tile config buildingclip at /buildingclip/ for zooms 0 - 18 from tile directory /var/lib/mod_tile with extension .png and mime type image/png

Adding AddTileConfig /buildingclip/ buildingclip to the apache config for the first renderd.conf causes it to work.

Unit / functional / integration testing of renderd

Currently mod_tile and renderd don't have a regression test suit. It is therefore unfortunately too easy to break something without noticing.

To try and continue to improve the quality of the software, it would be good to have a unit / functional / integration test suit.

This issue can be used to discuss the initial creation of such a test suit and how best to go about it.

"Command failed with rc=65536"

Hi there,

I am currently trying to setup a tile server and have Ubunto 10.04 on my hosted machine. Following the tutorial: http://switch2osm.org/serving-tiles/manually-building-a-tile-server/ I come to a point where I have to install mod_tile. That leads to the following result:

guido@myserver:~/src/mod_tile$ sudo make install-mod_tile
mkdir -p apxs2 -q LIBEXECDIR
apxs2 -S LIBEXECDIR=apxs2 -q LIBEXECDIR -c -i -I./includes -lcurl -lcairo ./src/mod_tile.c ./src/sys_utils.c ./src/store.c ./src/store_file.c ./src/store _file_utils.c ./src/store_memcached.c ./src/store_rados.c ./src/store_ro_http_proxy.c ./src/store_ro_composite.c ./src/store_null.c
/usr/share/apr-1.0/build/libtool --silent --mode=compile --tag=disable-static x86_64-linux-gnu-gcc -prefer-pic -DLINUX=2 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_REEN TRANT -I/usr/include/apr-1.0 -I/usr/include/openssl -I/usr/include/xmltok -pthread -I/usr/include/apache2 -I/usr/include/apr-1.0 -I/usr/include/apr-1.0 -I ./includes -c -o ./src/mod_tile.lo ./src/mod_tile.c && touch ./src/mod_tile.slo
./src/mod_tile.c: In function 'socket_init':
./src/mod_tile.c:142: warning: pointer type mismatch in conditional expression
./src/mod_tile.c: In function 'delay_allowed':
./src/mod_tile.c:712: warning: passing argument 1 of 'apr_strtok' discards qualifiers from pointer target type
/usr/include/apr-1.0/apr_strings.h:229: note: expected 'char ' but argument is of type 'const char *'
/usr/share/apr-1.0/build/libtool --silent --mode=compile --tag=disable-static x86_64-linux-gnu-gcc -prefer-pic -DLINUX=2 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_REEN TRANT -I/usr/include/apr-1.0 -I/usr/include/openssl -I/usr/include/xmltok -pthread -I/usr/include/apache2 -I/usr/include/apr-1.0 -I/usr/include/apr-1.0 -I ./includes -c -o ./src/sys_utils.lo ./src/sys_utils.c && touch ./src/sys_utils.slo
/usr/share/apr-1.0/build/libtool --silent --mode=compile --tag=disable-static x86_64-linux-gnu-gcc -prefer-pic -DLINUX=2 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_REEN TRANT -I/usr/include/apr-1.0 -I/usr/include/openssl -I/usr/include/xmltok -pthread -I/usr/include/apache2 -I/usr/include/apr-1.0 -I/usr/include/apr-1.0 -I ./includes -c -o ./src/store.lo ./src/store.c && touch ./src/store.slo
/usr/share/apr-1.0/build/libtool --silent --mode=compile --tag=disable-static x86_64-linux-gnu-gcc -prefer-pic -DLINUX=2 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_REEN TRANT -I/usr/include/apr-1.0 -I/usr/include/openssl -I/usr/include/xmltok -pthread -I/usr/include/apache2 -I/usr/include/apr-1.0 -I/usr/include/apr-1.0 -I ./includes -c -o ./src/store_file.lo ./src/store_file.c && touch ./src/store_file.slo
/usr/share/apr-1.0/build/libtool --silent --mode=compile --tag=disable-static x86_64-linux-gnu-gcc -prefer-pic -DLINUX=2 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_REEN TRANT -I/usr/include/apr-1.0 -I/usr/include/openssl -I/usr/include/xmltok -pthread -I/usr/include/apache2 -I/usr/include/apr-1.0 -I/usr/include/apr-1.0 -I ./includes -c -o ./src/store_file_utils.lo ./src/store_file_utils.c && touch ./src/store_file_utils.slo
/usr/share/apr-1.0/build/libtool --silent --mode=compile --tag=disable-static x86_64-linux-gnu-gcc -prefer-pic -DLINUX=2 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_REEN TRANT -I/usr/include/apr-1.0 -I/usr/include/openssl -I/usr/include/xmltok -pthread -I/usr/include/apache2 -I/usr/include/apr-1.0 -I/usr/include/apr-1.0 -I ./includes -c -o ./src/store_memcached.lo ./src/store_memcached.c && touch ./src/store_memcached.slo
./src/store_memcached.c: In function 'init_storage_memcached':
./src/store_memcached.c:233: error: 'STORE_LOGLVL_ERR' undeclared (first use in this function)
./src/store_memcached.c:233: error: (Each undeclared identifier is reported only once
./src/store_memcached.c:233: error: for each function it appears in.)
apxs:Error: Command failed with rc=65536
.
make: *
* [install-mod_tile] Error 1

I cant tell if its really a mod_tile issue or not, but I am stuck here :(
Any help would be much appreciated!

Guido

error compiling: check_gettime()

Since 91a2e1d there's a bug compiling mod_tile:

libtool: link: g++ -g -O2 -o gen_tile_test gen_tile_test.o metatile.o gen_tile_test-request_queue.o gen_tile_test-daemon.o gen_tile_test-daemon_compat.o gen_tile.o gen_tile_test-sys_utils.o gen_tile_test-cache_expire.o gen_tile_test-store.o gen_tile_test-store_file.o gen_tile_test-store_file_utils.o gen_tile_test-store_memcached.o gen_tile_test-store_rados.o gen_tile_test-store_ro_http_proxy.o gen_tile_test-store_ro_composite.o gen_tile_test-store_null.o  -L/usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/libfreetype.so -lz -L/usr/local/lib -lmapnik -L/usr/lib -Liniparser3.0b/.libs /usr/local/lib/libiniparser.so -lm
gen_tile_test.o: In function `addition_thread(void*)':
/home/skunk/code/mod_tile/gen_tile_test.cpp:84: undefined reference to `clock_gettime'
collect2: ld returned 1 exit status
make[2]: *** [gen_tile_test] Error 1
make[2]: Leaving directory `/home/skunk/code/mod_tile'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/skunk/code/mod_tile'
make: *** [all] Error 2

The man-page for clock_gettime states, that linking with -lrt is required. So, after adding -lrt to LIBS in Makefile, compilation works fine.

Please do so too.

mod_tile works extemely slow

Hi,

I got virtual server (Xen) with Ubuntu 14.04.1 installed and:
24 virtual cores,
128GB RAM,
2TB HDD
and I'm experiencing extremely slow renders for a planet snapshot.

My postgresql.conf:
max_connections = 1200
shared_buffers = 4GB
temp_buffers = 128MB
work_mem = 512MB
maintenance_work_mem = 32GB
effective_io_concurrency = 6
fsync = on
synchronous_commit = on
full_page_writes = off
checkpoint_segments = 32
checkpoint_timeout = 10min
checkpoint_completion_target = 0.9
effective_cache_size = 24GB
autovacuum = on

renderd.conf:
[renderd]
socketname=/var/run/renderd/renderd.sock
num_threads=24
tile_dir=/var/lib/mod_tile
stats_file=/var/run/renderd/renderd.stats

[mapnik]
plugins_dir=/usr/lib/mapnik/2.0/input/
font_dir=/usr/share/fonts/truetype/ttf-dejavu
font_dir_recurse=1

[default]
URI=/osm_tiles/
TILEDIR=/var/lib/mod_tile
XML=$OWN_STYLE$
TILESIZE=256

During renderd I'm getting a lot errors like:
renderd[32087]: DEBUG: Failed to read cmd on fd 16
Or:
renderd[32087]: ERROR: failed to render TILE default 7 72-79 40-47
renderd[32087]: reason: Postgis Plugin: bad connection

Generating tile can take even 5000 seconds.

What can I do to fix it?

Thank you in advance for help.

free(store) in renderd_list not safe for some storages

Some storages already have free(store) in close function. For example store_ro_composite.c:

static int ro_composite_close_storage(struct storage_backend * store) {
    struct ro_composite_ctx * ctx = (struct ro_composite_ctx *)(store->storage_ctx);
    ctx->store_primary->close_storage(ctx->store_primary);
    ctx->store_secondary->close_storage(ctx->store_secondary);
    if(ctx->cache.tile) free(ctx->cache.tile);
    free(ctx);
    free(store);
    return 0;
}

Here is the patch for renderd_list.c

--- a/src/render_list.c
+++ b/src/render_list.c
@@ -301,7 +301,9 @@ int main(int argc, char **argv)
     }

     store->close_storage(store);
-    free(store);
+    if (store != NULL) {
+        free(store);
+    }
     finish_workers();

     free(spath);

mod_tile compile make error

environment ubuntu13.04 mapnik 3.0
Download from the git clonehttps://github.com/openstreetmap/mod_tile
. / autogen.sh
. / configure
make
Later wrong information below.

UTFGrid support

It would be great to support UTFGrid generation using renderd and mod_tile.

https://github.com/mapbox/utfgrid-spec

An example UTFGrid-enabled mapnik xml file is at https://gist.github.com/gravitystorm/5824793

I'd suggest that it's a per-layer option to also generate the UTFGrid at the same time as the png (or other raster) output, and expire them as a pair. However, I can see there being some (rare) usecases where you may wish to generate UTFGrids without a corresponding png output.

init_storage_backend: Value too large for defined data type

There is problem with stat function on big filesystem (XFS, 2TB+)

Possible fix (worked for me):
store.c add:

define __USE_LARGEFILE64

define _LARGEFILE_SOURCE

define _LARGEFILE64_SOURCE

define __USE_FILE_OFFSET64

before #include <sys/stat.h>

segfault error 4 in osm.input

I built my tile-server according to this guide from switch2osm.org

I imported the entire planet, and can serve some tiles.

This one in particular though: http://a.tile.openstreetmap.org/3/2/3.png

Causes a segfault on my own server:

Mar 17 12:55:28 osm renderd[9653]: DEBUG: Got incoming connection, fd 8,     number 1
Mar 17 12:55:28 osm renderd[9653]: DEBUG: Got incoming request with protocol     version 2
Mar 17 12:55:28 osm renderd[9653]: DEBUG: Got command RenderPrio fd(8) xml(    default), z(3), x(2), y(3), mime(image/png), options()
Mar 17 12:55:28 osm renderd[9653]: DEBUG: START TILE default 3 0-7 0-7, new     metatile
Mar 17 12:55:28 osm renderd[9653]: Rendering projected coordinates 3 0 0 -> -    20037508.342800|-20037508.342800 20037508.342800|20037508.342800 to a 8 x 8     tile
Mar 17 12:55:36 osm kernel: [3406723.983887] renderd[9658]: segfault at 18 ip 00007f7f13534b3e sp 00007f7f10e585f0 error 4 in osm.input[7f7f1351b000+21000]

Set max_size automatically based on configured thread count?

If renderd is configured to use more than 10 threads then the max_size parameter on each postgres layer in the stylesheet needs to be increased. It would be nice if renderd could do this automatically by iterating over the layers in the stylesheet and updating the max_size value based on the thread count.

Compile Error at parameterize_style.cpp function ‘void parameterize_map_language(mapnik::Map&, char*)’

Hello,
i tryed to compile mod_tile under Ubuntu 12.04 Desktop with gcc and g++ version 4.6.4.

osm@maps:~/src/mod_tile$ make
Making all in iniparser3.0b
make[1]: Entering directory /home/osm/src/mod_tile/iniparser3.0b' make[1]: Nothing to be done forall'.
make[1]: Leaving directory /home/osm/src/mod_tile/iniparser3.0b' make[1]: Entering directory/home/osm/src/mod_tile'
g++ -DHAVE_CONFIG_H -I. -I./includes -I/usr/include/freetype2 -pthread -I/usr/include -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/cairomm-1.0 -I/usr/lib/x86_64-linux-gnu/cairomm-1.0/include -I/usr/include/cairo -I/usr/include/sigc++-2.0 -I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -g -O2 -MT parameterize_style.o -MD -MP -MF .deps/parameterize_style.Tpo -c -o parameterize_style.o test -f 'src/parameterize_style.cpp' || echo './'src/parameterize_style.cpp

src/parameterize_style.cpp: In function ‘void parameterize_map_language(mapnik::Map&, char_)’:
src/parameterize_style.cpp:46:97: error: request for member ‘create’ in ‘mapnik::singleton<T, CreatePolicy>::instance with T = mapnik::datasource_cache, CreatePolicy = mapnik::CreateStatic’, which is of non-class type ‘mapnik::datasource_cache_’
make[1]: *** [parameterize_style.o] Error 1
make[1]: Leaving directory `/home/osm/src/mod_tile'
make: *** [all-recursive] Error 1

Log spam at startup/reload

Every time apache is started or reloaded an informational message is logged to the console:

[Tue Aug 13 08:10:59 2013] [notice] Loading tile config default at /default/ for zooms 0 - 19 from tile directory /srv/tile.openstreetmap.org/tiles with extension .png and mime type image/png

Virtual host stops mod_tile?

Hello,

I installed OSM via switch2osm package installer on Ubuntu 12.4.04. When I add a subdomain with a2ensite and reload, the tile (0/0/0.png for instance) goes 404. If I a2dissite and reload it's back up again.

How can I fix this?

render_list verbosity

render_list has no options to control the verbosity, but always outputs debug options. An option to only display the results or to display no output except errors would be helpful.

Can't use semicolons (and therefore html entities) in per-style attribution

The default attribution can be interpreted as html, e.g. when shown in tilejson output

https://github.com/openstreetmap/mod_tile/blob/master/mod_tile.h#L32

It can be overwritten per-style in renderd.conf

https://github.com/openstreetmap/mod_tile/blob/master/renderd.conf#L38

However, this doesn't work if you have any semicolons in your override string, e.g. for ampersands, copyright entities or similar. The role of semicolons in .ini files seems to be implementation-specific as to whether they are a comment delineator only at the start of the line, only when preceded by whitespace, or at any point during the line. Additionally, escape sequences (typically backslash, e.g. ; ) are implementation-specific. At the moment, we have an anywhere-no-escape parser.

Perhaps we need a different ini parser, or a different configuration file format.

renderd errors with osm.xml

When I start renderd -f, I get:

An error occurred while loading the map layer 'default': Could not create datasource for type: 'shape' encountered during parsing of layer 'world' in Layer at line 4945 of '/home/postgres/osm-standard-style/mapnik-stylesheets/osm.xml'
renderd[16603]: An error occurred while loading the map layer 'default': Could not create datasource for type: 'shape' encountered during parsing of layer 'world' in Layer at line 4945 of '/home/postgres/osm-standard-style/mapnik-stylesheets/osm.xml'
renderd[16603]: An error occurred while loading the map layer 'default': Could not create datasource for type: 'shape' encountered during parsing of layer 'world' in Layer at line 4945 of '/home/postgres/osm-standard-style/mapnik-stylesheets/osm.xml'renderd[16603]: An error occurred while loading the map layer 'default': Could not create datasource for type: 'shape' encountered during parsing of layer 'world' in Layer at line 4945 of '/home/postgres/osm-standard-style/mapnik-stylesheets/osm.xml'

This is line 4945:

world

/home/postgres/osm-standard-style/mapnik-stylesheets/world_boundaries/shoreline_300.shp
shape

These instructions are fubar: http://wiki.openstreetmap.org/wiki/HowTo_mod_tile
They create .// in urls.
I manually put .shp but it didn't make any difference.

mapnik-config parameters don't work with 2.0

d0dab6e (#83) introduced getting Mapnik's dependencies with $MAPNIK_CONFIG --dep-includes. The problem is, this doesn't seem to exist with Mapnik 2.0, where this output is generated in the Makefile

MAPNIK_CFLAGS = -I/usr/local/include -I/usr/local/include -I/usr/include -I/usr/include/freetype2 -I/usr/include/libxml2 -I/usr/include/gdal -I/usr/include/postgresql -DHAVE_JPEG -DBOOST_REGEX_HAS_ICU -ansi -Wall -pthread -ftemplate-depth-300 -DLINUX -DBOOST_SPIRIT_THREADSAFE -DMAPNIK_THREADSAFE -O3 -finline-functions -Wno-inline -DNDEBUG -DLIBTOOL_SUPPORTS_ADVISE -DHAVE_LIBXML2
MAPNIK_CONFIG = /usr/local/bin/mapnik-config
MAPNIK_INCLUDES =  Usage: mapnik-config [OPTION]

Known values for OPTION are:

  --prefix          display mapnik prefix [default /usr/local]
  --prefix=DIR      change mapnik prefix [default /usr/local]
  --libs            print library linking information
  --dep-libs        print library linking information for mapnik depedencies
  --ldflags         print library paths (-L) information
  --cflags          print pre-processor and compiler flags
  --fonts           print default fonts directory
  --input-plugins   print default input plugins directory
  --json            print all config options as json object
  --help            display this help and exit
  -v --version      output version information
  --git-revision    output git hash
MAPNIK_LDFLAGS = -L/usr/local/lib -lmapnik
MAPNIK_VERSION = 2.0.3-pre

Reported via IRC for someone following switch2osm with Ubuntu 12.04.

Does "tile_dir" option really work?

Hi!
I have no success with the "tile_dir" option. Seems that it doesn't work for me. So I need to put a symlinks in /var/lib/mod_tile directory to specify the desired tiles location. Maybe I missed something? Help me understand.

openstreetmap

Is it possible to get the state & district boundaries of osm and colouring the districts area.

Specifying two different XMLs for one map for various zooms

Hello again!
Is it possible to specify two different XML stylesheets for one map at different zoom levels? I tried this config:

[map]
URI=/map/
XML=/path/to/xml/xml1.xml
MINZOOM=10
MAXZOOM=18

[map2]
URI=/map/
XML=/path/to/xml/xml2.xml
MINZOOM=0
MAXZOOM=9

But with no success. Looks like URI=/map/ doesn't work. Maybe I've misunderstood the function of URI?

error on rendering using mapnik style

renderd[6503]: An error occurred while loading the map layer 'default': Postgis Plugin: fe_sendauth: no password supplied

Connection string: ' dbname=gis user=root connect_timeout=4'
encountered during parsing of layer 'landcover' in Layer at line 341 of '/data/root/mapnik-style/osm.xml'

render_* tools, not waiting end of threads as before

Hi all,

Rendering tools like render_list or render_old do not wait the end of threads before ending. Looks like it finished at end of enqueing instead of rendering.
I need to know when rendering finished to work on new tiles (eg meta2tile)
Not sure if it's a bug or a new feature.
If new feature, could we have a option to command line in order to wait until rendering finished ?

Regards,
Bruno.

renderd doesn't respect the 'buffer-size' property

Hi.
renderd doesn't respect Mapnik XML's <Map buffer-size="xxx"> property. This property is important to help avoid cut labels.
I have tried several values (buffer-size="128", buffer-size="256", buffer-size="512"), but with no difference for a result.

Apache's error.log: tile storage hook

Hello,
I have a mapserver running in Debian squeeze with Mapnik 2.0, Mod_tile and renderd. It works fine, but in the apache's log appears the error:

[Thu May 09 18:39:07 2013] [info] [client 190.66.08.02] tile_storage_hook: handler(tile_serve), uri(/tiles/13/2355/4016.png).

What it means and how I could fix it?

Thanks in advance,

Juan Pablo R

initialising file storage backend debug messages

When running render_list I get the debug message debug: init_storage_backend: initialising file storage backend at: /var/lib/mod_tile to stderr. My config file doesn't use /var/lib/mod_tile, so this message is incorrect

UTFGrid support for mod_tile

Trying to get mod_tile producing UTF8Grids. Wondering if anyone else has looked at this. Apparently the fix would be in mapnik itself. Some notes on this from @springmeyer below.

The reason renderd does not support tile end points for interactivity/grids is that Mapnik support is partially in C++ and partially in the bindings (python or JavaScript). It ended up this way because to leverage the json support in each of those languages and not implement the full json encoding for utf8grids in C++. But in doing so, renderd needs to implement that json encoding on its own, which has not happened yet and likely shouldn't since ideally Mapnik would just do this in C++ to save the duplicative work.

The grid_renderer builds up an image like array of feature ids. Then that needs to be turned into json. The code to do it is is already in c++ actually but writes to a c++ boost python object. Instead it would need to write to a string that could be parseable as json. The bindings code is mapnik/bindings/python/python_grid_utils.hpp. We don't actually need a json encoder and the intermediate objects it would likely require.

OS X Support

mod_tile used to compile on OS X but recent versions have numerous blocking issues.

Here is a rundown:

compile error in store.h:

In file included from src/store_null.c:1:
In file included from ./includes/store_null.h:8:
./includes/store.h:18:9: error: unknown type name 'off_t'
        off_t     size;    /* total size, in bytes */
        ^
./includes/store.h:19:9: error: unknown type name 'time_t'; did you mean 'size_t'?
        time_t    atime;   /* time of last access */
        ^~~~~~
        size_t

Fixable with:

index 7c3e453..f98575d 100644
--- a/includes/store.h
+++ b/includes/store.h
@@ -6,6 +6,7 @@ extern "C" {
 #endif

 #include <stdlib.h>
+#include <sys/types.h>
 #include "render_config.h"

 #define STORE_LOGLVL_DEBUG 0

compile error in src/gen_tile_test.cpp

src/gen_tile_test.cpp:112:19: error: use of undeclared identifier 'CLOCK_THREAD_CPUTIME_ID'
    clock_gettime(CLOCK_THREAD_CPUTIME_ID, &time);
                  ^

Fixable with:

diff --git a/src/gen_tile_test.cpp b/src/gen_tile_test.cpp
index 19ff90d..20ca36d 100644
--- a/src/gen_tile_test.cpp
+++ b/src/gen_tile_test.cpp
@@ -42,6 +42,10 @@
 #include <sys/types.h>
 #include <sys/syscall.h>
 #include <stdlib.h>
+#ifdef __MACH__
+#include <mach/clock.h>
+#include <mach/mach.h>
+#endif

 #include <mapnik/version.hpp>
 #if MAPNIK_VERSION < 200000
@@ -96,7 +100,17 @@ void *addition_thread(void * arg) {
     enum protoCmd res;
     struct timespec time;
     unsigned int seed = syscall(SYS_gettid);
+    #ifdef __MACH__ // OS X does not have clock_gettime, use clock_get_time
+    clock_serv_t cclock;
+    mach_timespec_t mts;
+    host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
+    clock_get_time(cclock, &mts);
+    mach_port_deallocate(mach_task_self(), cclock);
+    time.tv_sec = mts.tv_sec;
+    time.tv_nsec = mts.tv_nsec;
+    #else
     clock_gettime(CLOCK_THREAD_CPUTIME_ID, &time);
+    #endif
     seed *= (unsigned int)time.tv_nsec;
     pthread_t tid = pthread_self();

compile error in src/gen_tile_test.cpp

src/gen_tile_test.cpp:119:18: error: assigning to 'int' from incompatible type 'pthread_t' (aka '_opaque_pthread_t *')
        item->my = tid;
                 ^ ~~~

Fixable with:

-        item->my = tid;
+        item->my = rand_r(&seed);

libtool sdk issue

apxs -c   -I./includes    -lcurl  ./src/mod_tile.c  ./src/sys_utils.c ./src/store.c ./src/store_file.c ./src/store_file_utils.c ./src/store_memcached.c ./src/store_rados.c ./src/store_ro_http_proxy.c ./src/store_ro_composite.c ./src/store_null.c
/usr/share/apr-1/build-1/libtool --silent --mode=compile /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain/usr/bin/cc    -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/local/include -I/usr/include/apache2  -I/usr/include/apr-1   -I/usr/include/apr-1  -I./includes  -c -o ./src/mod_tile.lo ./src/mod_tile.c && touch ./src/mod_tile.slo
env: /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain/usr/bin/cc: No such file or directory
apxs:Error: Command failed with rc=65536

This can be worked around by doing:

sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain

libtool --tag issue

/usr/share/apr-1/build-1/libtool --silent --mode=compile /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain/usr/bin/cc    -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/local/include -I/usr/include/apache2  -I/usr/include/apr-1   -I/usr/include/apr-1  -I./includes  -c -o ./src/mod_tile.lo ./src/mod_tile.c && touch ./src/mod_tile.slo
libtool: compile: unable to infer tagged configuration
libtool: compile: specify a tag with `--tag'
apxs:Error: Command failed with rc=65536

I don't know about to workaround this. Passing --tag=CC fixes the problem, but its unclear to me how to pass it to libtool

Don't use apr_global_mutex to guard storage backend initialisation

Commit 2c53891 introduced locking around memory allocation for an array containing pointers to the storage backends, as apache's memory pool functions aren't thread safe. It used apr_global_mutex, but I think apr_global_mutex not only synchronizes between threads, but also between process which isn't necessary for the storage backend memory allocation. Instead presumably apr_thread_mutex is what we want.

I need to verify this before committing the change, hence this reminder ticket.

osm.xml parse error

Hello, i'd like to render with mod_tile and mapnik. When i run the renderd command, i got a parser error:


renderd[5981]: Rendering daemon started
renderd[5981]: Parsing section renderd
renderd[5981]: Parsing render section 0
renderd[5981]: Parsing section mapnik
renderd[5981]: Parsing section default
renderd[5981]: config renderd: unix socketname=/tmp/osm-renderd
renderd[5981]: config renderd: num_threads=4
renderd[5981]: config renderd: num_slaves=0
renderd[5981]: config renderd: tile_dir=/var/lib/mod_tile
renderd[5981]: config renderd: stats_file=/var/run/renderd/renderd.stats
renderd[5981]: config mapnik: plugins_dir=/usr/local/lib/mapnik/input
renderd[5981]: config mapnik: font_dir=/usr/share/fonts/truetype/ttf-dejavu
renderd[5981]: config mapnik: font_dir_recurse=0
renderd[5981]: config renderd(0): Active
renderd[5981]: config renderd(0): unix socketname=/tmp/osm-renderd
renderd[5981]: config renderd(0): num_threads=4
renderd[5981]: config renderd(0): tile_dir=/var/lib/mod_tile
renderd[5981]: config renderd(0): stats_file=/var/run/renderd/renderd.stats
renderd[5981]: config map 0: name(default) file(/root/src/mapnik-style/osm.xml) uri(/osm_tiles2/) htcp() host(localhost)
renderd[5981]: Initialising unix server socket on /tmp/osm-renderd
renderd[5981]: Created server socket 4
renderd[5981]: Renderd is using mapnik version 2.2.0
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Bold.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed-Italic.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed-Bold.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-BoldOblique.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-BoldItalic.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-BoldOblique.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-ExtraLight.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed-BoldItalic.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Bold.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-Bold.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-Oblique.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif-Italic.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-BoldOblique.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSerifCondensed.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Oblique.ttf
renderd[5981]: DEBUG: Loading font: /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf
Running in foreground mode...
renderd[5981]: Starting stats thread
debug: init_storage_backend: initialising file storage backend at: /var/lib/mod_tile
debug: init_storage_backend: initialising file storage backend at: /var/lib/mod_tile
debug: init_storage_backend: initialising file storage backend at: /var/lib/mod_tile
debug: init_storage_backend: initialising file storage backend at: /var/lib/mod_tile
renderd[5981]: An error occurred while loading the map layer 'default': Failed to parse expression: "name" in style 'area-text' in TextSymbolizer at line 258 of '/root/src/mapnik-style/osm.xml'
renderd[5981]: An error occurred while loading the map layer 'default': Failed to parse expression: "name" in style 'area-text' in TextSymbolizer at line 258 of '/root/src/mapnik-style/osm.xml'
renderd[5981]: An error occurred while loading the map layer 'default': Failed to parse expression: "name" in style 'area-text' in TextSymbolizer at line 258 of '/root/src/mapnik-style/osm.xml'
renderd[5981]: An error occurred while loading the map layer 'default': Failed to parse expression: "name" in style 'area-text' in TextSymbolizer at line 258 of '/root/src/mapnik-style/osm.xml'


what's the problem? please help me! thx!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.