Skip to content

Commit b3aab40

Browse files
committed
initial draft of new sports layer
1 parent bebd176 commit b3aab40

24 files changed

+3187
-0
lines changed

README.md

+39
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,41 @@
11
openseamap-layer-sports
22
=======================
3+
4+
An OpenSeaMap sports layer that shows whitewater routes and water-sports related
5+
points.
6+
7+
The style files assume that there is a GIS-enabled PostgreSQL database with
8+
OpenStreetMap data that also includes fields for whitewater information. To
9+
include this information, use a style file that includes the following entries
10+
when doing the import with osm2pgsql.
11+
12+
```
13+
node,way whitewater text polygon
14+
node,way whitewater:name text polygon
15+
node,way whitewater:rapid_grade text polygon
16+
node,way whitewater:rapid_name text polygon
17+
node,way whitewater:section_grade text polygon
18+
node,way whitewater:section_name text polygon
19+
```
20+
21+
The Mapnik style file is generated from the [TileMill][1] project in folder
22+
`sports-tilemill`. If you want to modify the style, **do not adapt the XML style
23+
file directly** but open the project in TileMill, modify everything there, and
24+
export the Mapnik XML file.
25+
26+
The resulting style file `openseamap_sports.xml` is only included for
27+
convenience. To use it, you need to adapt the follwing lines in each Layer
28+
section so that they fit your access to the PostgreSQL database:
29+
30+
```
31+
<Parameter name="host"><![CDATA[localhost]]></Parameter>
32+
<Parameter name="dbname"><![CDATA[gis]]></Parameter>
33+
<Parameter name="user"><![CDATA[openseamap]]></Parameter>
34+
<Parameter name="password"><![CDATA[blubb]]></Parameter>
35+
```
36+
37+
The folder `symbols` should be placed besides the xml file. To enable the
38+
rendering with `tile_mod`, add an entry to file `renderd.conf` (probably in
39+
`/usr/local/etc/renderd.conf`) pointing to the xml file.
40+
41+
[1]: https://www.mapbox.com/tilemill/

openseamap_sports.xml

+2,019
Large diffs are not rendered by default.

sports-tilemill/project.mml

+148
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
{
2+
"bounds": [
3+
-12.6562,
4+
39.9097,
5+
53.4375,
6+
64.7741
7+
],
8+
"center": [
9+
21.0937,
10+
54.9776,
11+
0
12+
],
13+
"format": "png24",
14+
"interactivity": false,
15+
"minzoom": 0,
16+
"maxzoom": 22,
17+
"srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
18+
"Stylesheet": [
19+
"style.mss"
20+
],
21+
"Layer": [
22+
{
23+
"geometry": "linestring",
24+
"extent": [
25+
5.045573924184161,
26+
43.49453646494209,
27+
18.32664132275453,
28+
49.18499646988879
29+
],
30+
"Datasource": {
31+
"type": "postgis",
32+
"table": "(select osm_id, way, whitewater, \"whitewater:name\", \"whitewater:rapid_grade\", \"whitewater:rapid_name\", \"whitewater:section_grade\", \"whitewater:section_name\" FROM planet_osm_line WHERE coalesce(whitewater, \"whitewater:name\", \"whitewater:rapid_grade\", \"whitewater:rapid_name\", \"whitewater:section_grade\", \"whitewater:section_name\") IS NOT NULL) as whitewater_line",
33+
"key_field": "osm_id",
34+
"geometry_field": "way",
35+
"extent_cache": "dynamic",
36+
"extent": "",
37+
"dbname": "gis",
38+
"host": "localhost",
39+
"user": "openseamap",
40+
"password": "blubb",
41+
"id": "osm_whitewater_line",
42+
"project": "openseamap_sports",
43+
"srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
44+
},
45+
"id": "osm_whitewater_line",
46+
"class": "",
47+
"srs-name": "900913",
48+
"srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
49+
"advanced": {},
50+
"name": "osm_whitewater_line"
51+
},
52+
{
53+
"geometry": "linestring",
54+
"extent": [
55+
5.045573924184161,
56+
43.49453646494209,
57+
18.32664132275453,
58+
49.18499646988879
59+
],
60+
"Datasource": {
61+
"type": "postgis",
62+
"table": "(SELECT osm_id, name, sport, way FROM planet_osm_line WHERE (sport~'fishing|kite_surfing|canoeing|canoe|rowing|sailing|scuba_diving|surfing|water_ski|windsurfing|water_sports')) as sport_line",
63+
"key_field": "osm_id",
64+
"geometry_field": "way",
65+
"extent_cache": "dynamic",
66+
"extent": "",
67+
"dbname": "gis",
68+
"host": "localhost",
69+
"user": "openseamap",
70+
"password": "blubb",
71+
"id": "osm_sport_line",
72+
"project": "openseamap_sports",
73+
"srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
74+
},
75+
"id": "osm_sport_line",
76+
"class": "",
77+
"srs-name": "900913",
78+
"srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
79+
"advanced": {},
80+
"name": "osm_sport_line"
81+
},
82+
{
83+
"geometry": "point",
84+
"extent": [
85+
9.399918132424908,
86+
46.20125015587909,
87+
17.707398730924734,
88+
49.113055239409526
89+
],
90+
"Datasource": {
91+
"type": "postgis",
92+
"table": "(SELECT access, sport, osm_id, way, name FROM planet_osm_point WHERE (sport SIMILAR TO '(fishing|kite_surfing|canoeing|canoe|rowing|sailing|scuba_diving|surfing|swimming|water_ski|windsurfing|water_sports)') AND (access IS NULL or access NOT SIMILAR TO '(no|private)')) as sport_point",
93+
"key_field": "osm_id",
94+
"geometry_field": "way",
95+
"extent_cache": "dynamic",
96+
"extent": "",
97+
"dbname": "gis",
98+
"host": "localhost",
99+
"user": "openseamap",
100+
"password": "blubb",
101+
"id": "osm_sport_point",
102+
"project": "openseamap_sports",
103+
"srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
104+
},
105+
"id": "osm_sport_point",
106+
"class": "",
107+
"srs-name": "900913",
108+
"srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
109+
"advanced": {},
110+
"name": "osm_sport_point"
111+
},
112+
{
113+
"geometry": "point",
114+
"extent": [
115+
9.399918132424908,
116+
46.20125015587909,
117+
17.707398730924734,
118+
49.113055239409526
119+
],
120+
"Datasource": {
121+
"type": "postgis",
122+
"table": "(SELECT osm_id, way, whitewater, \"whitewater:name\", \"whitewater:rapid_grade\", \"whitewater:rapid_name\" FROM planet_osm_point WHERE coalesce(whitewater, \"whitewater:name\", \"whitewater:rapid_grade\", \"whitewater:rapid_name\", \"whitewater:section_grade\", \"whitewater:section_name\") IS NOT NULL) as whitewater_point",
123+
"key_field": "osm_id",
124+
"geometry_field": "way",
125+
"extent_cache": "dynamic",
126+
"extent": "",
127+
"dbname": "gis",
128+
"host": "localhost",
129+
"user": "openseamap",
130+
"password": "blubb",
131+
"id": "osm_whitewater_point",
132+
"project": "openseamap_sports",
133+
"srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
134+
},
135+
"id": "osm_whitewater_point",
136+
"class": "",
137+
"srs-name": "900913",
138+
"srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
139+
"advanced": {},
140+
"name": "osm_whitewater_point"
141+
}
142+
],
143+
"scale": 1,
144+
"metatile": 1,
145+
"name": "Openseamap Sports",
146+
"description": "",
147+
"attribution": ""
148+
}

