National Agriculture Statistics Service (NASS) provides county level crop (Corn, Soybean, Sorghum, etc) data. I want to calculate crop acres on each subwatershed from the county based data.

I'm using ArcGIS 9.3. I created a join in ArcGIS with the spreadsheet I acquired from NASS. The county level crop data is a shapefile. Watershed (subwatershed) boundaries is also in a shapefile format.

What is the best way to deal with this situation?

  • 1
    Which formats is the data in? Both in vector? – underdark Sep 21 '10 at 15:36
  • It would also be helpful if you could give a list of preferred software you are using (or simply state you don't have a preferred software). – Andy W Sep 21 '10 at 16:39
  • I can post a more thorough response later but for now you may want to look up resources on "proportional allocation" or "apportionment". I would imagine someone has a tutorial posted online somewhere on this topic for ArcMap. – Andy W Sep 22 '10 at 18:57
  • Thanks Andy, I think your suggestion will help me get started! I look forward to hearing from you soon. – Ken Dekalb Sep 22 '10 at 23:46

I am going to suggest that you use what is called proportional allocation (proportional to area) to estimate the county level crop data for your "sub-watersheds". I am going to assume three things: one is that subwatersheds and counties do not have coterminous boundaries (i.e. sub-watersheds are simply not a few counties concatenated together), two both supports are polygons, and three, sub-watersheds are completely covered by the counties layer. (Even if some of these aren't true it may only slightly change your approach anyway).

Basically what I am going to have you do is find out the proportion of county x that is in sub-watershed y. You then calculate the product of whatever variable you are interested in in county x and that proportion. You then sum all of these areas (county x's) that fall within sub-watershed y.

In arcmap, after you have both shapefiles in your map document, open up the arctoolbox. Within the toolbox navigate to Analysis Tools -> Overlay -> Intersect. In the intersect GUI, place both your sub-watersheds feature and your counties feature, and then designate the output shapefile. This output shapefile will essentially be all of the slices of sub-watersheds and counties that fall on top of each other (if you expand the help in the intersect GUI it has a picture of what I mean).

In this new shapefile you just created, you will have all of the attributes listed for both the original watersheds and county files, as well as the area of the polygons in the new layer. What you then want to do is add a new field, and say X is the variable you want to allocate to subwatersheds, the field calculation syntax will look somthing like this, (I did a test run and on my machine it just named the new area Shape_Area)


What this does is weight the value of X according to the area proportion that polygon is in relation to the original county.

After you calculate those fields for all of the variables you are interested in, you will then sum those fields to the sub-watershed level. If you right click the unique identifier field for your sub-watersheds (still working within the intersected shapefile), click summarize, then define sum for each of your new fields you just calculated, and then specify the output dbf file. You can then use a table join to join the information within that dbf and your original sub-watershed shapefile.

As an aside it is good to know that this technique assumes that all of the variables are equally distributed within counties. This may or may not be reasonable, and depending upon how small counties are and how great the spatial mis-match is such an assumption may only cause trivial error anyway. (Also if counties do not entirely cover sub-watersheds say so, as you may want to calculate the density of your variable within that missing region).

Of course their are other alternatives, I can think of 1 easier solution and 2 more complicated ones. The easier solution would be to calculate the polygon centroids and just use a spatial join to aggregate county variables within sub-watersheds. I do not suggest you do this unless the boundaries between watersheds and counties are damn near coterminous. Other suggestions may be to either use aerial imagery/remotely sensed data that has smaller units than counties. It wouldn't surprise me if their was relevant information for your project in this raster based format (such as land use cover). Another option would be to use geostatistical kriging techniques to estimate your variables.

If you have any other questions feel free to ask. Good luck

  • Andy, thanks a lot for your valuable input. I generated centroids from the counties within and around the watershed and used spatial join to assign NASS county level crop data acres to those centroids. Then I used ordinary Kriging (spatial analyst). Using subwatershed boundaries in zonal statistics, I used the mean from zonal statistics and assigned it as each crop acres in each subwatershed. Would you approve it? PS: I played with geostatistical analyst and used its modelling values (nugget,lag size,major range,partial sill) in spatial analyst. – Ken Dekalb Sep 23 '10 at 14:55
  • I do not know of using the mean of the zonal statistics is the preferred method (or even if there are any alternatives). Just like proportional allocation, kriging is based on several assumptions which may or may not be tenable to your subject. I don't see any problem with doing both and comparing results. If they are similar it provides better evidence that your estimate is accurate. – Andy W Sep 23 '10 at 15:06
  • You may want to check out the work of Pierre Goeverts and his use of Area to Point (ATP) Kriging. The link points to his webpage where he hosts many of his papers. sites.google.com/site/goovaertspierre/pierregoovaertswebsite – Andy W Sep 23 '10 at 15:07

An approach that I've used in the past for similar problems is dasymetric mapping: the idea is that given only an aggregate value, you want to apply an intelligent disaggregation technique to estimate conditions at a small scale. To apply it to this case, you might get a landcover classification layer for your area of interest, then 'distribute' the crops based on the landcover type, which may include a class for crops. With this you can then distribute the per-county value proportionally onto the cells within that county.

Intersecting that analysis with your subwatersheds should lead you to a more accurate approach than using choropleth mapping alone. I recommend reading Intelligent Dasymetric Mapping and Its Application to Areal Interpolation which covers the problem, and checking out the implementation they provide. You can also do this with a little bit of legwork using zonal operators.


An additional option would be to use the NASS Cropland Data Layer (CDL). http://www.nass.usda.gov/research/Cropland/SARS1a.htm This gives location specific information about where each crop is grown within a county; however, CDLs are not available for all areas and all times.

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.