├── README ├── all_tiles ├── C │ ├── Makefile │ ├── bst.c │ ├── bst.h │ └── tilecount.c ├── README ├── render_all.py └── tilecount.pl ├── archive ├── convert ├── convert-fontset ├── convert-template ├── customize-mapnik-map ├── install.txt ├── osm-template-fontset.xml ├── osm-template.xml ├── osm2pgsl.py ├── set-mapnik-env ├── setup_z_order.sql └── uncustomize-mapnik-map ├── debian ├── changelog ├── compat ├── config ├── config_files │ ├── datasource-settings.xml.inc │ ├── fontset-settings.xml.inc │ └── settings.xml.inc ├── control ├── copyright ├── dirs ├── openstreetmap-mapnik-stylesheet-data.config ├── openstreetmap-mapnik-stylesheet-data.install ├── openstreetmap-mapnik-stylesheet-data.postinst ├── openstreetmap-mapnik-stylesheet-data.templates ├── rules └── source │ └── format ├── generate_image.py ├── generate_tiles.py ├── generate_tiles_multiprocess.py ├── generate_xml.py ├── get-coastlines.sh ├── inc ├── datasource-settings.xml.inc.template ├── entities.xml.inc ├── fontset-settings.xml.inc.template ├── layer-addressing.xml.inc ├── layer-admin.xml.inc ├── layer-aerialways.xml.inc ├── layer-amenity-points.xml.inc ├── layer-amenity-stations.xml.inc ├── layer-amenity-symbols.xml.inc ├── layer-buildings.xml.inc ├── layer-citywall.xml.inc ├── layer-ferry-routes.xml.inc ├── layer-landcover.xml.inc ├── layer-placenames.xml.inc ├── layer-power.xml.inc ├── layer-shapefiles.xml.inc ├── layer-water.xml.inc ├── layer-water_features.xml.inc ├── layers.xml.inc └── settings.xml.inc.template ├── legend.py ├── livetiles ├── README ├── livetiles.conf.sample ├── livetiles.wsgi ├── map_template.html └── render_single_tile.py ├── mkshield.pl ├── osm.xml ├── polytiles.py ├── symbols ├── aerodrome.p.16.png ├── aerodrome.png ├── aiga_parking1.png ├── airport.p.16.png ├── airport.png ├── allotments.png ├── alpinehut.p.16.png ├── amenity_bench.p.8.png ├── amenity_court.p.20.png ├── amenity_prison.p.20.png ├── amenity_prison.png ├── amenity_veterinary.p.16.png ├── amenity_waste_basket.p.8.png ├── arrow.png ├── arrow_back.png ├── atm.png ├── atm2.p.16.png ├── bandb.p.20.png ├── bank2.p.16.png ├── bar.p.20.png ├── beach.png ├── biergarten.p.16.png ├── bollard.png ├── bus_station.n.16.png ├── bus_stop.p.12.png ├── bus_stop.png ├── bus_stop_small.png ├── cable_car.png ├── cafe.p.16.png ├── camping.n.16.png ├── car_share.p.16.png ├── caravan_park.p.24.png ├── cemetery_jewish.18.png ├── chair_lift.png ├── chalet.p.16.png ├── christian3.p.14.png ├── cinema.p.24.png ├── cliff.png ├── cliff2.png ├── communications.p.20.png ├── danger.png ├── department_store.p.16.png ├── embassy.png ├── fast_food.png ├── firestation.p.16.png ├── florist.p.16.png ├── food_bar.p.16.png ├── food_drinkingtap.p.20.png ├── forest.png ├── fuel.p.16.png ├── gate.png ├── gate2.png ├── glacier.png ├── glacier2.png ├── grave_yard.png ├── grave_yard_generic.png ├── guest_house.p.16.png ├── halt.png ├── helipad.p.16.png ├── hospital.p.16.png ├── hospital.png ├── hostel.p.20.png ├── hotel2.p.20.png ├── information.p.16.png ├── islamic3.p.16.png ├── jewish3.p.16.png ├── landfill.png ├── level_crossing.png ├── level_crossing2.png ├── library.p.20.png ├── liftgate.png ├── lighthouse.p.20.png ├── lock_gate.png ├── london-tube-24.png ├── marsh.png ├── memorial.png ├── military_red.png ├── military_red_hz2.png ├── military_restraint2.png ├── mini_round.png ├── mosque.png ├── mot_shield1.png ├── mot_shield2.png ├── mot_shield3.png ├── mot_shield4.png ├── mot_shield5.png ├── mot_shield6.png ├── mot_shield7.png ├── mot_shield8.png ├── motel.p.20.png ├── motorway_shield1.png ├── motorway_shield2.png ├── motorway_shield3.png ├── motorway_shield4.png ├── motorway_shield5.png ├── motorway_shield6.png ├── mud.png ├── museum.p.16.png ├── nature_reserve.png ├── nature_reserve2.png ├── nature_reserve2T.png ├── nature_reserve5.png ├── nature_reserve6.png ├── nature_reserveT.png ├── orchard.png ├── parking.p.16.png ├── parking.png ├── parking_private.p.16.png ├── peak.png ├── pharmacy.p.16.png ├── picnic.p.16.png ├── pint.png ├── place_of_worship.png ├── place_of_worship3.p.16.png ├── place_of_worship3.png ├── playground.p.20.png ├── poi_cave.p.16.png ├── police.p.16.png ├── post_box.p.16.png ├── post_box.png ├── post_office.p.16.png ├── post_office.png ├── postoffice.png ├── power_line.png ├── power_pole.png ├── power_tower.png ├── power_tower_3x3.png ├── power_tower_5x5.png ├── power_wind.png ├── pri_shield1.png ├── pri_shield2.png ├── pri_shield3.png ├── pri_shield4.png ├── pri_shield5.png ├── pri_shield6.png ├── pri_shield7.png ├── pri_shield8.png ├── primary_shield1.png ├── primary_shield2.png ├── primary_shield3.png ├── primary_shield4.png ├── primary_shield5.png ├── primary_shield6.png ├── primary_shield7.png ├── primary_shield8.png ├── pub.p.16.png ├── pub.png ├── quarry.png ├── quarry2.png ├── recycle.png ├── recycling.p.16.png ├── recycling.png ├── rental_bicycle.p.20.png ├── restaurant.p.16.png ├── school.png ├── scrub.png ├── sec_shield1.png ├── sec_shield2.png ├── sec_shield3.png ├── sec_shield4.png ├── sec_shield5.png ├── sec_shield6.png ├── sec_shield7.png ├── sec_shield8.png ├── secondary_shield1.png ├── secondary_shield2.png ├── secondary_shield3.png ├── secondary_shield4.png ├── secondary_shield5.png ├── secondary_shield6.png ├── secondary_shield7.png ├── secondary_shield8.png ├── shelter2.p.16.png ├── shop_bakery.p.16.png ├── shop_books.p_16.png ├── shop_butcher.png ├── shop_clothes.p.16.png ├── shop_computer.p_16.png ├── shop_convenience.p.16.png ├── shop_diy.p.16.png ├── shop_dry_cleaning.p_16.png ├── shop_gift.p_16.png ├── shop_greengrocer.p_16.png ├── shop_hairdresser.p.16.png ├── shop_jewelry.p_16.png ├── shop_mobile_phone.p_16.png ├── shop_optician.p_16.png ├── shop_pet.p_16.png ├── shop_supermarket.p.16.png ├── shopping_bicycle.p.16.png ├── shopping_car.p.16.png ├── shopping_car_repair.p.16.png ├── sikh.png ├── sikh3.p.16.png ├── sosphone.png ├── spring.png ├── station.png ├── station_disused.png ├── station_small.png ├── synagogue.png ├── telephone.p.16.png ├── ter_shield1.png ├── ter_shield2.png ├── ter_shield3.png ├── ter_shield4.png ├── ter_shield5.png ├── ter_shield6.png ├── ter_shield7.png ├── ter_shield8.png ├── tertiary_shield1.png ├── tertiary_shield2.png ├── tertiary_shield3.png ├── tertiary_shield4.png ├── tertiary_shield5.png ├── tertiary_shield6.png ├── tertiary_shield7.png ├── tertiary_shield8.png ├── theatre.p.20.png ├── toilets.p.20.png ├── tourist_archaeological2.glow.16.png ├── tourist_memorial.p.20.png ├── tower.png ├── tower_water.p.20.png ├── traffic_light.png ├── transport_ford.p.16.png ├── transport_slipway.p.20.png ├── tree.png ├── tree2.png ├── tru_shield1.png ├── tru_shield2.png ├── tru_shield3.png ├── tru_shield4.png ├── tru_shield5.png ├── tru_shield6.png ├── tru_shield7.png ├── tru_shield8.png ├── trunk_shield1.png ├── trunk_shield2.png ├── trunk_shield3.png ├── trunk_shield4.png ├── trunk_shield5.png ├── trunk_shield6.png ├── trunk_shield7.png ├── trunk_shield8.png ├── turning_circle-livs-fill.12.png ├── turning_circle-livs-fill.14.png ├── turning_circle-livs-fill.16.png ├── turning_circle-livs-fill.22.png ├── turning_circle-tert-casing.18.png ├── turning_circle-tert-casing.24.png ├── turning_circle-tert-fill.16.png ├── turning_circle-tert-fill.22.png ├── turning_circle-uncl-casing.14.png ├── turning_circle-uncl-casing.16.png ├── turning_circle-uncl-casing.18.png ├── turning_circle-uncl-casing.24.png ├── turning_circle-uncl-fill.12.png ├── turning_circle-uncl-fill.14.png ├── turning_circle-uncl-fill.16.png ├── turning_circle-uncl-fill.18.png ├── turning_circle-uncl-fill.22.png ├── turning_circle-uncl-fill.24.png ├── turning_circle.13.png ├── turning_circle.15.png ├── turning_circle.17.png ├── turning_circle.19.png ├── view_point.p.16.png ├── vineyard.png ├── volcano.png ├── walking.n.12.png ├── windmill.png └── zoo.png ├── utils ├── analyze_postgis_log.pl └── stylecheck.pl └── zoom-to-scale.txt /all_tiles/C/Makefile: -------------------------------------------------------------------------------- 1 | #CFLAGS += -g 2 | CFLAGS += -O2 -Wall 3 | CFLAGS += $(shell xml2-config --cflags) 4 | LDFLAGS += $(shell xml2-config --libs) -lm 5 | 6 | APPS:=tilecount 7 | 8 | .PHONY: all clean 9 | 10 | all: $(APPS) 11 | 12 | clean: 13 | rm -f $(APPS) tilecount.o bst.o 14 | 15 | tilecount: tilecount.o bst.o 16 | -------------------------------------------------------------------------------- /all_tiles/C/bst.h: -------------------------------------------------------------------------------- 1 | /* Produced by texiweb from libavl.w. */ 2 | 3 | /* libavl - library for manipulation of binary trees. 4 | Copyright (C) 1998-2002, 2004 Free Software Foundation, Inc. 5 | 6 | This program is free software; you can redistribute it and/or 7 | modify it under the terms of the GNU General Public License as 8 | published by the Free Software Foundation; either version 2 of the 9 | License, or (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, but 12 | WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 14 | See the GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with this program; if not, write to the Free Software 18 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 19 | 02111-1307, USA. 20 | 21 | The author may be contacted at on the Internet, or 22 | write to Ben Pfaff, Stanford University, Computer Science Dept., 353 23 | Serra Mall, Stanford CA 94305, USA. 24 | */ 25 | 26 | #ifndef BST_H 27 | #define BST_H 1 28 | 29 | #include 30 | 31 | /* Function types. */ 32 | typedef int bst_comparison_func (const void *bst_a, const void *bst_b, 33 | void *bst_param); 34 | typedef void bst_item_func (void *bst_item, void *bst_param); 35 | typedef void *bst_copy_func (void *bst_item, void *bst_param); 36 | 37 | #ifndef LIBAVL_ALLOCATOR 38 | #define LIBAVL_ALLOCATOR 39 | /* Memory allocator. */ 40 | struct libavl_allocator 41 | { 42 | void *(*libavl_malloc) (struct libavl_allocator *, size_t libavl_size); 43 | void (*libavl_free) (struct libavl_allocator *, void *libavl_block); 44 | }; 45 | #endif 46 | 47 | /* Default memory allocator. */ 48 | extern struct libavl_allocator bst_allocator_default; 49 | void *bst_malloc (struct libavl_allocator *, size_t); 50 | void bst_free (struct libavl_allocator *, void *); 51 | 52 | /* Maximum BST height. */ 53 | #ifndef BST_MAX_HEIGHT 54 | #define BST_MAX_HEIGHT 32 55 | #endif 56 | 57 | /* Tree data structure. */ 58 | struct bst_table 59 | { 60 | struct bst_node *bst_root; /* Tree's root. */ 61 | bst_comparison_func *bst_compare; /* Comparison function. */ 62 | void *bst_param; /* Extra argument to |bst_compare|. */ 63 | struct libavl_allocator *bst_alloc; /* Memory allocator. */ 64 | size_t bst_count; /* Number of items in tree. */ 65 | unsigned long bst_generation; /* Generation number. */ 66 | }; 67 | 68 | /* A binary search tree node. */ 69 | struct bst_node 70 | { 71 | struct bst_node *bst_link[2]; /* Subtrees. */ 72 | void *bst_data; /* Pointer to data. */ 73 | }; 74 | 75 | /* BST traverser structure. */ 76 | struct bst_traverser 77 | { 78 | struct bst_table *bst_table; /* Tree being traversed. */ 79 | struct bst_node *bst_node; /* Current node in tree. */ 80 | struct bst_node *bst_stack[BST_MAX_HEIGHT]; 81 | /* All the nodes above |bst_node|. */ 82 | size_t bst_height; /* Number of nodes in |bst_parent|. */ 83 | unsigned long bst_generation; /* Generation number. */ 84 | }; 85 | 86 | /* Table functions. */ 87 | struct bst_table *bst_create (bst_comparison_func *, void *, 88 | struct libavl_allocator *); 89 | struct bst_table *bst_copy (const struct bst_table *, bst_copy_func *, 90 | bst_item_func *, struct libavl_allocator *); 91 | void bst_destroy (struct bst_table *, bst_item_func *); 92 | void **bst_probe (struct bst_table *, void *); 93 | void *bst_insert (struct bst_table *, void *); 94 | void *bst_replace (struct bst_table *, void *); 95 | void *bst_delete (struct bst_table *, const void *); 96 | void *bst_find (const struct bst_table *, const void *); 97 | void bst_assert_insert (struct bst_table *, void *); 98 | void *bst_assert_delete (struct bst_table *, void *); 99 | 100 | #define bst_count(table) ((size_t) (table)->bst_count) 101 | 102 | /* Table traverser functions. */ 103 | void bst_t_init (struct bst_traverser *, struct bst_table *); 104 | void *bst_t_first (struct bst_traverser *, struct bst_table *); 105 | void *bst_t_last (struct bst_traverser *, struct bst_table *); 106 | void *bst_t_find (struct bst_traverser *, struct bst_table *, void *); 107 | void *bst_t_insert (struct bst_traverser *, struct bst_table *, void *); 108 | void *bst_t_copy (struct bst_traverser *, const struct bst_traverser *); 109 | void *bst_t_next (struct bst_traverser *); 110 | void *bst_t_prev (struct bst_traverser *); 111 | void *bst_t_cur (struct bst_traverser *); 112 | void *bst_t_replace (struct bst_traverser *, void *); 113 | 114 | /* Special BST functions. */ 115 | void bst_balance (struct bst_table *tree); 116 | 117 | #endif /* bst.h */ 118 | 119 | /* Table assertion functions. */ 120 | #ifndef NDEBUG 121 | #undef bst_assert_insert 122 | #undef bst_assert_delete 123 | #else 124 | #define bst_assert_insert(table, item) bst_insert (table, item) 125 | #define bst_assert_delete(table, item) bst_delete (table, item) 126 | #endif 127 | -------------------------------------------------------------------------------- /all_tiles/C/tilecount.c: -------------------------------------------------------------------------------- 1 | /* 2 | #----------------------------------------------------------------------------- 3 | # says which tiles contain data from a specified OSM XML file 4 | # usage: tilecount planet.osm > tile_list.txt 5 | #----------------------------------------------------------------------------- 6 | # Original Perl implementation Copyright 2006, Oliver White 7 | # Re-implementation by Jon Burgess, Copyright 2006 8 | # 9 | # This program is free software; you can redistribute it and/or 10 | # modify it under the terms of the GNU General Public License 11 | # as published by the Free Software Foundation; either version 2 12 | # of the License, or (at your option) any later version. 13 | # 14 | # This program is distributed in the hope that it will be useful, 15 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | # GNU General Public License for more details. 18 | # 19 | # You should have received a copy of the GNU General Public License 20 | # along with this program; if not, write to the Free Software 21 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 22 | #----------------------------------------------------------------------------- 23 | */ 24 | 25 | #define _GNU_SOURCE 26 | 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | 34 | #include 35 | 36 | #include "bst.h" 37 | 38 | #define MAXZOOM 18 39 | 40 | struct osmTile { 41 | int x; 42 | int y; 43 | }; 44 | 45 | struct bst_table *tiles[MAXZOOM+1]; 46 | unsigned int Num[MAXZOOM+1]; 47 | 48 | static int count_node; 49 | static double LimitY, LimitY2, RangeY; 50 | 51 | void usage(const char *arg0) 52 | { 53 | fprintf(stderr, "\nUsage error:\n\t%s planet.osm > tile_list.txt\n", arg0); 54 | fprintf(stderr, "\nGenerates a list of tiles to be rendered covering all nodes in planet.osm\n"); 55 | } 56 | 57 | static inline double DegToRad(double x) 58 | { 59 | return x * M_PIl / 180.0; 60 | } 61 | 62 | static inline double RadToDeg(double x) 63 | { 64 | return x * 180.0 / M_PIl; 65 | } 66 | 67 | static inline double ProjectF(double lat) { 68 | lat = DegToRad(lat); 69 | return log(tan(lat) + 1.0/cos(lat)); 70 | } 71 | 72 | void mark_tile(int z, int x, int y) 73 | { 74 | struct osmTile *tile, *dupe; 75 | 76 | tile = malloc(sizeof(*tile)); 77 | assert(tile); 78 | 79 | tile->x = x; 80 | tile->y = y; 81 | dupe = bst_insert(tiles[z], (void *)tile); 82 | if (dupe) 83 | free(tile); 84 | } 85 | 86 | void HandlePos(double lat, double lon) 87 | { 88 | double MercY = ProjectF(lat); 89 | double RelY = (LimitY - MercY) / RangeY; 90 | double RelX = (lon + 180) / 360; 91 | int z; 92 | 93 | for (z=0; z<=MAXZOOM; z++) { 94 | int x = RelX * Num[z]; 95 | int y = RelY * Num[z]; 96 | mark_tile(z, x, y); 97 | } 98 | } 99 | 100 | void StartElement(xmlTextReaderPtr reader, const xmlChar *name) 101 | { 102 | xmlChar *xlat, *xlon; 103 | double lon, lat; 104 | 105 | if (xmlStrEqual(name, BAD_CAST "node")) { 106 | xlon = xmlTextReaderGetAttribute(reader, BAD_CAST "lon"); 107 | xlat = xmlTextReaderGetAttribute(reader, BAD_CAST "lat"); 108 | lon = strtod((char *)xlon, NULL); 109 | lat = strtod((char *)xlat, NULL); 110 | xmlFree(xlon); 111 | xmlFree(xlat); 112 | count_node++; 113 | HandlePos(lat, lon); 114 | } 115 | } 116 | 117 | static void processNode(xmlTextReaderPtr reader) { 118 | xmlChar *name; 119 | name = xmlTextReaderName(reader); 120 | if (name == NULL) 121 | name = xmlStrdup(BAD_CAST "--"); 122 | 123 | switch(xmlTextReaderNodeType(reader)) { 124 | case XML_READER_TYPE_ELEMENT: 125 | StartElement(reader, name); 126 | break; 127 | default: 128 | break; 129 | } 130 | 131 | xmlFree(name); 132 | } 133 | 134 | void streamFile(char *filename) { 135 | xmlTextReaderPtr reader; 136 | int ret; 137 | 138 | reader = xmlNewTextReaderFilename(filename); 139 | if (reader != NULL) { 140 | ret = xmlTextReaderRead(reader); 141 | while (ret == 1) { 142 | processNode(reader); 143 | ret = xmlTextReaderRead(reader); 144 | if (count_node % 10000 == 0) 145 | fprintf(stderr, "processing node: %dk\r", count_node/1000); 146 | } 147 | 148 | if (ret != 0) { 149 | fprintf(stderr, "%s : failed to parse\n", filename); 150 | return; 151 | } 152 | fprintf(stderr, "\n"); 153 | xmlFreeTextReader(reader); 154 | } else { 155 | fprintf(stderr, "Unable to open %s\n", filename); 156 | } 157 | } 158 | 159 | int compare_tile(const void *bst_a, const void *bst_b, void *bst_param) 160 | { 161 | const struct osmTile *tA = bst_a; 162 | const struct osmTile *tB = bst_b; 163 | 164 | if (tA == tB) return 0; 165 | 166 | if (tA->x < tB->x) 167 | return -1; 168 | else if (tA->x > tB->x) 169 | return +1; 170 | 171 | if (tA->y < tB->y) 172 | return -1; 173 | else if (tA->y > tB->y) 174 | return +1; 175 | 176 | return 0; 177 | } 178 | 179 | void outputTiles(void) 180 | { 181 | int z; 182 | struct bst_traverser t; 183 | struct osmTile *tile; 184 | 185 | for (z=0; z<=MAXZOOM; z++) { 186 | bst_t_init(&t, tiles[z]); 187 | while ((tile = bst_t_next(&t))) 188 | printf("%u:%d:%d\n", z, tile->x, tile->y); 189 | } 190 | } 191 | 192 | void initTiles(void) 193 | { 194 | int z, n=1; 195 | for (z=0; z<=MAXZOOM; z++) { 196 | tiles[z] = bst_create(compare_tile, NULL, NULL); 197 | assert(tiles[z]); 198 | Num[z] = n; 199 | n *= 2; 200 | } 201 | 202 | LimitY = ProjectF(85.0511); 203 | LimitY2 = ProjectF(-85.0511); 204 | RangeY = LimitY - LimitY2; 205 | } 206 | 207 | 208 | int main(int argc, char *argv[]) 209 | { 210 | if (argc != 2) { 211 | usage(argv[0]); 212 | exit(1); 213 | } 214 | 215 | LIBXML_TEST_VERSION 216 | initTiles(); 217 | streamFile(argv[1]); 218 | outputTiles(); 219 | return 0; 220 | } 221 | -------------------------------------------------------------------------------- /all_tiles/README: -------------------------------------------------------------------------------- 1 | these two scripts, given a planet.osm, will find all the tiles that need 2 | rendering and render them 3 | -------------------------------------------------------------------------------- /all_tiles/render_all.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | import fileinput 4 | from math import pi,cos,sin,log,exp,atan 5 | from subprocess import call 6 | 7 | DEG_TO_RAD = pi/180 8 | RAD_TO_DEG = 180/pi 9 | 10 | def minmax (a,b,c): 11 | a = max(a,b) 12 | a = min(a,c) 13 | return a 14 | 15 | class GoogleProjection: 16 | def __init__(self,levels=18): 17 | self.Bc = [] 18 | self.Cc = [] 19 | self.zc = [] 20 | self.Ac = [] 21 | c = 256 22 | for d in range(0,levels): 23 | e = c/2; 24 | self.Bc.append(c/360.0) 25 | self.Cc.append(c/(2 * pi)) 26 | self.zc.append((e,e)) 27 | self.Ac.append(c) 28 | c *= 2 29 | 30 | def fromLLtoPixel(self,ll,zoom): 31 | d = self.zc[zoom] 32 | e = round(d[0] + ll[0] * self.Bc[zoom]) 33 | f = minmax(sin(DEG_TO_RAD * ll[1]),-0.9999,0.9999) 34 | g = round(d[1] + 0.5*log((1+f)/(1-f))*-self.Cc[zoom]) 35 | return (e,g) 36 | 37 | def fromPixelToLL(self,px,zoom): 38 | e = self.zc[zoom] 39 | f = (px[0] - e[0])/self.Bc[zoom] 40 | g = (px[1] - e[1])/-self.Cc[zoom] 41 | h = RAD_TO_DEG * ( 2 * atan(exp(g)) - 0.5 * pi) 42 | return (f,h) 43 | 44 | 45 | import os 46 | from PIL.Image import fromstring, new 47 | from PIL.ImageDraw import Draw 48 | from StringIO import StringIO 49 | from mapnik import * 50 | 51 | 52 | mapfile = "/home/steve/osm.xml" 53 | tile_dir = '/tmp/tiles/' 54 | maxZoom = 18 55 | 56 | gprj = GoogleProjection(maxZoom+1) 57 | m = Map(2 * 256,2 * 256) 58 | load_map(m,mapfile) 59 | prj = Projection("+proj=merc +datum=WGS84") 60 | 61 | 62 | 63 | def dotile(z,x,y): 64 | x_str = "%s" % x 65 | y_str = "%s" % y 66 | z_str = "%s" % z 67 | 68 | p0 = gprj.fromPixelToLL((x * 256, (y+1) * 256),z) 69 | p1 = gprj.fromPixelToLL(((x+1) * 256, y* 256),z) 70 | 71 | print z,x,y,p0,p1 72 | # render a new tile and store it on filesystem 73 | c0 = prj.forward(Coord(p0[0],p0[1])) 74 | c1 = prj.forward(Coord(p1[0],p1[1])) 75 | 76 | bbox = Envelope(c0.x,c0.y,c1.x,c1.y) 77 | bbox.width(bbox.width() * 2) 78 | bbox.height(bbox.height() * 2) 79 | m.zoom_to_box(bbox) 80 | 81 | if not os.path.isdir(tile_dir + z_str): 82 | os.mkdir(tile_dir + z_str) 83 | if not os.path.isdir(tile_dir + z_str + '/' + x_str): 84 | os.mkdir(tile_dir + z_str + '/' + x_str) 85 | 86 | tile_uri = tile_dir + z_str + '/' + x_str + '/' + y_str + '.png' 87 | im = Image(512, 512) 88 | render(m, im) 89 | im = fromstring('RGBA', (512, 512), rawdata(im)) 90 | im = im.crop((128,128,512-128,512-128)) 91 | fh = open(tile_uri,'w+b') 92 | im.save(fh, 'PNG', quality=100) 93 | command = "convert -colors 255 %s %s" % (tile_uri,tile_uri) 94 | call(command, shell=True) 95 | 96 | for line in fileinput.input(): 97 | tile_data = line.rstrip('\n').split(':') 98 | dotile(eval(tile_data[0]), eval(tile_data[1]), eval(tile_data[2])) 99 | 100 | 101 | -------------------------------------------------------------------------------- /all_tiles/tilecount.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | use strict; 3 | #----------------------------------------------------------------------------- 4 | # says which tiles contain data from a specified OSM XML file 5 | # usage: tilecount.pl planet.osm > tile_list.txt 6 | #----------------------------------------------------------------------------- 7 | # Copyright 2006, Oliver White 8 | # 9 | # This program is free software; you can redistribute it and/or 10 | # modify it under the terms of the GNU General Public License 11 | # as published by the Free Software Foundation; either version 2 12 | # of the License, or (at your option) any later version. 13 | # 14 | # This program is distributed in the hope that it will be useful, 15 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | # GNU General Public License for more details. 18 | # 19 | # You should have received a copy of the GNU General Public License 20 | # along with this program; if not, write to the Free Software 21 | # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 22 | #----------------------------------------------------------------------------- 23 | use Math::Trig; 24 | # Setup coordinate system 25 | my $LimitY = ProjectF(85.0511); 26 | my $LimitY2 = ProjectF(-85.0511); 27 | my $RangeY = $LimitY - $LimitY2; 28 | 29 | my %Tiles; 30 | 31 | # precalculate number of tiles in each zoom-level 32 | my @Num; 33 | foreach my $Z(0..18){ 34 | $Num[$Z] = 2 ** $Z; 35 | } 36 | 37 | # Parse the planet.osm file 38 | open IN, "<",shift() || die("Need an OSM file"); 39 | while(my $Line = ){ 40 | if($Line =~ / osm-local.xml 10 | # 11 | # 12 | 13 | 14 | # replace the server with the local postgis database 15 | # dev.openstreetmap.org 16 | s|dev.openstreetmap.org|/var/run/postgresql| 17 | 18 | # dev.openstreetmap.org 19 | # s/dev\.openstreetmap\.org/localhost/ 20 | 21 | # Since we normally run on localhost; we can delete these lines 22 | # 5433 23 | /5433<\/Parameter>/d 24 | /5432<\/Parameter>/d 25 | 26 | 27 | 28 | # steve 29 | s/"user">steve/"user">jburges/ 30 | s/"user">artem/"user">jburges/ 31 | 32 | # If I connect to a local socket i don't need any username 33 | # This only works with the newest Mapnik 34 | /steve<\/Parameter>/d 35 | 36 | # mapnik 37 | s/"dbname">mapnik/"dbname">gis/ 38 | s/"dbname">planet_osm/"dbname">gis/ 39 | s/"dbname">steve/"dbname">gis/ 40 | 41 | 42 | # /Users/artem/world_boundaries/places 43 | s|/Users/artem/world_boundaries/|/home/jburges/osm/data/world_boundaries/| 44 | s|/home/steve/world_boundaries/|/usr/share/mapnik/world_boundaries/| 45 | 46 | # PointSymbolizer file="/Users/artem/symbols/recycling.png" type="png" width="20" height="20" /> 47 | s|/Users/artem/symbols/|/home/jburges/osm/svn.openstreetmap.org/applications/rendering/mapnik/symbols/| 48 | s|/home/steve/symbols/|/usr/share/mapnik/symbols/| 49 | 50 | #/home/jburges/osm/svn.openstreetmap 51 | s|/home/jburges/osm/svn.openstreetmap|/home/jburges/svn.openstreetmap| 52 | 53 | # /home/jburges/osm/data/world_boundaries 54 | s|/home/jburges/osm/data/world_boundaries|/home/jburges/osm/world_boundaries| 55 | 56 | # bold font fails for me, use this instead 57 | s/DejaVu Sans Bold/DejaVu Sans Book/ 58 | -------------------------------------------------------------------------------- /archive/convert-fontset: -------------------------------------------------------------------------------- 1 | #!/bin/sed -f 2 | # 3 | # This script will convert from osm-template.xml to osm-template-fontset.xml 4 | # 5 | # $ ./convert-fontset osm-template.xml > osm-template-fontset.xml 6 | # 7 | # 8 | 9 | s/face_name="DejaVu Sans Bold"/fontset_name="bold-fonts"/ 10 | s/face_name="DejaVu Sans Book"/fontset_name="book-fonts"/ 11 | s/face_name="DejaVu Sans Oblique"/fontset_name="oblique-fonts"/ 12 | 13 | / 7 | 13 | 24 | 25 | interpolation 26 | 27 | 28 | (select way from &prefix;_line where "addr:interpolation" is not null) as interpolation 29 | 30 | &datasource-settings; 31 | 32 | 33 | 34 | housenumbers 35 | 36 | 37 | (select way,"addr:housenumber" from &prefix;_polygon where "addr:housenumber" is not null and building is not null 38 | union 39 | select way,"addr:housenumber" from &prefix;_point where "addr:housenumber" is not null 40 | ) as housenumbers 41 | 42 | &datasource-settings; 43 | 44 | 45 | 46 | housenames 47 | 48 | 49 | (select way,"addr:housename" from &prefix;_polygon where "addr:housename" is not null and building is not null 50 | union 51 | select way,"addr:housename" from &prefix;_point where "addr:housename" is not null 52 | ) as housenames 53 | 54 | &datasource-settings; 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /inc/layer-admin.xml.inc: -------------------------------------------------------------------------------- 1 | 42 | 59 | 72 | 73 | 74 | admin-01234 75 | 76 | 77 | (select way,admin_level 78 | from &prefix;_roads 79 | where "boundary"='administrative' 80 | and admin_level in ('0','1','2','3','4') 81 | ) as admin 82 | &datasource-settings; 83 | 84 | 85 | 86 | admin-5678 87 | 88 | 89 | (select way,admin_level 90 | from &prefix;_roads 91 | where "boundary"='administrative' 92 | and admin_level in ('5','6','7','8') 93 | ) as admin 94 | &datasource-settings; 95 | 96 | 97 | 98 | admin-other 99 | 100 | 101 | (select way,admin_level 102 | from &prefix;_roads 103 | where "boundary"='administrative' 104 | and (admin_level is null or admin_level not in ('0','1','2','3','4','5','6','7','8')) 105 | ) as admin 106 | &datasource-settings; 107 | 108 | 109 | -------------------------------------------------------------------------------- /inc/layer-aerialways.xml.inc: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | aerialways 18 | 19 | 20 | (select way,aerialway from &prefix;_line where aerialway is not null) as aerialways 21 | 22 | &datasource-settings; 23 | 24 | 25 | -------------------------------------------------------------------------------- /inc/layer-amenity-stations.xml.inc: -------------------------------------------------------------------------------- 1 | 68 | 69 | 70 | stations 71 | 72 | 73 | (select way,name,railway,aerialway,disused 74 | from &prefix;_point 75 | where railway in ('station','halt','tram_stop','subway_entrance') 76 | or aerialway='station' 77 | ) as stations 78 | 79 | &datasource-settings; 80 | 81 | 82 | 83 | stations 84 | 85 | 86 | (select way,name,railway,aerialway,disused 87 | from &prefix;_polygon 88 | where railway in ('station','halt','tram_stop') 89 | or aerialway='station' 90 | ) as stations 91 | 92 | &datasource-settings; 93 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /inc/layer-amenity-symbols.xml.inc: -------------------------------------------------------------------------------- 1 | 117 | 118 | 119 | symbols 120 | 121 | 122 | (select * 123 | from &prefix;_point 124 | where aeroway in ('airport','aerodrome','helipad') 125 | or barrier in ('bollard','gate','lift_gate','block') 126 | or highway in ('mini_roundabout','gate') 127 | or man_made in ('lighthouse','power_wind','windmill','mast') 128 | or (power='generator' and ("generator:source"='wind' or power_source='wind')) 129 | or "natural" in ('peak','volcano','spring','tree','cave_entrance') 130 | or railway='level_crossing' 131 | ) as symbols 132 | &datasource-settings; 133 | 134 | 135 | 136 | symbols 137 | 138 | 139 | (select * 140 | from &prefix;_polygon 141 | where aeroway in ('airport','aerodrome','helipad') 142 | or barrier in ('bollard','gate','lift_gate','block') 143 | or highway in ('mini_roundabout','gate') 144 | or man_made in ('lighthouse','power_wind','windmill','mast') 145 | or (power='generator' and ("generator:source"='wind' or power_source='wind')) 146 | or "natural" in ('peak','volcano','spring','tree') 147 | or railway='level_crossing' 148 | ) as symbols 149 | &datasource-settings; 150 | 151 | 152 | -------------------------------------------------------------------------------- /inc/layer-buildings.xml.inc: -------------------------------------------------------------------------------- 1 | 25 | 26 | 53 | 54 | 55 | 56 | buildings-lz 57 | 58 | 59 | (select way,building,railway,amenity from &prefix;_polygon 60 | where railway='station' 61 | or building in ('station','supermarket') 62 | or amenity='place_of_worship' 63 | order by z_order,way_area desc) as buildings 64 | 65 | &datasource-settings; 66 | 67 | 68 | 69 | 71 | 72 | buildings 73 | 74 | 75 | (select way,aeroway, 76 | case 77 | when building in ('residential','house','garage','garages','detached','terrace','apartments') then 'INT-light'::text 78 | else building 79 | end as building 80 | from &prefix;_polygon 81 | where (building is not null 82 | and building not in ('no','station','supermarket','planned') 83 | and (railway is null or railway != 'station') 84 | and (amenity is null or amenity != 'place_of_worship')) 85 | or aeroway = 'terminal' 86 | order by z_order,way_area desc) as buildings 87 | 88 | &datasource-settings; 89 | 90 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /inc/layer-citywall.xml.inc: -------------------------------------------------------------------------------- 1 | 18 | 29 | 30 | citywalls 31 | 32 | (select way from &prefix;_line where "historic"='citywalls') as citywalls 33 | &datasource-settings; 34 | 35 | 36 | 37 | castle_walls 38 | 39 | (select way from &prefix;_line where "historic"='castle_walls') as castle_walls 40 | &datasource-settings; 41 | 42 | 43 | 44 | castle_walls 45 | 46 | (select way from &prefix;_polygon where "historic"='castle_walls') as castle_walls 47 | &datasource-settings; 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /inc/layer-ferry-routes.xml.inc: -------------------------------------------------------------------------------- 1 | 12 | 13 | 14 | ferry-routes 15 | 16 | 17 | (select way from &prefix;_line where route='ferry' ) as routes 18 | 19 | &datasource-settings; 20 | 21 | 22 | -------------------------------------------------------------------------------- /inc/layer-placenames.xml.inc: -------------------------------------------------------------------------------- 1 | 9 | 23 | 43 | 65 | 85 | 104 | 117 | 130 | 143 | 144 | 145 | country 146 | state 147 | 148 | 149 | (select way,place,name,ref 150 | from &prefix;_point 151 | where place in ('country','state') 152 | ) as placenames 153 | &datasource-settings; 154 | 155 | 156 | 157 | capital 158 | 159 | 160 | (select way,place,name,ref 161 | from &prefix;_point 162 | where place in ('city','metropolis','town') and capital='yes' 163 | ) as placenames 164 | &datasource-settings; 165 | 166 | 167 | 168 | city 169 | town 170 | 171 | 172 | (select way,place,name 173 | from &prefix;_point 174 | where place in ('city','metropolis','town','large_town','small_town') 175 | and (capital is null or capital != 'yes') 176 | ) as placenames 177 | &datasource-settings; 178 | 179 | 180 | 181 | suburb 182 | village 183 | hamlet 184 | 185 | 186 | (select way,place,name 187 | from &prefix;_point 188 | where place in ('suburb','village','large_village','hamlet','locality','isolated_dwelling','farm') 189 | ) as placenames 190 | &datasource-settings; 191 | 192 | 193 | 194 | -------------------------------------------------------------------------------- /inc/layer-power.xml.inc: -------------------------------------------------------------------------------- 1 | 12 | 18 | 34 | 40 | 41 | power_line 42 | 43 | (select way from &prefix;_line where "power"='line') as power_line 44 | &datasource-settings; 45 | 46 | 47 | 48 | power_minorline 49 | 50 | (select way from &prefix;_line where "power"='minor_line') as power_minorline 51 | &datasource-settings; 52 | 53 | 54 | 55 | power_towers 56 | 57 | (select way from &prefix;_point where power='tower') as power_towers 58 | &datasource-settings; 59 | 60 | 61 | 62 | power_poles 63 | 64 | (select way from &prefix;_point where power='pole') as power_poles 65 | &datasource-settings; 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /inc/layer-shapefiles.xml.inc: -------------------------------------------------------------------------------- 1 | 8 | 16 | 23 | 29 | 30 | 37 | 38 | world 39 | 40 | shape 41 | &world_boundaries;/shoreline_300 42 | 43 | 44 | 45 | coast-poly 46 | 47 | shape 48 | &world_boundaries;/processed_p 49 | 50 | 51 | 52 | builtup 53 | 54 | shape 55 | &world_boundaries;/builtup_area 56 | 57 | 58 | 59 | necountries 60 | 61 | shape 62 | &world_boundaries;/ne_110m_admin_0_boundary_lines_land.shp 63 | 64 | 65 | 66 | nepopulated 67 | 68 | shape 69 | &world_boundaries;/ne_10m_populated_places.shp 70 | latin1 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /inc/layer-water_features.xml.inc: -------------------------------------------------------------------------------- 1 | 12 | 23 | 29 | 67 | 75 | 76 | dam 77 | 78 | 79 | (select way,name from &prefix;_line where waterway='dam') as dam 80 | &datasource-settings; 81 | 82 | 83 | 84 | marinas-area 85 | 86 | 87 | (select way from &prefix;_polygon where leisure ='marina') as marinas 88 | 89 | &datasource-settings; 90 | 91 | 92 | 93 | piers-area 94 | 95 | 96 | (select way,man_made from &prefix;_polygon where man_made in ('pier','breakwater','groyne')) as piers 97 | 98 | &datasource-settings; 99 | 100 | 101 | 102 | piers 103 | 104 | 105 | (select way,man_made from &prefix;_line where man_made in ('pier','breakwater','groyne')) as piers 106 | 107 | &datasource-settings; 108 | 109 | 110 | 111 | locks 112 | 113 | 114 | (select way,waterway from &prefix;_point where waterway='lock_gate') as locks 115 | 116 | &datasource-settings; 117 | 118 | 119 | 120 | 121 | -------------------------------------------------------------------------------- /inc/layers.xml.inc: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /inc/settings.xml.inc.template: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /legend.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | """A simple script to help visualize the Mapnik stylesheet. This file puts 4 | out poly/line symbols into an HTML file, with their associated filters. 5 | Not particularly complex at the moment, but a useful visualization tool if 6 | you're hacking on the osm.xml file. Works against the osm.xml 7 | at the moment.""" 8 | 9 | __author__ = "Christopher Schmidt" 10 | __license__ = "Public Domain" 11 | 12 | 13 | import xml.dom.minidom as m 14 | 15 | def run(): 16 | """Parses the osm.xml file, and write an HTML table.""" 17 | #doc = m.parse("osm-template.xml") 18 | doc = m.parse("osm.xml") 19 | styles = doc.getElementsByTagName("Style") 20 | for style in styles: 21 | table_started = False 22 | for r in style.getElementsByTagName("Rule"): 23 | 24 | filters = r.getElementsByTagName("Filter") 25 | text = "" 26 | if len(filters): 27 | text = filters[0].firstChild.nodeValue 28 | 29 | polys = r.getElementsByTagName("PolygonSymbolizer") 30 | poly_text = [] 31 | poly_style = {} 32 | if len(polys): 33 | css = polys[0].getElementsByTagName("CssParameter") 34 | for c in css: 35 | poly_style[ c.getAttribute("name") ] = c.firstChild.nodeValue 36 | 37 | pfill = r.getElementsByTagName("PolygonPatternSymbolizer") 38 | if len(pfill): 39 | pfill = pfill[0] 40 | poly_style['fill'] = '' % (pfill.getAttribute("file"), pfill.getAttribute("file")) 41 | for key, value in poly_style.items(): 42 | poly_text.append("%s: %s" % (key, value)) 43 | poly_text = "
".join(poly_text) 44 | 45 | lines = r.getElementsByTagName("LineSymbolizer") 46 | line_text = [] 47 | line_style = {} 48 | if len(lines): 49 | css = lines[0].getElementsByTagName("CssParameter") 50 | for c in css: 51 | line_style[ c.getAttribute("name") ] = c.firstChild.nodeValue 52 | for key, value in line_style.items(): 53 | line_text.append("%s: %s" % (key, value)) 54 | line_text = "
".join(line_text) 55 | 56 | if text and (poly_text or line_text): 57 | if not table_started: 58 | print "

