diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7da9fd4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +overview/ +/de/ +/en/ +pubdates.json +.*.swp diff --git a/README.md b/README.md new file mode 100644 index 0000000..ad2c1f6 --- /dev/null +++ b/README.md @@ -0,0 +1,98 @@ +# Repository for OpenRailwayMap blog entries and styling + +This repository contains the entries, templates and styling of the OpenRailwayMap blog. + +## Setup + +It is recommended to clone this Git repository to a location (called `$GIT_DIR`) outside the +document root (called `$DOCUMENT_ROOT` in this readme file) of the blog website. + +* Add a symlink in the document root pointing to the `img/` directory of this Git repostory. Repeat +this for the directories containing the style sheets and JavaScript files. + +```sh +cd $DOCUMENT_ROOT +ln -s $GIT_DIR/img img +ln -s $GIT_DIR/js js +ln -s $GIT_DIR/css css +ln -s de.atom de.rss +ln -s en.atom en.rss +``` + +* Add following to the configuration of your Apache web server: + +```Apache +# permit access to /img, /js and /css because they point to locations outside of your document root + + Require all granted + + + Require all granted + + + Require all granted + + +Option +FollowSymLinks +``` + +* Clone the repository of the +[blog generation tool](https://github.com/Nakaner/static-blog-generator) to any location of your +choice and run it: + +```sh +python3 $PATH_TO_TOOL/generate-pages.py -t templates/ -s src -o $DOCUMENT_ROOT config.json +``` + +## Adding a new blog entry + +* Write the text, save it the German text at `src/de/ENTRY_ID.html.source` and the English text at +`src/en/ENTRY_ID.html.source`. `ENTRY_ID` is the ID of this blog entry (not used for public links). +* Add it to `config.json`: + +```json +[ + { + "id": "ENTRY_ID", + "languages": { + "en": { + "authors": "Joe Awesome", + "destination_path": "great-news-about-openrailwaymap", + "subtitle": "", + "title": "Great news about OpenRailwayMap" + }, + "de": { + "authors": "Joe Awesome", + "destination_path": "tolle-neuigkeiten-ueber-die-openrailwaymap", + "subtitle": "", + "title": "Tolle Neuigkeiten über die OpenRailwayMap" + } + } + }, + { + "id": "https-support", + "languages": { + "de": { + "authors": "Alexander Matheisen", + "destination_path": "unterstuetzung-fuer-https", + "subtitle": "", + "title": "Unterstützung für HTTPS" + }, + "en": { + "authors": "Alexander Matheisen", + "destination_path": "enabling-https", + "subtitle": "", + "title": "Enabling HTTPS" + } + } + } +] +``` + +`id` is the ID of an entry. `title` is the title, `destination_path` will be part of the final +public URL of this entry (the pattern is `https://HOST/LANGUAGE/DESTINATION_PATH.html`). It is +recommended to choose a destination path which is similar to the title. + +The date of first publication will be added automatically at the next run of the blog generation +tool. If you later modify it, these changes will be detected (except if your changes don't change +the MD5 hash :-)). If you have to set the date of publication manually, edit `pubdates.json`. diff --git a/blog.html b/blog.html new file mode 100644 index 0000000..9a3d635 --- /dev/null +++ b/blog.html @@ -0,0 +1,62 @@ + + + + + + + + + OpenRailwayMap – Blog + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config.json b/config.json new file mode 100644 index 0000000..cf2662c --- /dev/null +++ b/config.json @@ -0,0 +1,500 @@ +[ + { + "id": "https-support", + "languages": { + "de": { + "authors": "Alexander Matheisen", + "destination_path": "unterstuetzung-fuer-https", + "subtitle": "", + "title": "Unterstützung für HTTPS" + }, + "en": { + "authors": "Alexander Matheisen", + "destination_path": "enabling-https", + "subtitle": "", + "title": "Enabling HTTPS" + } + } + }, + { + "id": "karlsruhe-january", + "languages": { + "de": { + "authors": "", + "destination_path": "das-hackweekend-in-karlsruhe-was-sonst-noch-geschah", + "subtitle": "", + "title": "Das Hackweekend in Karlsruhe und was sonst noch geschah" + }, + "en": { + "authors": "", + "destination_path": "karlsruhe-hack-weekend-else-happened", + "subtitle": "", + "title": "The Karlsruhe hack weekend and what else happend since January" + } + } + }, + { + "id": "mailing-liste", + "languages": { + "de": { + "authors": "rurseekatze", + "destination_path": "mailingliste", + "subtitle": "", + "title": "Mailingliste" + }, + "en": { + "authors": "rurseekatze", + "destination_path": "mailing-list", + "subtitle": "", + "title": "Mailing list" + } + } + }, + { + "id": "server-upgrade", + "languages": { + "de": { + "authors": "", + "destination_path": "serverupgrade", + "subtitle": "", + "title": "Serverupgrade" + }, + "en": { + "authors": "", + "destination_path": "serverupgrade", + "subtitle": "", + "title": "Server upgrade" + } + } + }, + { + "id": "database-problems-resolved", + "languages": { + "de": { + "authors": "", + "destination_path": "updateprobleme-behoben", + "subtitle": "", + "title": "Updateprobleme behoben" + }, + "en": { + "authors": "", + "destination_path": "database-update-problems-resolved", + "subtitle": "", + "title": "Database update problems resolved" + } + } + }, + { + "id": "rendering-line-name", + "languages": { + "de": { + "authors": "", + "destination_path": "rendering-von-streckennamen", + "subtitle": "", + "title": "Rendering von Streckennamen" + }, + "en": { + "authors": "", + "destination_path": "rendering-line-names", + "subtitle": "", + "title": "Rendering of line names" + } + } + }, + { + "id": "validation-josm", + "languages": { + "de": { + "authors": "", + "destination_path": "datenpruefung-von-eisenbahndaten-mit-josm", + "subtitle": "", + "title": "Datenprüfung von Eisenbahndaten mit JOSM" + }, + "en": { + "authors": "", + "destination_path": "validation-of-railway-data-with-JOSM", + "subtitle": "", + "title": "Validation of railway data with JOSM" + } + } + }, + { + "id": "osmand", + "languages": { + "de": { + "authors": "", + "destination_path": "openrailwaymap-mit-osmand-nutzen", + "subtitle": "", + "title": "OpenRailwayMap mit OsmAnd auf mobilen Geräten nutzen" + }, + "en": { + "authors": "", + "destination_path": "openrailwaymap-with-osmand", + "subtitle": "", + "title": "Use OpenRailwayMap on your mobile device with OsmAnd" + } + } + }, + { + "id": "expanded-visualisation", + "languages": { + "de": { + "authors": "", + "destination_path": "neuerungen-im-signal-und-geschwindigkeitslayer", + "subtitle": "", + "title": "Neuerungen im Signal- und Geschwindigkeitslayer" + }, + "en": { + "authors": "", + "destination_path": "expanded-visualization-of-austrian-and-german-signals", + "subtitle": "", + "title": "Expanded visualization of Austrian and German signals" + } + } + }, + { + "id": "new-translations", + "languages": { + "de": { + "authors": "", + "destination_path": "neue-uerbesetzungen-und-aktualisierungen", + "subtitle": "", + "title": "Neue Übersetzungen und Aktualisierungen" + }, + "en": { + "authors": "", + "destination_path": "new-translations-and-updates", + "subtitle": "", + "title": "New translations and updates" + } + } + }, + { + "id": "orm-mapping-weekend", + "languages": { + "de": { + "authors": "", + "destination_path": "rueckblick-auf-das-openrailwaymap-mappingwochenende", + "subtitle": "", + "title": "Rückblick auf das OpenRailwayMap-Mappingwochenende" + }, + "en": { + "authors": "", + "destination_path": "looking-back-at-the-openrailwaymap-mapping-weekend", + "subtitle": "", + "title": "Looking back at the OpenRailwayMap Mapping Weekend" + } + } + }, + { + "id": "orm-on-twitter", + "languages": { + "de": { + "authors": "", + "destination_path": "openrailwaymap-auf-twitter", + "subtitle": "", + "title": "OpenRailwayMap auf Twitter" + }, + "en": { + "authors": "", + "destination_path": "orm-on-twitter", + "subtitle": "", + "title": "OpenRailwayMap on Twitter" + } + } + }, + { + "id": "improved-speed-rendering", + "languages": { + "de": { + "authors": "", + "destination_path": "verbesserte-darstellung-der-streckengeschwindigkeiten", + "subtitle": "", + "title": "Verbesserte Darstellung der Streckengeschwindigkeiten" + }, + "en": { + "authors": "", + "destination_path": "improved-speed-rendering", + "subtitle": "", + "title": "Improved rendering of maxspeeds" + } + } + }, + { + "id": "some-more-austrian-signals", + "languages": { + "de": { + "authors": "", + "destination_path": "weitere-signale-in-oesterreich", + "subtitle": "", + "title": "Weitere Signale in Österreich" + }, + "en": { + "authors": "", + "destination_path": "some-more-austrian-signals", + "subtitle": "", + "title": "Some more Austrian signals" + } + } + }, + { + "id": "mobile-website", + "languages": { + "de": { + "authors": "", + "destination_path": "mobile-website", + "subtitle": "", + "title": "Mobile Website" + }, + "en": { + "authors": "", + "destination_path": "mobile-website", + "subtitle": "", + "title": "Mobile website" + } + } + }, + { + "id": "fossgis-essen", + "languages": { + "de": { + "authors": "", + "destination_path": "fossgis-hackweekend-im-linuxhotel-in-essen", + "subtitle": "", + "title": "FOSSGIS-Hackweekend im Linuxhotel in Essen" + }, + "en": { + "authors": "", + "destination_path": "fossgis-hack-weekend-at-linuxhotel-in-essen", + "subtitle": "", + "title": "FOSSGIS Hack Weekend at Linuxhotel in Essen" + } + } + }, + { + "id": "bad-nauheim", + "languages": { + "de": { + "authors": "", + "destination_path": "openrailwaymap-aktiventreffen-in-bad-nauheim", + "subtitle": "", + "title": "OpenRailwayMap-Aktiventreffen in Bad Nauheim" + }, + "en": { + "authors": "", + "destination_path": "openrailwaymap-meeting-in-bad-nauheim", + "subtitle": "", + "title": "OpenRailwayMap Meeting in Bad Nauheim" + } + } + }, + { + "id": "tagging-translated", + "languages": { + "de": { + "authors": "", + "destination_path": "uebersetzung-des-taggingschemas", + "subtitle": "", + "title": "Übersetzung des Taggingschemas" + }, + "en": { + "authors": "", + "destination_path": "english-translation-of-the-tagging-scheme", + "subtitle": "", + "title": "Englische Übersetzung des Taggingschemas" + } + } + }, + { + "id": "tagging-changes", + "languages": { + "de": { + "authors": "", + "destination_path": "aenderung-taggingschema-signale", + "subtitle": "", + "title": "Änderungen beim Taggingschema der Signale" + }, + "en": { + "authors": "", + "destination_path": "restructured-signal-tagging-scheme", + "subtitle": "", + "title": "Restructured signal tagging scheme" + } + } + }, + { + "id": "karlsruhe-hw", + "languages": { + "de": { + "authors": "", + "destination_path": "hackweekend-karlsruhe", + "subtitle": "", + "title": "Hackweekend Karlsruhe" + }, + "en": { + "authors": "", + "destination_path": "karlsruhe-hack-weekend", + "subtitle": "", + "title": "Karlsruhe Hack Weekend" + } + } + }, + { + "id": "german-speed-signals-complete", + "languages": { + "de": { + "authors": "", + "destination_path": "deutsche-geschwindigkeitssignale-weitgehend-vollstaendig", + "subtitle": "", + "title": "Deutsche Geschwindigkeitssignale weitgehend vollständig" + }, + "en": { + "authors": "", + "destination_path": "german-speed-signals-almost-complete", + "subtitle": "", + "title": "German speed signals almost complete" + } + } + }, + { + "id": "zugsicherungssysteme", + "languages": { + "de": { + "authors": "", + "destination_path": "zugsicherungssysteme", + "subtitle": "", + "title": "Zugsicherungssysteme" + }, + "en": { + "authors": "", + "destination_path": "train-protection-systems", + "subtitle": "", + "title": "Train protection systems" + } + } + }, + { + "id": "hl-signals", + "languages": { + "de": { + "authors": "", + "destination_path": "darstellung-von-hl-signalen", + "subtitle": "", + "title": "Darstellung von Hl-Signalen" + }, + "en": { + "authors": "", + "destination_path": "german-hl-signals", + "subtitle": "", + "title": "German Hl Signals" + } + } + }, + { + "id": "first-mapping-event", + "languages": { + "de": { + "authors": "", + "destination_path": "erstes-mappingwochenende", + "subtitle": "", + "title": "Erstes Mappingwochenende" + }, + "en": { + "authors": "", + "destination_path": "first-mapping-event", + "subtitle": "", + "title": "First mapping event" + } + } + }, + { + "id": "deutsche-bahn-and-open-data", + "languages": { + "de": { + "authors": "", + "destination_path": "deutsche-bahn-and-open-data", + "subtitle": "", + "title": "Deutsche Bahn and Open Data" + }, + "en": { + "authors": "", + "destination_path": "deutsche-bahn-and-open-data", + "subtitle": "", + "title": "Deutsche Bahn and open data" + } + } + }, + { + "id": "rss-feed-available", + "languages": { + "de": { + "authors": "rurseekatez", + "destination_path": "rss-feed-erstellt", + "subtitle": "", + "title": "RSS-Feed erstellt" + }, + "en": { + "authors": "rurseekatze", + "destination_path": "rss-feed-available-now", + "subtitle": "", + "title": "RSS-Feed available now" + } + } + }, + { + "id": "improved-rendering-maxpspeeds", + "languages": { + "de": { + "authors": "", + "destination_path": "verbesserte-darstellung-der-streckengeschwindigkeiten", + "subtitle": "", + "title": "Verbesserte Darstellung der Streckengeschwindigkeiten" + }, + "en": { + "authors": "", + "destination_path": "improved-rendering-of-maxspeeds", + "subtitle": "", + "title": "Improved rendering of maxspeeds" + } + } + }, + { + "id": "improved-signal-rendering", + "languages": { + "de": { + "authors": "", + "destination_path": "verbesserte-darstellung-der-signale", + "subtitle": "", + "title": "Verbesserte Darstellung der Signale" + }, + "en": { + "authors": "", + "destination_path": "improved-rendering-of-signals", + "subtitle": "", + "title": "Improved rendering of signals" + } + } + }, + { + "id": "deutschlandpass", + "languages": { + "de": { + "authors": "", + "destination_path": "mappen-mit-dem-deutschlandpass", + "subtitle": "", + "title": "Mappen mit dem Deutschlandpass" + } + } + }, + { + "id": "hacken-fuer-die-katz", + "languages": { + "de": { + "authors": "", + "destination_path": "hacken-fuer-die-katz", + "subtitle": "", + "title": "Hacken für die Katz – unsere Meinung zum #dbhackathon" + } + } + } +] diff --git a/config_sample/blogconfig.json b/config_sample/blogconfig.json new file mode 100644 index 0000000..e0ad7ac --- /dev/null +++ b/config_sample/blogconfig.json @@ -0,0 +1,59 @@ +[ + { + "id": "fi-signals2", + "languages": + { "de": + { + "title": "Neue Signale2", + "subtitle": "Neues auf der Karte in Finnland", + "authors": "Nakaner", + "destination_path": "neue-signale-in-finnland2" + }, + "en": + { + "title": "New Signals2", + "subtitle": "New objects on the map in Finnland", + "authors": "Nakaner", + "destination_path": "new-signals-in-finnland2" + } + } + }, + { + "id": "fi-signals1", + "languages": + { "de": + { + "title": "Neue Signale1", + "subtitle": "Neues auf der Karte in Finnland", + "authors": "Nakaner", + "destination_path": "neue-signale-in-finnland1" + }, + "en": + { + "title": "New Signals1", + "subtitle": "New objects on the map in Finnland", + "authors": "Nakaner", + "destination_path": "new-signals-in-finnland1" + } + } + }, + { + "id": "fi-signals0", + "languages": + { "de": + { + "title": "Neue Signale0", + "subtitle": "Neues auf der Karte in Finnland", + "authors": "Nakaner", + "destination_path": "neue-signale-in-finnland0" + }, + "en": + { + "title": "New Signals0", + "subtitle": "New objects on the map in Finnland", + "authors": "Nakaner", + "destination_path": "new-signals-in-finnland0" + } + } + } +] diff --git a/config_sample/pubdates.json b/config_sample/pubdates.json new file mode 100644 index 0000000..51008bc --- /dev/null +++ b/config_sample/pubdates.json @@ -0,0 +1,52 @@ +[ + { + "id": "fi-signals", + "language": "de", + "md5": "01de63fe3d42f680b7aecbead567d2da", + "pubdate": "2016-08-13", + "moddate": "2016-08-14" + }, + { + "id": "fi-signals", + "language": "en", + "md5": "635a733823661856af4205b978144bd5", + "pubdate": "2016-08-13" + }, + { + "id": "fi-signals2", + "language": "en", + "md5": "635a733823661856af4205b978144bd5", + "pubdate": "2016-08-14" + }, + { + "id": "fi-signals2", + "language": "de", + "md5": "01de63fe3d42f680b7aecbead567d2da", + "pubdate": "2016-08-14" + }, + { + "id": "fi-signals1", + "language": "en", + "md5": "635a733823661856af4205b978144bd5", + "pubdate": "2016-08-14" + }, + { + "id": "fi-signals1", + "language": "de", + "md5": "01de63fe3d42f680b7aecbead567d2da", + "pubdate": "2016-08-14" + }, + { + "id": "fi-signals0", + "language": "en", + "md5": "635a733823661856af4205b978144bd5", + "pubdate": "2016-08-14" + }, + { + "id": "fi-signals0", + "language": "de", + "md5": "5be43fe09fa632d5bf77e60075e5048e", + "pubdate": "2016-08-14", + "moddate": "2017-06-24" + } +] \ No newline at end of file diff --git a/css/openrailwaymap.css b/css/openrailwaymap.css new file mode 100644 index 0000000..12f2c8d --- /dev/null +++ b/css/openrailwaymap.css @@ -0,0 +1,162 @@ +html +{ + background: #f2f2f2; +} + +a, .uk-link, a:hover, .uk-link:hover +{ + color: #4e9a06; +} + +.uk-button-primary, .uk-pagination > .uk-active > span +{ + background-color: #4e9a06; + background-image: -webkit-linear-gradient(top, #78c72A, #4e9a06); + background-image: linear-gradient(to bottom, #78C72A, #4e9a06); +} + +.uk-button-primary:hover, .uk-button-primary:focus +{ + background-color: #61b313; +} + +.uk-button-primary:active, .uk-button-primary.uk-active +{ + background-color: #57a70c; +} + +.uk-nav-navbar > li > a:hover, +.uk-nav-navbar > li > a:focus, +.uk-nav-navbar > li > a:active, +.uk-nav-navbar > li > a.uk-active +{ + background-color: #4e9a06; +} + +.uk-panel +{ + background-color: white; + padding: 10px; + border: 1px solid #dddddd; + border-top: 1px solid #4e9a06; + box-shadow: 0px 0px 42px 5px rgba(232,232,232,1); +} + +.uk-panel-box +{ + background-color: white; + border: 0px; +} + +.uk-heading, .uk-h1, .uk-h2, .uk-h3 +{ + color: #4e9a06; + font-weight: bold; +} + +noscript .uk-alert +{ + margin-top: 20px; + border: 2px solid rgba(216,80,48,0.3); +} + +.uk-overlay +{ + border-radius: 10px; + border: 1px solid #dddddd; + -webkit-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.1); + box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.1); +} + +.uk-navbar +{ + border-radius: 0px; + -webkit-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.1); + box-shadow: 0px 0px 10px 1px rgba(0, 0, 0, 0.1); + border-top: 0px; + border-left: 0px; + border-right: 0px; +} + +#mapNav +{ + margin-bottom: 10px; +} + +.uk-navbar-brand +{ + font-weight: bolder; +} + +.uk-alert +{ + border: 2px solid rgba(45,112,145,0.3); + border-radius: 8px; +} + +.uk-alert-success +{ + background: #EBFFC6; + color: #659f13; + border-color: rgba(101,159,19,0.4); +} + +.uk-panel-box +{ + border-radius: 8px; +} + +.uk-heading-large +{ + text-shadow: 0px 0px 5px #ffffff; +} + +.uk-text-large +{ + text-shadow: 0px 0px 5px #ffffff; +} + +#fossgis-icon +{ + position: absolute; + top: 5px; +} + +.uk-overlay-blur:hover img +{ + -webkit-filter: blur(1px); + -moz-filter: blur(1px); + -o-filter: blur(1px); + -ms-filter: blur(1px); + filter: blur(1px); + transition-duration: 0.3s; + transition-timing-function: ease-in-out; +} + +.uk-search +{ + border: 1px solid #DDD; + background: #FFF none repeat scroll 0% 0%; + color: #444; + transition: all 0.2s linear 0s; + border-radius: 4px; +} + +#welcomeheader +{ + background: url('../img/header.png') 50% 0 no-repeat; + height: 400px; +} + +#mapContainer +{ + z-index: -1000; + position: absolute; + left: 0px; + right: 0px; + bottom: 0px; + top: 0px; +} + diff --git a/de.rss b/de.rss deleted file mode 100644 index cdce9a5..0000000 --- a/de.rss +++ /dev/null @@ -1,677 +0,0 @@ - - - - OpenRailwayMap - http://blog.openrailwaymap.org/ - Neuigkeiten über die OpenRailwayMap - de - Alexander Matheisen - Sun, 28 Apr 2013 14:11:28 +0200 - - Sun, 21 Jan 2018 20:01:00 +0100 - daily - 1 - - http://www.openrailwaymap.org/img/openrailwaymap-310.png - OpenRailwayMap - http://blog.openrailwaymap.org/ - - - Unterstützung für HTTPS - Die OpenRailwayMap ist jetzt auch über HTTPS erreichbar. - http://blog.openrailwaymap.org?lang=de#32 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#32 - Sun, 21 Jan 2018 20:01:00 +0100 - - -
-

