How can I calculate a gain and loss area of vegetation land having two different lines that represents vegetation in different years.


There are two polylines, one represents the edge of vegetation of a forest in 2010. The other one the edge in 2007. I need to create a polygon of areas where there is a gain or loss in land area.

  • 2
    By "line" do you mean "polygon"? If not, I'd say you need to convert your lines to polygons, then compare. Otherwise, please provide more information. A picture of your problem would probably go a long ways.
    – phloem
    Feb 6, 2015 at 23:35
  • There are two polylines, one represents the edge of vegetation of a forest in 2010. The other one the edge in 2007. I need to create a polygon of areas where there is a gain or loss in land area.
    – Gary
    Feb 6, 2015 at 23:45
  • 1
    Net or gross? If you want figures for gain and loss, that's one thing. If you just want a net gain or loss, that's another. In either case, you're going to want to create polygons using those polylines. Especially if those two lines don't share common endpoints.
    – Chris W
    Feb 6, 2015 at 23:47
  • @Gary Please use the edit button to improve your question as clarifications are sought by commenters. I think the inclusion of a graphic showing what you are trying to describe will make your question much clearer.
    – PolyGeo
    Feb 7, 2015 at 0:20

2 Answers 2


Here are a two approaches:

Subjective approach

This method may be more ideal for analysis on a smaller area of interest (AOI) and also having sound knowledge of the landcover overtime, but may prove less accurate results.

  1. Obtain aerial imagery for both 2007 and 2011 (ideally high resolution leaf on)
  2. Digitize polygons where you see vegetation (classified by year)
  3. Generate gain and loss classification using geoprocessing tools (e.g. Erase)

Objective approach

This method may be more ideal for larger AOI and should give a more accurate result

  1. Obtain aerial or satellite imagery for both 2007 and 2011 (ideally high resolution leaf on, NAIP (with NIR 4th band) or Landsat imagery. Note imagery should be at the same extent and pixel centers need to line up)
  2. Using raster calculator perform NDVI analysis on both images
  3. Using raster calculator perform change detection analysis to highlight vegetation gain and loss from both results of step 3 (Change detection with raster calculator)
  4. Re-sample raster into two classes (gain and loss), and then convert raster to polygon
  • The OP already has veg delineated, so they are basically at step 2.5 in the subjective approach: extend line to polygon, then erase.
    – phloem
    Feb 7, 2015 at 18:01

Here's a very simple solution. Let's start with a graphic example and reference.

enter image description here

We'll say the green line is your 2007 line and the red line is 2010. Are they both in the same shapefile/feature class? Regardless, you'll want them both added and it would be helpful if they were symbolized differently so you can tell them apart by looking. If in the same featureclass I would assume they have a year attribute you could symbolize on.

The first step is to connect the matching endpoints of the two lines (blue lines in the graphic). If the two lines already share endpoints, this won't be necessary, but note they do need to be snapped together with no gaps. Whether you do this in one of/the line class or a new one is up to you.

Then you need to create polygons out of the enclosed areas (magenta Xs) between the two lines. You'll need an editable polygon feature class to do this. It should have at least two attributes - area (double) and type (text). To convert those enclosed areas to polygons you can use the Feature to Polygon tool or construct polygons as noted in this question.

Now you need to differentiate whether an area is a 'gain' or 'loss'. Open the polygon attribute table and start entering one of those two values in for each shape in the appropriate field. From left to right in the example, the first is a gain, the next a loss, then a gain, and so on. This will work if you're not looking at a large area or there aren't a tremendous number of crisscrosses. Otherwise, see alternative below. To get the areas, right-click the Area attribute column header and choose Calculate Geometry, pick area and your desired units, making sure you either have nothing selected or uncheck the box that says only calculate selected records.

Finally you need your summary. If only a few shapes, you might sort the table and do the math by hand or selecting one type or the other and doing a right-click > Statistics (which should only give you the result for selected records). If a lot, you can use the Summary Statistics tool with a CASE field of 'type' (gain or loss) and a statistic field of Area with the SUM type. That will generate a table with the sum of gain and loss. Add the two together and you get net gain or loss.

Now, if your polylines are very large or there are a lot of crossings, this won't be very efficient because you have to identify if an area is gain or loss. The alternative is to turn your lines themselves into polygons, meaning you will have to draw a line from one end of the green line down and then over to the other, doing the same for the red line. Note that the parts you draw should be identical/snapped. When you create polygons out of those enclosed areas, you'll have a 2007 and a 2010 polygon. Note this is different than above where you're just creating polygons out of the areas of overlap.

Once you have two polygons, you'll run Union on them. The resulting shapefile/feature class will cut up the two polygons wherever they cross with attributes that tell you if the new shape was from one, the other, or both of the two inputs. You should have one big area that is both 2007 and 2010, representing no change. Then all your areas where the lines overlap in the first method will be either 2007 or 2010, but not both. Anything that is a 2007 is a loss since there's nothing overlapping in 2010, and vice versa. Once again you can create an Area attribute and calculate the areas in your desired units, and using either Summarize in the attribute table or Summary Statistics you should be able to get the total for each area type (though you may have to do a little attribute manipulation to simplify things).

  • +1 for the second part (the real answer), -1 for excessive length :)
    – phloem
    Feb 8, 2015 at 0:23

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.