Select to view content in your preferred language

Managing 3D Basemaps Solution for Municipality

756
2
05-04-2023 10:59 AM
SpencerReichert
Emerging Contributor

Hello, 

I have a project to extract 3D buildings from LiDAR for a municipality. I have been following two workflows; the 3D Basemaps Solution, as well as the tutorial called "Extract 3D Buildings from LiDAR Data". Following the 3D Basemaps Solution, and applying procedural symbology and a rule package to the layer, I have found good results for small, simple buildings like single and multi family homes with simpler roof forms. However, it is challenging to find good results with complex buildings such as towers with attached pools, skylights, and unique roof forms. 

Are there any suggestions on using the 3D Basemaps Solution to generate complex towers accurately? 
Conversely, the buildings which I generate from the LAS Building Multipatch tool are accurate in shape, but the roof forms appear jagged and sharp, especially on edges. I have tried techniques like resampling, thinning the las dataset, and adjusting sampling/simplification values, but end up with poor results. 

I have attached screenshots for context, all suggestions are welcome. 

Thanks

goodhomes.pngmix .pngbadroof3.png

2 Replies
Allison_Hockey
Regular Contributor

Hi Spencer, 

I also work with the 3D Basemaps solution. There is really a lot of manual polygon updating you'll need to do to get good results with the 3D Buildings. It takes some effort and practice. You may also consider playing with the input parameters in the 'create buildings' task in the 'publish buildings' task set.  

0 Kudos
BrianOevermann
Frequent Contributor

@SpencerReichert,

As @Allison_Hockey implies, the best methods for complex buildings requires "slicing and dicing" your building footprints for all of the various elevations of the building. There are two primary methods for doing this--one is to use the Modify Buildings task in the solution to split your footprint, but you will often need to query your point cloud for elevation values to update the various parts. The primary reason to use this method is that the process will automatically keep track of the IDs of the various parts of the building and ties them to a parent ID, which is used in the Fuse Buildings process.

The easier way, in my opinion, is to pre-process your building footprints and split them out before extracting the buildings from lidar. This will process each of those individual parts against the lidar point cloud and more easily create the proper elevation and roof forms. To be fair, you will still need to tweak some of your roof forms, regardless, but I've found that the initial result is closer to 'correct' than not. The downside is that you will need to figure out what the 'parent ID' field is in the layer and manually select all of the parts of the building and assign them the same ID (just choose an ID of one of the parts to be the 'parent') before doing the Fuse Buildings process. I'm extracting trees at the moment on my lidar processing machine so I can't jump in and look to tell you what that field is. You might need to split a building with the Modify Buildings task to understand which IDs get changed to figure out the parent ID. I've attached a couple of screenshots of our hospital and a dairy plant that have a bit more complexity than 'normal' to illustrate how useful pre-processing the footprints can be. These were the results of the initial Create Buildings extraction from lidar with no further tweaks.

Fair warning! This pre-processing can be a rabbit hole that can consume a lot of time. I wouldn't consider doing this for every building in your dataset. For the most part, I've decided that it isn't as important to get single family homes 'true to life', even in their roof forms. I've concentrated on the more complex buildings, our public facilities, and the 'icon' buildings that most people know so that when they eventually interact with the 3D scene (it's still a work in progress) they can immediately recognize them. Good luck and have fun!

0 Kudos