Seit heute ist es möglich, Webseite, Tiles, API und Mailingliste über HTTPS zu erreichen.

-

User, die in einer per HTTPS ausgelieferten Webseite bereits Tiles einbinden oder API-Anfragen stellen, bekommen nun keine Mixed-Content-Fehler mehr. Und für User, die von diesem Fehler bislang davon abgehalten wurden, Inhalte der OpenRailwayMap in ihre Webseite einzubinden, gibt es nun keinen Grund mehr, dies nicht zu tun.

-
- - ]]> -
-
- - Zugsicherungssysteme - Im Signallayer werden jetzt auch Zugsicherungssysteme in Deutschland und Österreich dargestellt. - http://blog.openrailwaymap.org?lang=de#31 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#31 - Tue, 16 Feb 2016 22:59:00 +0100 - - -
-

Im Signallayer werden nun auch Zugsicherungssysteme angezeigt. Für den Anfang werden die drei wichtigsten Zugsicherungssysteme in Deutschland und Österreich visualisiert: Die Punkförmige Zugbeeinflussung (PZB) in Orange, die Linienzugbeeinflussung (LZB) in Rot und das European Train Control System (ETCS) in Blau. Strecken ohne Zugsicherung werden schwarz dargestellt, während solche ohne Informationen grau angezeigt werden. Die Zugsicherungssysteme weiterer Länder werden mit der Zeit folgen.

-
-
- -
- - ]]> -
-
- - Weitere Signale in Österreich - Im Signallayer werden jetzt auch österreichische Haupt- und Vorsignale in Formsignalausführung und Geschwindigkeits(vor)anzeiger in Lichtsignalausführung dargestellt. - http://blog.openrailwaymap.org?lang=de#30 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#30 - Sun, 03 Jan 2016 01:57:00 +0100 - - -
-

Einige Mapper mögen die im folgenden dargestellten Änderungen schon selbst entdeckt haben. Trotzdem gibt es hier nochmal eine ganz offizielle Vorstellung der Neuerungen bei den österreichischen Signalen: Nachdem Mitte Oktober erstmals eine nennenswerte Anzahl an österreichischen Signalen angezeigt wurde, folgten unserem Aufruf hier im Blog erfreulicherweise einige Nutzer und haben weitere Icons beigesteuert. Vielen Dank dafür!

-

Nachdem Haupt- und Vorsignale in Lichtsignalausführung schon angezeigt wurden, kamen nun auch die entsprechenden Formsignale hinzu.

-
-
- -
- -
-
-

Bei den Geschwindigkeits(vor)anzeigern wird nun auch die Lichtsignalausführung auf der Karte dargestellt.

-
-
- -
-
- ]]> -
-
- - Die Deutsche Bahn und Open-Data - Die Deutsche Bahn wird in Kürze ein Open-Data-Portal online stellen. - http://blog.openrailwaymap.org?lang=de#29 - Alexander Matheisen;Michael Reichert - Alexander Matheisen;Michael Reichert - http://blog.openrailwaymap.org?lang=de#29 - Tue, 03 Nov 2015 13:00:00 +0100 - - Die Deutsche Bahn macht Open-Data – Noch vor kurzer Zeit hätten das viele als Aprilscherz aufgefasst. Doch es hat sich etwas getan: Die Deutsche Bahn wird demnächst ein Open-Data-Portal starten.

- -

Um eines vorweg klarzustellen: Wer jetzt eine große Anzahl veröffentlichter Datensätze erwartet hat, der wird enttäuscht sein. Es sollte aber bedacht werden, dass ein großer Konzern nicht von heute auf morgen den Hebel von "strenggeheim" auf "frei und offen" umlegen kann. Die DB muss erst selbst Erfahrungen mit offenen Daten machen, sowohl hinsichtlich technischer als auch lizenzrechtlicher Aspekte. Für den Anfang wird die DB kleine Häppchen veröffentlichen – die Liste der Betriebsstellen mit den Kürzeln nach Ril 100 sowie Informationen zu Aufzügen. Glücklicherweise wählt die DB dafür eine relativ offene und gebräuchliche Lizenz, die CC-BY.

- -

Dieser Schritt wird im Blogpost der OKFN wie folgt kommentiert: "Vorbei scheinen die Zeiten, in denen die Community nur über geschickte Hacks oder eigene Erfassung an Daten des größten deutschen Eisenbahnunternehmens kam und dabei auch noch Abmahnungen riskierte, wie vor drei Jahren bei OpenPlanB". Dazu möchten wir anmerken, dass die Reaktion der DB auf die eigenmächtige Verbreitung von Fahrplandaten der Hafas-CD im JSON-Format im Jahr 2012 durch OpenPlanB relativ milde ausfiel. Dass die DB sich seither bezüglich Open-Data zurückgehalten hat, verwundert nach dieser Aktion nicht. Die Veröffentlichung der Konvertierungs-Software allein (was OpenPlanB auch getan hat), wäre nicht so eindrucksvoll, aber legal gewesen.

- -

Als OpenStreetMap-Aktive verfolgen wir einen anderen, legalen Ansatz, um Behörden und Unternehmen in Richtung Open-Data zu lenken – das Crowdsouring. Wir wollen im Bahnbereich noch einmal erreichen, was OSM schon für Geobasisdaten erreicht hat. -Dort haben ursprüngliche Monopolisten/Oligopolisten, nämlich Vermessungsämter, Here, TomTom & Co. nicht mehr die alleinige Hoheit über die Geodaten. Die Open-Data-Skepsis und überteuerte Gebühren der Vermessungsverwaltungen und ihrer Aufsichtsbehörden haben uns in Deutschland sogar geholfen. Man wollte und will die Einnahmen nicht aufgeben und hat die preis- und qualitätsbewussten Nutzer der OSM-Community überlassen. Die anfangs weiße OSM-Landkarte hat die Mapper förmlich angezogen und heute haben oft die Staaten, die in Sachen Open-Data nicht so fortschrittlich waren/sind, die aktiveren und größeren Communitys.

- -

Dasselbe geschieht in Deutschland gerade im Bahnbereich noch einmal. Da sich die DB bei Open-Data bislang zurückgehalten hat, haben eine Handvoll Freiwillige vor drei Jahren begonnen, selbst die deutsche Eisenbahninfrastruktur noch einmal neu zu erfassen.

- -

Ein Interesse an diesen Daten besteht auch. Wenn man die Aufrufe der OpenRailwayMap seit Januar 2015 nach Providern sortiert, aus deren Netzen sie stammen, nimmt der DB-Konzern mit etwa 10% der Aufrufe den fünften Platz ein, vor ihm liegen nur Telekom-, Vodafone, Kabel-Deutschland- und Telefonica-Kunden. Gespräche mit DB-Mitarbeitern bestätigen das. In manchen Abteilungen scheint die Nutzung der OpenRailwayMap stark verbreitet zu sein. Sie bietet mit einer Kartendarstellung, die die DB ihren Mitarbeitern nicht anbietet, einen Überblick. Dazu kommt noch die gegenüber manchen DB-eigenen Geodatenanwendungen deutlich modernere Benutzeroberfläche (dort sehen die GUIs teilweise noch wie vor zehn bis fünfzehn Jahren aus).

- -

Nachdem in den vergangenen Jahren unsere Anfragen bezüglich einer Datenfreigabe bzw. Datennutzungserlaubnis von der DB ablehnend oder gar nicht beantwortet wurden, freut es uns um so mehr, dass die DB mittlerweile auf die OpenRailwayMap-Community zugeht und nach Möglichkeiten einer Kooperation sucht.

- -

Wir freuen uns über das Open-Data-Angebot der DB, aber überflüssig wird die Erfassung von Eisenbahndetails in OpenStreetMap damit nicht. Erstens hat die DB bis jetzt nur einen kleinen Datensatz angekündigt, zweitens kann die DB mit ihrem Open-Data-Portal nicht das leisten, was ein großes Crowdsourcing-Projekt wie OpenStreetMap – einen einzigen Datensatz, der alles enthält. Nicht nur Bahndetails, sondern auch Straßen, Points of Interest usw. Damit wird Datennutzern das aufwendige Mergen von Datensätzen erspart und sie haben nur noch einen Datenlieferant und nur noch eine Lizenz, die beachtet werden muss.

- -

Open-Data nützt nicht nur der Allgemeinheit, sondern vor allem dem DB-Konzern selbst. Ohne eigenen Nutzen wäre die freiwillige Veröffentlichung von Daten nämlich kaufmännisch nicht zu vertreten. Bei der DB ist es derzeit üblich, dass die eine Konzerntochter der anderen Gebühren für die Nutzung von Geodaten zahlt – oder gleich OSM verwendet, weil das die unbürokratischere Lösung darstellt. Mit Open-Data wird die Datennutzung innerhalb des Konzerns vereinfacht und der Kreativität sind weniger Schranken gesetzt.

- -

Wer also mehr offene Daten schaffen will, sollte nicht nur Forderungen stellen, sondern selbst aktiv werden und mit einem eigenen Crowdsourcing-Projekt die Daten erfassen. Statt um Datensätze zur Pünktlichkeit und offiziellen Zugriff auf Zugradar und RIS (Reisenden-Informationssystem) zu bitten, könnte man z.B. auch per Crowdsourcing die aktuellen Standorte von Zügen erfassen. Die resultierenden Daten wären dann unabhängig und frei. Bekannte technische Unzulänglichkeiten der DB-Systeme könnte man damit auch umgehen. Und wenn dann nach einiger Zeit eine brauchbare Datenbasis zusammengekommen ist (man wird nicht alle Züge damit erfassen können, da in Deutschland manche Züge auch fast leer durch die Gegend fahren), kommen die Anwendungen und die Aufmerksamkeit aus Fachkreisen (Bahnfans, Bahnangestellte usw.) wahrscheinlich von alleine. Mit eigenen Daten schafft man Unabhängigkeit. Wer keine hat, macht sich von Unternehmen und Behörden abhängig.

- -

An einer Stelle müssen wir das Posting von Stefan Kaufmann und Walter Palmetshofer korrigieren. In ihrem Blogpost schreiben sie, dass "die Zeiten […] der eigene Erfassung" vorbei seien. Das ist unabhängig vom Umfang des Open-Data-Angebot der DB leider nicht korrekt. Die DB ist schließlich zwar der bedeutenste Infrastrukturbetreiber in Deutschland, jedoch nicht der einzige. Neben der DB gibt es noch eine Reihe nicht-bundeseigener Eisenbahn-Infrastrukturunternehmen, die heutzutage ca. 18 % des deutschen Eisenbahnnetzes betreiben. Ohne Wertung seien hier Regiobahn, AVG, SWEG und DRE genannt. Von den Daten ausländischer Bahnen ganz zu schweigen. Doch selbst wenn sämtliche Bahnunternehmen Daten freigeben würden, wäre die OpenRailwayMap bzw. die Erfassung von Eisenbahndaten in OpenStreetMap keineswegs überflüssig. OpenStreetMap bzw. OpenRailwayMap übernehmen die Funktion einer Datenbank, in der Daten aus verschiedenen Quellen gesammelt, in einem einheitlichen Format vorgehalten werden und durch Freiwillige gepflegt und angereichert werden. Unser Anspruch ist es, eine eigene Datenbasis zu schaffen. Das OpenStreetMap-Projekt hat schließlich bewiesen, dass eine eigene Datenbasis detaillierter und aktueller sein kann als jegliche existierende Quellen.

- ]]> -
-
- - Neuerungen im Signal- und Geschwindigkeitslayer - Auf dem OpenStreetMap-Hackweekend am 17. und 18. Oktober in Karlsruhe haben wir österreichische Haupt-, Vor- und Geschwindigkeitssignale, deutsche Zs 3(v) in Lichtsignalausführung sowie einige weitere Tafeln in die Karte eingebaut. - http://blog.openrailwaymap.org?lang=de#28 - Alexander Matheisen;Michael Reichert - Alexander Matheisen;Michael Reichert - http://blog.openrailwaymap.org?lang=de#28 - Wed, 28 Oct 2015 21:20:43 +0100 - - -
-

Seit einigen Tagen stellt die OpenRailwayMap eine nennenswerte Anzahl an österreichischen Signalen dar. Österreichische Signale sind nicht ganz neu auf der Karte. Signale, die in Deutschland und Österreich das selbe Erscheinungsbild haben, werden schon seit längerer Zeit gerendert, da keine separaten Icons notwendig waren. Das betraf u.a. Trapeztafeln. Neu hinzugekommen sind jetzt Lichthauptsignale und Lichtvorsignale.

-
-
- -
- -
-
-

Ebenfalls wurden österreichische Ankündigungstafeln, Geschwindigkeitstafeln und Geschwindigkeitsanzeiger in die Karte eingebaut. Letztere erstmal nur als Tafeln und bis 120 km/h, für Lichtsignale müssen noch Icons gezeichnet werden (gemeinfreie bzw. CC-0-lizenzierte Icon-Spenden als SVG sind willkommen). Diese Signale kann man auch an einigen Stellen auf der Karte entdecken, insbesondere in Wien, wo jetzt schon einige Signale erfasst sind, findet man sie auf der Karte. Wir hoffen, dass durch das Rendering der österreichischen Signale das Mappen derselben gefördert wird und die Anzahl der Signale in Österreich in OpenStreetMap in den nächsten Monaten steiler ansteigt.

-
-
- -
-
-
-
-

Auch die deutschen Geschwindigkeitsanzeiger (Zs 3) und Geschwindigkeitsvoranzeiger (Zs 3v) in Form von Leuchtanzeigern sind neu dazugekommen. Bisher wurden Zs 3 und Zs 3v nur dargestellt, wenn es sich um Tafeln handelte. Bei den Lichtsignalen wird die höchstmögliche, anzeigbare Geschwindigkeit, aber maximal 120 km/h dargestellt. Es gibt zwar auch einzelne Signale, die höhere Geschwindigkeiten anzeigen können (z.B. 150 km/h), dafür existieren aber noch keine Icons. Da die Karte aufgrund der vielen neuen Geschwindigkeitsanzeiger in Bahnhöfen nicht überfüllt wirkt, werden Zs 3 und Zs 3v erst ab Zoomstufe 17 statt 16 dargestellt.

