Git Product home page Git Product logo

openrailwaymap / openrailwaymap Goto Github PK

View Code? Open in Web Editor NEW
323.0 26.0 80.0 9.01 MB

An OpenStreetMap-based project for creating a map of the world's railway infrastructure.

Home Page: http://www.openrailwaymap.org/

License: GNU General Public License v3.0

JavaScript 29.01% PHP 17.62% CSS 27.30% Makefile 3.17% Python 2.20% HTML 20.70%
openstreetmap josm railway-infrastructure railway openstreetmap-data map maps mapping geospatial geo

openrailwaymap's Introduction

OpenRailwayMap

An OpenStreetMap-based project for creating a detailled map of the world's railway infrastructure.

See the OpenRailwayMap website, the OpenStreetMap Wiki and the Github repository for more information.

This repository contains all project-related components, including the OpenRailwayMap website, the API interface, map rendering styles, the map renderer, the database backend, JOSM tagging presets, validation rules for JOSM and a Taginfo project file.

Authors

See the authors file for a complete list of all contributors.

Installation

Follow the installation instructions.

Contribute

Contributions to this project are welcome, read the contribution guidelines for further details.

If you would like to report an issue, please use the issue tracker on GitHub or contact us via one of the ways described below.

Donations

You can honor this project also by a donation with Paypal and bank transfers to FOSSGIS e.V. (reason for transfer "OpenRailwayMap"). This project is operated by the developers in their spare time and has no commercial goals. By making a donation you can show that you appreciate the voluntary work of the developers and can motivate them to continue the project in the future.

Contact & News

License

Copyright (C) 2012 Alexander Matheisen [email protected]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

This repository contains content from other sources. See the header of each file or README and COPYING files for detailled license information.

openrailwaymap's People

Stargazers

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

Watchers

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

openrailwaymap's Issues

Request/search the position of specific switches

Implement an API call like http://www.openrailwaymap.org/api/switch.php?switch=23&ref=KNG or http://www.openrailwaymap.org/api/switch.php?switch=23&name=Neuss+Gbf to request the position of a switch with the given ref value that is part of the given facility, specified with ref or name.

This API request should also be integrated into the search engine, e.g. searching for "switch 23 neuss gbf" or "w23 kng" should return all matching switches. Clicking on such a search result should center the map on the position of the requested switch.

Calling http://www.openrailwaymap.org/index.php?switch=23&ref=KNG or http://www.openrailwaymap.org/index.php?switch=23&name=neuss+gbf should center the map on the position of the requested switch.

Mobile devices support

Improve the support for mobile devices such as smartphones and tablets.

  • Optimize the existing web app for mobile devices
  • Develop a native app for Android, iOS, Windows Phone, Firefox OS, etc. with higher performance and offline functionality

Request/highlight the trace of specific routes

Implement an API call like http://www.openrailwaymap.org/api/route.php?ref=2610 to request the trace of a route with the given ref and return a single geometry built from all ways that are part of the requested route. The geometry could be returned as GPX, GeoJSON, simple JSON, KML or GML. For the output formats see also Issue #7.

This API request should also be integrated into the search engine, e.g. searching for a route number like "2610" should return all matching routes. Clicking on such a search result should highlight this route on the map and pan the map to the outer envelope of the way.

Calling http://www.openrailwaymap.org/index.php?ref=2610 should highlight the requested route on the map and pan the map to the outer envelope of the way.

Instead of ref the software should also support a parameter name.

JOSM warning when ways are reversed

To avoid wrong data which is related to the direction of a way, JOSM should show a warning when the user tries to

  • reverse the direction of ways which consists of signals
  • reverse the direction of ways tagged with railway:bidirectional

JOSM already shows a warning message when a way tagged with maxspeed=forward/backward is reversed.

Add train protection systems to signalling layer

Train protection systems (German "Zugsicherungssysteme") should be rendered in signalling layer.

Here a first draft of a rendering scheme for the german train protection systems:

railway:pzb=yes, railway:lzb=yes => GREEN

railway:pzb=yes, railway:lzb=no OR railway:pzb=yes, railway:lzb=null => RED

railway:pzb=no, railway:lzb=yes OR railway:pzb=null, railway:lzb=yes => YELLOW

railway:pzb=no, railway:lzb=null, railway:pzb=no, railway:lzb=no => BLACK

railway:pzb=null, railway:lzb=no OR railway:pzb=null, railway:lzb=null => GRAY

railway:etcs=yes/no/0/1/2/3 => ???

Render maxspeed:forward and maxspeed:backward

Please render maxspeed:forward and maxspeed:backward in maxspeed layer.

Possible implementations:

Equal altering of way colour
Altering between the two colors, and speed could be written with an arrow to show the direction, like this: < 80 - 100 >

Altering of way colour depending on direction
A stroke of 2/3 length with the colour of maxspeed:forward, a stroke of 1/3 length with the colour of maxspeed:backward.

Arrow icons
Arrows: <---> <---> <--->
Colour: aaabb aaabb aaabb
a = maxspeed:forward=*
b = maxspeed:backward=*
left = forward direction of the OSM way

Render way borders
This solution needs the offset property of MapCSS.
Render the right half of the way with the color of maxspeed:forward=*, the left half of the way with maxspeed:backward=*.

Distinguish non-operational lines

Currently non operational lines, railway=construction (and maybe others), show up the way as currently operational lines in the maxspeeds view. Lines of the past and lines of the future should be clearly distinguishable from actual lines or moved to and different view.