sports-tilemill/style.mss

+105
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
@serif:"Times New Roman Regular","FreeSerif Medium","DejaVu Serif Book";
2+
@serif_italic:"Times New Roman Italic","FreeSerif Italic","DejaVu Serif Italic";
3+
@sans:"Arial Regular","Liberation Sans Regular","DejaVu Sans Book";
4+
@sans-bold:"Arial Bold","Liberation Sans Bold","DejaVu Sans Bold";
5+
6+
@sport_point_base:18;
7+
@whitewater-marker-width-12:18;
8+
@whitewater_line_width_9:4;
9+
10+
#osm_whitewater_point[zoom>=12] {
11+
[whitewater=~"put_in|egress|hazard|rapid|put_in;egress|egress;put_in"] {
12+
marker-width:@whitewater-marker-width-12;
13+
[zoom>=13] { marker-width: @whitewater-marker-width-12+2; }
14+
[zoom>=14] { marker-width: @whitewater-marker-width-12+4; }
15+
[zoom>=15] { marker-width: @whitewater-marker-width-12+6; }
16+
[zoom>=16] { marker-width: @whitewater-marker-width-12+8; }
17+
[zoom>=17] { marker-width: @whitewater-marker-width-12+10; }
18+
[zoom>=18] { marker-width: @whitewater-marker-width-12+12; }
19+
[zoom>=19] { marker-width: @whitewater-marker-width-12+14; }
20+
marker-allow-overlap:true;
21+
[whitewater="put_in"] { marker-file:url(symbols/put_in.svg); }
22+
[whitewater="egress"] { marker-file:url(symbols/egress.svg); }
23+
[whitewater="hazard"] { marker-file:url(symbols/hazard.svg); }
24+
[whitewater="rapid"] { marker-file:url(symbols/rapid.svg); }
25+
[whitewater=~"put_in;egress|egress;put_in"] { marker-file:url(symbols/put_in_egress.svg); }
26+
}
27+
["whitewater:rapid_grade"=~"4|5|6"] {
28+
marker-width:15;
29+
marker-allow-overlap:true;
30+
["whitewater:rapid_grade"="4"] { marker-file:url(symbols/rapid_4.svg); }
31+
["whitewater:rapid_grade"="5"] { marker-file:url(symbols/rapid_5.svg); }
32+
["whitewater:rapid_grade"="6"] { marker-file:url(symbols/rapid_6.svg); }
33+
}
34+
}
35+
36+
#osm_whitewater_line[zoom>=9] {
37+
line-color: #999999;
38+
[zoom=9] { line-width: @whitewater_line_width_9; }
39+
[zoom>=10] { line-width: @whitewater_line_width_9+0.5; }
40+
[zoom>=11] { line-width: @whitewater_line_width_9+1; }
41+
[zoom>=12] { line-width: @whitewater_line_width_9+1.5; }
42+
[zoom>=13] { line-width: @whitewater_line_width_9+2; }
43+
[zoom>=14] { line-width: @whitewater_line_width_9+2.5; }
44+
[zoom>=15] { line-width: @whitewater_line_width_9+3; }
45+
[zoom>=16] { line-width: @whitewater_line_width_9+3.5; }
46+
line-join: round;
47+
line-cap: round;
48+
opacity: 0.75;
49+
["whitewater:section_grade"=~"0"] { line-color: #0080ff; }
50+
["whitewater:section_grade"=~"1|1+|1-|0-1"] { line-color: #00d400; }
51+
["whitewater:section_grade"=~"2|2+|2-|1-2"] { line-color: #ffd400; }
52+
["whitewater:section_grade"=~"3|3+|3-|2-3"] { line-color: #ff8000; }
53+
["whitewater:section_grade"=~"4|4+|4-|3-4"] { line-color: #ff0000; }
54+
["whitewater:section_grade"=~"5|5+|5-|4-5"] { line-color: #8000ff; }
55+
["whitewater:section_grade"=~"6|6+|6-|5-6"] { line-color: #a000a0; }
56+
[zoom>=12] {
57+
text-name:"[whitewater:section_name]" ;
58+
text-face-name:@sans-bold;
59+
text-size:11;
60+
text-halo-radius:1;
61+
text-halo-fill: fadeout(white, 30%);
62+
text-placement: line;
63+
// [whitewater=~"portage|portage_way"] { marker-file:url(symbols/TODO.svg); }
64+
}}
65+
66+
#osm_sport_line[zoom>=12] {
67+
line-width: 2;
68+
text-name:"[name]" ;
69+
text-face-name:@sans-bold;
70+
text-size:11;
71+
text-halo-radius:1;
72+
text-halo-fill: fadeout(white, 30%);
73+
[sport=~"canoe|canoeing"] { marker-file:url(symbols/canoeing.svg); }
74+
[sport="fishing"] { marker-file:url(symbols/kitesurfing.svg); }
75+
[sport="kite_surfing"] { marker-file:url(symbols/kitesurfing.svg); }
76+
[sport="rowing"] { marker-file:url(symbols/rowing.svg); }
77+
[sport="sailing"] { marker-file:url(symbols/sailing.svg); }
78+
[sport="scuba_diving"] { marker-file:url(symbols/scuba_diving.svg); }
79+
[sport="windsurfing"] { marker-file:url(symbols/windsurfing.svg); }
80+
[sport="surfing"] { marker-file:url(symbols/surfing.svg); }
81+
[sport="water_ski"] { marker-file:url(symbols/waterskiing.svg); }
82+
}
83+
84+
85+
#osm_sport_point[zoom>=12] {
86+
marker-width: @sport_point_base;
87+
[zoom>=13] { marker-width: @sport_point_base+2; }
88+
[zoom>=14] { marker-width: @sport_point_base+4; }
89+
[zoom>=15] { marker-width: @sport_point_base+6; }
90+
[zoom>=16] { marker-width: @sport_point_base+8; }
91+
[zoom>=17] { marker-width: @sport_point_base+10; }
92+
[zoom>=18] { marker-width: @sport_point_base+12; }
93+
[zoom>=19] { marker-width: @sport_point_base+14; }
94+
marker-allow-overlap:true;
95+
[sport=~"canoe|canoeing"] { marker-file:url(symbols/canoeing.svg); }
96+
[sport="fishing"] { marker-file:url(symbols/kitesurfing.svg); }
97+
[sport="kite_surfing"] { marker-file:url(symbols/kitesurfing.svg); }
98+
[sport="rowing"] { marker-file:url(symbols/rowing.svg); }
99+
[sport="sailing"] { marker-file:url(symbols/sailing.svg); }
100+
[sport="scuba_diving"] { marker-file:url(symbols/scuba_diving.svg); }
101+
[sport="swimming"] { marker-file:url(symbols/swimming.svg); }
102+
[sport="windsurfing"] { marker-file:url(symbols/windsurfing.svg); }
103+
[sport="surfing"] { marker-file:url(symbols/surfing.svg); }
104+
[sport="water_ski"] { marker-file:url(symbols/waterskiing.svg); }
105+
}

sports-tilemill/symbols/canoeing.svg

+30
Loading

0 commit comments

Comments
 (0)