-
-
- -
-
-
-
-

Auch auf deutschen Nebenbahnen gibt es ein paar Icon-Neuzugänge. Eckentafeln (Lf 5, nur in Ostdeutschland), die weiße Anfangstafel (Lf 5, nur in Westdeutschland) und die westdeutschen Geschwindigkeitstafeln (Lf 4) werden jetzt auch dargestellt.

-
-
- -
-
-
-
-

Als weitere kleinere Neuerung werden Sh 0 und Sh 2 an Prellböcken dargestellt.

-
-
- -
-
-
-
-

Diese Änderungen wurden auf dem OpenStreetMap-Hackweekend der Geofabrik in Karlsruhe am 17. und 18. Oktober 2015 umgesetzt. Dort wurde unter anderem auch weiter am Redesign der Website gearbeitet. Die neue Version der Webseite wird ein responsives Design nutzen, sie passt sich also an die Displaygröße an. Bis diese Version online geht, sind jedoch noch einige Arbeiten notwendig. Wir bedanken uns bei der Geofabrik für die Gastfreundschaft.

-

Alle Grafiken in diesem Blogpost enthalten OpenStreetMap-Daten (© OpenStreetMap-Mitwirkende) und unterliegen der CC-BY-SA 2.0 OpenRailwayMap und OpenStreetMap.

-
-
- ]]> -
-
- - Mappen mit dem Deutschlandpass - Alexander und Michael fahren in diesem Sommer mit dem Deutschlandpass quer durch Ostdeutschland, um Bahnstrecken zu mappen. Auf ihren Station suchen sie noch nach Übernachtungsmöglichkeiten. - http://blog.openrailwaymap.org?lang=de#27 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#27 - Thu, 16 Jul 2015 23:57:16 +0200 - - Auch dieses Jahr bietet die Deutsche Bahn wieder den Deutschlandpass an. Da Alexander (rurseekatze) und Michael (Nakaner) diesen Sommer die Zeit dazu haben, werden sie etwa ein bis zwei Wochen lang Ostdeutschland bereisen, um Eisenbahninfrastruktur zu mappen. Unsere Ziele: Bahnhöfen und Streckenabschnitte, wo -
    -
  • seit 2012 ein ESTW (elektronisches Stellwerk mit neuen Signalen) in Betrieb ging
  • -
  • seit 2012 größere Um-/Ausbauten stattfanden
  • -
  • in den nächsten zwei Jahren ein ESTW in Betrieb gehen wird oder ein Umbau ansteht.
  • -
-

-

Auf der französischen uMap-Instanz haben wir eine Karte mit den Zielen und den Gründen veröffentlicht.

-

Das Jahr 2012 ist als Grenze festgelegt, da die meisten Bing-Luftbilder in diesem Jahr oder später aufgenommen worden sind. Die Bing-Luftbilder eignen sich zum Mappen der Gleisanlagen. Derzeit läuft noch eine Zielsuche im Eisenbahnforum Drehscheibe-Online.

-

Die Reise wird zwischen dem 14. und 31. August stattfinden. Der genaue Zeitraum und Reiseweg ist noch nicht festgelegt.

-

Wenn neben dem Umbaumapping noch Zeit bleibt, möchten wir von diversen Nebenbahnen in der Gegend Signale und Höchstgeschwindigkeiten mappen (das wäre dann eine Neuerfassung und keine Aktualisierung).

-

Da wir wahrscheinlich nicht dazukommen werden, alles selbst in OSM einzutragen, werden wir die Videos (ggf. ohne Ton), Fotos, Notizen, GPS-Tracks und Wegpunkte veröffentlichen.

-

Da das Budget begrenzt ist, sind wir als Studenten auf Übernachtungsangeboten bei Privatleuten angewiesen, die uns (wir bringen Schlafsäcke + Isomatten mit) eine Nacht lang beherbergen möchten. Da wir während der Reise keine festen Termine haben, sind wir über jedes Angebot froh und werde die Reise anhand der angebotenen Übernachtungsmöglichkeiten ausrichten. Wir sind auch an Übernachtungsangeboten interessiert, die nicht direkt in der Nähe unserer Ziele liegen. Ein bis zwei Stunden Anreise von der Übernachtung zum Mappingort sind kein Problem, schließlich haben wir den Deutschlandpass und können so oft IC/EC/ICE fahren, wie wir wollen.

-

Im Voraus vielen Dank für alle Übernachtungsangebote.

- ]]> -
-
- - OpenRailwayMap mit OsmAnd auf mobilen Geräten nutzen - Ab sofort lassen sich die Overlays der OpenRailwayMap auch in der für iOS und Android erhältlichen App OsmAnd nutzen. Momentan geht das nur mit funktionierender Internetverbindung. Für eine Offlinekarte sind noch einige Dinge zu tun, aber du kannst uns dabei helfen! - http://blog.openrailwaymap.org?lang=de#26 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#26 - Thu, 11 Jun 2015 22:30:08 +0200 - - Die Nutzung der OpenRailwayMap auf mobilen Geräten ist jetzt noch komfortabler: Die für iOS und Android erhältliche App OsmAnd bietet nun eine integrierte Unterstützung für die OpenRailwayMap. Mit nur wenigen Handgriffen lassen sich die verschiedenen Layer der OpenRailwayMap als Overlays hinzufügen. Eine Anleitung im OSM Wiki erklärt, wie das geht.

-

Damit können nun Funktionen genutzt werden, die die mobile Webseite nicht bieten kann: Unter anderem das beliebige Ausrichten der Karte etwa in Fahrtrichtung oder die Anzeige der eigenen Position. Besonders interessant ist auch die beliebige Kombination mit weiteren Hintergrundkarten wie zum Beispiel Luftbildern. Eine Einschränkung gibt es allerdings: Die Overlays werden dynamisch geladen, was eine Internetverbindung voraussetzt. Eine Möglichkeit zur Offline-Nutzung wäre also wünschenswert, ist momentan allerdings noch nicht realisiert. Dies hat folgende Gründe:

-

Die Erzeugung von fertig herunterladbaren Offline-Karten benötigt weitere Serverressourcen und Bandbreite, die zur Zeit nicht zur Verfügung stehen. Daran wird sich auf absehbare Zeit erstmal nichts ändern, allerdings bietet das offene Datenmodell von OpenStreetMap die Möglichkeit, selbst Offlinekarten zu erzeugen. Die dazu notwendigen Schritte sind im OSM-Wiki dokumentiert.

-

Derzeit besteht allerdings das Problem, dass ein entsprechender OpenRailwayMap-Kartenstil fehlt, um die Karte im gleichen Stil wie die OpenRailwayMap darzustellen. Leider müssen diese Kartenstile eigens für OsmAnd geschrieben werden, da die im MapCSS-Format existierenden Kartenstile der OpenRailwayMap nicht unterstützt werden. Das bedeutet eine Menge Arbeit, vor allem aber erfordert auch die kontinuierliche Synchronisation mit den MapCSS-Stylesheets einigen Arbeitsaufwand. Eine Alternative wäre die Entwicklung eines Tools, das die MapCSS-Styles in das OsmAnd-Format umwandeln kann. Das würde sehr viel manuelle Arbeit ersparen und auch sicherstellen, dass die Online- und Offline-Karten möglichst gleich aussehen. Für beide Aufgaben sind Unterstützer, denen die OpenRailwayMap auf Mobilgeräten besonders am Herzen liegt, gerne gesehen.

- ]]> -
-
- - Hacken für die Katz – unsere Meinung zum #dbhackathon - Die Deutsche Bahn veranstaltet in letzter Zeit Hackathons, bei denen Entwickler Datensätze des Unternehmens nutzen dürfen, um innovative Anwendungen zu entwickeln. Am 8. und 9. Mai findet wieder ein Hackathon statt, diesmal mit dem Schwerpunkt Infrastruktur. Allerdings ist die Nutzung der Daten mit einigen Einschränkungen verbunden: Unter anderem dürfen die Daten nach dem Ende der Veranstaltung nicht mehr genutzt werden, sodass die entwickelten Anwendung weitgehend nutzlos werden. Somit verdient die Veranstaltung nicht den Titel Open-Data. Interessenten sollten vor der Teilnahme an solchen Veranstaltungen also genauer hinsehen. - http://blog.openrailwaymap.org?lang=de#25 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#25 - Fri, 08 May 2015 00:32:53 - - Am 20. und 21. März fand in Frankfurt der erste Hackathon unter dem Namen "DB Open Data-Train Challenge" statt, am 8. und 9. Mai soll in Berlin mit der DB Infrastructure Challenge der zweite Hackathon, diesmal mit dem Fokus auf Infrastruktur stattfinden.

-

Wer an diesen Veranstaltungen teilnimmt, bekommt einen kleinen Datensatz (historische Daten) zur Verfügung gestellt, die Formatdokumentation gibt es schon ein paar Tage vorher. Soweit nicht ungewöhnlich, interessant wird es allerdings bei den Teilnahmebedingungen: Teilnehmer des Hackathons dürfen die Daten nach der Veranstaltung nicht weiterverwenden, sprich er oder sie hackt für die Katz. Da die Anwendungen meist auf den Datensatz zugeschnitten sind, sind sie nach dem Hackathon somit weitgehend nutzlos.

-

Am Ende der Veranstaltung werden die Projekte der Teilnehmer prämiert, der Erstplatzierte bekommt einen Preis, der erste und zweite Verlierer einen Trostpreis. Ruhm und Ansehen sind somit das Einzige, was den Teilnehmern nach der Veranstaltung bleibt.

-

Bereits auf der Veranstaltungswebsite ist ersichtlich, wozu die Veranstaltung dient. Die Teilnehmer sollen Software entwickeln, um das Auftreten von Gleislagefehler vorhersagen. Während beim ersten Hackathon Tools für Fahrplansoll- und -echtzeitdaten entwickelt wurden, ist die Zielgruppe von Gleislagefehler-Analysetools deutlich geringer. Statt interessanter Daten werden für die aktuelle Veranstaltung also nur unkritische Datensätze bereitgestellt, mit denen außer Gleisbauern kaum jemand etwas anfangen kann. Wer bei diesem Hackathon mitmacht, hackt nicht für sich und die Allgemeinheit (worum es bei Open-Data gehen sollte), sondern für ein Unternehmen, das bei dieser Veranstaltung Code und Ideen abgreifen möchte. Dies sollte den Teilnehmern bewusst sein.

-

Auf der anderen Seite verfügt die DB über viele für die Öffentlichkeit interessante Daten, die ohne Probleme als "richtiges" Open-Data freigegeben werden könnten. Beispiele dafür sind das Betriebsstellenverzeichnis und das Infrastrukturregister. Die Daten sind bereits jetzt öffentlich sichtbar, die Webseite bietet die entsprechenden Daten an.

-

Man bekommt den Eindruck, dass die DB den Begriff Open-Data lediglich als Marketingbuzzword verwendet, um sich modern und dynamisch zu präsentieren. Auf diese Weise möchte man sich ein wenig das Image eines Startups verpassen, in der Hoffnung, damit entsprechende innovative Entwickler anzulocken.

-

Fazit: Nicht überall da, wo Open-Data draufsteht, ist auch Open-Data drin. Das vorliegende Beispiel zeigt, dass man vor der Teilnahme genauer hinsehen sollte, welchen Bedingungen man sich unterwirft. Weder sind die Daten frei, noch dürfen sie unbeschränkt verbreitet werden. Bloß der Nutzungszweck während des Hackathons ist nicht beschränkt. Wer sich nicht in eine gewisse Abhängigkeit von Unternehmen begeben möchte, für den sind Projekte wie OpenStreetMap weiterhin die erste Wahl. Bei solchen nachhaltigen Quellen können Entwickler wirklich sichergehen, dass eine Anwendung auch noch nach dem Hackathon nutzbar bleibt. Und vor allem, dass die Arbeit nicht umsonst war, denn dafür ist die investierte Zeit einfach zu schade.

- ]]> -
-
- - Das Hackweekend in Karlsruhe und was sonst noch geschah - Auch wenn es in den letzten Monaten keine neuen Blogartikel zu lesen gab, ist die Entwicklung nicht stehen geblieben. Hier eine kurze Zusammenfassung der vielen kleinen Änderungen seit Mitte Januar. - http://blog.openrailwaymap.org?lang=de#24 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#24 - Tue, 28 Apr 2015 01:05:37 - - Auch wenn es in den letzten Monaten keine neuen Blogartikel zu lesen gab, ist die Entwicklung nicht stehen geblieben. Wir freuen uns, mit Eike (Dakon) einen weiteren Entwickler im Team begrüßen zu können.

-

Seit dem FOSSGIS-Hackweekend im Linuxhotel im Januar wurde der Signallayer um weitere deutsche und österreichische Signale ergänzt. Es werden jetzt Kreuztafeln (So 106), Rangierhalttafeln (Ra 10) bzw. Verschubhalttafeln und Wartezeichen (DB Ra 11/11a/11b) bzw. Wartesignale gerendert. Diese drei Signale haben den Vorteil, dass sie in Deutschland und Österreich ähnlich (oder gar gleich aussehen), sodass man dieselben Icons verwenden kann. Bei den deutschen Signalen gab es Zuwachs in Form von Blockkennzeichen (mit Anzeige der Blocknummer), Ks-Signalen mit Zusatzlicht (bei verkürztem Bremswegabstand oder Wiederholern) und Sv-Signalen. In der Ansicht der Höchstgeschwindigkeiten werden stillgelegte und im Bau befindliche Strecken nun ebenfalls angezeigt, zur Unterscheidung von den übrigen Strecken allerdings etwas heller. An Brücken und Tunneln werden statt des mit name=* erfassten Streckennamens bevorzugt die mit bridge:name oder tunnel:name angegebenen Tunnel- oder Brückennamen dargestellt. Bei spurgeführten Verkehrsmitteln wie etwa Schwebebahnen, bei denen es sich nicht um Eisenbahnen handelt, werden Brücken und Tunnel nun nicht mehr dargestellt. Dies hatte in der Vergangenheit zu unerwarteten Kartendarstellungen geführt.

-

Eike hat zwischenzeitlich das Rendering von Stellwerken verbessert und sie in den thematisch passenderen Layer der Signale und Sicherungssysteme verschoben. Stellwerke werden jetzt mit Namen in grün gerendert. Damit auch als Gebäude erfasste Stellwerke angezeigt werden, waren Korrekturen am verwendeten Renderer node-tileserver notwendig. Im Infrastrukturlayer werden nun Drehscheiben und Schiebebühnen angezeigt.

-

Der beste Datensatz nützt aber nichts, wenn die Datenqualität niedrig ist. Um die Qualität zu steigern, haben wir weitere Abfragen in den Validations-Regeln für JOSM ergänzt. Unter anderem wird jetzt geprüft, ob Gleisnummern als solche getaggt sind (und nicht als Namen) und ob das Tagging eines Signals logische Fehler enthält. Ebenfalls werden die Objekte auf diverse veraltete und nicht unterstützte Tags geprüft.

-

Auch in der JOSM-Vorlage gab es einige Änderungen: So wurden Einträge für Zugdeckungssignale und ETCS-Haltetafeln (Ne 14) hinzugefügt und einige neue Icons ergänzt. Die Signale wurden mit dem neuen Länder-Betreiber-Präfix versehen. Außerdem wurden einige Einträge auf neues Tagging umgestellt, das im Rahmen der Treffen in Köln und Bad Nauheim vereinbart wurde. Ebenfalls wurden kleinere Syntaxfehler behoben und die Einträge ins Englische übersetzt.

-

Auf der Webseite selbst gab es ebenfalls kleine Neuerungen: Es ist nun möglich, die Karte auch ohne Hintergrundkarte zu betrachten. Außerdem findet die Suche nun auch (Ausweich-)Anschlussstellen, die mit railway=spur_junction getaggt sind. Daneben ist die Webseite nun auch in Türkisch verfügbar, vielen Dank dafür an Kudret Emre.

-

Noch nicht ganz fertig implementiert sind Icons für Bahnübergänge im Infrastruktur-Stil, die Darstellung von Gleisnummern, Vorsignaltafeln in verkürztem Bremswegabstand, deutschen Zs 3(v)-Lichtsignalen und Fahrleitungssignalen (in Deutschland und Österreich, da die Signale identisch sind).

-

Wir bedanken uns bei der Geofabrik aus Karlsruhe, auf deren OSM-Hackweekend im Februar Alex und Michael einen Teil der oben genannten Funktionen implementiert haben.

-

Neben dem Fertigstellen der noch offenen Änderungen stehen für die nächste Zeit eine Überarbeitung der Legende, Aktualisierungen und Ergänzungen bei den Übersetzungen und eine Neugestaltung der Webseite an. Daneben wird der Signallayer schrittweise um österreichische und niederländische Signale erweitert. Die Suchfunktion soll künftig auch stillgelegte, abgebaute, im Bau befindliche und geplante Betriebsstellen zurückliefern. Touristisch und militärisch genutzte Strecken, die momentan nicht auf der Karte angezeigt werden, sollen in der Kartenansicht berücksichtigt werden.

- ]]> -
-
- - FOSSGIS-Hackweekened im Linuxhotel in Essen - Am vergangenen Wochenende fand in Essen das FOSSGIS-Hackweekend in den Räumlichkeiten des Linuxhotels statt. Die OpenRailwayMap war dort mit zwei Leuten vertreten, die unter anderem neue Signalsymbole und eine Taggingvorlage für Österreich erstellt haben. - http://blog.openrailwaymap.org?lang=de#23 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#23 - Thu, 15 Jan 2015 20:20:15 - - Am Wochenende des 9. bis 11. Januar 2015 waren Alexander (rurseekatze) und Michael (Nakaner) auf dem FOSSGIS-Hackweekend im Linuxhotel in Essen. Der FOSSGIS e.V. ist der deutsche OpenStreetMap-Förderverein für freie GIS-Software. Das Linuxhotel ist ein Hotel für Schulungen zu Open-Source-Software, das an Wochenenden von Open-Source-Communities zu günstigen Preisen für Hackweekends u.ä. gemietet werden kann.