Search for foreign names

The search engine should also consider names in other languages tagged with name:=* to allow the user to search for stations without knowing it's native name.

Example: A user should find stations in Moscow not just by typing in "Москва", but also by entering "Moskau" (German).

Installing a WFS

Make the data accessible via a Web Feature Service (WFS) and formats such as GML.

Transliteration of search terms

The search engine/API should perform an internal transliteration of special chars for a more tolerant matching of names. Otherwise it is difficult for users to search for a station in another country due to different keyboard layouts without special characters.

Examples:

  • Děčín -> Decin
  • Düsseldorf -> Dusseldorf
  • Rzeszów -> Rzeszow
  • ...

Export map as PNG/PDF image

Implement a function that allows the user to export any map view as PNG bitmap image or PDF document and download it. It should be possible to set a custom bounding box and scale.

Links that might be interesting:

Libraries for PDF generation:

Data validator

Add a data validator feature to make it easier for users to check the validity of the mapped data and correct mistakes.

This could be realized with these methods:

  • A separate map layer
    • highlighting data mistakes and showing a short hint what the problem is
    • needs a connection to the editors ("JOSM Remote Plugin" or iD-link)
    • easier to browse the map than in an editor
  • A JOSM plugin
    • would make it easy to correct the mistakes instantly

It is useful to list up all data checks in the OpenStreetMap Wiki.

Statistics page

Build a page showing interesting statistics such as:

  • Number of stations in the world
  • Number of stations per country
  • Total length of railroad tracks in the world
  • Total length of railroad tracks per country
  • ...

Feel free to add more aspects!

Create Garmin maps

Create a typfile to create Garmin gmapsupp.img files for using OpenRailwayMap offline on Garmin GPS devices.

After that, set up a rendering stack to offer ready-to-use maps for downloading.

Restrict search to bbox

Add an option below the search box and to restrict a search request to the currently showed bounds of the map.

In the backend this needs to implement an additional URL parameter for API requests to restrict search request to a specified bounding box.

Reverse geocoding

Add a reverse geocoding API. After sending a lat/lon position, the API should return information such as:

  • Track ref (e.g. 'Track 4')
  • Line ref (e.g. 'Line 2610')
  • Track position (e.g. 'km 42.56')
  • Current maxspeed
  • Next signal
  • If the given position is within a station, halt or other facility, return name, uic_ref, short name, etc.
  • Next station, halt or other facility
  • ...

Also think about a UI integration of this API.

Improve alignment of signals

Improve the rendering of signals so that it is clear which signal belongs to which direction. Therefore align signals on the track depended on their orientation

This may need some modifications of Kothic JS.

Improve performance

The performance of the browser-rendered map is still very bad. Find ways to speed up the rendering for a nicer user experience.

Open map on latest position

This feature is on main OpenStreetMap page. Current position is saved in cookie and when I reopen map then I don't must search it again.

Zoom inconsitency

Zoom level 14 shows more recent data than zoom level 15 (see attached screen shots)

  • data has been changed two day ago
  • screen shots have been take at the same time
  • seen on Firefox 25.0
  • [zoom level 14]
    zoom14
  • [zoom level 15]
    zoom15

Maxspeed mode: Don't render railway=proposed or =construction lines

Mapnik live-rendering

Evaluate live-rendering of bitmap tiles with Mapnik. This would probably effect a faster and smoother map than a browser-rendered canvas map.

Extend tagging to more countries

The tagging should be expended to more countries:

  1. The country-specific tagging documentation in the OSM wiki should be extended: http://wiki.openstreetmap.org/wiki/OpenRailwayMap#Country-specific_tagging
    There it is specified how to country-specific features - e.g. which tags have to be used for a certain signal in a certain country. You can also add some tagging examples for each country.
  2. Based on task 1, add JOSM preset files for more countries.
    A list of currently available presets: https://github.com/rurseekatze/OpenRailwayMap/tree/master/josm-presets

Add edit link

It would be nice to have an edit link to edit on the current map position.

Rendering of historic data

Add a rendering style with the focus on the history of the railroad network. It should highlight disused, abandoned and razed tracks, stations and amenities and visualize dates tagged with start_date=* and end_date=*.

A very nice feature would be a "time machine mode": By selecting a date, e.g. with a zoomslider, the user can visualize the railroad network at the selected date.

User defined styles

Implement a feature that allows users to change the rendering style and load own stylefiles.

This would it make easier for others to create new rendering styles or improve existing ones.

Continously provide stable links in URL line while browsing the map

In order to make sharing OpenRailwayMap links more conveniant (and thus more popular) the URL to the current map view should be continously updated. Just like the main OpenStreetMap map one could easiler copy&paste the URL for the current map view from the browser's URL line.

Search engine optimization

The HTML code should be optimized, so that the website can be found with search engines.

It is also necessary to improve the texts because the description/extract that is currently shown by e.g. Google is not very informative.

Native apps

Develop native apps for mobile devices.

They would offer some advantages compared to a webapp:

  • offline mode
  • higher performance
  • better connection to GPS for mapping, geocoding, localizing and augmented reality
  • connection to camera for mapping and augmented reality
  • interfaces to timetable apps
  • ...

Recommend Projects

  • React photo React

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

  • Vue.js photo Vue.js

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

  • Typescript photo Typescript

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

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

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

Recommend Topics

  • javascript

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

  • web

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

  • server

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

  • Machine learning

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

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

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

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.