Skip to main content

Hey community! How can I do a visibility analysis, from several observation points to several points or lines of sight?

I can use 3D vector data, LiDAR data and DEM from LiDAR data.

 Anyone has a "script type" to explore?

😊

TNKS a lot guys!

There is this webinar https://www.safe.com/webinars/how-to-get-the-most-out-of-lidar-data/

and this article ​https://www.safe.com/blog/2016/05/point-cloud-power/

from 2016 that can get you started​


Anyone has a "script type" to explore?


I'm really intersted about any sort of solution, script or clues about this topic !


I'm really intersted about any sort of solution, script or clues about this topic !

Hello @lazaare​, thanks for commenting! Funnily enough, spent last week updating the viewshed analysis workspace featured in point cloud blog! There are two potential methods you could apply for viewshed analysis in FME: one being vector-based and the other point-cloud. Personally, I find the vector workspace easier to conceptually digest, but both execute the same analysis (eg. produce same results). All data used originates from the City of Coquitlam. Workspace attached: Viewshed_VectorMethod.fmwt

 

In this scenario, I have a billboard on a hill and a set of surrounding homes or buildings. The goal is to use FME Form to determine which houses can see or view of the billboard object without any obstructions. 

 

To create the billboard location, I arbitrarily chose a point on a hill in our Lidar dataset from the City of Coquitlam (manually copying X and Y for this point). A Creator is used to generate the billboard point geometry. After we have our billboard point, we use some other transformers to properly georeference and convert the billboard to 3D (for reference see: Create Billboard location + Design billboard bookmarks). 

 

Once we've created our billboard feature, we need to transfer the billboard X/Y/Z value to each 'point of interest' or building feature in this case. A counter is used to create a unique ID for each building. We can use a CentrePointReplacer (converts to point) to simplify building geometry, then a FeatureMerger (1:1) to merge the billboard location value to each building feature. 

 