-

Während Alex im Laufe des Wochenendes eine JOSM-Objektvorlage für Österreich erstellte, widmete sich Michael den kleineren Dingen. Der Signallayer zeigt künftig Bahnübergangsüberwachungssignale (Bü 0/1), die Sv-Signale der Hamburger S-Bahn¹ und Sh 2-Tafeln. Die Icons für Ks-Signale wurden durch neue Icons ersetzt. Um das Hp 0 von den Hp 0-Icons der Hl-, H/V- und Sv-Lichtsignalsysteme unterscheiden zu können, wurde die Bedeutung der Farben bei Ks-Signalen geändert. Hp 0 (oben im Schirm) steht künftig für ein Ks-Mehrabschnittssignal, Ks 1 für ein Ks-Hauptsignal und Ks 2 für Ks-Vorsignal.

-

Auch am Infrastrukturstil verbesserte Michael einige Sachen. Künftig werden die Namen von Tunnels und Brücken dargestellt, wenn sie als tunnel:name=* bzw. bridge:name=* getaggt sind. Straßenbahnen werden erst ab Zoomstufe 10 gerendert, da sonst die Karte in Ballungsräumen zu unübersichtlich ist. Industriegleise werden etwas schmäler dargestellt.

-

Wie in mehreren Bugreports gefordert, wurde der Höchstgeschwindigkeitslayer verbessert. Künftig wird die ehemahls bzw. künftig zulässige Höchstgeschwindigkeit stillgelegter und in Bau befindliche Gleise dargestellt. Abgebaute Strecken und Strecken in Planung werden künftig nicht mehr dargestellt.

-

Bereits seit einigen Wochen werden außerdem die Gleise im Signallayer zur besseren Orientierungsmöglichkeit als graue Linien dargestellt.

-

Bitte beachtet, dass diese Änderungen noch nicht auf den Liveserver übertragen wurden und somit momentan auch noch nicht auf der Karte sichtbar sind. Dies wird so schnell wie möglich nachgeholt.

-

Wer sich dafür interessiert, was auf dem Hackweekend neben der OpenRailwayMap, sei auf einen Blogartikel auf der Homepage des FOSSGIS e.V. verwiesen.

-

Wir bedanken uns beim FOSSGIS dafür, dass wir im Rahmen des Hackweekends gemeinsam die OpenRailwayMap voranbringen konnten und freuen uns schon auf das nächste Mal. Das nächste Hackweekend mit Beteiligung der OpenRailwayMap ist das Hackweekend im Februar in der Geofabrik in Karlsruhe.

-

¹ nur, wenn railway:signal:combined:states=* getaggt ist und das Signal Hp 0 oder Sv 0 anzeigen kann

- ]]> -
-
- - Darstellung von Hl-Signalen - Der Signallayer stellt ab sofort auch Kombinations- und Vorsignale des Hl-Systems der Deutschen Reichsbahn dar. - http://blog.openrailwaymap.org?lang=de#22 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#22 - Mon, 29 Dec 2014 23:58:15 - - Der Signallayer stellt ab sofort auch Kombinations- und Vorsignale des Hl-Systems der Deutschen Reichsbahn dar (Beispiel).

-

Die Implementierung hat sich aufgrund der vielen Signalbilder deutlich aufwendiger gestaltet als bei den H/V-Signalen. Beim H/V-Signalsystem haben wir entschieden, aufgrund der geringen Icongröße (sonst wird zu viel von den Icons verdeckt) nur das Hauptsignal darzustellen, auch wenn am selben Mast (oder wenige Meter davor) noch ein Vorsignal hängt. Damit reduzierte sich die mögliche Anzahl an Signalkombinationen erheblich. Bei H/V-Signalen können wir mit drei Icons für Licht- und drei für Formhauptsignale alles darstellen.

-

Zuerst einmal eine kurze Erläuterung des Hl-Signalsystems für Leute, denen das Verständnis anfangs schwer fällt. Beim Hl-System ist das nicht so einfach. Es vereint Vor- und Hauptsignalfunktionen in einem Schirm und hat bis zu fünf Lampen. Manche Kombinationssignale haben auch noch zwei zusätzliche Lichtstreifen zur Signalisierung der Geschwindigkeiten 60 und 100 km/h. Signalbilder mit blinkenden Lampen können in statischen Kartenkacheln nicht dargestellt werden. Somit entfallen schon einmal die Signalbilder Hl 4, Hl 5, Hl 6a, Hl 6b, Hl 7, Hl 8, Hl 9a und Hl 9b.

-

Die oberen Lampen übernehmen die Vorsignalfunktion (Fahrt erwarten, 100 km/h erwarten, 40/60 km/h erwarten, Halt erwarten). In der Mitte sitzt die rote Lampe für Hp 0 (es gibt noch ein Ersatzrot unten rechts). Die gelbe Lampe unten links leuchtet, wenn ab dem Signalstandort nicht Fahrt mit Höchstgeschwindigkeit (im Westen Hp 1) oder Langsamfahrt (im Westen Hp 2) gilt. Leuchte diese gelbe untere Lampe, so bedeutet das Langsamfahrt mit 40 km/h. Mit einem gelben oder grünen Lichtstreifen darunter kann das zu 60 bzw. 100 km/h angehoben werden.

-

Aber nun zurück zur Karte. Die Icons sollten, wie auch bei den H/V-Signalen, dem Kartennutzer anzeigen, welche Signalbilder das Signal anzeigen kann. Wenn in den OpenStreetMap-Daten nicht hinterlegt ist, welche Signalbilder das Signal anzeigen kann, wird Hp 0 in der Hl-Variante (rotes Licht in der Mitte des Signalschirms) dargestellt. Grundsätzlich wird nur das Tag railway:signal:main:states bzw. railway:signal:combined:states ausgewertet. Ob es sich um ein Block-, Einfahr-, Zwischen- oder Ausfahrsignal handelt, ist irrelevant.

-

Blocksignale können nur Hl 1, Hl 10¹ und Hp 0 anzeigen (anders ausgedrückt: Sie können kein Hl 2, Hl 3a und Hl 3b anzeigen). Sie werden als Hl 1 (grünes Licht/Signal ohne Vorsignalfunktion) bzw. als Hl 10 (gelbes Licht/Signal mit Vorsignalfunktion²) dargestellt.

-

Wenn der Zusatzschirm für die Lichtbalken nicht installiert ist, kann das Signal nicht Hl 2 und Hl 3b anzeigen. Es wird dann bei Signalen ohne Vorsignalfunktion Hl 3a (oben grünes, unten gelbes Licht) und bei Signalen mit Vorsignalfunktion Hl 12a (oben gelbes, unten gelbes Licht) angezeigt.

-

Wenn der Zusatzschirm für den Lichtbalken zwar installiert ist, aber nur einen gelben Lichtstreifen anzeigen kann (die grünen Lampen fehlen dann), wird Hl 3b (oben grünes, darunter gelbes Licht, unten gelber Balken) bei Signalen ohne Vorsignalfunktion und Hl 12b (oben gelbes, darunter gelbes Licht, unten gelber Balken) bei Signalen mit Vorsignalfunktion angezeigt.

-

Wenn der Zusatzschirm grüne und gelbe Lichtbalken anzeigen kann, wird Hl 2 (oben grünes, darunter gelbes Licht, unten grüner Balken) bei Signalen ohne Vorsignalfunktion und Hl 11 (oben gelbes, darunter gelbes Licht, unten grüner Balken) bei Signalen mit Vorsignalfunktion angezeigt.

-

Bei Hl-Vorsignalen wird Hl 1 mit dem Signal Ne 2 (Vorsignaltafel) gekennzeichnet.

-

Jetzt bleiben nur noch zwei Eisenbahnsignalsysteme übrig, die die OpenRailwayMap nicht darstellt – das Sk-System (Signalkombination, Augsburg–Donauwörth) und das Sv-System (noch bei der Hamburger S-Bahn im Einsatz). Wenn du auch das Signalsystem deines Landes (wir rendern derzeit nur österreichische Trapeztafeln, da diese mit den deutschen identisch sind) auf der OpenRailwayMap sehen möchtest, dann stelle uns bitte Folgendes zur Verfügung:

-
    -
  • deutsch- oder englischsprachige Beschreibung des Signalsystems
  • -
  • geeignete Icons im SVG-Format
  • -
  • Vorschläge für Renderingregeln (muss nicht gleich schon als MapCSS-Code implementiert sein)
  • -
-

¹ nur bei Hl-Signalen in deren Bremsweg ein Signal mit Hauptsignalfunktion steht, erkennbar an railway:signal:main=hl am Signal

-

² erkennbar am gelben Dreieck auf dem Mastschild

- ]]> -
-
- - Updateprobleme behoben - Nachdem es für einige Wochen nur unregelmäßige Aktualisierungen der Daten gab, funktioniert nun wieder alles reibungslos. - http://blog.openrailwaymap.org?lang=de#21 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#21 - Tue, 09 Dec 2014 22:28:15 - - Seit letztem Freitag laufen die täglichen Datenupdates wieder ohne Probleme, nachdem es vorher für einige Wochen keine oder nur unregelmäßige Updates gegeben hatte.

-

Der Aktualisierungsprozess konnte leider nicht wie geplant auf die Augmented Diffs der Overpass API umgestellt werden, weil das Format dafür momentan nicht geeignet ist, sodass die bisherige Toolchain erstmal beibehalten wird. Der dafür notwendige Speicherplatz wurde durch eine Änderung des RAID-Levels der beiden SSDs geschaffen. Statt wie bisher als RAID-1 sind diese nun als RAID-0 verbunden, was den doppelten Speicherplatz und etwas höhere Performance bietet und gleichzeitig keine Mehrkosten verursacht hat.

-

Den einzigen Nachteil stellt die höhere Anfälligkeit gegen Plattenausfälle dar, jedoch sehe ich dies erstmal als verschmerzbar an, da auf dem Server nur sehr wenige Daten liegen, die nicht noch woanders gesichert sind. Diese Daten lassen sich auch problemlos regelmäßig auf einen anderen Rechner sichern und bei einem Totalausfall und anschließender Neuinstallation des Systems wieder einspielen.

-

Langfristig wäre aber dennoch eine zusätzliche herkömmliche Festplatte wünschenswert, um komfortabel vollständige Backups des Systems ablegen und bei einem Ausfall das System wiederherstellen zu können. Das kostet aber wieder zusätzliches Geld...

- ]]> -
-
- - OpenRailwayMap-Aktiventreffen in Bad Nauheim - Vom 24. bis 26. Oktober 2014 fand in Bad Nauheim das zweite OpenRailwayMap-Aktiventreffen statt, auf dem zahlreiche Taggingfragen diskutiert wurden. - http://blog.openrailwaymap.org?lang=de#20 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#20 - Wed, 29 Oct 2014 22:31:12 - - Vom 24. bis 26. Oktober 2014 fand bei User spth in Bad Nauheim das zweite OpenRailwayMap-Aktiventreffen statt. Es ist als Fortsetzung des Mappingwochenendes im Juli in Köln zu sehen. Taggingfragen, die damals aus Zeitgründen nicht geklärt werden konnten, standen nun auf der Tagesordnung, ebenso mittlerweile aufgetauchte Fragen.

-

Die beiden anderen Teilnehmer, Michael (Nakaner) und Alex (rurseekatze), nutzten die Anreise zum Mappen. Während Michael extra einen Umweg von Kalsruhe über Heilbronn und die Hessische Odenwaldbahn fuhr und dort GPS-basiert Daten erfasste, filmte Alex die Strecken um Düsseldorf und Köln, solange sein ICE nicht zu schnell fuhr.

-

Das genaue Protokoll ist im OpenStreetMap-Wiki verfügbar. Im Folgenden die wichtigsten Ergebnisse des Treffens:

-

Am Freitagabend wurde u.a. über die Abgrenzung von Straßen-, Stadt-, Voll- und U-Bahn diskutiert. Zum Tag railway=narrow_gauge ist unsere Meinung, dass dies ein veraltetes Synonym für railway=rail ist. Umtaggen nützt nichts und wird nicht beabsichtigt.

-

Wenn Gleise verschlungen sind, empfehlen wir das Mappen aller betroffenen Gleise als einzelne Ways und das Taggen der Abschnitte mit railway:interlaced=yes. Für Begegungsverbote mangels Gleisabstand (wenn es keine Gleisverschlingung ist) wird das Tag railway:passing_prohibited=left/right/yes/both eingeführt. Damit endete der Freitagabend.

-

Am Samstagmorgen gingen die Diskussionen weiter. Entegen des Grundsatzes, dass ein Gleis nicht sowohl mit usage=* als auch mit service=* getaggt sein darf, wird zur Unterscheidung zwischen Nebengleisen von Industriebahnen und normalen Nebengleisen künftig die Kombination service=* + usage=industrial erlaubt sein.

-

Für die Gesetze/Verordnungen der deutschen Bundesländer zu Klein- und Anschlussbahnen wurden Werte für den Schlüssel workrules=* definiert, die dem Protokoll entnommen werden können. Auch für die Meterlast und Achslast gibt es jetzt neue Tags – meter_load=* und axle_load=*.

-

In der Frage, was als Höchstgeschwindigkeit (maxspeed=*) getaggt werden soll, wenn für unterschiedliche Fahrzeugtypen unterschiedliche Höchstgeschwindigkeiten gelten (z.B. Neigetechnik vs. keine Neigetechnik oder Fahrzeuge mit/ohne Wirbelstrombremse), wurde keine Einigung erzielt.

-

Wenn auf Oberleitungsmasten eine Speiseleitung mitgeführt wird, kann man die Masten mit power=catenary_mast taggen. Dieses Tag kann man auch für O-Busse und elektrische Schiffe benutzen. Neue Tags wurden auch für Einspeisungen aus der Speiseleitung, Überbrückbarkeit von Trennstellen per Schalter, versenkbare Mittelstromschienen, Schrankenwärterposten, Blockstellen, Anschlussstellen eingeführt.

-

Wir sind der Meinung, dass das Tag railway=station für U-Bahnhöfe nicht richtig ist und analog zu Straßenbahnhaltestellen durch railway=subway_station ersetzt werden sollte. Eine Diskussion im OpenStreetMap-Forum wurde mittlerweile angestoßen. -

Am Samstagnachmittag wurde zur Abwechslung zu Fuß ein wenig entlang der Main-Weser-Bahn nach Gambach und Gießen gemappt.

-

Da das Tag railway=owner_change immer häufiger auch für Betreiberwechsel (z.B. DB Netz/Albtal-Verkehrsgesellschaft) und nicht, wie ursprünglich mal gedacht, für Betreiberwechsel an Staatsgrenzen, wird das Tag railway=border eingeführt.

-

Neu sind auch Tags für die in Russland gebräuchlichen Fahrbahnsperren zur Bahnübergangssicherung und für die in England gebräuchlichen Tore. Wenn ein Andreaskreuz vorhanden ist, kann crossing:saltire=yes getaggt werden. Der Key crossing:supervision beschreibt die Überwachung (Schrankenwärter, Kamera, Gefahrenraum-Freimeldeanlage usw.) und crossing:activation wie der Bahnübergang eingeschaltet wird. Auch für die Schließdauer eine Bahnübergangs gibt es nun Tags.

-

Am Sonntag wurden für Straßenbahnsignale und die Signale der Berliner U-Bahn Tags erfunden. In Zuge dessen wurde neue Keys eingeführt. Weichensignale trägt man als railway:signal:switch=* ein. Die Einführung von Straßenbahnsignalen wurde als Anlass genutzt, das Tagging für LZB-Signale zu überarbeiten.

-

Kurz vor Ende des Treffens am Sonntagnachmittag wurden noch Tags für diverse Einrichtungen in Betriebswerken erfunden, z.B. WC-Entsorgungsanlagen.

-

Wie auch auf der Hinfahrt wurde auch auf der Rückfahrt gemappt. Michael hat den Abschnitt Friedberg–Frankfurt (Main) Hbf und weiter Richtung Heidelberg gefilmt, bis es ab Weinheim-Lützelsachsen zu dunkel wurde und der Akku leer war, Alex hat Teile der linken Rheinstrecke zwischen Mainz und Koblenz gefilmt, solange es die Lichtverhältnisse zuließen.

- ]]> -
-
- - Hackweekend Karlsruhe - Auf dem Hackweekend der Geofabrik in Karlsruhe wurde fleißig am Signallayer geschraubt. - http://blog.openrailwaymap.org?lang=de#19 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#19 - Sun, 19 Oct 2014 22:44:10 - - Der Streik der Gewerkschaft der Lokomotivführer hat Alexander Matheisen (rurseekatze) nicht abgehalten, zum OpenStreetMap-Hackweekend der Geofabrik in Karlsruhe zu kommen. Gemeinsam mit Michael Reichert (Nakaner) wurde an den Kartenstilen der OpenRailwayMap gearbeitet.

-

Im Geschwindigkeitslayer werden künftig alle Gleise ohne maxspeed-Tag als graue Linien gerendert, die Karte erscheint künftig nicht mehr so lückenhaft. Alle Gleise werden erst ab der Zoomstufe gerendert, ab der sie auch im Infrastruktur-Layer erscheinen. Somit verschwinden in hohen Zoomstufen die blauen Linien langsam befahrbarer Straßenbahngleise und auch Nebengleise in Bahnhöfen, die mit service=* getaggt sind, stören künftig nicht mehr in niedrigen Zoomstufen. Daneben wurden Darstellungsfehler behoben, wodurch teilweise auch die Maxspeed-Informationen von Straßen auf der Karte auftauchten. Außerdem werden Streckengeschwindigkeiten nun nur noch auf aktiv genutzten Gleisen angezeigt. Es wird aber überlegt, ob etwas stillgelegte oder im Bau befindliche Strecken doch angezeigt werden sollten und durch einen helleren Farbton kenntlich gemacht werden.

-

