So i have these multipatches that I'm rendering and they can be of varying lengths in my AddIn. Attached is screen shot. I would like to be able to determine if any of these multipatches intersect the ground and if they do I would like to know the points the points of intersection.. What would be the best tool to use to do this in ArcGIS Pro 2.5? If there are various methods, what are the advantages/disadvantages of each? Thank you.
I forwarded your question to our 3D team. Here is their answer:
It looks like they want to see where ‘view frustums’ from airborne imaging devices intersect the ground. We don’t have a ‘IntersectMultipatchWithSurface’ tool but we do have ‘Intersect3DLineWithSurface’. If the user models the 4 corners of a view frustum, or its center, as 3D polyline features, they can get back the points of intersection between the lines and the surface.
That's what I figured. I'm assuming that I need to use the Geoprocessing.ExecuteToolAsync for this. Unless there is something in the ArcGIS Pro 2.5 SDK that I'm not finding.
Additionally, Is their an advantage or disadvantage of using the Intersect3DLineWithSurface vs LineOfSight? It appears they're almost the same with the exception that the LineOfSight allows for the inclusion of MultiPatch features (e.g. buildings) as part of the intersection/ray cast.
Not sure if I should ask the question here or not or if I should start another question but..... I've tried the LineOfSight using 1 arc sec GeoTIFFs from USGS with the SRTM data sets for elevation. I'm able add them as surface elevation layers and they render, as expected, in a 3D Map Scene but neither the LineOfSight or the Intersect3DLineWithSurface tools recognize them as useable surfaces. Is their something I have to do with them to make them work for those tools to recognize them? Let me know if you need me to upload the actuall *.TIFs. Thank you.
The output points from both tools would be the same. The output lines, on the other hand, might not be split at the same locations because the intention of the analysis differs. The output lines for LOS, when not using any multipatches, are split based on the logic illustrated in the cross-sectional view below.
The LOS tool profiles the input line on the surface and the point at which the surface goes out of view to the observer, at the crest of the hill, is where the line gets split (green is visible to the observer, red is not). So, I recommend using Intersect3DLineWithSurface since both the point output and line split locations will always be the same.
We know that 3D Analyst tools aren’t supporting Pro’s surface layers yet. This will happen in an upcoming release. In the meantime, you need to use regular file based raster layers. If you’re wanting to use elevation service based data you can use the CopyRaster tool to extract an AOI from an elevation service as a local raster.
And yes, you need to use Geoprocessing.ExecuteToolAsync to run GP tools.
Hmmmm.... Before I implemented in code I thought I'd try it via ArcGISPro 2.5's interface. Attached is screen shot. Despite the 4 lines shown clearly intersecting the ground. I only get one line feature returned in the "LinesOfSight_Intersect3DLine" layer that is the Output Lines parameter. That one line feature has 3 points. The first two points are the same point of origin at altitude and the third is the original line's end point that is below the surface. I also get no features in the LOS_Intersection points layer that is the Output Points parameter. I actually have 5 lines in the LinesOfSight layer and expected to at least 5 lines back and 5 points of intersection. Thoughts on what might be the problem? Thanks!
Ran across an article from ArcGIS (not Pro) that said that Intersect 3D Line with Surface only worked with TIN datasets. So I took my 2 GeoTiffs and used Mosaic to Raster to create a single GeoTiff. Tried that and no luck (same result as 2 separate GeoTiffs). I then converted the combined GeoTiff to a TIN dataset and used that as the surface for the Intersect 3D Line with Surface and got 1 meaningful result back for the 1 of the 5 Input Line Features. "Meaningful" meaning one of the 5 input line features returned a point of intersection and 2 line features split at the point of intersection. Not sure why the other 4 input line features weren't processed.
As I see from your picture you have one line feature selected. Try select or unselect all features. Geoprocessing window checks for selection of inputs.
Tada!!! At the end of the day we sometimes overlook the details.... Thanks Gintautas!!
Uma, Any comments/thoughts on the path I took to arrive at the solution I did? Seems like TINs are still the only thing that works with 3D Line Intersect with Surface or maybe its just the format of my GeoTIFFs? Thanks.
Now that I'm actually getting quantified results that make sense in quantity, I can look look at quality and accuracy. See the attached pic.... I expected the points of intersection to actually be on the surface. The point of intersection is above the surfaces I have... any idea why?
I shared your question with the 3D Team. He recommends contacting technical support if possible. He says it would be much easier to troubleshoot this problem with support.