I have a layer of wetland polygons and a layer of lakes. I basically want to find the total length of lake shoreline contained within each wetland and add these values as an attribute of the wetlands.

This image shows what I'm looking for in red:

enter image description here

The result would be the summed length of the red polylines as an attribute i.e.

WetlandID   ShorelineLength
55555       3.23mi   
34888       7.11mi
  • what software are you using?
    – mr.adam
    Commented Mar 3, 2015 at 16:34
  • Using ArcGIS 10.1. I'll take a look at these two solutions and let you know how they work. Thanks for the responses. Commented Mar 3, 2015 at 16:56

2 Answers 2


Here's an idea, based on using Feature To Line. With ESRI, the tool is only available at the ArcInfo/Advanced license level, but with QGIS I'm sure you can find an version of it. So you could, as I often do, supplement your ArcView/Basic license workflow with free QGIS tools.

  1. Run Feature To Line to convert the lake features to lines (make sure you're using projected coordinate system, it'll help later)
  2. Clip the new lines using the wetland polygon
  3. Make sure length is calculated in the new clipped feature class
  4. Use spatial join to attach the lengths of any lines that intersect each polygon

If you would be interested in just finding the intersection between two polygons, you'd use the Intersect GP tool and then adding the area of the resultant features back to the wetlands. But you are interested not in intersection yet essentially in the edge, or a segment which polygons share.

There is a very nice GP tool in ArcGIS Desktop, but few have used that. It is the Polygon Neighbors GP tool. It is available in all licenses since 10.1. Read more about How Polygon Neighbors Works.

I'd approach your problem like this:

  1. Erase the wetlands polygon layer by cutting the lakes. This is because we need to get the polygons that will share a side (or part of the side, a certain segment).

  2. Copy both wetlands and the lakes into a new polygon layer. Keep in mind that you would need a certain uniqueID field that would identify each of the polygons in a unique way. You could call every lake feature "Lake + ObjectId", so you'll get Lake1,Lake2,LakeN. Likewise, "Wet + ObjectId" would give Wet1,Wet2,WetN. You can copy those features in the edit session.

  3. Run the Polygon Neighbors. Specify the feature class with your wetlands and lakes; the field which will be ID (type of feature) and XY tolerance if your polygons have small gaps but you would still would like to treat them as if they would share a segment.

enter image description here

  1. Transfer back the segment length value with the Join Field GP tool. Use the Feature type field you've used to identify your lakes and wetlands.
  • Thanks it seems to be working! Just to clarify, once I've generated this table, I'm only interested in the rows where src_FeatureType is a wetland and nbr_FeatureType is a lake correct? Commented Mar 3, 2015 at 18:01
  • If you want to sum all the distance value for a certain feature (so the wet2 feature has a shared segment both with a large lake (feature Lake2) and the small lake (Lake1). You can run Dissolve on the field src_FeatureType while having the LENGTH field statistics type SUM. Commented Mar 3, 2015 at 18:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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