enter image description here

I am new to Arcmap-Arceditor 10 and could really use your help. I have been mapping ethanol plants (which utilize corn to produce ethanol) and corn production amounts in the counties of the USA.

My goal is to draw buffer zones (circles) around the ethanol plants (dots). However, the tricky part is that the circles must reflect what region an ethanol plant buys corn from in order to sustain its ethanol production. I know how much corn each plant needs and I know the average corn production/square mile in each county. How do I get Arcmap to calculate the radiuses of the buffer zones it needs to draw corn from? This gets especially tricky when I have an ethanol plant lying on the border of two counties and each county has a different corn production amount/square mile.

Do you know if it's possible to do this in arcmap? If so, how should I proceed? Thank you so much!

In the image attached, the dots are ethanol plants. The red regions show the county is self-sufficient in producing enough corn for its ethanol plants. The orange regions show that corn must be imported from other counties to support its ethanol plants.


Yes this is possible Katherine.

Basically what you need to do is to add a column to your plants shapefile that corresponds to the size of that buffer.

You could also add fields for the amount of corn each plant needs and other useful information to help you calculate the size of the buffer.

You, of course, will need to fill it with something meaningful. To do that I can suggest the "Calculate Values" command, located inside the table view (right click on the column to be calculated and Calculate Values). With it you can enter complex expressions.

For creating the buffer, there is an option of the buffer geoprocessing tool to use a column as the radius of the buffer.

welcome to the website and cheers.

good luck

  • Thanks so much for the help, George. However, I worry that I can not come up with an equation that would work for all of the ethanol plants. This is because of the irregular shapes of the counties. Some ethanol plants may need to draw corn from up to four counties, and each county will have a different average corn production/square mile. Is there a way to have the program calculate the radius manually for me? Or another program you can suggest that would do this? – Katherine Jul 25 '11 at 15:25
  • @Katherine - I think you should probably visualize and draw (even if by hand) what you expect your map to look like. You could simplify as much as possible. But from your question it initially seems you are looking for a modified drivetime map however when you sttart to represent polygonal data in such a manner it becomes fuzzy. – Brad Nesom Jul 25 '11 at 16:52
  • Attached is the map I have so far, in case you were interested. – Katherine Jul 27 '11 at 14:27

One thing to keep in mind here is that you are not trying to exactly represent which areas are actually used to feed the plant. A county might have all of its corn production in the eastern half, for example. (And a plant might not even be pulling from adjacent counties.)

You just want a cartographic convention showing approximate relative scale based on the adjacent counties. Here is how I would go about this...

In your ethanol plant point layer, I would have four attributes: corn needed, average yield, buffer radius, and residual. Corn needed would stay constant. Buffer radius is the currently used buffer radius. Average yield is the average yield per square mile inside that radius, and residual is the difference between corn needed and average yield*pi*radius^2. The ethanol plant layer should have a unique identifier too (for joins).

You are trying to minimize your residuals. You will want to set a cutoff for your residuals (e.g. if the calculated amount is within 100 bushels of the corn needed, then you will not further refine the radius).

You also need a county layer that has two attributes, the average corn yield per square mile and the amount of corn produced (which you can get from area * average corn yield). The last is really a dummy variable for calculation later. If you have any counties with an average corn yield per square mile of zero, set that instead to an arbitrarily small number. Zeros in that field will cause problems later.

Pick an initial arbitrary radius, smaller than the normal width of a county such as 1 mile, and set the radius value to that for all plants. Run these operations in a geodatabase, so that the area attribute is automatically maintained.

This next section you might want to automate as a python script or geoprocessing model:

  1. Run a buffer on your ethanol plants using the radius column for the buffer distance.
  2. Intersect the resulting buffer with the counties layer, keeping all attributes.
  3. For the intersect output, for each feature recalculate corn produced using average corn yield * new area of the feature.
  4. Run a merge on the intersect output using ethanol plant unique ID as the merge attribute. Have a summary statistic that sums up the corn produced from all features merged. This will now give you corn produced inside your buffer radius for each plant.
  5. Using the summary statistic, recalculate the average yield attribute on the merge output, using the summed up corned produced divided by the area of the feature.
  6. Using the ethanol plant unique ID, join the merge output to the original ethanol plants. Calculate the average yield on the ethanol plant as equal to the average yield on the corresponding merge feature. Remove the join.
  7. Calculate the residual. This should be pretty large with your initial radius, but will shrink considerably with the next pass after you calculate the new radius.
  8. For only those plants whose residual is greater than your cutoff, recalculate the buffer radius. The new radius is (corn needed/(pi*average yield))^0.5
  9. Repeat steps 1 to 8 until all of your features have residuals smaller than your cutoff. If this takes more than 3-4 passes, you might want to consider increasing your cutoff, as, again, this is only a cartographic convention not a precise representation of the exact area used for ethanol production.

As I mentioned above, you might want to script or model steps 1-8, as you will repeat those several times. You can just as easily run the whole thing manually too though. Also, optionally, instead of using a residual in step 8, you could just always recalculate the radius for all features until you have an output from step 7 where all features have a satisfactory residual.

When you have reached the point that you are happy with the residuals, your buffer output from step 1 on the last pass will be the buffer you want to use for your map.

  • Hi, thanks for your thoughtful answer. I really appreciate all of your help. I wanted to let you know that I understand the math in theory, but the issue is I can not always find the average yield data. Some ethanol plants are on the border of several counties and due to the irregular shapes of the counties, it is difficult to assume what average yield is. Any tricks for letting the program do calculate for me? – Katherine Jul 27 '11 at 14:27
  • In step 3, you are using the average corn yield for each county separately. The intersect will create a new feature for each county separately that intersects the circular buffer around the plant. – blord-castillo Jul 27 '11 at 18:48


This Study using GIS for Ethanol has standardized a model so it can be scaleable. (might be overkill but raises good questions that might affect your current work-flow)

The Study can be used to evaluate ideal bio-ethanol plant sites according to 3 Scenarios:

1. Control scenario 2. Economic scenario 3. Environmental scenario


  • Thanks for the link. I don't think it is entirely relevant to what I want to do, but I appreciated learning more about the functionalities of arcmap. – Katherine Jul 27 '11 at 14:30

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.