tudelft3d / carriageways-creator Goto Github PK
View Code? Open in Web Editor NEWCarriageways Creator
License: GNU General Public License v3.0
Carriageways Creator
License: GNU General Public License v3.0
Already calculated in script:
Potentially easy to calculate:
Indicators:
When a road intersects with a dual carriageway, sometimes it might not be possible to turn both ways because of some physical barrier. I think we should discuss about it as something that is dealt "automatically" since in those cases the dual carriageways will be modelled as two individual single ways in OSM, therefore this is taken care already.
Minor issue: we didn't check if there are cases that are still modelled as a dual carriageway with a single line and there are semantics to denote turning restrictions.
This line is getting this ugly shape after trim
. The reason is that we don't build a straight segment between the intersection of the two lines and the end point, but we try to maintain the original curvature of the line.
We can fix that by checking if something peculiar happens (e.g., in this case the length gets almost twice as long as the original) in which case we fall back to constructing a straight segment.
Many times, one of the two sides of a merge might not snap
This is really a degenerate case: a line starts at the center of a dual carriageway and normally would have identified as a crossing road and would have been trimmed there. But, in this case, the actual neighbour of 0x63c2d9...
is really short, so 0x63c2d9...
crosses the next segment, which is not taken into account during the trim
processing step.
We now have a solution similar solution for this: we take into consideration the neighbours of the next segment if the current segment length is below 3m. We'll have to do the same here for neighbours, but with a bigger tolerance.
There are occasions where one of the two sides of the triangle is missing
There are far more limits to procedural lanes generation than in carriageways. This is because lane have a much more local variability nature than carriageways. For example:
In other words, lanes vary across the same road much more than carriageways. Creating really useful lanes (especially merging lanes etc) requires more detailed width calculation (e.g. a width per segment of the same road) which are also more prone to errors.
Maybe this is extreme, but some roads are already modelled as dual carriageways, not sure if we can identify them? For example in this figure the dual carriageways could be linked? Also in the figure in #5
Need to ensure connectivity prior to running anything.
Again more for when we look at how to store in CityJSON, how can we model ramps and overpasses as truly 3D? OSM doesn't store z coords.
In some occasions, a single carriageway won't extend to the other side as it should.
This is more for when we focus again on how to store roads in CityJSON but we need to remember to examine the relationship between roads and bridges and roads and tunnels.
Now we have our own code for snapping the geometry which might sometimes freak out as it makes a few assumptions. It might be worth trying to replace the whole thing using the shapely.ops.snap
function which should be reliable. Maybe worth a try.
We could have a column where we add error/warning codes during the construction process, so we can better track down the minor issues that were dealt as degenerate cases.
Let the script allow the option to be run without calculating road width, and carriageways will just be generated for any dual direction road.
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.