Der Signallayer hat in Deutschland ebenfalls eine Erweiterung erfahren. Hp-Formsignale werden künftig mit neuen, realistischeren Icons gerendert. Für Hauptsignale gilt: Wenn in den Daten hinterlegt ist, welche Signalbilder das Signal anzeigen kann (railway:signal:main:states), dann wird das Signalbild Hp 2 (Langsamfahrt) dargestellt, wenn das Signal Hp 2 anzeigen kann. Wenn das Signal nicht Hp 2 anzeigen kann, wird Hp 1 (Fahrt) gerendert. Wenn in den Daten keine Angaben über die möglichen Signalbilder hinterlegt sind, wird Hp 0 (Halt) angezeigt.

-

Auch Vr-Form- und Vr-Lichtvorsignale werden künftig mit neuen Icons gerendert. Bei den Lichtsignalen ist das schon seit einigen Tagen der Fall. Wenn ein Signal Vr2 (Langsamfahrt erwarten) anzeigen kann, dann wird Vr 2 Symbol dargestellt. Wenn es nicht Vr 2 anzeigen kann, wird Vr1 (Fahrt erwarten) angezeigt. Ist keine Information über die möglichen Signalbilder hinterlegt, wird Vr 0 (Halt erwarten) dargestellt. Bei Formvorsignalen wird das Icon um ein Ne 2 (Vorsignaltafel) ergänzt, um sie von Wärtervorsignalen unterscheiden zu können. Zusätzlich werden Lichtvorsignalwiederholer wie in der Realität durch ein weißes Zusatzlicht gekennzeichnet.

-

Neue Icons für Hp-Lichthauptsignale der Bundesbahn und die Hl-Signale der Reichsbahn sind auch gezeichnet, aber noch nicht in den Kartenstil integriert worden, was aber sicherlich in den nächsten Tagen erfolgen wird. Gerade beim komplizierten Hl-System müssen noch geeignete Darstellungsregeln gefunden werden.

-

Hätte die OpenRailwayMap eine Audioausgabe, würde es nun auf mancher Nebenbahn läuten und schellen. Die Anzeige von Pfeif- und Läutetafeln (Bü 4, Pf 1, Pf 2, Bü 5) ist jetzt integriert. Das Icon für Trapeztafeln (Ne1) wurde neu gezeichnet. Auch Haltepunkttafeln (Ne 6) sind nun zu sehen. Haltetafeln (Ne 5) werden schon seit einigen Tagen dargestellt, wenn auch angebrachte Zusatztafeln wie "200 m" noch nicht auf der Karte visualisiert werden.

-

Die Icons für Schutzsignale (Sh 0/Sh 1, Hp 0/Sh 1) sind neu gezeichnet worden und werden bald in den Stil integriert werden. Bald folgen außerdem noch die Bahnübergangsüberwachungssignale (Bü 0/Bü 1).

-

Alle verwendeten neuen Icons entstammen Michaels Sammlung railway-signals, wurden aber aus optischen Gründen teilweise vereinfacht (z.B. Formvorsignale, Hp-Lichthauptsignale, Bahnübergangsüberwachungssignale).

-

Aber auch ein anderer Teilnehmer des Hackweekends hat eine Überraschung für uns parat gehabt. Arndt Breschede, der Entwickler des Android-Fahrradrouters BRouter (Webinterface, Google Play), hat ein sehr einfach gehaltenes Routingprofil für Eisenbahnen geschrieben. Noch berechnet es Routen über alles, was Schienen hat, egal ob Tram oder Eisenbahn, biegt an Weichen spitz ab und fährt gern im Gegengleis. Wer Zeit und Lust hat, darf das Profil gerne erweitern. Eigene Routingprofile können bei BRouter-Web über das Eingabefeld unten links verwendet werden. Ein besonderes Feature von BRouter, ist die Fähigkeit No-Go-Areas zu definieren, was man bei der Bahn "Streckensperrung" nennt. Vielleicht integrieren wir mal einen Bahnrouter auf Basis des BRouter in die OpenRailwayMap.

-

Das von Alexander eigentlich geplante Mapping der linken Rheinstrecke musste leider ausfallen, da die eingesetzten Wagen einerseits keinen GPS-Empfang zuließen, andererseits wegen Streikausfällen so überfüllt waren, dass kein Fensterplatz mehr frei war.

- ]]> -
-
- - Datenprüfung von Eisenbahndaten mit JOSM - Es gibt eine neue Vorlage für JOSM, mit der das Beheben von Taggingfehlern und damit eine Verbesserung der Datenqualität erleichtert wird. - http://blog.openrailwaymap.org?lang=de#18 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#18 - Tue, 07 Oct 2014 20:31:27 - - Beim Erfassen von Eisenbahndaten in OpenStreetMap hatte ich in der Vergangenheit immer wieder mit den typischen Taggingfehlern zu tun. Eines Tages stieß ich dann eher zufällig auf die Möglichkeit, den Validator von JOSM mit MapCSS-ähnlichen Regeln zu erweitern.

-

Nun habe ich eine solche Prüfregel-Datei für JOSM erstellt. Sie enthält eine erste Auswahl typischer Taggingfehler, aber ich habe auch noch eine lange Liste weiterer Fehler, die ich nach und nach hinzufügen möchte.

-

Wahrscheinlich sind jedem Eisenbahnmapper ebenfalls schon einmal typische Taggingfehler begegnet. Daher wäre es schön, wenn andere Mapper weitere Prüfregeln beisteuern könnten. Die einfachste Möglichkeit wären Pull Requests, Vorschläge per E-Mail sind aber ebenfalls willkommen.

- ]]> -
-
- - Deutsche Geschwindigkeitssignale weitgehend vollständig - Die Icons der deutschen Geschwindigkeitssignale sind nun weitgehend vollständig vorhanden. Vielerorts sind bereits etliche Signale eingetragen und auf der Karte sichtbar. - http://blog.openrailwaymap.org?lang=de#16 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#16 - Thu, 31 Jul 2014 09:39:27 - - Seit einigen Tagen werden praktisch alle deutschen Geschwindigkeitssignale auf der Karte angezeigt. Wechselt man in die Ansicht der Streckengeschwindigkeiten, so erscheint vielerorts bereits eine große Anzahl von Signalen. Die Zs 3(v) Lichtsignale werden noch nicht angezeigt, was in Hinblick auf mehrere darstellbare Ziffern schwierig ist. Über mögliche Umsetzungen einer Darstellung wird nachgedacht. Ebenfalls fehlen noch die Signale für vorübergehende Langsamfahrstellen (Lf 1/2 und 1-5). Da solche Langsamfahrstellen in der Regel aber auch nicht in der OpenRailwayMap eingetragen werden, sollte dies aber keinen größeren Nachteil darstellen.

-

Ein Beispielgebiet, in dem bereits fast alle Geschwindigkeitssignale erfasst wurden, ist hier zu sehen. Die Sichtbarkeit der Signale auf der Karte dürfte für viele Mapper ein Anreiz sein, diese zu erfassen.

-

Demnächst werden im Signallayer weitere Icons ergänzt bzw. die bestehenden Icons durch schönere Symbole ersetzt.

-

An dieser Stelle vielen Dank an die fleißigen Icon-Zeichner Michael und Consti!

- ]]> -
-
- - Rückblick auf das OpenRailwayMap Mappingwochenende - Vom Freitag, den 11. bis Sonntag, den 13. Juli 2014 fand in Köln das erste OpenRailwayMap-Mappingwochenende (mit Taggingdiskussion) statt. Neben dem Kennenlernen und Austausch der Bahnmapper und der Erfassung zweier Bahnstrecken wurden vorallem diverse Diskussionen rund um das Taggingschema geführt. Hier ein Bericht dieser gelungenen Veranstaltung. - http://blog.openrailwaymap.org?lang=de#15 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#15 - Mon, 14 Jul 2014 18:27:01 - - Vom Freitag, den 11. bis Sonntag, den 13. Juli 2014 fand in Köln das erste OpenRailwayMap-Mappingwochenende (mit Taggingdiskussion) statt. Es diente dem Austausch der Eisenbahnmapper und der Diskussion über Ergänzungen und Veränderungen am Eisenbahn-Taggingschema. Mit Emrah Kutlu war auch ein Vertreter von Mentz DV dabei.

-

Der Freitagabend begann locker im Lokal K in Köln-Ehrenfeld mit dem Eintrudeln und einer Vorstellungsrunde der Teilnehmer. Themen waren die Öffentlichkeitsarbeit der OpenRailwayMap und der Gewinnung neuer Mapper (insbesondere von bahninteressierten Nichtmappern als Bahnmapper). Im Anschluss stellte jeder Teilnehmer seine Mappingtechniken vor.

-

Der Samstagvormittag begann mit dem Frühstück im Lokal K, welches in eine Vorstellung von Mentz DV und deren Nutzung von OSM-Daten überging. Es zeigte sich, dass manches, was man bisher eher aus Spaß mappte, doch sinnvoll war. Emrah klärte darüber auf, dass auch das Mappen von Sitzbänken sinnvoll ist. Es ermöglicht ein besseres Routing im Rollator-Modus, wo die Existenz von Sitzbänken zum Ausruhen die Routenfindung beeinflusst.

-

Bei der Vorstellung diverser Eisenbahnroutingfehler erklärten wir ihm die Tags service=*, usage=* und maxspeed=*. Auch der Bedarf eines Tags für die Regelfahrtrichtung wurde dabei offensichtlich. Die Regelfahrtrichtung ist die Richtung, in die ein Gleis normalerweise befahren wird (bei zweigleisigen Strecken in Deutschland in der Regel das rechte Gleis in Fahrtrichtung). Wenn auf einer zweigleisigen Strecke vor und nach einer Kurve die Möglichkeit besteht, das Gleis zu wechseln, so könnte ein Router über das kurveninnere Gleis routen, auch wenn das das Gegengleis ist und mit dieser Fahrt andere Zugfahrten blockiert werden würden. Deshalb werden Gegengleisfahrten in der Praxis in der Regel nicht geplant.

-

Am Samstagnachmittag wurden die Diskussionen für eine Mappingaktivität unterbrochen. Von Köln West aus fuhren Consti, Alex, Michael und Emrah nach Euskirchen. Emrah verlies die Gruppe dort und fuhr zwecks Heimreise zum Flughafen, der Rest fuhr weiter nach Bad Münstereifel und über Euskirchen wieder zurück nach Köln. Zwei Mapper spazierten von Köln West über die Südbrücke und die Hohenzollernbrücke zum Hauptbahnhof.

-

Die Fahrt von Köln nach Euskirchen fand in einem Dieseltriebwagen der Baureihe 628 der Südostbayernbahn statt. Mangels GPS-Empfang (außer direkt an der Tür und am Faltenbalg) wurde reines Video- und Fotomapping ohne Georeferenzierung betrieben, auch wenn die Strecke ab Hürth-Kalscheuren nicht elektrifiziert ist. In Euskirchen wurde in die Regionalbahn nach Bad Münstereifel umgestiegen. Die Strecke nach Bad Münstereifel ist eine nicht elektrifizierte Nebenbahn. In Bad Münstereifel blieben wir sitzen und fuhren mit demselben Zug zurück nach Euskirchen. Diese Fahrt fand in einem Diesel-Talent (Baureihe 644/944 und 643.2) statt, in dem überall sehr guter GPS-Empfang bestand. So war es möglich, georeferenzierte Fotos aufzunehmen. Alex fotografierte fast jedes Signal und Consti ging seiner Leidenschaft nach – Fahrscheinautomaten samt Automatennummer für seine Fahrkartenautomatenkarte erfassen. Beim Wenden in Bad Münstereifel lies der Triebfahrzeugführer freundlicherweise den Vorhang zum Führerstand offen, sodass das Fotografieren nach hinten durch den Führerstand möglich war.

-

In Euskirchen wurde nicht der RE genommen, sondern die 30 Minuten später fahrende RB nach Köln abgewartet. In der Zwischenzeit wurde mittels Fotomapping der Bahnhof und seinen Vorplatz genauestens dokumentiert. Alex fotografierte mit einem 70–300 mm-Teleobjektiv vor allem Signale, Signalnummern und entfernt liegende Objekte im Gleisvorfeld, während Michael mit einem 18–105-mm-Objektiv Übersichtsfotos erstellte. Auch das Bahnhofsgebäude und der Vorplatz wurden gemappt. Zum Leidwesen von Consti hatten die zwei Automaten der Stadtwerke im Busbahnhof keine Nummer.

-

Der Bahnhof Euskirchen bekommt gerade neue Ks-Signale und ein Elektronisches Stellwerk (EStW). Die neuen Signale sind noch nicht alle aufgestellt, die schon aufgestellten, sind noch mit Ungültigkeitskreuzen gekennzeichnet. Da die alten H/V-Signale wohl nicht mehr lange stehen werden, werden direkt die neuen Ks-Signale eintragen. Eventuell werden die neuen Signale sogar schon vor ihrer Inbetriebnahme in der Karte zu sehen sein. Die Ergebnisse der Mappingtour in die Eifel sind derzeit noch nicht in OpenStreetMap eingetragen. Das folgt noch.

-

Nach der Ankunft im Lokal K wurden die Taggingdiskussionen fortgesetzt. Die Ergebnisse können dem Protokoll entnommen werden. Gegen 20:00 Uhr stieß mit jotpe ein lokaler Mapper hinzu. Kurz nach Mitternacht beendeten wir die Taggingdiskussionen und fuhren in die Ferienwohnung ins Belgische Viertel.

-

Consti und Peter reisten am nächsten Morgen direkt von der Ferienwohnung aus ab, Alex und Michael fuhren wieder ins Lokal K, wo sie auf spth aus dem Raum Frankfurt (Main) trafen. Zu dritt wurde bis etwa halb Sechs am Abend noch ein Großteil der Taggingdiskussionsthemen abgearbeitet. Hervorzuheben ist hier die ORM-Meinung zum Mappen von Bahnhöfen als Fläche. Es wurde die Umstellung diverser Eisenbahninfrastruktur-Tags entschieden, die derzeit noch kaum verwendet werden und deren Key- oder Valuewahl sehr ungünstig war.

-

Das ausführliche Protokoll ist im OSM-Wiki zu finden.

-

Das Lokal K stellt für solche Treffen eine geeignete und empfehlenswerte Örtlichkeit dar. Wir bedanken uns bei den Kölner Wikipedianern für die Gastfreundschaft. Wenn eine Dusche vorhanden wäre, würde es sogar als Übernachtungsmöglichkeit in Betracht kommen.

-

Es ist geplant, ein zweites Treffen zu veranstalten, um noch offene Fragen zu klären. Dieses Treffen wird vermutlich etwas zentraler in Deutschland oder im Raum Frankfurt am Main stattfinden.

- ]]> -
-
- - Neue Übersetzungen und Aktualisierungen - Die Webseite ist nun auch in Französisch, Niederländisch, Portugiesisch, Schwedisch und Ukrainisch verfügbar. Außerdem wurden bereits vorhandene Übersetzungen aktualisiert. - http://blog.openrailwaymap.org?lang=de#14 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#14 - Wed, 25 Jun 2014 22:24:37 - - Die Webseite unter openrailwaymap.org ist nun auch in Französisch, Niederländisch, Portugiesisch, Schwedisch und Ukrainisch verfügbar.

-

Außerdem wurden die Übersetzungen in Deutsch, Polnisch, Russisch, Spanisch, Tschechisch und Vietnamesisch aktualisiert, wodurch Fehler behoben und bislang fehlende Zeichenketten ergänzt werden.

- ]]> -
-
- - 1. Mappingwochenende - Wir planen das erste OpenRailwayMap Mappingwochenende und suchen nach Interessenten. - http://blog.openrailwaymap.org?lang=de#13 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#13 - Sun, 18 May 2014 12:53:34 - - Die Gruppe der Eisenbahnmapper innerhalb von OSM wird immer größer und das Projekt OpenRailwayMap wächst immer weiter. Daher ist es nun an der Zeit, sich einmal persönlich kennenzulernen.

-

Dafür planen wir ein Mappingevent, dessen Ziel es ist, eine schlecht erfasste Gegend gemeinsam möglichst vollständig zu erfassen. Dazu würde man in kleinen Gruppen ausschwärmen, um Bahnstrecken abzufahren und kleinere Gebiete zu Fuß zu erkunden. Daneben sollen bei dieser Veranstaltungen aber auch Neulinge an das Thema herangeführt werden. Und auch das gegenseitige Kennenlernen und Austauschen sollte nicht zu kurz kommen.

-

Derzeit sind wir noch in der Planungsphase und klären, wann und wo das Event stattfinden soll. Den aktuellen Stand der Planung sowie weitere Infos findet man im OSM-Wiki und bei einer Abstimmung.

-

Damit eine solche Veranstaltung jedoch stattfinden kann, brauchen wir genügend Teilnehmer. Ich hoffe auf reges Interesse!

- ]]> -
-
- - Verbesserte Darstellung der Streckengeschwindigkeiten - Es wurden Probleme bei der Darstellung von Streckengeschwindigkeiten in mph behoben. - http://blog.openrailwaymap.org?lang=de#12 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#12 - Sun, 04 May 2014 16:35:10 - - Nach einem Update werden nun alle Geschwindigkeitswerte für das Rendering des Maxspeed-Layers berücksichtigt, statt wie bislang nur Werte in Schritten von 5 km/h. Dies sorgte bei abweichenden Geschwindigkeitwerten dafür, dass solche Strecken nicht auf der Karte gezeichnet wurden. Davon waren vor allem Linien in Großbrittanien betroffen, bei denen die Werte in km/h statt mph angegeben wurden und sich durch die Umrechnung ungerade Werte ergaben.

- ]]> -
-
- - OpenRailwayMap auf Twitter - Ab sofort ist die OpenRailwayMap auch auf Twitter zu finden. - http://blog.openrailwaymap.org?lang=de#11 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#11 - Fri, 02 May 2014 19:56:17 - - Ab sofort ist die OpenRailwayMap auch mit einem eigenen Account auf Twitter vertreten. Dort findet man Infos über neue Funktion der OpenRailwayMap, Bahnmapping und interessante Orte auf der Karte.

