Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I am attempting to do a conditional reclassification of an NLCD land-use raster.

I specifically want to reclassify all developed areas (classifications 22,23,24) that are near a road (classification 21) into distinct new classes: "developed land near road".

My workflow so far using ArcMap has been:

  1. Extract the road class into a new raster using "Extract by Attributes"
  2. Convert that raster to point using "Raster to Point"
  3. Buffer around those points using "Buffer"
  4. Reconvert the resulting polygon back to a raster using "Polygon to Raster." This file has a single value for being within distance of a road and NA's otherwise/
  5. ...
  6. profit!

So step 5 is where I have trouble. I need to do some sort of a conditional reclassification on each of the 3 housing classes. In raster calculator I think I worked out that it needs to be of the form:

Con(IsNull("buff1_21_Buf60Rast"),"lu_1.asc",Diff("buff2_21_Buf30Rast","lu_1.asc"))

I'm suspecting that I will need to run it sequentially for each of the 3 housing values. But I'm not really sure how or which of the logical math operators to use.

Thoughts?

share|improve this question
add comment

1 Answer 1

up vote 4 down vote accepted

Keep the entire operation in raster, no need to convert to/from vector.

This uses ArcGIS 10 raster calculator syntax and assumes that your minimum distance is 50 "units" and your output landuse class is "234":

Con(InList("landuse",[22,23,24]) * EucDistance(Con("landuse" == 21,1), 50), 1)

This will give you a single value of 1 where landuse is 22,23 or 24 within 50 units of road (21) and NoData everywhere else. You can then combine that with your original landuse with something like:

Con(IsNull("near road raster"), "landuse", 234)

You could probably combine that into a single step, but I didn't try.

Note: ArcGIS <= 9.3x syntax will likely be different. For example, I remember that Workstation GRID and older Spatial Analyst syntax is "IN {22, 23,24}" instead of "InList(22,23,24)"

Edit: And you can do it in one hit with:

Con(IsNull(InList("landuse",[22,23,24]) * EucDistance(Con("landuse" == 21,1), 50)), "landuse",234)
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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