Hi Fred,
That's an interesting question. I'm sure that you could do something in FME. But there's not much built-in functionality for this, so, as you note, it might be easier to use different software.
If you did try something in FME, then I think the SurfaceFootprintReplacer is the transformer to use. I did it before, using some Python to calculate the sun's position and the transformer to generate shadows on a sundial object. You can find a blog on the subject - with my workspace and code - online here.
As for analyzing the results, I think FME would do a good job of calculations in 2D. So you could probably tell how many hours a day a particular piece of ground is in shadow. But for 3D buildings... I don't know. You'd probably need a "line of sight" transformer, and I don't think we have one of those, not even on the Hub.
I hope this helps. I'll pass the question on to a couple of creative colleagues at Safe who might have some more solutions.
Regards
Mark
Hi Fred,
That's an interesting question. I'm sure that you could do something in FME. But there's not much built-in functionality for this, so, as you note, it might be easier to use different software.
If you did try something in FME, then I think the SurfaceFootprintReplacer is the transformer to use. I did it before, using some Python to calculate the sun's position and the transformer to generate shadows on a sundial object. You can find a blog on the subject - with my workspace and code - online here.
As for analyzing the results, I think FME would do a good job of calculations in 2D. So you could probably tell how many hours a day a particular piece of ground is in shadow. But for 3D buildings... I don't know. You'd probably need a "line of sight" transformer, and I don't think we have one of those, not even on the Hub.
I hope this helps. I'll pass the question on to a couple of creative colleagues at Safe who might have some more solutions.
Regards
Mark
Hi Mark
Thank you for your detailed answer. I saw your post on the Sundial example and hence had the question if it was possible in FME!
I had a deeper look at the tools available from the Rhino3d - Ladybug plugin, and there is a meriad of different analysis that Ladybug has for geometry, but it works within the framework of Rhino 3d, so it does make sense to keep the analysis for the moment running there.
One interesting option, would be to use their dev python libraries and develop this further inside of FME, but I dont have the time to look at it now, but could be super interesting:
https://github.com/ladybug-tools/ladybug.
And yes, please pass on the question, I think this analysis would be of benefit to a lot of users.
Cheers
Fred
Hi Fred,
I checked a little bit what we can do, and yes, you are right, SurfaceFootprintReplacer is one of the way of doing sun analysis. The question is how to use a correct sun position. For that, I added Python PyEphem package to FME, and created a custom transformer that can create shadows based on lat/lon/date/time. The transformer is called SunShadowReplacer and should be available in FME 2022.1 (also here - https://hub.safe.com/publishers/safe-lab/transformers/sunshadowreplacer). Here are a few examples of its usage.
For AR:
https://twitter.com/DmitriAtSafe/status/1654197921506643976?s=20
How a shadow changes during the day:
https://twitter.com/DmitriAtSafe/status/1655649901995520000?s=20
And a similar one on a 2D map:
https://www.dropbox.com/s/nf14u14bqu3nf8c/shadow.mp4?dl=0
Unfortunately, this transformer only works correctly for flat areas, and won't show correct results when, for example, a tall building's shadow overlaps other buildings - I don't analyze the sun path data. For that, I am thinking, we could use a point cloud approach, which I successfully used for viewshed analysis. We probably can create something similar for sun rays.