- ]]> -
-
- - Mobile Webseite - Die Webseite der OpenRailwayMap wurde für mobile Geräte optimiert. Das vereinfacht die Nutzung auf mobilen Geräten von unterwegs. - http://blog.openrailwaymap.org?lang=de#10 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#10 - Wed, 23 Apr 2014 16:54:12 - - Ab sofort ist es einfacher, die OpenRailwayMap auf Smartphones und Tablets zu nutzen: Besucht man openrailwaymap.org mit einem mobilen Endgerät, wird man automatisch auf eine mobile Version umgeleitet. Unter m.openrailwaymap.org kann man die Weiterleitung auf die mobile Seite erzwingen, um sie auch auf dem Desktop aufrufen zu können.

-

Die mobile Webseite ist - abgesehen von der Hintergrundkarte - vollständig an Retina-Displays angepasst.

-

Damit steht einer Nutzung unterwegs nichts mehr im Wege, vorausgesetzt man hat eine Internetverbindung. Dank der Möglichkeit, die eigene Position per Geolocation API anzufragen, lässt sich etwa aus dem Zug heraus der eigene Standort auf der Karte mitverfolgen. Auch die Frage, ob der eigene Zug gerade vor einem Blocksignal steht, lässt sich damit leicht beantworten.

- - - ]]> -
-
- - Änderungen beim Taggingschema der Signale - Für eine klarere Trennung zwischen internationalen und länderspezifischen Definitionen wurden die Wikiseiten zum Tagging anders strukturiert. - http://blog.openrailwaymap.org?lang=de#9 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#9 - Sun, 13 Apr 2014 01:14:18 - - Das Taggingschema der Signale wurde umgestaltet: Das allgemeine Taggingschema ist im Bereich der Signale von länderbezogenen Infos befreit worden, dafür wurden nun Seiten zum länderspezifischen Tagging angelegt, auf denen sich detaillierte Infos zum Tagging in den einzelnen Ländern finden. Dies ist übersichtlicher und vermeidet eine Vermischung von internationalen und länderspezifischen Taggingregeln. Nach und nach soll diese Aufteilung für das gesamte Taggingschema umgesetzt werden.

- ]]> -
-
- - Übersetzung des Taggingschemas - Immer mehr bahninteressierte Mapper kommen aus dem nicht-deutschsprachigen Raum - es wird Zeit, das Taggingschema ins Englische zu übersetzen. Dafür werden Unterstützer gesucht. - http://blog.openrailwaymap.org?lang=de#8 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#8 - Sun, 13 Apr 2014 01:14:18 - - Da es vermehrt auch bahninteressierte Mapper aus dem nicht-deutschsprachigen Raum gibt, ist es nun überfällig, das Taggingschema auch ins Englische zu übersetzen.

-

Als Kopie der deutschen Seite wurde vor ein paar Tagen die englische Seite für das Taggingschema angelegt.

-

Für eine einzelne Person ist die Übersetzung dieser umfangreichen Seite in absehbarer Zeit jedoch kaum möglich. Daher würde ich mich über Hilfe bei der Übersetzung freuen. Je mehr Leute helfen, desto schneller ist die Übersetzung abgeschlossen. Das hilft nicht nur den anderssprachigen Mappern, sondern auch mir - wenn ich mich nicht mit der Dokumentation beschäftigen muss, kann ich mich mehr der technischen Weiterentwicklung widmen.

- ]]> -
-
- - Neue Übersetzungen und Aktualisierungen - Die Webseite ist nun auch in Dänisch, Polnisch, Russisch und Spanisch verfügbar. Außerdem wurden bereits vorhandene Übersetzungen aktualisiert. - http://blog.openrailwaymap.org?lang=de#7 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#7 - Sun, 04 Apr 2014 21:43:15 - - Die Webseite unter openrailwaymap.org ist nun auch in Dänisch, Polnisch, Russisch und Spanisch verfügbar.

-

Außerdem wurden die Übersetzungen in Deutsch, Englisch, Griechisch, N'ko, Slowenisch, Tschechisch und Vietnameisch aktualisiert, wodurch Fehler behoben und bislang fehlende Zeichenketten ergänzt werden.

- ]]> -
-
- - Verbesserte Darstellung der Signale - Die Anzeige der Signalsymbole auf der Karte wurde verbessert. Es werden nun alle Signale angezeigt, egal, ob sie sich überlappen oder nicht. Dies soll für weniger Irritationen bei den Benutzern sorgen. - http://blog.openrailwaymap.org?lang=de#6 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#6 - Wed, 19 Mar 2014 22:29:37 - - Das Rendering der Signalicons wurde angepasst. Bisher bestand das Problem, dass viele Signale nicht oder erst in hohen Zoomstufen zu sehen waren, weil sie mit benachbarten Icons überlappten. Dieses Phänomen trat vor allem in größeren und gut erfassten Bahnhöfen auf. Es verwirrte die User, weil auf den ersten Blick nicht alle eingetragenen Signale zu sehen waren und die Auswahl, welche Signale nun angezeigt werden, willkürlich erfolgte.

-

Dieses Verhalten wurde nun korrigiert, sodass nun wirklich alle eingetragenen Signale auf der Karte gezeichnet werden. Zwar überlappen sich nun einige Signale mit benachbarten Signalen, jedoch ist nun für den User direkt erkennbar, wie vollständig die Daten sind.

-

Daneben wurden am Renderer einige Verbesserungen vorgenommen, sodass es nicht mehr zu abgeschnittenen Symbolen an Kachelrändern kommen sollte.

-

Hinweis: Die Änderungen werden erst nach einem automatischen Neurendern der Tiles auf der Karte sichtbar.

- ]]> -
-
- - Rendering von Streckennamen - Auf der Karte werden zusätzlich zu den Streckennummern nun auch Streckennamen angezeigt. - http://blog.openrailwaymap.org?lang=de#5 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#5 - Sat, 08 Mar 2014 20:49:14 - - Die Kartendarstellung wurde modifiziert, sodass nun auch Streckennamen auf der Karte erscheinen, die mit dem Tag name=* erfasst wurden.

-

Hinweis: Die Änderungen werden erst nach einem automatischen Neurendern der Tiles auf der Karte sichtbar.

- - ]]> -
-
- - Verbesserte Darstellung der Streckengeschwindigkeiten - Die teilweise fehlerhafte Zeichenreihenfolge der Streckengeschwindigkeiten wurden behoben. - http://blog.openrailwaymap.org?lang=de#4 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#4 - Tue, 04 Mar 2014 19:31:01 - - Die Darstellung der Streckengeschwindigkeiten wurde dahingehend angepasst, dass nur noch allein der Geschwindigkeitswert über die Renderingreihenfolge entscheidet. Sprich: Schnellfahrstrecken überdecken Strecken mit langsameren Geschwindigkeiten. Bislang wurden auch die Tags tunnel=*, bridge=* und layer=* für die Renderingreihenfolge berücksichtigt, was jedoch für unerwartete Ergebnisse sorgte, weil etwa eine Hochgeschwindgkeitsstrecke in einem Tunnel trotz ihrer höheren Geschwindigkeit von langsameren Strecken überdeckt wurde. Nun werden diese Tags im Maxspeed-Layer vom Renderer ignoriert.

-

Hinweis: Die Änderungen werden erst nach einem automatischen Neurendern der Tiles auf der Karte sichtbar.

- ]]> -
-
- - Serverupgrade - Das Projekt ist auf einen leistungsfähigeren Server umgezogen. - http://blog.openrailwaymap.org?lang=de#3 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#3 - Tue, 25 Feb 2014 13:57:31 - - Wir sind erfolgreich auf einen leistungsfähigeren Server umgezogen. Die immer weiter wachsenden Datenmengen, die ansteigenden Userzahlen und die vielen neuen Funktionen hatten dies erfordert.

-

Der neue Server hat die folgende Hardwareausstattung:

-
    -
  • 2x 240 GB SSD
  • -
  • 16 GB RAM
  • -
  • 1x Xeon Quadcore 2,4 GHz
  • -
-

Das bedeutet eine wesentliche Leistungssteigerung gegenüber dem bisherigen Server, der folgende Hardwareausstattung hatte:

-
    -
  • 1x 80 GB HDD
  • -
  • 2 GB RAM
  • -
  • 1x Dualcore CPU 2,4 GHz
  • -
-

Damit sollte sich die Karte und die Suchfunktion nun leicht flüssiger anfühlen, vor allem aber wird der Server nun deutlich entlastet. Allerdings ist auch noch etwas Feintuning der Datenbank notwendig, um die neue Hardware optimal auszunutzen.

- ]]> -
-
- - Mailingliste - Es wurde eine OpenRailwayMap-Mailingliste eingerichtet. - http://blog.openrailwaymap.org?lang=de#2 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#2 - Sun, 23 Feb 2014 14:17:20 - - Für alle bahninteressierten Mapper, Anwender und Entwickler der OpenRailwayMap steht nun eine Mailingliste zur Verfügung.

- ]]> -
-
- - RSS-Feed erstellt - Ab sofort gibt es den offiziellen RSS-Feed zur OpenRailwayMap. Hier wird in Zukunft über neue Features und den Entwicklungsprozess berichtet. - http://blog.openrailwaymap.org?lang=de#1 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=de#1 - Sun, 28 Apr 2013 17:51:34 - - Ab sofort gibt es den offiziellen RSS-Feed zur OpenRailwayMap. Hier wird in Zukunft über neue Features und den Entwicklungsprozess berichtet.

- ]]> -
-
-
-
diff --git a/en.rss b/en.rss deleted file mode 100644 index 0498495..0000000 --- a/en.rss +++ /dev/null @@ -1,628 +0,0 @@ - - - - OpenRailwayMap - http://blog.openrailwaymap.org/ - News about OpenRailwayMap - en - Alexander Matheisen - Sun, 28 Apr 2013 14:11:28 +0200 - - Sun, 21 Jan 2018 20:01:00 +0100 - daily - 1 - - http://www.openrailwaymap.org/img/openrailwaymap-310.png - OpenRailwayMap - http://blog.openrailwaymap.org/ - - - Enabling HTTPS - OpenRailwayMap is now supporting HTTPS. - http://blog.openrailwaymap.org?lang=en#32 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#32 - Sun, 21 Jan 2018 20:01:00 +0100 - - -
-

Now it is possible to access our website, tiles, API and mailing list using HTTPS.

-

Users who already embed our tiles or request our API in their HTTPS website will not get mixed content errors any more. And for users who have been prevented from using OpenRailwayMap content in their HTTPS-delivered website, there's no reason not to do so.

-
- - ]]> -
-
- - Train protection systems - Train protection systems of Germany and Austria are now rendered in signalling layer. - http://blog.openrailwaymap.org?lang=en#31 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#31 - Tue, 16 Feb 2016 22:59:00 +0100 - - -
-

Train protection systems are now rendered in signalling layer. For the beginning, the three most important systems used in Germany and Austria are visualized: The intermittent train protection system "Punkförmige Zugbeeinflussung (PZB)" in orange, the continuous system "Linienzugbeeinflussung (LZB)" in red and the European Train Control System (ETCS) in blue. Railroad tracks without train protection are rendered in black while those without any information are rendered as grey lines. Train protection systems of other countries will be added in future.

-
-
- -
- - ]]> -
-
- - Some more Austrian signals - The signalling layer now also renders Austrian main and distant semaphore signals and the light signal version of speed signals. - http://blog.openrailwaymap.org?lang=en#30 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#30 - Sun, 03 Jan 2016 01:57:00 +0100 - - -
-

Some mapper may have already noticed the following changes. Anyway, here is an "official" presentation of the changes concerning Austrian signals: After a significant number of Austrian railway signals was rendered since mid october, some users followed our appeal and contributed some more signal icons. Many thanks!

-

Austrian main and distant signals in form of light signals were already rendered, but now the map also visualizes the semaphore equivalents of these signals.

-
-
- -
- -
-
-

And the map now also shows the light version of Austrian (distant) speed limit signals.

-
-
- -
-
- ]]> -
-
- - Deutsche Bahn and Open-Data - Deutsche Bahn, Germany's national railway company, will publish first open data datasets in a few days. - http://blog.openrailwaymap.org?lang=de#29 - Alexander Matheisen;Michael Reichert - Alexander Matheisen;Michael Reichert - http://blog.openrailwaymap.org?lang=de#29 - Tue, 03 Nov 2015 13:00:00 +0100 - - "Deutsche Bahn (Germany's national railway company) opens its datasets." A joke? No, such times seem to be past now. DB will launch its own open data portal soon.

- -

If you expect DB to publish hundreds of datasets, you might be disappointed. But please note that such a large corporation cannot turn from "secret" to "open and free" within a few months. DB itself has to gain experience with open data, especially licensing and technical matters. - As a beginning, DB will publish a few datasets as appetizers – a list of the shortings of all stations (according to DB guideline no. 100) and informations about the elevators at its stations. Luckily, DB choosed CC-BY as license.

- -

Open Knowledge Foundation Germany comments it this way: "It seems as the times when the community could get the data of Germany's largest railway corporation only via ingenious hacks or by collecting the data on their own and risked adhortatory letters like OpenPlanB three years ago." We would like to note that the way DB reacted (Google Translate) on the publication of its timetable CD (called "HAFAS-CD") without DB's consent was very friendly. - We think that the aim to put pressure onto the DB was missed. It is not surprising that DB has abstained from opening its dataset for the last three years. Publishing the conversation software (OpenPlanB did this, too) without the data would not have been such spectacular but legal.

- -

As OpenStreetMap contributors we use different and legal methods to steer authorities and companies towards open data – crowdsourcing. We want to achieve the same OpenStreetMap already has already achieved on common geospatial data: Breaking the monopoly of the old monopolists/oligopolist like surveying authorities, Here, TomTom etc. - The open data hostility and high data usage fees of German surveying authorities and their controlling authorities has been helping us very much. Surveying authorities did not and do not want to give up their revenues by usage fees and forece price and quality sensitive users to use OSM data. The blank map attracted lots of contributors over the first years and nowadays countries which have been more hostile against open data have the larger and more active communities than countries which have been more open-data-friendly.

- -

The same now happens with railway infrastructure data. Because DB did not publish any useful data, a handful of volunteers started to map the German railway infrastructure on their own.

- -

There is an interest in such data. If you sort all requests of OpenRailwayMap since January 2015 by providers, DB is at rank 5 (10 % of all requests of openrailwaymap.org), only Telekom, Vodafone, Kabel Deutschland (Cable Germany) and Telefonica (O2) are ahead. We have talked to some employees of DB. They told that its common nowadays at some parts of DB to use OpenRailwayMap as an addition information source to get an overview over an area or station. OpenRailwayMap offers are map DB does not offer its staff. - In addition, DB's geospatial applications usually have an GUI which was designed in 1990s or early 2000s and has not been refurbished any more while OpenRailwayMap uses state-of-the-art web mapping frameworks.

- -

We have asked DB several times for the last three years to make data available. We only got negative or no answers. That's why we are pleased with DB asking the community if a cooperation would be possible.

- -

Open data does not only benefit the general public. DB benefits most. If open data would not benefit DB itself, DB could not publish data for free due to a loss of revenues of usage fees. Currently, its normal business at DB that one part of DB is paying large amounts to buy geospatial data from another part of DB – or just using OSM because it is free. Open data will reduce the work spent in buying and paying geospatial data and will lower hurdles for creative employees.

- -

We are happy that DB does first steps into the cold open data water but we do not erupt with jubilation. The aim of OpenRailwayMap has still not been reached yet. First, DB will only publish a few small datasets and, second, companies and authorities cannot arrange a dataset which covers multiple topics and fulfills multiple needs at once. OSM contains not only railway tracks and roads but also landuse, buildings and points of interest. Data users get the data from a single source and only have to comply with one license.

- -

If you want to put a giant into movement, you shold not claim but do crowdsourcing on your own. Instead of asking for dataset of punctuality or access to Zugradar and timetable API, you could collect the current positions of trains by crowdsourcing. The resulting dataset would be free of third parties' rights and not suffer from the limitations - (Google Translate 1, 2) of DB' systems. It would take some time until there will be enough data (you won't get all trains because some run nearly empty through Germany) and first applications will arise (and attention by railway fans and railway staff, too). Power comes from knowledge and knowledge from data.

- -

There is one mistake in Stefan's and Walter's posting. They write that the "times of crowdsourced data collection [as a replacement for missing open data]" are over now. Unfortunately, that's still wrong. DB is Germany's most important railway infrastructure operator but there are other companies which operate the other 18 % of Germany's railway infrastructure. To call some examples without any judgement: Regiobahn, AVG, SWEG and Deutsche - Regionaleisenbahn, not to mention all the railway infrastructure operators outside Germany. Even if all railway infrastructure operators would publish all their data, OpenRailwayMap and the railway data at OpenStreetMap will not become redundant. We serve the function to collect, improve and maintain railway data. Our aim is to create an independent data source. The OpenStreetMap project has proofed that a separate dataset can be accurate and more up to date than other datasets.

- ]]> -
-
- - Expanded visualization of Austrian and German signals - We added Austrian main, distant and speed signals, German light speed signals and some more German speed signs to the map during the OpenStreetMap Hack Weekend at 17. and 18. October in Karlsruhe, Germany. - http://blog.openrailwaymap.org?lang=en#28 - Alexander Matheisen;Michael Reichert - Alexander Matheisen;Michael Reichert - http://blog.openrailwaymap.org?lang=en#28 - Wed, 28 Oct 2015 21:20:43 +0100 - - -
-

For several day OpenRailwayMap visualizes a significant number of Austrian railway signals. Austrian signals are not completely new on the map. Austrian signals which look identical to their German equivalents, such as 'Trapeztafeln', have already been rendered on the map. Now we added light main and distant signals as the most important Austrian-specific signals.

-
-
- -
- -
-
-

We also added various Austrian speed and distant speed signals to the map. Currently only signs up to 120 km/h are rendered; for light signals we need to create appropriate icons (SVG icons licensed under Public Domain or CC-0 are welcome). These signals are already mapped in some places such as Vienna. We hope that the visualization of this first selection of Austrian signals will encourage mappers to map more signals.

