I have a number of drawings which I converted into geodatabase feature classes. Most drawings are composed or connected 3D polylines from which I want to construct TIN surfaces and multipatch features. In order to clip the TIN I also need to have the exact footprint. How I normally do it is to manually select the perimeter polylines which I then merge into one perimeter and convert to polygon. This works but is extremely time consuming because I often have to manually select 100s of polylines without missing a single connecting line. Can I somehow run a spatial selection to only select the polylines that form the ultimate perimeter?

Below is a typical example - i need to select only the perimeter polylines: enter image description here


There exist efficient vector-based algorithms, but coding them in ArcGIS might be rather fiddly. Consider a raster-based approach as an alternative. (This suggestion is inspired by the idea that all you really need is an area fill from the exterior, which will be halted at every boundary polyline segment, thereby selecting the desired polylines.)

Prepare for the calculation by setting a generous analysis extent around the features so that the largest white portion is the external one. If possible, make the cellsize so small that it successfully resolves all polylines near the boundary, but large enough to keep the grids down to a manageable size. (Failure to resolve tightly packed internal polylines should not be a problem.) In this image I estimate a cellsize of about 1/1000 of either dimension would work.

After converting the polylines to a raster format (step 1), use that to create a grid of the exterior polygon only (step 2). (One way: pick the largest component of the RegionGroup of the complement of the polyline cells.) Create a Euclidean distance grid for the exterior polygon (step 3): this will be zero throughout the exterior and increase towards the inside of the figure. Now, the coup de grace: compute zonal statistics of the Euclidean distance, using the polyline identifiers as zones (step 4). This can be output as a table which you then join back to the polylines. Select those polygons with sufficiently small zonal maxima (no greater than Sqrt(2) times the cellsize) or with sufficiently small zonal minima (step 5).

In the first case (zonal max) you might miss any polyline which happens to include part of the boundary but also contains a portion winding into the interior. In the second case (zonal min) you might accidentally pick up a few interior polylines that get really close to the boundary. (It's impossible to tell from the example which case is appropriate for these data, but either one will represent a huge simplification of the problem.)

  • Thanks. Good approach. Yes, it will likely pick up some interior lines and after going through this selection manually I can confirm that there were in fact a few exterior dangling lines as well. This shouldn't matter as I developed a crude process for locating these tiny exterior and interior lines. (i merge and explode - small non continuous lines will separate - when I remove and repeat the process and explode yields only one continuous line then i have the perimeter.) Your approach will certainly speed up the process. Thanks – Jakub Sisak GeoGraphics Jul 23 '12 at 17:57

A quick and effective way to "clip" a tin is to use the "Deliniate Tin data area" tool, in 3dAnalyst / DataManagement / Tin of the tool box. This redefinies the actual usable data of the tin by elimination long triangle edges along the perimeter (the default option).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.