Next, we need to create a billboard point on each building feature (as the geometry doesn't exist yet, we only merged tabular values). By using a VertexCreator to create this new point (eg. Billboard_x, Billboard_y, Billboard_x), FME will intuitively connect the billboard and house points, creating a sight line or line of sight. 

 

To create our terrain surface, we begin with the same lidar dataset used to choose our billboard location. After filtering high vegetation and noise (PointCloudFilter), we convert the point cloud to a DEM, and then a TIN (surface).

 

To figure out if there are any occlusions in these view lines, we need to determine if any line intersect with the terrain. We can use a Clipper transformer to do this (merge atributes enabled, so ID is transferred to line). So, if a line interesects (clips) the surface, it means it was obstructed by it, hence, line ID is the ID of the building with no view. Therefore in the bookmark "Merge Line ID with building ID", any Line ID's that are merged with Building ID has no view. If the ID is unique, the billboard is visible. FeatureColorSetters are used to visualize results. 

 

viewshed_outputI know this is a ton of information, so please let me know if you have any questions about the attached workspace! On an aside, I will be creating an article for viewshed analysis in the near future, I’ll try to remember to link it here when it is available! Let me know if you have any issues accessing the template! Hope this helps, Kailin. 


Hello @lazaare​, thanks for commenting! Funnily enough, spent last week updating the viewshed analysis workspace featured in point cloud blog! There are two potential methods you could apply for viewshed analysis in FME: one being vector-based and the other point-cloud. Personally, I find the vector workspace easier to conceptually digest, but both execute the same analysis (eg. produce same results). All data used originates from the City of Coquitlam. Workspace attached: Viewshed_VectorMethod.fmwt

 

In this scenario, I have a billboard on a hill and a set of surrounding homes or buildings. The goal is to use FME Form to determine which houses can see or view of the billboard object without any obstructions. 

 

To create the billboard location, I arbitrarily chose a point on a hill in our Lidar dataset from the City of Coquitlam (manually copying X and Y for this point). A Creator is used to generate the billboard point geometry. After we have our billboard point, we use some other transformers to properly georeference and convert the billboard to 3D (for reference see: Create Billboard location + Design billboard bookmarks). 

 

Once we've created our billboard feature, we need to transfer the billboard X/Y/Z value to each 'point of interest' or building feature in this case. A counter is used to create a unique ID for each building. We can use a CentrePointReplacer (converts to point) to simplify building geometry, then a FeatureMerger (1:1) to merge the billboard location value to each building feature. 

 

Next, we need to create a billboard point on each building feature (as the geometry doesn't exist yet, we only merged tabular values). By using a VertexCreator to create this new point (eg. Billboard_x, Billboard_y, Billboard_x), FME will intuitively connect the billboard and house points, creating a sight line or line of sight. 

 

To create our terrain surface, we begin with the same lidar dataset used to choose our billboard location. After filtering high vegetation and noise (PointCloudFilter), we convert the point cloud to a DEM, and then a TIN (surface).

 

To figure out if there are any occlusions in these view lines, we need to determine if any line intersect with the terrain. We can use a Clipper transformer to do this (merge atributes enabled, so ID is transferred to line). So, if a line interesects (clips) the surface, it means it was obstructed by it, hence, line ID is the ID of the building with no view. Therefore in the bookmark "Merge Line ID with building ID", any Line ID's that are merged with Building ID has no view. If the ID is unique, the billboard is visible. FeatureColorSetters are used to visualize results. 

 

viewshed_outputI know this is a ton of information, so please let me know if you have any questions about the attached workspace! On an aside, I will be creating an article for viewshed analysis in the near future, I’ll try to remember to link it here when it is available! Let me know if you have any issues accessing the template! Hope this helps, Kailin. 

This is what we call a reply ! Thanks you for this, it'll be a greatful help for my project and a way to start working on something, I was really lost about this.

About my project, in one hand I have a GEOTIFF (raster elevation surface), 80 observers points and more than 1500 targets points. In the other hand I need to connect each observers to each targets and analyse the lines of sights data (azymuth, angle, lenght) between them. I've found the LineOfSight tool on Arcgis but it's way too long so I need to use FME.

Thank you a lot for your reply, I'll work on it immediatly!

I'm interested about your article for viewshed analysis in the near future!


Hello @lazaare​, thanks for commenting! Funnily enough, spent last week updating the viewshed analysis workspace featured in point cloud blog! There are two potential methods you could apply for viewshed analysis in FME: one being vector-based and the other point-cloud. Personally, I find the vector workspace easier to conceptually digest, but both execute the same analysis (eg. produce same results). All data used originates from the City of Coquitlam. Workspace attached: Viewshed_VectorMethod.fmwt

 

In this scenario, I have a billboard on a hill and a set of surrounding homes or buildings. The goal is to use FME Form to determine which houses can see or view of the billboard object without any obstructions. 

 

To create the billboard location, I arbitrarily chose a point on a hill in our Lidar dataset from the City of Coquitlam (manually copying X and Y for this point). A Creator is used to generate the billboard point geometry. After we have our billboard point, we use some other transformers to properly georeference and convert the billboard to 3D (for reference see: Create Billboard location + Design billboard bookmarks). 

 

Once we've created our billboard feature, we need to transfer the billboard X/Y/Z value to each 'point of interest' or building feature in this case. A counter is used to create a unique ID for each building. We can use a CentrePointReplacer (converts to point) to simplify building geometry, then a FeatureMerger (1:1) to merge the billboard location value to each building feature. 

 

Next, we need to create a billboard point on each building feature (as the geometry doesn't exist yet, we only merged tabular values). By using a VertexCreator to create this new point (eg. Billboard_x, Billboard_y, Billboard_x), FME will intuitively connect the billboard and house points, creating a sight line or line of sight. 

 

To create our terrain surface, we begin with the same lidar dataset used to choose our billboard location. After filtering high vegetation and noise (PointCloudFilter), we convert the point cloud to a DEM, and then a TIN (surface).

 

To figure out if there are any occlusions in these view lines, we need to determine if any line intersect with the terrain. We can use a Clipper transformer to do this (merge atributes enabled, so ID is transferred to line). So, if a line interesects (clips) the surface, it means it was obstructed by it, hence, line ID is the ID of the building with no view. Therefore in the bookmark "Merge Line ID with building ID", any Line ID's that are merged with Building ID has no view. If the ID is unique, the billboard is visible. FeatureColorSetters are used to visualize results. 

 

viewshed_outputI know this is a ton of information, so please let me know if you have any questions about the attached workspace! On an aside, I will be creating an article for viewshed analysis in the near future, I’ll try to remember to link it here when it is available! Let me know if you have any issues accessing the template! Hope this helps, Kailin. 

@lazaare​, no problem or rush! Please let me know if a process doesn't make sense or you run into issues applying concepts to your own data. Happy to help, Kailin


A new article has been published to the Knowledge Base: A Vector Approach to Viewshed Analysis. A point cloud version of the same article is also underway! Best, Kailin.


A new article has been published to the Knowledge Base: A Vector Approach to Viewshed Analysis. A point cloud version of the same article is also underway! Best, Kailin.

This is gold. Thanks!

Is there any update for the point cloud version article?


This is gold. Thanks!

Is there any update for the point cloud version article?

Hello @oscard​, I am so glad you found it helpful! I am still reviewing the point cloud article right now, its not quite ready for it's debut unfortunately. For the time being, you might be able to use Dmitri's blog (Think like a point cloud) as a starting point, it uses the same workflow as the article will. I will update the thread again when I publish the point cloud article. Sorry if this causes any inconvenience, Kailin.


Reply