-
-
- -
-
-
-
-

Auch die German light speed signals (Zs 3) and speed limit signals (Zs 3v) were added. Previously only the signs of those signals were displayed, not the light signal version. The icons shows the highest speed value that a signal can show, but at maximum 120 km/h. There may be some signals also displaying higher speed limits (e.g. 150 km/h), but there are currently no icons for these states. To avoid a messed up map in densely mapped stations, those signals are rendered in zoom level 1+ instead of 16+.

-
-
- -
-
-
-
-

There are also some new icons on German branch lines. We added the speed limit signs "Eckentafel" (Lf 5, only Eastern Germany), the white "Anfangstafel" (Lf 5, only Western Germany) and "Geschwindigkeitstafel" (Lf 4, only Western Germany).

-
-
- -
-
-
-
-

As another small new feature, minor signs Sh 0 and Sh 2 at buffer stops are now shown on the map.

-
-
- -
-
-
-
-

This work was done while the OpenStreetMap Hack Weekend at the office of Geofabrik in Karlsruhe, Germany on 17. and 18. October 2015. We also spent some more work on the redesign of the OpenRailwayMap website, which will offer a responsive design for a better experience on mobile devices. There is still a lot of work to do until the release of the new website. We thank Geofabrik for hosting this hack weekend.

-

All images in this blog post contain OpenStreetMap data (© OpenStreetMap contributors) and are available under the terms of CC-BY-SA 2.0 OpenRailwayMap and OpenStreetMap.

-
-
- ]]> -
-
- - Use OpenRailwayMap on your mobile device with OsmAnd - Now you can use the OpenRailwayMap overlays in OsmAnd, a mobile app for Android and iOS devices. At the moment it requires an active internet connection. There is still a lot of work for generating offline maps, but you can help us! - http://blog.openrailwaymap.org?lang=en#26 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#26 - Thu, 11 Jun 2015 22:30:08 +0200 - - Using OpenRailwayMap on mobile devices is now easier: OsmAnd, an app running on Andriod and iOS devices, offers integrated support for OpenRailwayMap. You can easily add the different layers of OpenRailwayMap as overlays. Have a look at the wiki howto.

-

Now you can use features that the mobile website cannot offer: The alignment of the map in any direction or the visualization of your own position. Also very interesting is the possibility to combine the railway overlay with any other background map, such as aerial imagery. However, there is one limitation: The overlays are loaded dynamically, which requires an internet connection. Offline usage would be nice to have, but is currently not implemented due to some problems:

-

The generation of ready-to-use downloadable offline maps requires more server resources and bandwidth that are currently not available. There won't be a solution for this problem soon, but the open data of OpenStreetMap allows users to generate offline maps on their own. The necessary steps are documented in the OSM wiki.

-

Currently, however, there is the problem that the existing OpenRailwayMap stylesheet, written in MapCSS cannot be used due to an specal OsmAnd format. Writing stylesheets for OsmAnd means a lot of work, in particular the continuous synchronization with the MapCSS files requires some effort. Developing a tool for converting MapCSS stylesheets to the OsmAnd format would be one approach to avoid a lot of manual work and make life easier. That would also ensure that both online and offline maps look almost identically. For both tasks, supporters, who are interested in using OpenRailwayMap on mobile devices, are welcome.

- ]]> -
-
- - The Karlsruhe hack weekend and what else happend since January - Even if there was no new blog article in the last few months, the development has not stopped. Read a short summary of the small changes since January. - http://blog.openrailwaymap.org?lang=en#24 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#24 - Tue, 28 Apr 2015 01:05:37 - - Even if there was no new blog article in the last few months, the development has not stopped. We are happy to welcome Eike (Dakon) as a new developer in our team.

-

Since the FOSSGIS Hack Weekend in January, the signalling layer was extended by several German and Austrian signals. Now it shows distant sign("Kreuztafel"), shunting stop signs ("Rangierhalttafel" / "Verschubhalttafel") and shunting signs ("Wartezeichen" / "Wartesignale"). The advantage of these three signals is that they are almost equal in Germany and Austria, so that we can use the same icons. The German signals were extended by block marker signs ("Blockkennzeichen"), repeated or shortened light signals type Ks and combined signals type Sv. The maxspeed layer now also shows disused and construction tracks, which are rendered in lighter colours to make them distinguishable from active railroads. In infrastructure layer, bridge and tunnel names tagged with bridge:name and tunnel:name are favoured over track names. Bridges and tunnels at tracks such as monorails, which are not traditional railroads, are not rendered any more. In the past this caused unexpected results on the map.

-

In the meantime, Eike improved the rendering of signal boxes and moved them to the more appropriate signalling layer. Signal boxes are now rendered in green with names. Some bugfixes at node-tileserver were necessary to render signal boxes tagged as buildings. The infrastructure layer now also visualizes turntables and traversers.

-

To improve the data quality, more validation rules for JOSM were added. These new rules check e.g. whether track numbers are tagged correctly and not as names or if signals have logical tagging issues. Features are also checked for various deprecated and not supported tags.

-

There were some changes of the JOSM presets, too: Items for platform section signals ("Zugdeckungssignal"), ETCS stop signs (Ne 14) and some new icons were added to the German preset. The signals were retagged with the new country-operator-prefixes. Tagging changes, that were decided at the meetings in Cologne and Bad Nauheim, were applied to some items. There were also some bugfixes of syntax errors and translations to English.

-

There are also some new features on the website: Users can view the railway overlay without any basemap. The search now also finds spur junctions tagged as railway=spur_junction. Kudret Emre added a Turkish translation of the website, thanks a lot!

-

Some new features such as icons for crossings in infrastructure layer, rendering of track numbers, German distant signs with shortened braking distance, German light speed limit signals and catenary signals (in Germany and Austria) are still under construction.

-

We thank Geofabrik from Karlsruhe for hosting the OSM Hack Weekend in February, where Alex and Michael implemented a part of the new features mentioned above.

-

Beside finishing the pending changes, improvements of the legend, updates and additions of the translations and a redesign of the website stand on our todo list. The signalling layer will be continously extended by Austrian and Dutch signals. The search will be improved, so that it returns also disused, abandoned, constructed and proposed stations. Tracks used for tourism or military purposes, which are currently not rendered on the map, will be visualized, too.

- ]]> -
-
- - FOSSGIS Hack Weekend at Linuxhotel in Essen - Last weekend, the FOSSGIS Hack Weekend took place at Linuxhotel in Essen, Germany. Two contributors of the OpenRailwayMap attended this event and created new signal icons, a tagging preset for Austria and much more. - http://blog.openrailwaymap.org?lang=en#23 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#23 - Thu, 15 Jan 2015 20:20:15 - - Last weekend (January 9–11, 2015) Alexander (rurseekatze) and Michael (Nakaner) stayed at FOSSGIS Hack Weekend at Linuxhotel in Essen, Germany. FOSSGIS e.V. is quasi, but not official OpenStreetMap Foundation Local Chapter in Germany and funds free software/projects around GIS software and OpenStreetMap. Linuxhotel is a hotel only for Linux and open source software training. At weekends, open source software communities can stay there for cheap prices.

-

While Alex created a JOSM preset for Austrian railways this weekend, Michael did a couple of smaller fixes and improvements. He added German crossing signals (Bü 0/1), the Sv signals of Hamburg Light Rail ("S-Bahn") and an icon for Sh 2 signs. He replaced icons of Ks signals by new ones. To be able to differ between Hp 0 ("stop") of Ks system and other systems which have a red light, he decided to change the meanings of the Ks icons. Hp 0 (red light at the top of the signal) now represents a Ks combined signal (prior Hp 0 represented a Ks main signal). Ks 1 (green light in the center) represents a Ks main signal (prior Ks 1 represented Ks combined signals). Ks 2 (yellow light at the right) represents a Ks distance signal (prior Ks 2 represented Ks combined signals).

-

Michael also improved the infrastructure style. OpenRailwayMap now renders tunnel and bridge names which are tagged using tunnel:name=* and bridge:name=*. Trams will be rendered at zoom level 10+ now and industrial tracks won't be as thick is usual.

-

As requested in a couple of bug reports, Michael improved maxspeed style. From now on, speed limits of disused and being constructed tracks will be rendered, too. We will not render speed limits of abandoned or proposed tracks.

-

Since two weeks, the tracks in the signalling layer are rendered as grey lines for a better orientation.

-

Note that these changes still need to be deployed on the webserver and are not visible on the homepage yet. This will be done soon.

-

We thank FOSSGIS for offering this location and event to improve OpenRailwayMap and look forward to the next FOSSGIS Hack Weekend. The next hacking event with participation of OpenRailwayMap will be the Hackweekend im Februar in der Geofabrik in Karlsruhe.

- ]]> -
-
- - German Hl Signals - Hl signals are main and combined light signals used by 'Deutsche Reichsbahn' (predecessor of 'Deutsche Bahn' in the German Democratic Republic). OpenRailwayMap now renders them. - http://blog.openrailwaymap.org?lang=en#22 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#22 - Mon, 29 Dec 2014 23:58:15 - - Hl signals are main and combined light signals used by 'Deutsche Reichsbahn' (predecessor of 'Deutsche Bahn' in the German Democratic Republic). OpenRailwayMap now renders them (example).

-

It took a while to implement this signal system because it has a lot of different views it can show. Hl signals have two signal functions in one signal. The upper two lights show which signal the train driver has to expect. The middle red light is used for Hp 0 (formerly known as Hl 13), its replacement light is located at the lower right. The lower left light is yellow and turned on if the signals shows a reduced speed. This is 40 km/h by default and can be increased by a yellow (60 km/h) or green (100 km/h) bar below the signal.

-

But now back to map. Icons at OpenRailwayMap should show which signals the signal can show. With H/V semaphore and light signals we introduced the convention that a signal showing stop (red light) means that we do not have information about its possible signals.

-

Block signals can only show Hl 1, Hl 10 and Hl 13 (i.e. they cannot show Hl 2, Hl 3a and Hl 3b. They are rendered as Hl 1 (green light if signal has no distant signal function) or Hl 10 (if the signal is combined signal).

-

If the signal cannot show a green or yellow bar, it is rendered as Hl 3a¹ (green light at the top, yellow light below)/Hl 12a² (both lights yellow).

-

If the signal has a light bar but can only show a yellow one (green lights missing), the signals is rendered as Hl 3b¹ (green light at the top, yellow below, yellow bar at the bottom)/Hl 12b² (both single lights yellow, yellow bar below).

-

If the signal has two light bars, the signals is rendered as Hl 2¹ (green light at the top, yellow below, green bar at the bottom)/Hl 11² (both single lights yellow, green bar below).

-

Hl signals which are only distant signals (not main or combined signals) are rendered as Hl 1 with sign Ne 2 (distant signal sign).

-

Apart from two exotic German signals sytems – Sk and Sv system, we now have all signal systems used in Germany at OpenRailwayMap. If you want to see your local signal system, provide us following information:

-
    -
  • a German or English description of your signal system (we will suggest you a tagging scheme based on it)
  • -
  • suitable signal icons as SVG files
  • -
  • suggestions for rendering rules (you do not have to provide MapCSS)
  • -
-

¹ signals which are not distant signals, too

-

² combined signals

- ]]> -
-
- - Database update problems resolved - After it had been no or only irregular updates for the last several weeks, the data updates are now running properly again. - http://blog.openrailwaymap.org?lang=en#21 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#21 - Tue, 09 Dec 2014 22:28:15 - - Since last friday, the data updates are running again without problems, after it had been no or only irregular updates for the last several weeks.

-

Unfortunately, the update process could not be switched to the Augmented Diffs of the Overpass API as intended, because the format is currently not appropriate for our purposes, so we keep the current toolchain. The required space was created by changing the RAID level of the two SSDs. Instead of being configured as RAID-1, they are now configured as RAID-0, which offers twice the storage space and a slightly higher performance at no additional costs.

-

The only disadvantage of this solution is the higher risk of data loss in cases of disk failures. In my opinion this problem is not that important, as there are only a few data which are not also stored anywhere else. This data can also easily be saved periodically on another computer and restored after a total failure and the following reinstallation of the system.

-

However, an additional conventional hard disk for the server would be desirable to make full backups of the system comfortably and to restore the system in case of failure. But it costs extra money again...

- ]]> -
-
- - OpenRailwayMap Meeting in Bad Nauheim, Germany - The second OpenRailwayMap Meeting took place in Bad Nauheim near Frankfurt (Main), Germany on 24 to 26 October 2014. It was a extension to the first "Mapping Weekend" in Cologne in July. Tagging discussions, which had been skipped due to a lack of time (or too much topics), and new tagging related questions and proposals were discussed now. - http://blog.openrailwaymap.org?lang=en#20 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#20 - Mon, 03 Nov 2014 21:03:05 - - The second OpenRailwayMap Meeting took place at user spth's home in Bad Nauheim near Frankfurt (Main) on 24 to 26 October 2014. It was a extension to the first "Mapping Weekend" in Cologne in July. Tagging discussions, which had been skipped due to a lack of time (or too much topics), and new tagging related questions and proposals were discussed now.

-

The two other attendees, Michael (Nakaner) and Alex (rurseekatze), used their journey there to map. Michael went a detour by train from Karlsruhe over Heilbronn and Hessian Odenwald Railway and mapped their using GPS waypoints. Alex filmed between Düsseldorf and Cologne as long as his ICE was not too fast.

-

You can find the detailled protocol at OpenStreetMap Wiki. The most important topics were:

-

A discussion in German OpenStreetMap Forum made us to discuss differentiation between heavy railwas, light railway lines, trams and subways on Friday evening. We also discussed the tag railway=narrow_gauge. We think that this tag is an outdated synonym for railway=rail. We think that change these tagging in OSM database is useless.

-

If tracks are interlaced, we suggest to map all tracks as separate OSM ways and to tag these ways with railway:interlaced=yes. If passing is prohibited between two tracks, you can now use railway:passing_prohibited=left/right/yes/both.

-

The tagging discussions were continued on Saturday morning. Contrary to the rule not to tag ways both with usage=* and service=*, we decided that usage=* and service=* should be allowed for industrial siding and yard tracks to be able to differ between industrial and normal siding/yard tracks in rendering.

-

We defined new tags for meter load and axle load – meter_load=* and axle_load=*.

-

We could not reach a settlement in the question how to use maxspeed=* if there are different speed limits for different types of vehicles (e.g. trains with and without ability to tilt in curves or vehicles with/without eddy current break).

-

If a power line is mounted on catenary masts, you can now tag the mast with power=catenary_mast. This tag can also be used for the masts of trolleybusses and electric ships. We also invented new tags for power supply into catenary, jumpering of separators of catenary, the ground level power supply of Bordeaux tram, crossing boxes, blockposts and sidings.

-

On Saturday afternoon we went outside to map along the railway lines to Gambach and Gießen.

-

Because mappers have been using railway=owner_change, different form designation, for owner changes (e.g. between a national railway company and a private company), we decided to introduce railway=border for owner changes near country borders.

-

We also invented tags for automatically rising roadway barricades on Russian level crossings and in UK used gates on level crossings. If a level crossing has a saltire, it now can be tagged as crossing:saltire=yes. The new key crossing:supervision=* describes how railway personell takes care that no vehicles remain behind closed boom gates. This can be happen by a level crossing attendant, camera or radar scanners. We also decided to introduce a new tag for the time between closure and reopening of a level crossing.

-

On Sunday we invented signals for German trams and Berlin subway. This made us changing tagging of LZB signals. Now every signal which is related to a train protection system should be tagged as railway:signal:train_protection=*.

-

Just before the end, we created tags for some facilities which can be found in depots like sand stores and drinking water supply.

-

On the retourn journey, Michael and Alex mapped, too. Michael filmed between Friedberg and Frankfurt (Main) and between Frankfurt (Main) and Weinheim-Lützelsachsen until it became too dark outside and the phone battery became empty. Alex filmed West Rhine Railway between Mainz and Koblenz until as long as it was bright enough.

- ]]> -
-
- - Karlsruhe Hack Weekend - Auf dem Hackweekend der Geofabrik in Karlsruhe wurde fleißig am Signallayer geschraubt. - http://blog.openrailwaymap.org?lang=en#19 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#19 - Mon, 20 Oct 2014 22:25:10 - - Although most of the strike of Gewerkschaft der Lokomotivführer (German Train Drivers' Trade Union) last weekend, Alexander Matheisen (rurseekatze) came to OpenStreetMap Hack Weekend at Geofabrik in Karlsruhe, Germany. Together with Michael Reichert (Nakaner), he continued work on OpenRailwayMap's map styles.

-

Now all tracks without a maxspeed tag are rendered as grey lines, so that the map does not look so gappy any more. Tracks are only rendered at that zoom levels they would be rendered in infrastructure style. That's why the blue lines of trams and siding tracks will not mar the map at low zoom levels any more. Roads with railway tracks (e.g. abandoned railways which are now used as roads) will not be rendered in maxspeed style. Rendering of disused and abandoned tracks has been removed from maxspeed style but we ponder to add rendering of railway lines which are -under construction or disused in a brighter colour.

-

