|
|
The Terrain Analysis System can be used interactively through its graphical user
interface to apply various transforms and processing primitives to extract
features from elevation data. The programmatical use of these primitives via an
expert system knowledge base provides a powerful means of feature recognition.
We have developed an approach similar to image pattern recognition where
applicable features are "segmented" into collections of regions. These
collections of regions are then "interpreted" as terrain features
based on region attributes and geometry.
The landform knowledge bases (KB's) are written in the JESS rule language and
are executed by the JESS Inference Engine. The landform KB's implement the
landform segmentation and interpretation strategies for each type of landform.
This consists of applying the various drainage and digital terrain elevation
processing primitives to generate attributed region objects. The rules of the KB
are then used to infer particular landform types from the collection of objects,
their attributes and the results of other landform KB's.
Regional Knowledge Base
A regional level model is defined for each physiographic unit. The regional
model establishes the landforms expected for the particular physiographic unit,
the terrain attribute intervals to be used by the landform models and determines
the regional level segmentation strategy based largely on landform dependency
relationships. More specific geometric modeling is done in the individual
landform knowledge bases.
Basin and Range Regional KB
The major landforms to be expected in the physiographic unit
consisting of the Southern Subdivision are:
mountains, hills/outliers, mountain valleys, peaks, ridges,
gullys, valleys, valley floors, alluvial fans, playas, washes.
The model for the regional mapping strategy for this
physiographic unit consists of the following (lookFor is a function that
activates the specified landform KB):
1. lookFor(mountains)
IF (mountains found)
THEN lookFor(peaks)
IF (mountains found)
THEN lookFor(ridges)
IF (mountains found)
THEN lookFor(gullys)
IF (mountains found)
THEN lookFor(mountainValleys)
IF (mountains found)
THEN lookFor(outliers)
2. lookFor(valleys)
-
IF (valleys found)
THEN lookFor(valleyFloors)
-
IF (valleys found)
THEN lookFor(plains)
-
IF (valleyFloors found)
OR (plains found)
THEN lookFor(playas)
-
IF (valleys found)
AND (mountains found)
THEN lookFor(alluvialFans)
-
IF (valleys found)
THEN lookFor(washes)
-
IF (outliers found)
AND (valleys found)
THEN lookFor(inselbergs)
|
|
Landform Knowledge Bases
A model is developed for each landform in the form of a
knowledge base. These models have been developed such that they can be
reconfigured according to physiographic area. This is done using a set of
physiographic dependant variables. KB's have been developed for landform
features such as mountains, mountain valleys, ridges, peaks, gullys,
hills, inselbergs, outliers, large valleys, valley floors, plains, alluvial
fans, washes, playas. KB's can be developed for any physiographic province
that has good elevation data.
The following paragraphs present two examples of the landform models
in detail. In the descriptions below the bolded words are action functions
and variables are indicated in brackets.
Mountain Knowledge Base
Mountains have ridge, peak and pass morphometric
features. They also have steep sloped channel features. A minimum percentage
of it's total area must be curved if it is not one of the other features.
Mountains have a minimum area and minimum height (determined from object min
and max elevations). Mountain objects may be eroded by a small number of pixels to
facilitate object separation.
Segmentation
-
IF (segmentation started)
THEN compute morphometric
feature map using [mountainCurvature, mountainWindowSize, mountainSlope]
-
IF (mountains haveCurveFeature)
THEN threshold curve
feature regions from feature map into segmentObject map.
-
IF (mountains havePeakFeature)
THEN threshold peak
feature regions from feature map into segmentObject map.
-
IF (mountains haveRidgeFeature)
THEN threshold ridge
feature regions from feature map into segmentObject map.
-
IF (mountains havePassFeature)
THEN threshold pass
feature regions from feature map into segmentObject map.
-
IF (mountains haveChannels)
THEN
-
compute slope map using [moutainChannelGradientWindow].
-
threshold slope map for slopes above [mountainChannelMinSlope].
-
mask feature map with slope map thus retaining
high sloped features.
-
threshold channel feature regions from feature
map to segmentObject map.
-
IF (segmentation completed)
THEN
-
delineate regions in segmentObject map
-
erode each region by [mountainErrosionPixels]
pixels.
-
for each delineated region generate a
mountainSegmentObject with the following characteristics:
-
area
-
maxValue (in region)
-
minValue
-
curvaturePercentage
Interpretation
-
for each mountainSegmentObject:
IF (area < mountainMinArea)
THEN delete
mountainSegmentObject.
-
for each remaining mountainSegmentObject:
IF ((maxValue-minValue) <mountainMinHeight)
THEN
delete mountainSegmentObject.
-
for each remaining mountainSegmentObject:
IF (curvaturePercentage <
mountainMinPercentLowCurv)
THEN delete mountainSegementObject.
-
IF (interpretation completed)
THEN
-
redelineate all remaining regions in
segmentObjectMap into landformObjectMap
-
for each region generate a mountainLandformObject
with computed object properties.
|
|
Alluvial Fan Knowledge Base
Fans are defined to be regions that have negative plan
curvature. These shapes are constrained to lie within mountain alluvial
slopes and have apexes that are adjacent to mountains.
Segmentation
-
IF (segmentation started)
THEN low pass filter elevation data by [alluvialFanFilter] number of passes
-
IF (segmentation started)
THEN compute plan profile
curvatureFeatureMap using [alluvialFanCurv, alluvialFanGradWindow,
alluvialFanSlope]
-
IF (alluvialFans haveNegativePlanProfile)
THEN
threshold feature map for values between [alluvialFanCurvLo] and [alluvialFanCurvHi]
-
IF (alluvialFansOverlap mountainHillAlluvialArea)
THEN
-
load mountainLandformMap and hillLandformMap
-
mask curvatureFeatureMap with landformMaps to eliminate mountain and hill regions
-
compute planeFeatureMap of all features using [alluvialAreaCurv,
alluvialAreaWindow, alluvialAreaSlope]
-
threshold planeFeatureMap for the plane feature
(this will be all of the areas having lvery ow curvature and slope)
-
mask curvatureFeatureMap with planeFeatureMap to eliminate all plane areas. This should leave only the low sloping
and low curvature regions representative of alluvial deposit regions.
IF (segmentation completed)
THEN
-
delineate regions in curvatureFeatureMap into
segmentObjectMap
-
for each delineated region generate an
alluvialFanSegmentObject with the following characteristics:
-
area
-
minValue (these are elevation values)
-
maxValue
Interpretation
-
for each alluvialFanSegmentObject:
IF (area < alluviaFanMinArea)
THEN delete alluvialFanSegmentObject
-
for each remaining alluvialFanSegmentObject:
-
threshold upper 20% of object's elevation points
in segmentObjectMap into apexMap
-
generate fanApexObject with apexRegionID and
fanSegmentID
-
IF (fanApexesAdjacentTo mountains)
THEN
-
load mountainLandformMap
-
delineate mountainLandformMap
-
dilate mountainLandformMap by [alluviaFansDistance]
pixels
-
for each fanApexObject(apexRegionID, fanSegmentID):
IF (fanApexesAdjacentTo mountains)
AND (fanApextObject{RegionID}
DOES_NOT_OVERLAP
mountainLandformMap)
THEN delete segmentObject with
fanSegmentID from segmentObjectMap
-
IF (interpretation completed)
THEN
-
redelineate all remaining regions in
segmentObjectMap into landformObjectMap
-
for each region generate an
alluvialFanLandformObject with computed object properties.
|