AdrianKriger / osm_LoD1_3DCityModel

LoD1 3D City Model from OpenStreetMap contributions and raster DEM
https://adriankriger.github.io/osm_LoD1_3DCityModel/
MIT License
8 stars 1 forks source link

streets #17

Open AdrianKriger opened 2 years ago

AdrianKriger commented 2 years ago

With reference to waterbodies / watercourse or road #14 and missing Transport CityObject #141; roads will be added as a Transportation CityObject.

image

-> The width tag is prefered ---this is now width:carriageway -> If no width is provided the lanes will serve as a proxy and the width is calculated as lanes * 2.2 -> If no width nor lanes are tagged; no Transport CityObject is created

Factors to consider:

The challenge with the latter is the need to preserve topology. Roads will stop an x-distance before tunnel=* / tunnel=building_passage /amenity=parking_entrance.

Timeline as per Project -> sidepanel

Right now (06/2022) its not perfect.
If you have a look at the mwe example -> citjsnClean_cput3d-str.json in ninja you'll notice the attributes do not always match the roads. When a road is not uniquely grouped (name and highway:type) attributes merge. Option 1) judo-chop the CityModel into submission by editing it in ninja. Option 2) process differently; perhaps add surface as an additional parameter

AdrianKriger commented 2 years ago

trim back streets from tunnel and parking_entrance @mwe with f9a2880

AdrianKriger commented 2 years ago

I had hoped to add a basic Bridge CityObject ---straight line feature with two vertices either side of a span--- but don't feel that I should.

25-m DTM 10-m DTM
cput25m-rd cput10m-rd
5-m DTM
cput5m-rd The result does improve with the resolution
of the terrain model but the
existence of the Bridge CityObject is dependent on the quality of the DTM

we are here looking East

The other challenge is: We must connect to the ground at the same (or greater) resolution as the DTM. With a 1-m DTM we have to have a height along the road every metre. 1m every 100m is 100 points. With Delaunay every point is a vertex of a triangle. Thats 3 calculations per point. A road has two sides; so everything *2. You can imagine this can quickly turn into a Tyrannosaurus rex that will eat your processor.

A segmentize function will break a line feature and place a vertex every x-metre. For reasons above; lets keep this > 5-metre.

This will also conform to issue #19.

I've also added a time.sleep(5) -> here. The loop will rest for 5 seconds after each road is triangulated.

Will add this to a mwe and push through to village_campus in December 2022. Districts July. 2023.

AdrianKriger commented 2 years ago
qc_rds Similar to the building Quality Check;
missing vertices where vectors cross
(roads crossing buildings) will create a spike.
This will be more prevalent when 'roads': 'Yes'.

Trace the challenge to the root.
AdrianKriger commented 2 years ago

If osm_LoD1_3DCityModel is failing in your area; perhaps the CityJSONwalkthrough.ipynb would be best.

AdrianKriger commented 1 year ago

I had another look at this with a higher quality bare-earth elevation model.

25-m DTM 5-m DTM
u25m-rd u5m-rd

Top here looking South-east. Bottom here looking South

25-m DTM 5-m DTM
cput25m-rd02 cput5m-rd02

--> Decision stands: No Bridge CityObject. Highest resolution elevation model = 5-metre.