A large bunch of changes happened to the signalling layer. It now renders a lot of German main and distant signals (all H/V distant signals and H/V semaphore main signals) with new icons. We also added icons for whistle and ring signs, entry signals of stations on branch lines ([Ne1](http://en.wikipedia.org/wiki/German_railway_signalling#Ne1_Trapeztafel)), halt distant signal (Ne6).

-

Michael has drawn icons of Hl signalling system of former Deutsche Reichsbahn of GDR, shunting signals and crossing distant signals. They will be added soon.

-

All these icons are from Michael's collection railway-signals. He had to modify some of them for OpenRailwayMap due to the small size of the icons (e.g. semaphore signals, Hp light main signals, crossing distant signals).

-

Another attendee of Karlsruhe Hack Weekend had a surprise for us in store. Arndt Breschede, developer of Android bicycle router BRouter (web interface, Google Play), has written a very simple routing profile for trains. At the moment it calculates routes over everything which has rails, regardless if this is a train track or a tram track. It uses opposite track of two-tracked railway lines, too. If you have time, you can extend this profile. You can test own routing profiles at BRouter-Web by entering your profile content in the text field at the left bottom. One nice feature of BRouter is the ability to define no-go areas. We might integrate a router based on this application into OpenRailwayMap website in future.

-

Diffent than originally planned, Alex could not do some mapping on West Rhine Railway on his way home because the EC 6 replacement train was overcrowed and he could not get a seat next to the window.

- ]]> -
-
- - Validation of railway data with JOSM - There is a new ruleset for JOSM which makes it easy to find and correct tagging issues of railroad data. - http://blog.openrailwaymap.org?lang=en#18 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#18 - Tue, 07 Oct 2014 20:31:27 - - I have often seen various tagging mistakes while mapping railroads. Some day I experienced that JOSM offers a possibility to extend the built-in validator by MapCSS-like rules and thought "hey, wouldn't it be great to use this for a railroad-data-validator?".

-

Now I have started such a validation file for JOSM. [2] It includes a first selection of a few typical tagging issues, but I still have a very long list of more issues and will add them step by step.

-

Every railroad mapper may have experienced typcial tagging mistakes, too. It would be nice if more mappers could add some rules. The easiest way would be pull requests, but suggestions by email are also good.

- ]]> -
-
- - German speed signals almost complete - The icons of german speed signals are now almost complete. In many places, there are already lots of mapped signals visible on the map. - http://blog.openrailwaymap.org?lang=en#16 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#16 - Thu, 31 Jul 2014 09:39:27 - - Since yesterday, almost all german speed signals are rendered on the map. Switching to the maxspeed layer, there are already lots of mapped signals visible on the map. Zs 3(v) light signals are not rendered yet due to a difficult visualization of the different possible signal values. There are already ideas on how to visualize there signals. Signals of temporary speed restrictions ("Langsamfahrstelle") (Lf 1/2 and 1-5) are currently missing, too. Since temporary speed restrictions are usually not mapped in OpenStreetMap, this is not a major disadvantage.

-

A demo area, where almost every speed signal is mapped, can be found here. The rendering of the signals on the map should motivate mappers to map even more of these signals.

-

Soon we will add more signal icons to the signalling layer and replace existing symbols by nicer icons.

-

Many thanks to our icon illustrators Michael and Consti!

- ]]> -
-
- - Looking back at the OpenRailwayMap Mapping Weekend - The first OpenRailwayMap Mapping Weekend (with tagging discussion) took place in Cologne, Germany from 11 to 13 July 2014. Besides meeting other railway infrastructure mappers and mapping two railway lines, we discussed about extensions and changes of the railway tagging scheme. Here a report of this successful event. - http://blog.openrailwaymap.org?lang=en#15 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#15 - Mon, 14 Jul 2014 18:27:01 - - The first OpenRailwayMap Mapping Weekend (with tagging discussion) took place in Cologne, Germany from 11 to 13 July 2014. It was a knowledge and communion exchange between the railway infrastructure mappers in Germany. We discussed about extensions and changes of the railway tagging scheme. Mentz Datenverarbeitung was represented by Emrah Kutlu.

-

At Friday evening the attendees arrived at the event location, Lokal K, and we got to know each other. We talked about public relations work for OpenRailwayMap and how to get new mappers (especially people who are no mappers at the moment but interested in trains and railways). Afterwards everyone presented his mapping techniques.

-

On Saturday morning we first had a breakfast at Lokal K which faded to a presentation of OSM-related work of Mentz Datenverarbeitung, a company form Munich, developing software for public transport companies, by Emrah.

-

He presented their experiments to route over the German railway network and the routing errors they found. We explained him the tags service=*, usage=* and maxspeed=*. We realized that there is a demand for tagging the normal direction of traffic of railway tracks to improve routing. The normal direction of traffic is the direction into trains usually use a railway track. This is the right track at double-track lines in Germany, it is the left track in other countries (e.g. UK, France, Switzerland). If there is the possibility to change the track on a double-track line before and after a curve, the routing algorithm might use the inner (opposite) track of the curve even if the train would block this track for trains of opposite direction. That's trains usually avoid usage of the opposite track.

-

At Saturday afternoon we paused discussions and went outdoor to map. Consti, Alex, Michael, and Emrah went by train from Köln West to Euskirchen. Emrah left the event there because he had to travel back to the airport, the other ones journeyed on to Bad Münstereifel and afterwards back to Cologne via Euskirchen.

-

The train from Cologne to Euskirchen was an older diesel trainset class 628. Due to the lack of GPS reception (apart from the door window and the gaiter we could just do simple video and photo mapping without georeferencing although the railway line is not electrified after Hürth-Kalscheuren. In Euskirchen we changed into a local train to Bad Münstereifel. The railway line to Bad Münstereifel is a not-electrified branch line. In Bad Münstereifel we stayed in the train and travelled back to Euskirchen. This rail ride took place in a modern Talent 1 diesel trainset which had a very good GPS reception at every place inside the train. That's why it was possible to take a lot of geotagged photos. Alex took photos of almost every signal and Consti indulged his passion of mapping ticket vending machines and their reference numbers for his [ticket vending machine map]((http://osm.lyrk.de/fahrkartenautomaten/#12/50.6083/6.8071). During change of direction at Bad Münstereifel the train driver was friendly and let the curtain of back cabin open so that we could take photos into the back direction.

-

In Euskirchen we did not use the Regionalexpress (express train) to Cologne but the slower and 30 minutes later departing local train to Cologne. In the meantime we mapped Euskirchen station using photomapping. Alex took photos using his 70–300 mm telephoto lens especially signals, signal numbers and more distant objects, I took overview photos using a 18–105 mm lens. The station building and the station forecourt were mapped, too.

-

Euskirchen train station is getting new Ks light signals (see the German Wikipedia article for images) and an electronic signalbox at the moment. Not all new signals are mounted at the moment but we decided only to map the newer ones because the older ones won't stay there longer than a few months. The results of our mapping tour to Euskirchen and Bad Münstereifel are not uploaded to OpenStreetMap at the moment. This will take place soon.

-

After arrival at Lokal K we continued tagging discussions. At about 8.00 p.m. jotpe, a local mapper from Cologne, joined us. Around midnight we stopped tagging discussion and went back to our flat to sleep.

-

Consti and Peter departed directly from the flat the next morning. Alex and Michael went to Lokal K where they met user spth from Frankfurt. They discussed a lot of open tagging issues, e.g. the ORM opinion if train stations (the station at whole, not the building) should be mapped as areas or nodes. We decided to change a few railway infrastructure tags which are used little at the moment and whose key or value names had been chosen badly. The tagging discussion took until 5.30 p.m.

-

The protocol can be found at OpenStreetMap wiki. The German version covers everything, the summarizing English version only the tagging discussion) and a few other parts.

-

The Lokal K is very suitable for meetings like this. We would like to thank the Cologne Wikipedia community for their hospitality and recommend it hereby. If it had a shower you could also sleep there (on the floor).

-

We plan a second meeting to discuss all issues we have not finally decided yet. This meeting will take place more centrally in Germany or in the Frankfurt area.

- ]]> -
-
- - New translations and updates - The website is now also available in Dutch, French, Portugese, Swedish and Ukrainian. There were also some updates of existing translations. - http://blog.openrailwaymap.org?lang=en#14 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#14 - Wed, 25 Jun 2014 22:24:37 - - The website at openrailwaymap.org is now also available in Dutch, French, Portugese, Swedish and Ukrainian.

-

There were also updates of the Czech, German, Spanish, Polish, Russian and Vietnamese translations, which added missing strings and corrected some errors.

- ]]> -
-
- - First mapping event - We are planning the first OpenRailwayMap mapping weekend and looking for interested mappers. - http://blog.openrailwaymap.org?lang=en#13 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#13 - Sun, 18 May 2014 12:53:34 - - The community of railway mappers within OSM is getting bigger and the project OpenRailwayMap is expanding continously. Therefore, it is now time to get to know one another.

-

Therefore we are planning a mapping event, whose aim is to map a poorly covered area as completely as possible. To do this, we would go out in small groups to travel railways lines and explore smaller areas by foot. After this we would continue with entering the collected data and the social part of this event.

-

Currently we are still in the planning phase and clarify when and where the event will take place. The current state of planning and more information can be found in the OSM Wiki and in a voting.

-

We need enough participants, so that such an event can take place.

- ]]> -
-
- - Improved rendering of maxspeeds - Issues with the rendering of maxspeeds in mph have been resolved. - http://blog.openrailwaymap.org?lang=en#12 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#12 - Sun, 04 May 2014 16:35:10 - - After an style update, not just values ​​in steps of 5 km/h, but any speed value is considered ​​for the rendering of the maxspeed layer. The previous rendering style caused that lines with different speed values ​​were not drawn on the map. Primarily lines in the UK, where the maxspeed values ​​were tagged in km/h instead of mph (the conversion produced odd values), ​​were affected by this problem.

- ]]> -
-
- - OpenRailwayMap on Twitter - OpenRailwayMap now has an official account on twitter. - http://blog.openrailwaymap.org?lang=en#11 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#11 - Fri, 02 May 2014 19:56:17 - - The OpenRailwayMap is now represented with its own account on Twitter. There you will find information about new features of OpenRailwayMap, railroad mapping and interesting places on the map.

- ]]> -
-
- - Mobile website - The website of the OpenRailwayMap has been optimized for mobile devices. This makes it easier to use it on mobile devices. - http://blog.openrailwaymap.org?lang=en#10 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#10 - Wed, 23 Apr 2014 16:54:12 - - It is now easier to use the OpenRailwayMap on smartphones and tablets: By visiting openrailwaymap.org from a mobile device, the user is automatically redirected to a mobile version. Opening m.openrailwaymap.org forces the mobile site even on a desktop computer.

-

The mobile website is - apart from the background map - fully adapted to Retina displays.

-

Provided you have an internet connection, it is as easy as never before to use OpenRailwayMap on the go. With the ability to get the own position by Geolocation API, it is possible to follow the train's location on the map. Even the question whether the train you are sitting in is currently standing in front of a block signal can be answered easily.

- - - ]]> -
-
- - Restructered signal tagging scheme - For a clearer distinction between international and country-specific definitions, the tagging-related wiki pages have been restructured. - http://blog.openrailwaymap.org?lang=en#9 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#9 - Sun, 13 Apr 2014 01:14:18 - - The tagging scheme of the signals has been reorganized: The general tagging scheme has been freed from coutry-specific information in the range of signals, therefore pages for country-specific tagging information have been created. This is easier to understand and avoids mixing of international and country-specific tagging rules. Gradually, this division is to be implemented for the entire tagging scheme.

- ]]> -
-
- - English translation of the tagging scheme - More and more railway-interested mappers come from the non-German-speaking countries - it is time to translate the tagging scheme into English. But that requires help from the community. - http://blog.openrailwaymap.org?lang=en#8 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#8 - Sun, 13 Apr 2014 01:14:18 - - Since there is also an increasing number of railway-interested mappers from the non-German-speaking countries, it is now overdue to translate the tagging scheme also into English.

-

As a copy of the German page, the English version of the tagging scheme was created a few days ago.

-

For a single person the translation of this large site is not possible in the foreseeable future. Therefore, I would appreciate help with the translation. This does not only help other mappers, but also me - if I do not have to deal with the translation, I can focus my work on the technical development. The more people help, the faster the translation is completed.

- ]]> -
-
- - New translations and updates - The website is now also available in Danish, Polish, Russian and Spanish. There were also some updates of existing translations. - http://blog.openrailwaymap.org?lang=en#7 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#7 - Sun, 04 Apr 2014 21:43:15 - - The website at openrailwaymap.org is now also available in Danish, Polish, Russian and Spanish.

-

There were also updates of the Czech, English, German, Greek, N'ko, Slovenian and Vietnamese translations, which added missing strings and corrected some errors.

- ]]> -
-
- - Improved rendering of signals - The rendering of signal icons on the map has been improved. Now all signals are displayed, regardless of whether they overlap or not. This will ensure less irritation to the users. - http://blog.openrailwaymap.org?lang=en#6 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#6 - Wed, 19 Mar 2014 22:29:37 - - The rendering of signal icons on the map has been improved. Previously many signals were visible only at high zoom levels because they overlapped with neighboring icons. This phenomenon occurred especially in larger stations with a high density of data. This confused the users, because not every mapped signal was visible and the renderer decided randomly, which signals are displayed and which not.

-

This behavior has now been corrected, so that all mapped signals are drawn on the map. Some signals may overlap with neighboring signals, but it is now directly visible to the user, how complete the data.

-

In addition, some improvements have been made to avoid cutted icons at tile edges.

-

Note: The changes will be visible on the map only after an automatic rerendering of the tiles.

- ]]> -
-
- - Rendering of line names - In addition to the line refs the map also shows line names now. - http://blog.openrailwaymap.org?lang=en#5 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#5 - Sat, 08 Mar 2014 20:49:14 - - The rendering of line names tagged with name=* was added to the map style.

-

Note: The changes will be visible on the map only after an automatic rerendering of the tiles.

- - ]]> -
-
- - Improved rendering of maxspeeds - The incorrect rendering order in maxspeed layer was repaired. - http://blog.openrailwaymap.org?lang=en#4 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#4 - Tue, 04 Mar 2014 19:31:01 - - The rendering of the track speeds has been improved so that just the tagged maxspeed value influences the rendering order. That means that high-speed lines are rendered on the top of lowspeed lines if they collide with each other. Till now, the tags tunnel=*, bridge=* and layer=* were considered for the rendering order, which, however, caused unexpected rendering results because a high-speed line in a tunnel was covered by a lowspeed line despite their higher speed. Now these are ignored by the renderer in maxspeed layer.

-

Note: The changes will be visible on the map only after an automatic rerendering of the tiles.

- ]]> -
-
- - Serverupgrade - The project has moved to a more powerful server. - http://blog.openrailwaymap.org?lang=en#3 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#3 - Tue, 25 Feb 2014 13:57:31 - - We have successfully moved to a more powerful server. The growing amounts of data, the increasing number of website visitors and many new features required this.

-

The new server has the following hardware features:

-
    -
  • 2x 240 GB SSD
  • -
  • 16 GB RAM
  • -
  • 1x Xeon Quadcore 2,4 GHz
  • -
-

This means a significant performance increase over the previous server that had the following hardware features:

-
    -
  • 1x 80 GB HDD
  • -
  • 2 GB RAM
  • -
  • 1x Dualcore CPU 2,4 GHz
  • -
-

Thus, the map and the search function should feel a bit smoother now, but above all, the server is now relieved significantly. However, some fine tuning of the database is also necessary to take full advantage of the new hardware.

- ]]> -
-
- - Mailing list - An OpenRailwayMap mailing list has been set up. - http://blog.openrailwaymap.org?lang=en#2 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#2 - Sun, 23 Feb 2014 14:17:20 - - For all railway mappers, users and developers of OpenRailwayMap, a new mailing list is now available.

- ]]> -
-
- - RSS-Feed available now - This is the official RSS feed of the OpenRailwayMap. You will find news about new features and the process of development soon. - http://blog.openrailwaymap.org?lang=en#1 - Alexander Matheisen - Alexander Matheisen - http://blog.openrailwaymap.org?lang=en#1 - Sun, 28 Apr 2013 17:51:34 - - This is the official RSS feed of the OpenRailwayMap. You will find news about new features and the process of development soon.

- ]]> -
-
-
-
diff --git a/img/openrailwaymap-120.png b/img/openrailwaymap-120.png new file mode 100644 index 0000000..f546798 Binary files /dev/null and b/img/openrailwaymap-120.png differ diff --git a/img/openrailwaymap-150.png b/img/openrailwaymap-150.png new file mode 100644 index 0000000..571b7e6 Binary files /dev/null and b/img/openrailwaymap-150.png differ diff --git a/img/openrailwaymap-16.png b/img/openrailwaymap-16.png new file mode 100644 index 0000000..1ef2f18 Binary files /dev/null and b/img/openrailwaymap-16.png differ diff --git a/img/openrailwaymap-240.png b/img/openrailwaymap-240.png new file mode 100644 index 0000000..99325e7 Binary files /dev/null and b/img/openrailwaymap-240.png differ diff --git a/img/openrailwaymap-28.png b/img/openrailwaymap-28.png new file mode 100644 index 0000000..43df979 Binary files /dev/null and b/img/openrailwaymap-28.png differ diff --git a/img/openrailwaymap-310.png b/img/openrailwaymap-310.png new file mode 100644 index 0000000..9cb94e7 Binary files /dev/null and b/img/openrailwaymap-310.png differ diff --git a/img/openrailwaymap-600.png b/img/openrailwaymap-600.png new file mode 100644 index 0000000..911552b Binary files /dev/null and b/img/openrailwaymap-600.png differ diff --git a/img/openrailwaymap-70.png b/img/openrailwaymap-70.png new file mode 100644 index 0000000..bcc0bf2 Binary files /dev/null and b/img/openrailwaymap-70.png differ diff --git a/index.php b/index.php deleted file mode 100644 index baa8e27..0000000 --- a/index.php +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - OpenRailwayMap Blog - - - - - - - - - - - - - - - - -
-
- OpenRailwayMap Blog - -
-
- '; - if ($rss = @simplexml_load_file($url)) - { - foreach($rss->channel->item as $item) - { - $guid = explode("#", $item->guid); - $output .= ''; - $output .= '
  • '; - $output .= ''.$item->title.''; - $output .= ' - '.date("d.m.Y",strtotime($item->pubDate)).''; - $output .= '
    '; - $output .= $item->children("content", true); - $output .= '
  • '; - } - return $output.''; - } - } - - echo rss2html("http://blog.openrailwaymap.org/".$lang.".rss"); - ?> -
    -
    - - diff --git a/js/jquery-2.1.4.min.js b/js/jquery-2.1.4.min.js new file mode 100644 index 0000000..49990d6 --- /dev/null +++ b/js/jquery-2.1.4.min.js @@ -0,0 +1,4 @@ +/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ +return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("