Using ArcGIS Desktop 10.1
We recently had building footprint polygons mapped for all structures in our community.
Now, we'd like to identify which flood zone each building rests within.
This is a rather simple spatial join task for those building entirely within a certain flood zone. However, the difficulty we're encountering occurs when a flood zone boundary line transects a building to any degree.
The floodplain rule is ... if a flood zone boundary line touches a building to any degree, then that building is considered entirely within the higher regulated flood zone.
In the attached example, flood zones AE-6 & AE-7 are on either side of the black flood zone boundary line.
Of these two flood zones, the AE-7 flood zone is the higher regulated.
Six buildings (shown as selected) are at least partially transected by the flood zone boundary line, and thus should all be identified as resting within the AE-7 flood zone.
What's the best way to have buildings straddling any flood zone boundary line to be identified as being in the higher regulated flood zone?
Ideally, one task would:
Solved! Go to Solution.
One approach would be to parse out all your Flood Zones into separate Feature Classes, add a field to each like "Floodzone", then calculate it with the appropriate floodzone designation (like "AE-6"). Then do a Spatial Join of each feature class back to the Building Footprints. Finally, once all the Flood feature classes are joined, do a compound query using the Code Block in Field Calculator (see below).
ArcGIS Help (10.2, 10.2.1, and 10.2.2) - Calculate Field examples - scroll down to the sections "Calculate fields using logic with Python" and "Calculate fields using logic with VBScript". Decide which scripting method you'd prefer to use and reconfigure the examples to your fieldnames and conditions. When running it, be sure to use the appropriate Parser setting (VBScript or Python).
Partial code example (VBScript):
If [Floodzone.AE6] = "AE6" and [Floodzone.AE7] = "AE7" Then
[FinalFloodzone] = "AE7"
You will need to build out all the hierarchy logic as part of the coding.
Chris Donohue, GISP
One approach would be to parse out all your Flood Zones into separate Feature Classes, add a field to each like "Floodzone", then calculate it with the appropriate floodzone designation (like "AE-6"). Then do a Spatial Join of each feature class back to the Building Footprints. Finally, once all the Flood feature classes are joined, do a compound query using the Code Block in Field Calculator (see below).
ArcGIS Help (10.2, 10.2.1, and 10.2.2) - Calculate Field examples - scroll down to the sections "Calculate fields using logic with Python" and "Calculate fields using logic with VBScript". Decide which scripting method you'd prefer to use and reconfigure the examples to your fieldnames and conditions. When running it, be sure to use the appropriate Parser setting (VBScript or Python).
Partial code example (VBScript):
If [Floodzone.AE6] = "AE6" and [Floodzone.AE7] = "AE7" Then
[FinalFloodzone] = "AE7"
You will need to build out all the hierarchy logic as part of the coding.
Chris Donohue, GISP
Hmm... so using the "Intersect" match option within the spatial join tool, I could identify just those buildings where the boundary line intersects the building, then use the Calc. Field to assign the appropriate flood zone to those buildings that are selected.
That sounds like it would work.
Thanks