How to determine ground intersection of multipatch

638
9
04-23-2020 02:08 PM
DHuantes
New Contributor III

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.

Multipatches intersecting the ground

0 Kudos
9 Replies
AnnetteLocke
Esri Contributor

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.
Multipatch frustums

0 Kudos
DHuantes
New Contributor III

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.

0 Kudos
UmaHarano
Esri Regular Contributor

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.

0 Kudos
DHuantes
New Contributor III

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!

3D Line Features Intersecting 3D Surface

0 Kudos
DHuantes
New Contributor III

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.

0 Kudos
GintautasKmieliauskas
Regular Contributor

Hi Daniel,

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.

DHuantes
New Contributor III

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.

0 Kudos
DHuantes
New Contributor III

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?Points of Intersection not on the surface.

0 Kudos
UmaHarano
Esri Regular Contributor

Hi Daniel

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.

Thanks

Uma

0 Kudos