%s

" % style.getAttribute("name").title() 59 | print "" 60 | table_started = True 61 | print "" % text 62 | print "" % (poly_style.get('fill', ''), poly_text) 63 | print "" % (line_style.get('stroke', ''), line_text) 64 | 65 | if table_started: 66 | print "
filterpolystroke
%s%s%s
" 67 | if __name__ == "__main__": 68 | run() 69 | -------------------------------------------------------------------------------- /livetiles/README: -------------------------------------------------------------------------------- 1 | Simple live tile generator for style development sandboxes 2 | 3 | (c) 2012 Sven Geggus 4 | 5 | livetiles.wsgi will render live mapnik tiles on request which is 6 | handy for maintenance of mapnik styles and completely unsuitable for 7 | a production tileserver. 8 | 9 | In addition to rendering tiles livetiles.wsgi can also generate 10 | slippymaps. 11 | 12 | To enable livetiles.wsgi in apache mod_wsgi just use something like 13 | this in your apache configuration: 14 | 15 | WSGIScriptAlias /livetiles /path/to/livetiles.wsgi 16 | 17 | Also copy livetiles.conf.sample to livetiles.conf and adjust the 18 | sandbox_dir option 19 | 20 | The sandbox should just contain a couple of directories with 21 | different mapnik styles or symbolic links to mapnik style 22 | directories. 23 | 24 | a sample tile URL will then look like this: 25 | http:///livetiles/////.png 26 | 27 | A sample URL to a livetiles slippymap will look like this: 28 | http:///livetiles/ (multi style map) 29 | http:///livetiles// (single style map) 30 | -------------------------------------------------------------------------------- /livetiles/livetiles.conf.sample: -------------------------------------------------------------------------------- 1 | [global] 2 | # name of mapnik style 3 | stylename=osm.xml 4 | 5 | # directory containing available mapnik styles 6 | sandbox_dir=/path/to/mapnik/style/sandboxes 7 | 8 | # full path to map_template.html 9 | map_template=/path/to/map_template.html 10 | -------------------------------------------------------------------------------- /livetiles/livetiles.wsgi: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # 3 | # Simple live tile generator for style development sandboxes 4 | # 5 | # (c) 2012 Sven Geggus 6 | # 7 | # Do not use for for production tileservers, 8 | # use mod_tile + Tirex or renderd instead 9 | # 10 | # Released under the terms of the 11 | # GNU Affero General Public License (AGPL) 12 | # http://www.gnu.org/licenses/agpl-3.0.html 13 | # Version 3.0 or later 14 | # 15 | 16 | import math,sys,re,os,ConfigParser 17 | try: 18 | import mapnik2 as mapnik 19 | except: 20 | import mapnik 21 | 22 | 23 | def TileToMeters(tx, ty, zoom): 24 | initialResolution = 20037508.342789244 * 2.0 / 256.0 25 | originShift = 20037508.342789244 26 | tileSize = 256.0 27 | zoom2 = (2.0**zoom) 28 | res = initialResolution / zoom2 29 | mx = (res*tileSize*(tx+1))-originShift 30 | my = (res*tileSize*(zoom2-ty))-originShift 31 | return mx, my 32 | 33 | def TileToBBox(x,y,z): 34 | x1,y1=TileToMeters(x-1,y+1,z) 35 | x2,y2=TileToMeters(x,y,z) 36 | return x1,y1,x2,y2 37 | 38 | # generate error page if invalid URL has been called 39 | def InvalidURL(start_response,msg,status): 40 | html="%s" % msg 41 | response_headers = [('Content-type', 'text/html'),('Content-Length', str(len(html)))] 42 | start_response(status, response_headers) 43 | return html 44 | 45 | # generate slyypy map for all styles or a single style 46 | def genSlippyMap(start_response,stylelist = []): 47 | status = '200 OK' 48 | 49 | if stylelist == []: 50 | dirList=os.listdir(sandbox_dir) 51 | stylelist=[] 52 | for s in dirList: 53 | if os.path.isdir(sandbox_dir+'/'+s): 54 | stylelist.append(s) 55 | 56 | templ = open(map_template,'r') 57 | tdata = templ.read() 58 | templ.close() 59 | 60 | p = re.compile('%MAPSTYLES%') 61 | # take advantage of the fact, that python lists 62 | # and javascript lists use the same string representation 63 | tdata = p.sub(str(stylelist),tdata) 64 | 65 | response_headers = [('Content-type', 'text/html'),('Content-Length', str(len(tdata)))] 66 | start_response(status, response_headers) 67 | return tdata 68 | 69 | # check if sandbox of given name does exist 70 | def checkSandbox(name): 71 | mapfile=sandbox_dir+"/"+name+"/"+stylename 72 | if not os.path.exists(mapfile): 73 | return True 74 | return False 75 | 76 | def application(env, start_response): 77 | 78 | global sandbox_dir 79 | global stylename 80 | global map_template 81 | 82 | status = '200 OK' 83 | 84 | pathinfo=env['PATH_INFO'] 85 | 86 | # read configuration file 87 | config = ConfigParser.ConfigParser() 88 | cfgfile=os.path.dirname(env['SCRIPT_FILENAME'])+"/livetiles.conf" 89 | config.read(cfgfile) 90 | stylename = config.get("global","stylename") 91 | sandbox_dir = config.get("global","sandbox_dir") 92 | map_template = config.get("global","map_template") 93 | 94 | # mod-wsgi gives control to our script only for /name and /name/... 95 | # thus any length <2 should show the overview page 96 | if len(pathinfo) < 2: 97 | return genSlippyMap(start_response) 98 | 99 | # check for valid tile URLs 100 | # whitelist for sandbox names: allow characters, numbers, - and _ only 101 | # two type of valid URLs: 102 | # /stylename/ for slipplymap 103 | # /stylename/z/x/y.png for tyle 104 | m = re.match(r"^/+([a-zA-Z0-9_\-]+)/*(.*)$", pathinfo) 105 | if m is None: 106 | msg="Invalid URL: %s
should be /<sandbox-name>/<z>/<x>/<y>.png" % pathinfo 107 | return InvalidURL(start_response,msg,'404 Invalid URL') 108 | 109 | sandbox=m.group(1) 110 | # check for mapnik style file in requested sandbox 111 | if checkSandbox(sandbox): 112 | msg="ERROR: sandbox >%s< does not exist!!!" % sandbox 113 | return InvalidURL(start_response,msg,'404 Invalid sandbox') 114 | 115 | # the remaining possibilities are SlippyMap or Tile-URL 116 | if m.group(2) == '': 117 | return genSlippyMap(start_response,[m.group(1)]) 118 | 119 | m = re.match(r"^([0-9]+)/+([0-9]+)/+([0-9]+).png$", m.group(2)) 120 | if m is None: 121 | msg="Invalid URL: %s
should be /<sandbox-name>/<z>/<x>/<y>.png" % pathinfo 122 | return InvalidURL(start_response,msg,'404 Invalid URL') 123 | 124 | z=int(m.group(1)) 125 | x=int(m.group(2)) 126 | y=int(m.group(3)) 127 | 128 | # check for mapnik style file in requested sandbox 129 | mapfile=sandbox_dir+"/"+sandbox+"/"+stylename 130 | if not os.path.exists(mapfile): 131 | msg="ERROR: sandbox >%s< does not exist!!!" % sandbox 132 | return InvalidURL(start_response,msg,'404 Invalid sandbox') 133 | 134 | # we have a valid Tile-URL request so just render the tile now 135 | m = mapnik.Map(256, 256) 136 | mapnik.load_map(m, mapfile) 137 | bba=TileToBBox(x,y,z) 138 | bbox=mapnik.Box2d(bba[0],bba[1],bba[2],bba[3]) 139 | m.zoom_to_box(bbox) 140 | im = mapnik.Image(256, 256) 141 | mapnik.render(m, im) 142 | 143 | output = im.tostring('png') 144 | 145 | response_headers = [('Content-type', 'image/png'), 146 | ('Content-Length', str(len(output)))] 147 | start_response(status, response_headers) 148 | return [output] 149 | -------------------------------------------------------------------------------- /livetiles/map_template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Mapnik map with live rendered tiles 6 | 32 | 33 | 34 | 35 | 36 | 98 | 99 | 100 |
101 | 102 | 103 | 104 | -------------------------------------------------------------------------------- /livetiles/render_single_tile.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # 3 | # render a single tile using mapnik 4 | import math 5 | import sys 6 | try: 7 | import mapnik2 as mapnik 8 | except: 9 | import mapnik 10 | 11 | 12 | def TileToMeters(tx, ty, zoom): 13 | initialResolution = 20037508.342789244 * 2.0 / 256.0 14 | originShift = 20037508.342789244 15 | tileSize = 256.0 16 | zoom2 = (2.0**zoom) 17 | res = initialResolution / zoom2 18 | mx = (res*tileSize*(tx+1))-originShift 19 | my = (res*tileSize*(zoom2-ty))-originShift 20 | return mx, my 21 | 22 | def TileToBBox(x,y,z): 23 | x1,y1=TileToMeters(x-1,y+1,z) 24 | x2,y2=TileToMeters(x,y,z) 25 | return x1,y1,x2,y2 26 | 27 | if __name__ == "__main__": 28 | if len(sys.argv) != 5: 29 | sys.stderr.write("usage: render_single_tile.py z x y\n") 30 | sys.exit(1) 31 | mapfile = sys.argv[1] 32 | z=int(sys.argv[2]) 33 | x=int(sys.argv[3]) 34 | y=int(sys.argv[4]) 35 | 36 | m = mapnik.Map(256, 256) 37 | mapnik.load_map(m, mapfile) 38 | bba=TileToBBox(x,y,z) 39 | bbox=mapnik.Box2d(bba[0],bba[1],bba[2],bba[3]) 40 | m.zoom_to_box(bbox) 41 | im = mapnik.Image(256, 256) 42 | mapnik.render(m, im) 43 | sys.stdout.write(im.tostring('png')); 44 | 45 | -------------------------------------------------------------------------------- /mkshield.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | use GD; 7 | 8 | mkshield("motorway_shield1", 17, 17, 128, 155, 192); 9 | mkshield("motorway_shield2", 24, 17, 128, 155, 192); 10 | mkshield("motorway_shield3", 31, 17, 128, 155, 192); 11 | mkshield("motorway_shield4", 38, 17, 128, 155, 192); 12 | mkshield("motorway_shield5", 45, 17, 128, 155, 192); 13 | mkshield("motorway_shield6", 52, 17, 128, 155, 192); 14 | 15 | mkshield("trunk_shield1", 17, 17, 127, 201, 127); 16 | mkshield("trunk_shield2", 24, 17, 127, 201, 127); 17 | mkshield("trunk_shield3", 31, 17, 127, 201, 127); 18 | mkshield("trunk_shield4", 38, 17, 127, 201, 127); 19 | mkshield("trunk_shield5", 45, 17, 127, 201, 127); 20 | mkshield("trunk_shield6", 52, 17, 127, 201, 127); 21 | mkshield("trunk_shield7", 59, 17, 127, 201, 127); 22 | mkshield("trunk_shield8", 66, 17, 127, 201, 127); 23 | 24 | mkshield("primary_shield1", 17, 17, 228, 109, 113); 25 | mkshield("primary_shield2", 24, 17, 228, 109, 113); 26 | mkshield("primary_shield3", 31, 17, 228, 109, 113); 27 | mkshield("primary_shield4", 38, 17, 228, 109, 113); 28 | mkshield("primary_shield5", 45, 17, 228, 109, 113); 29 | mkshield("primary_shield6", 52, 17, 228, 109, 113); 30 | mkshield("primary_shield7", 59, 17, 228, 109, 113); 31 | mkshield("primary_shield8", 66, 17, 228, 109, 113); 32 | 33 | mkshield("secondary_shield1", 17, 17, 253, 191, 111); 34 | mkshield("secondary_shield2", 24, 17, 253, 191, 111); 35 | mkshield("secondary_shield3", 31, 17, 253, 191, 111); 36 | mkshield("secondary_shield4", 38, 17, 253, 191, 111); 37 | mkshield("secondary_shield5", 45, 17, 253, 191, 111); 38 | mkshield("secondary_shield6", 52, 17, 253, 191, 111); 39 | mkshield("secondary_shield7", 59, 17, 253, 191, 111); 40 | mkshield("secondary_shield8", 66, 17, 253, 191, 111); 41 | 42 | mkshield("tertiary_shield1", 17, 17, 153, 153, 153); 43 | mkshield("tertiary_shield2", 24, 17, 153, 153, 153); 44 | mkshield("tertiary_shield3", 31, 17, 153, 153, 153); 45 | mkshield("tertiary_shield4", 38, 17, 153, 153, 153); 46 | mkshield("tertiary_shield5", 45, 17, 153, 153, 153); 47 | mkshield("tertiary_shield6", 52, 17, 153, 153, 153); 48 | mkshield("tertiary_shield7", 59, 17, 153, 153, 153); 49 | mkshield("tertiary_shield8", 66, 17, 153, 153, 153); 50 | 51 | exit 0; 52 | 53 | sub mkshield 54 | { 55 | my $name = shift; 56 | my $width = shift; 57 | my $height = shift; 58 | my $r = shift; 59 | my $g = shift; 60 | my $b = shift; 61 | 62 | my $shield = GD::Image->new($width, $height, 1); 63 | 64 | $shield->alphaBlending(0); 65 | $shield->saveAlpha(1); 66 | 67 | my $white = $shield->colorAllocate(255, 255, 255); 68 | my $border1 = $shield->colorAllocate($r, $g, $b); 69 | my $border2 = $shield->colorAllocateAlpha(round($r * 1.2578), round($g * 1.1677), round($b * 1.0833), 8); 70 | my $border3 = $shield->colorAllocateAlpha(round($r * 1.2031), round($g * 1.1290), round($b * 1.0677), 21); 71 | my $border4 = $shield->colorAllocateAlpha($r, $g, $b, 43); 72 | my $border5 = $shield->colorAllocateAlpha(round($r * 1.0391), round($g * 1.0258), round($b * 1.0104), 8); 73 | 74 | $shield->filledRectangle(2, 2, $width - 3, $height - 3, $white); 75 | 76 | $shield->line(0, 1, 0, $height - 2, $border1); 77 | $shield->line($width - 1, 1, $width - 1, $height - 2, $border1); 78 | $shield->line(1, 0, $width - 2, 0, $border1); 79 | $shield->line(1, $height - 1, $width - 2, $height - 1, $border1); 80 | 81 | $shield->line(1, 2, 1, $height - 3, $border2); 82 | $shield->line($width - 2, 2, $width - 2, $height - 3, $border2); 83 | 84 | $shield->line(2, 1, $width - 3, 1, $border3); 85 | $shield->line(2, $height - 2, $width - 3, $height - 2, $border3); 86 | 87 | $shield->setPixel(0, 0, $border4); 88 | $shield->setPixel(0, $height - 1, $border4); 89 | $shield->setPixel($width - 1, $height - 1, $border4); 90 | $shield->setPixel($width - 1, 0, $border4); 91 | 92 | $shield->setPixel(1, 1, $border5); 93 | $shield->setPixel(1, $height - 2, $border5); 94 | $shield->setPixel($width - 2, $height - 2, $border5); 95 | $shield->setPixel($width - 2, 1, $border5); 96 | 97 | open(SHIELD, "> ${name}.png") || die "Can't open ${name}.png: $!"; 98 | binmode(SHIELD); 99 | print SHIELD $shield->png; 100 | close(SHIELD); 101 | 102 | return; 103 | } 104 | 105 | sub round 106 | { 107 | my $n = shift; 108 | my $r = sprintf("%.0f", $n); 109 | 110 | $r = 255 if $r > 255; 111 | 112 | return $r; 113 | } 114 | -------------------------------------------------------------------------------- /symbols/aerodrome.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/aerodrome.p.16.png -------------------------------------------------------------------------------- /symbols/aerodrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/aerodrome.png -------------------------------------------------------------------------------- /symbols/aiga_parking1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/aiga_parking1.png -------------------------------------------------------------------------------- /symbols/airport.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/airport.p.16.png -------------------------------------------------------------------------------- /symbols/airport.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/airport.png -------------------------------------------------------------------------------- /symbols/allotments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/allotments.png -------------------------------------------------------------------------------- /symbols/alpinehut.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/alpinehut.p.16.png -------------------------------------------------------------------------------- /symbols/amenity_bench.p.8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/amenity_bench.p.8.png -------------------------------------------------------------------------------- /symbols/amenity_court.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/amenity_court.p.20.png -------------------------------------------------------------------------------- /symbols/amenity_prison.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/amenity_prison.p.20.png -------------------------------------------------------------------------------- /symbols/amenity_prison.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/amenity_prison.png -------------------------------------------------------------------------------- /symbols/amenity_veterinary.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/amenity_veterinary.p.16.png -------------------------------------------------------------------------------- /symbols/amenity_waste_basket.p.8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/amenity_waste_basket.p.8.png -------------------------------------------------------------------------------- /symbols/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/arrow.png -------------------------------------------------------------------------------- /symbols/arrow_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/arrow_back.png -------------------------------------------------------------------------------- /symbols/atm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/atm.png -------------------------------------------------------------------------------- /symbols/atm2.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/atm2.p.16.png -------------------------------------------------------------------------------- /symbols/bandb.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/bandb.p.20.png -------------------------------------------------------------------------------- /symbols/bank2.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/bank2.p.16.png -------------------------------------------------------------------------------- /symbols/bar.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/bar.p.20.png -------------------------------------------------------------------------------- /symbols/beach.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/beach.png -------------------------------------------------------------------------------- /symbols/biergarten.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/biergarten.p.16.png -------------------------------------------------------------------------------- /symbols/bollard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/bollard.png -------------------------------------------------------------------------------- /symbols/bus_station.n.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/bus_station.n.16.png -------------------------------------------------------------------------------- /symbols/bus_stop.p.12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/bus_stop.p.12.png -------------------------------------------------------------------------------- /symbols/bus_stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/bus_stop.png -------------------------------------------------------------------------------- /symbols/bus_stop_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/bus_stop_small.png -------------------------------------------------------------------------------- /symbols/cable_car.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/cable_car.png -------------------------------------------------------------------------------- /symbols/cafe.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/cafe.p.16.png -------------------------------------------------------------------------------- /symbols/camping.n.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/camping.n.16.png -------------------------------------------------------------------------------- /symbols/car_share.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/car_share.p.16.png -------------------------------------------------------------------------------- /symbols/caravan_park.p.24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/caravan_park.p.24.png -------------------------------------------------------------------------------- /symbols/cemetery_jewish.18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/cemetery_jewish.18.png -------------------------------------------------------------------------------- /symbols/chair_lift.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/chair_lift.png -------------------------------------------------------------------------------- /symbols/chalet.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/chalet.p.16.png -------------------------------------------------------------------------------- /symbols/christian3.p.14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/christian3.p.14.png -------------------------------------------------------------------------------- /symbols/cinema.p.24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/cinema.p.24.png -------------------------------------------------------------------------------- /symbols/cliff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/cliff.png -------------------------------------------------------------------------------- /symbols/cliff2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/cliff2.png -------------------------------------------------------------------------------- /symbols/communications.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/communications.p.20.png -------------------------------------------------------------------------------- /symbols/danger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/danger.png -------------------------------------------------------------------------------- /symbols/department_store.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/department_store.p.16.png -------------------------------------------------------------------------------- /symbols/embassy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/embassy.png -------------------------------------------------------------------------------- /symbols/fast_food.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/fast_food.png -------------------------------------------------------------------------------- /symbols/firestation.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/firestation.p.16.png -------------------------------------------------------------------------------- /symbols/florist.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/florist.p.16.png -------------------------------------------------------------------------------- /symbols/food_bar.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/food_bar.p.16.png -------------------------------------------------------------------------------- /symbols/food_drinkingtap.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/food_drinkingtap.p.20.png -------------------------------------------------------------------------------- /symbols/forest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/forest.png -------------------------------------------------------------------------------- /symbols/fuel.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/fuel.p.16.png -------------------------------------------------------------------------------- /symbols/gate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/gate.png -------------------------------------------------------------------------------- /symbols/gate2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/gate2.png -------------------------------------------------------------------------------- /symbols/glacier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/glacier.png -------------------------------------------------------------------------------- /symbols/glacier2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/glacier2.png -------------------------------------------------------------------------------- /symbols/grave_yard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/grave_yard.png -------------------------------------------------------------------------------- /symbols/grave_yard_generic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/grave_yard_generic.png -------------------------------------------------------------------------------- /symbols/guest_house.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/guest_house.p.16.png -------------------------------------------------------------------------------- /symbols/halt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/halt.png -------------------------------------------------------------------------------- /symbols/helipad.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/helipad.p.16.png -------------------------------------------------------------------------------- /symbols/hospital.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/hospital.p.16.png -------------------------------------------------------------------------------- /symbols/hospital.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/hospital.png -------------------------------------------------------------------------------- /symbols/hostel.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/hostel.p.20.png -------------------------------------------------------------------------------- /symbols/hotel2.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/hotel2.p.20.png -------------------------------------------------------------------------------- /symbols/information.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/information.p.16.png -------------------------------------------------------------------------------- /symbols/islamic3.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/islamic3.p.16.png -------------------------------------------------------------------------------- /symbols/jewish3.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/jewish3.p.16.png -------------------------------------------------------------------------------- /symbols/landfill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/landfill.png -------------------------------------------------------------------------------- /symbols/level_crossing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/level_crossing.png -------------------------------------------------------------------------------- /symbols/level_crossing2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/level_crossing2.png -------------------------------------------------------------------------------- /symbols/library.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/library.p.20.png -------------------------------------------------------------------------------- /symbols/liftgate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/liftgate.png -------------------------------------------------------------------------------- /symbols/lighthouse.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/lighthouse.p.20.png -------------------------------------------------------------------------------- /symbols/lock_gate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/lock_gate.png -------------------------------------------------------------------------------- /symbols/london-tube-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/london-tube-24.png -------------------------------------------------------------------------------- /symbols/marsh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/marsh.png -------------------------------------------------------------------------------- /symbols/memorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/memorial.png -------------------------------------------------------------------------------- /symbols/military_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/military_red.png -------------------------------------------------------------------------------- /symbols/military_red_hz2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/military_red_hz2.png -------------------------------------------------------------------------------- /symbols/military_restraint2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/military_restraint2.png -------------------------------------------------------------------------------- /symbols/mini_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/mini_round.png -------------------------------------------------------------------------------- /symbols/mosque.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/mosque.png -------------------------------------------------------------------------------- /symbols/mot_shield1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/mot_shield1.png -------------------------------------------------------------------------------- /symbols/mot_shield2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/mot_shield2.png -------------------------------------------------------------------------------- /symbols/mot_shield3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/mot_shield3.png -------------------------------------------------------------------------------- /symbols/mot_shield4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/mot_shield4.png -------------------------------------------------------------------------------- /symbols/mot_shield5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/mot_shield5.png -------------------------------------------------------------------------------- /symbols/mot_shield6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/mot_shield6.png -------------------------------------------------------------------------------- /symbols/mot_shield7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/mot_shield7.png -------------------------------------------------------------------------------- /symbols/mot_shield8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/mot_shield8.png -------------------------------------------------------------------------------- /symbols/motel.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/motel.p.20.png -------------------------------------------------------------------------------- /symbols/motorway_shield1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/motorway_shield1.png -------------------------------------------------------------------------------- /symbols/motorway_shield2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/motorway_shield2.png -------------------------------------------------------------------------------- /symbols/motorway_shield3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/motorway_shield3.png -------------------------------------------------------------------------------- /symbols/motorway_shield4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/motorway_shield4.png -------------------------------------------------------------------------------- /symbols/motorway_shield5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/motorway_shield5.png -------------------------------------------------------------------------------- /symbols/motorway_shield6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/motorway_shield6.png -------------------------------------------------------------------------------- /symbols/mud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/mud.png -------------------------------------------------------------------------------- /symbols/museum.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/museum.p.16.png -------------------------------------------------------------------------------- /symbols/nature_reserve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/nature_reserve.png -------------------------------------------------------------------------------- /symbols/nature_reserve2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/nature_reserve2.png -------------------------------------------------------------------------------- /symbols/nature_reserve2T.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/nature_reserve2T.png -------------------------------------------------------------------------------- /symbols/nature_reserve5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/nature_reserve5.png -------------------------------------------------------------------------------- /symbols/nature_reserve6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/nature_reserve6.png -------------------------------------------------------------------------------- /symbols/nature_reserveT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/nature_reserveT.png -------------------------------------------------------------------------------- /symbols/orchard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/orchard.png -------------------------------------------------------------------------------- /symbols/parking.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/parking.p.16.png -------------------------------------------------------------------------------- /symbols/parking.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/parking.png -------------------------------------------------------------------------------- /symbols/parking_private.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/parking_private.p.16.png -------------------------------------------------------------------------------- /symbols/peak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/peak.png -------------------------------------------------------------------------------- /symbols/pharmacy.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/pharmacy.p.16.png -------------------------------------------------------------------------------- /symbols/picnic.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/picnic.p.16.png -------------------------------------------------------------------------------- /symbols/pint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/pint.png -------------------------------------------------------------------------------- /symbols/place_of_worship.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/place_of_worship.png -------------------------------------------------------------------------------- /symbols/place_of_worship3.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/place_of_worship3.p.16.png -------------------------------------------------------------------------------- /symbols/place_of_worship3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/place_of_worship3.png -------------------------------------------------------------------------------- /symbols/playground.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/playground.p.20.png -------------------------------------------------------------------------------- /symbols/poi_cave.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/poi_cave.p.16.png -------------------------------------------------------------------------------- /symbols/police.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/police.p.16.png -------------------------------------------------------------------------------- /symbols/post_box.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/post_box.p.16.png -------------------------------------------------------------------------------- /symbols/post_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/post_box.png -------------------------------------------------------------------------------- /symbols/post_office.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/post_office.p.16.png -------------------------------------------------------------------------------- /symbols/post_office.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/post_office.png -------------------------------------------------------------------------------- /symbols/postoffice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/postoffice.png -------------------------------------------------------------------------------- /symbols/power_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/power_line.png -------------------------------------------------------------------------------- /symbols/power_pole.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/power_pole.png -------------------------------------------------------------------------------- /symbols/power_tower.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/power_tower.png -------------------------------------------------------------------------------- /symbols/power_tower_3x3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/power_tower_3x3.png -------------------------------------------------------------------------------- /symbols/power_tower_5x5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/power_tower_5x5.png -------------------------------------------------------------------------------- /symbols/power_wind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/power_wind.png -------------------------------------------------------------------------------- /symbols/pri_shield1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/pri_shield1.png -------------------------------------------------------------------------------- /symbols/pri_shield2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/pri_shield2.png -------------------------------------------------------------------------------- /symbols/pri_shield3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/pri_shield3.png -------------------------------------------------------------------------------- /symbols/pri_shield4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/pri_shield4.png -------------------------------------------------------------------------------- /symbols/pri_shield5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/pri_shield5.png -------------------------------------------------------------------------------- /symbols/pri_shield6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/pri_shield6.png -------------------------------------------------------------------------------- /symbols/pri_shield7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/pri_shield7.png -------------------------------------------------------------------------------- /symbols/pri_shield8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/pri_shield8.png -------------------------------------------------------------------------------- /symbols/primary_shield1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/primary_shield1.png -------------------------------------------------------------------------------- /symbols/primary_shield2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/primary_shield2.png -------------------------------------------------------------------------------- /symbols/primary_shield3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/primary_shield3.png -------------------------------------------------------------------------------- /symbols/primary_shield4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/primary_shield4.png -------------------------------------------------------------------------------- /symbols/primary_shield5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/primary_shield5.png -------------------------------------------------------------------------------- /symbols/primary_shield6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/primary_shield6.png -------------------------------------------------------------------------------- /symbols/primary_shield7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/primary_shield7.png -------------------------------------------------------------------------------- /symbols/primary_shield8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/primary_shield8.png -------------------------------------------------------------------------------- /symbols/pub.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/pub.p.16.png -------------------------------------------------------------------------------- /symbols/pub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/pub.png -------------------------------------------------------------------------------- /symbols/quarry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/quarry.png -------------------------------------------------------------------------------- /symbols/quarry2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/quarry2.png -------------------------------------------------------------------------------- /symbols/recycle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/recycle.png -------------------------------------------------------------------------------- /symbols/recycling.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/recycling.p.16.png -------------------------------------------------------------------------------- /symbols/recycling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/recycling.png -------------------------------------------------------------------------------- /symbols/rental_bicycle.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/rental_bicycle.p.20.png -------------------------------------------------------------------------------- /symbols/restaurant.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/restaurant.p.16.png -------------------------------------------------------------------------------- /symbols/school.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/school.png -------------------------------------------------------------------------------- /symbols/scrub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/scrub.png -------------------------------------------------------------------------------- /symbols/sec_shield1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/sec_shield1.png -------------------------------------------------------------------------------- /symbols/sec_shield2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/sec_shield2.png -------------------------------------------------------------------------------- /symbols/sec_shield3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/sec_shield3.png -------------------------------------------------------------------------------- /symbols/sec_shield4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/sec_shield4.png -------------------------------------------------------------------------------- /symbols/sec_shield5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/sec_shield5.png -------------------------------------------------------------------------------- /symbols/sec_shield6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/sec_shield6.png -------------------------------------------------------------------------------- /symbols/sec_shield7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/sec_shield7.png -------------------------------------------------------------------------------- /symbols/sec_shield8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/sec_shield8.png -------------------------------------------------------------------------------- /symbols/secondary_shield1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/secondary_shield1.png -------------------------------------------------------------------------------- /symbols/secondary_shield2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/secondary_shield2.png -------------------------------------------------------------------------------- /symbols/secondary_shield3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/secondary_shield3.png -------------------------------------------------------------------------------- /symbols/secondary_shield4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/secondary_shield4.png -------------------------------------------------------------------------------- /symbols/secondary_shield5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/secondary_shield5.png -------------------------------------------------------------------------------- /symbols/secondary_shield6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/secondary_shield6.png -------------------------------------------------------------------------------- /symbols/secondary_shield7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/secondary_shield7.png -------------------------------------------------------------------------------- /symbols/secondary_shield8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/secondary_shield8.png -------------------------------------------------------------------------------- /symbols/shelter2.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shelter2.p.16.png -------------------------------------------------------------------------------- /symbols/shop_bakery.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shop_bakery.p.16.png -------------------------------------------------------------------------------- /symbols/shop_books.p_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shop_books.p_16.png -------------------------------------------------------------------------------- /symbols/shop_butcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shop_butcher.png -------------------------------------------------------------------------------- /symbols/shop_clothes.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shop_clothes.p.16.png -------------------------------------------------------------------------------- /symbols/shop_computer.p_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shop_computer.p_16.png -------------------------------------------------------------------------------- /symbols/shop_convenience.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shop_convenience.p.16.png -------------------------------------------------------------------------------- /symbols/shop_diy.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shop_diy.p.16.png -------------------------------------------------------------------------------- /symbols/shop_dry_cleaning.p_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shop_dry_cleaning.p_16.png -------------------------------------------------------------------------------- /symbols/shop_gift.p_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shop_gift.p_16.png -------------------------------------------------------------------------------- /symbols/shop_greengrocer.p_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shop_greengrocer.p_16.png -------------------------------------------------------------------------------- /symbols/shop_hairdresser.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shop_hairdresser.p.16.png -------------------------------------------------------------------------------- /symbols/shop_jewelry.p_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shop_jewelry.p_16.png -------------------------------------------------------------------------------- /symbols/shop_mobile_phone.p_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shop_mobile_phone.p_16.png -------------------------------------------------------------------------------- /symbols/shop_optician.p_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shop_optician.p_16.png -------------------------------------------------------------------------------- /symbols/shop_pet.p_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shop_pet.p_16.png -------------------------------------------------------------------------------- /symbols/shop_supermarket.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shop_supermarket.p.16.png -------------------------------------------------------------------------------- /symbols/shopping_bicycle.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shopping_bicycle.p.16.png -------------------------------------------------------------------------------- /symbols/shopping_car.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shopping_car.p.16.png -------------------------------------------------------------------------------- /symbols/shopping_car_repair.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/shopping_car_repair.p.16.png -------------------------------------------------------------------------------- /symbols/sikh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/sikh.png -------------------------------------------------------------------------------- /symbols/sikh3.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/sikh3.p.16.png -------------------------------------------------------------------------------- /symbols/sosphone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/sosphone.png -------------------------------------------------------------------------------- /symbols/spring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/spring.png -------------------------------------------------------------------------------- /symbols/station.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/station.png -------------------------------------------------------------------------------- /symbols/station_disused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/station_disused.png -------------------------------------------------------------------------------- /symbols/station_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/station_small.png -------------------------------------------------------------------------------- /symbols/synagogue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/synagogue.png -------------------------------------------------------------------------------- /symbols/telephone.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/telephone.p.16.png -------------------------------------------------------------------------------- /symbols/ter_shield1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/ter_shield1.png -------------------------------------------------------------------------------- /symbols/ter_shield2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/ter_shield2.png -------------------------------------------------------------------------------- /symbols/ter_shield3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/ter_shield3.png -------------------------------------------------------------------------------- /symbols/ter_shield4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/ter_shield4.png -------------------------------------------------------------------------------- /symbols/ter_shield5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/ter_shield5.png -------------------------------------------------------------------------------- /symbols/ter_shield6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/ter_shield6.png -------------------------------------------------------------------------------- /symbols/ter_shield7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/ter_shield7.png -------------------------------------------------------------------------------- /symbols/ter_shield8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/ter_shield8.png -------------------------------------------------------------------------------- /symbols/tertiary_shield1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tertiary_shield1.png -------------------------------------------------------------------------------- /symbols/tertiary_shield2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tertiary_shield2.png -------------------------------------------------------------------------------- /symbols/tertiary_shield3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tertiary_shield3.png -------------------------------------------------------------------------------- /symbols/tertiary_shield4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tertiary_shield4.png -------------------------------------------------------------------------------- /symbols/tertiary_shield5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tertiary_shield5.png -------------------------------------------------------------------------------- /symbols/tertiary_shield6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tertiary_shield6.png -------------------------------------------------------------------------------- /symbols/tertiary_shield7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tertiary_shield7.png -------------------------------------------------------------------------------- /symbols/tertiary_shield8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tertiary_shield8.png -------------------------------------------------------------------------------- /symbols/theatre.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/theatre.p.20.png -------------------------------------------------------------------------------- /symbols/toilets.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/toilets.p.20.png -------------------------------------------------------------------------------- /symbols/tourist_archaeological2.glow.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tourist_archaeological2.glow.16.png -------------------------------------------------------------------------------- /symbols/tourist_memorial.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tourist_memorial.p.20.png -------------------------------------------------------------------------------- /symbols/tower.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tower.png -------------------------------------------------------------------------------- /symbols/tower_water.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tower_water.p.20.png -------------------------------------------------------------------------------- /symbols/traffic_light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/traffic_light.png -------------------------------------------------------------------------------- /symbols/transport_ford.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/transport_ford.p.16.png -------------------------------------------------------------------------------- /symbols/transport_slipway.p.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/transport_slipway.p.20.png -------------------------------------------------------------------------------- /symbols/tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tree.png -------------------------------------------------------------------------------- /symbols/tree2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tree2.png -------------------------------------------------------------------------------- /symbols/tru_shield1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tru_shield1.png -------------------------------------------------------------------------------- /symbols/tru_shield2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tru_shield2.png -------------------------------------------------------------------------------- /symbols/tru_shield3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tru_shield3.png -------------------------------------------------------------------------------- /symbols/tru_shield4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tru_shield4.png -------------------------------------------------------------------------------- /symbols/tru_shield5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tru_shield5.png -------------------------------------------------------------------------------- /symbols/tru_shield6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tru_shield6.png -------------------------------------------------------------------------------- /symbols/tru_shield7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tru_shield7.png -------------------------------------------------------------------------------- /symbols/tru_shield8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/tru_shield8.png -------------------------------------------------------------------------------- /symbols/trunk_shield1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/trunk_shield1.png -------------------------------------------------------------------------------- /symbols/trunk_shield2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/trunk_shield2.png -------------------------------------------------------------------------------- /symbols/trunk_shield3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/trunk_shield3.png -------------------------------------------------------------------------------- /symbols/trunk_shield4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/trunk_shield4.png -------------------------------------------------------------------------------- /symbols/trunk_shield5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/trunk_shield5.png -------------------------------------------------------------------------------- /symbols/trunk_shield6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/trunk_shield6.png -------------------------------------------------------------------------------- /symbols/trunk_shield7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/trunk_shield7.png -------------------------------------------------------------------------------- /symbols/trunk_shield8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/trunk_shield8.png -------------------------------------------------------------------------------- /symbols/turning_circle-livs-fill.12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-livs-fill.12.png -------------------------------------------------------------------------------- /symbols/turning_circle-livs-fill.14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-livs-fill.14.png -------------------------------------------------------------------------------- /symbols/turning_circle-livs-fill.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-livs-fill.16.png -------------------------------------------------------------------------------- /symbols/turning_circle-livs-fill.22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-livs-fill.22.png -------------------------------------------------------------------------------- /symbols/turning_circle-tert-casing.18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-tert-casing.18.png -------------------------------------------------------------------------------- /symbols/turning_circle-tert-casing.24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-tert-casing.24.png -------------------------------------------------------------------------------- /symbols/turning_circle-tert-fill.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-tert-fill.16.png -------------------------------------------------------------------------------- /symbols/turning_circle-tert-fill.22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-tert-fill.22.png -------------------------------------------------------------------------------- /symbols/turning_circle-uncl-casing.14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-uncl-casing.14.png -------------------------------------------------------------------------------- /symbols/turning_circle-uncl-casing.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-uncl-casing.16.png -------------------------------------------------------------------------------- /symbols/turning_circle-uncl-casing.18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-uncl-casing.18.png -------------------------------------------------------------------------------- /symbols/turning_circle-uncl-casing.24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-uncl-casing.24.png -------------------------------------------------------------------------------- /symbols/turning_circle-uncl-fill.12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-uncl-fill.12.png -------------------------------------------------------------------------------- /symbols/turning_circle-uncl-fill.14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-uncl-fill.14.png -------------------------------------------------------------------------------- /symbols/turning_circle-uncl-fill.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-uncl-fill.16.png -------------------------------------------------------------------------------- /symbols/turning_circle-uncl-fill.18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-uncl-fill.18.png -------------------------------------------------------------------------------- /symbols/turning_circle-uncl-fill.22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-uncl-fill.22.png -------------------------------------------------------------------------------- /symbols/turning_circle-uncl-fill.24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle-uncl-fill.24.png -------------------------------------------------------------------------------- /symbols/turning_circle.13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle.13.png -------------------------------------------------------------------------------- /symbols/turning_circle.15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle.15.png -------------------------------------------------------------------------------- /symbols/turning_circle.17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle.17.png -------------------------------------------------------------------------------- /symbols/turning_circle.19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/turning_circle.19.png -------------------------------------------------------------------------------- /symbols/view_point.p.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/view_point.p.16.png -------------------------------------------------------------------------------- /symbols/vineyard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/vineyard.png -------------------------------------------------------------------------------- /symbols/volcano.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/volcano.png -------------------------------------------------------------------------------- /symbols/walking.n.12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/walking.n.12.png -------------------------------------------------------------------------------- /symbols/windmill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/windmill.png -------------------------------------------------------------------------------- /symbols/zoo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstreetmap/mapnik-stylesheets/236f8d0ab17b792300679cedf9afa5b0feab301b/symbols/zoo.png -------------------------------------------------------------------------------- /utils/stylecheck.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | # A small (& dirty) script that creates a table giving you an estimate of 4 | # which SQL queries will be executed at which scale denominators, by 5 | # aggregating the min/max scale denominators for all rules and styles and 6 | # matching them up with layers. 7 | 8 | # it reads the osm.xml file in the current directory and requires that 9 | # xmlstarlet be installed. 10 | 11 | # Example result (needs wide window): 12 | 13 | # Layer |MinZ|MaxZ| Table | WHERE clause 14 | # world | 9 | 0 | | 15 | # placenames-large | 14 | 2 | planet_osm_point | place in ('country','state') or (place in ('city','metropolis') and capital='yes') 16 | # admin-01234 | 10 | 2 | planet_osm_roads | "boundary"='administrative' and admin_level in ('0','1','2','3','4') 17 | # roads | 18 | 5 | planet_osm_roads | highway is not null or railway is not null order by z_order 18 | # water_areas | 7 | 6 | planet_osm_polygon | waterway in ('dock','mill_pond','riverbank','canal') or landuse in ('reservoir','water','basin') or "natural" in ('lake','water','land','marsh','scrub','wetland','glacier') order by z_order,way_area desc 19 | # ... 20 | 21 | # This can be used to improve efficiency. For example in the above table, 22 | # the "roads" layer comes in at the early scale zoom level of 5, 23 | # and selects a large amount of objects which may be undesirable. 24 | 25 | # Written by Frederik Ramm , PD. 26 | 27 | 28 | my $msdmapping = {}; 29 | open(ENT, "inc/entities.xml.inc") or die; 30 | while() 31 | { 32 | if (/\d+<\/M..ScaleDenominator>)"/) 33 | { 34 | $msdmapping->{$2} = $1; 35 | } 36 | } 37 | close(ENT); 38 | 39 | # Using xmlstarlet resolves all entities for us... 40 | open(STYLE, "xmlstarlet c14n osm.xml|") or die "cannot run xmlstarlet and/or cannot find osm.xml in current directory"; 41 | 42 | my $styles = {}; 43 | 44 | while(