opener-next / osm2vdv462 Goto Github PK
View Code? Open in Web Editor NEWOSM to VDV462 export pipeline
License: MIT License
OSM to VDV462 export pipeline
License: MIT License
We could create a workflow that runs the entire export pipeline based on a given osm.pbf file url which could be provided via a workflow input parameter.
The export files could be attached to releases or simply be published as artifacts.
A fully automated script could run once a week and download every single state, convert it and attach it as a release.
Some platforms provide boarding places on both sides. Mappers sometimes then split these platforms in the middle into 2 platform elements to separate tags like ref
. Others keep them as one element and instead add multiple values for the same tag. Example: https://www.openstreetmap.org/relation/3264414#map=18/52.12995/11.62747
For the DHID this looks like this:
ref:IFOPT=de:XXX;de:YYY
We should simply create two OSM elements out of this. They will have the same geometry and same tags, except when multiple values exist. Biggest challenge is how to handle their OSM ids, since keeping the id is important to reference them for relations and the like. It might be possible to stop using the ids as primary keys.
Use the example data to run an export and validate the output.
StopPlace
Quay:
Others export these values on StopPlaces:
AccessSpace:
Entrance:
PathLink:
Quay, Entrance, AccessSpace:
Undefined, probably Quay?
The target and destination fields can additionally include the properties osm_type
("way" or "relation") and osm_id
(int). We should try to use them or otherwise specify the level
to assure that we calculate a path from and to the correct level. This is relevant to correctly export multi level train stations.
Stop areas don't have to be composed of two or more platforms/stops. This is especially the case for railway stops where trains stop at the same platform for both directions (Example). In such cases usually no dedicated stop area relation is mapped in OSM (this is also explicitly allowed by the PTv2 schema). However currently the exporter only exports stop areas and their member platforms.
The problem is that we cannot detect whether a stop is supposed to be a stop area or if the corresponding stop area relation is simply missing. We could only detect this by reverse-engineering the IFOPT which should be avoided.
AccessFeatureType
lift
escalator
ramp
stairs
On first glance this should be rather trivial. Just an aggregate function across all elements (their tags) that looks for the respective highway tags like stepts, elevator etc.
Problem: A path might contain multiple AccessFeatureType
. This is because we create StopPlaces
mostly without AccessSpaces
which are used for:
Eingangshalle, Zwischengeschoss oder Korridor innerhalb eines Umsteigebauwerks
So there are two options:
AccessSpaces
for every mezzanine exist in OSMAccessSpaces
for mezzanines (when a path goes across multiple levels, we need in between AccessSpaces
) Problem however is, that these require unique DHIDs at least by the specification.In some rare cases a platform can be split into multiple way elements but have the same DHID. (for example because part of the platform lies on a bridge)
They should be merged to one element in the database view.
We are already exporting paths across different levels (with stairs, elevators etc.) but we do not assign levels to them in the export.
Levels are defined once for every StopPlace and then referenced when needed.
Level definition:
<StopPlace id="de:11000:900055101" version="1635772518">
<Name>U Viktoria-Luise-Platz (Berlin)</Name>
<levels>
<Level id="DE::Level:675_-1::" version="1635772518">
<ShortName>-1</ShortName>
</Level>
<Level id="DE::Level:675_0::" version="1635772518">
<ShortName>0</ShortName>
</Level>
</levels>
<StopPlaceType>other</StopPlaceType>
...
</StopPlace>
Some relevant fields are: Name, ShortName, Description.
Usage (Quays, AccessSpaces, Entrances and Parkings).:
<Quay id="de:11000:900055101_300060041" version="1635772518">
<Name>U Bahnsteig Gleis 1</Name>
<LevelRef ref="DE::Level:675_-1::" version="1635772518"/>
</Quay>
Idea:
Currently osm2pgsql is the only thing that doesn't run in a docker. I would be nice to have docker as the only requirement to setup and run the pipeline.
Allow passing required inputs (that are currently asked by user prompts) as parameters like: ./export.sh arg1 arg2 arg3
write them to the respective variables and only prompt when the variable was not set from the outside.
This is required to completely automate testing and exporting.
For nearby stop areas it makes sense to find and export ways that connect them like we already do between platforms or entrances.
The hard question here is: what are the starting and end points? If we have entrances then we probably should pick them, but for lets say nearby tram stops we should probably pick the closest platforms or ideally generate a suitable AccessSpace.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.