Calculate Max Elevation Figures (Production Mapping)
摘要
Calculates Maximum Elevation Figures (MEF) for each polygon cell or quadrangle in the MEF Feature Layer. MEF values are the elevation of the highest natural or manufactured obstruction plus a vertical error and allowance. This sum is rounded to the next higher hundred-foot level. You use these values as labels for the MEF Feature Layer.
To derive the highest obstruction value, the tool uses terrain data from a digital elevation model (DEM) and vertical obstruction data from a point feature class. You can calculate MEF values for Joint Operations Graphic (JOG), Operational Navigation Chart (ONC), Tactical Pilotage Chart (TPC) grid cells, or any other polygon grid features.
用法
This tool calculates values in three integer fields in the MEF Feature Layer (in_mef_feat_layer). These fields must already exist in the MEF Feature Layer. One field will contain MEF values. The other two fields will contain maximum elevations from the Terrain Layer and Vertical Obstruction Feature Layer.
This tool will update null values to -32768. This flags values for quality control.
MEF values are used for labels on the MEF Feature Layer. Use the label expression at the end of this document to format MEF values for display.
-
The MEF Feature Layer must contain polygons.
The tool rounds the MEF values to the next 100 feet, unless it is already divisible by 100.
MEF calculation depends on the type of the highest vertical obstruction value in a quadrangle or cell. If the highest value originates from the Vertical Obstruction Feature Layer, MEF is calculated as the sum of the highest vertical obstruction value, the Vertical Obstruction Accuracy Value and the MEF Vertical Obstruction Allowance. If the highest value originates from the Terrain Layer, MEF is calculated as the sum of the highest terrain elevation value, MEF Vertical Obstruction Allowance, and the Terrain Accuracy Value.
语法
参数 | 说明 | 数据类型 |
in_mef_feat_layer | A polygon layer that contains the MEF grid and the three fields that will be updated by the tool. | Feature Layer |
in_mef_val_field | The in_mef_feat_layer field in which the tool writes MEF values. | Field |
in_max_vo_val_field | The in_mef_feat_layer field in which the tool writes maximum vertical obstruction values from in_vo_feat_layer. | Field |
in_max_dem_val_field | The in_mef_feat_layer field in which the tool writes maximum elevation values from in_terrain_layer. | Field |
in_mef_allowance |
A vertical allowance value added to each calculated MEF value. The value accounts for nonrepresented natural or manufactured features. The default is 200 feet. | Linear unit |
in_terrain_layer |
A point feature layer or DEM raster layer used to determine the terrain elevation. | Feature Layer;Mosaic Layer;Raster Layer |
in_point_field | The field that contains elevation values in in_point_layer. Use this parameter if in_point_layer is a feature layer. | Field |
in_terrain_accuracy |
A value that represents the accuracy of the terrain layer within a specified number of units. The default is 20 meters. | Linear unit |
in_vo_feat_layer |
The point layer that contains all the obstructions for the cells for which the MEF values are being calculated; this is generated from a Digital Vertical Obstruction File (DVOF). | Feature Layer |
in_vo_elev_field |
The field in the vertical obstruction feature layer that contains the elevation values for each obstruction, which is usually the Height Above Mean Sea Level (HEIGHTAMSL). | Field |
in_vo_accuracy |
A value that represents the accuracy of the vertical obstruction feature layer within a specified number of units. The default is 20 meters. | Linear unit |
代码实例
The following Python window script demonstrates how to use the CalculateMaxElevationFigures tool.
# function to add mef fields
def addField(layer,fieldname):
# loop through all fields that match input fieldname of type LONG
fieldNames = [f.name for f in arcpy.ListFields(layer,fieldname,"LONG")]
if fieldNames.count(fieldname) < 1:
# field does not exist - create it
arcpy.AddField_management(layer,fieldname,"LONG")
import arcpy
# set the current workspace
arcpy.env.workspace = "C:/data/Austin.gdb"
arcpy.env.addOutputsToMap=True
# local variables
elevations="TopographicMap/ElevationP"
mef = "AOI"
mefLayer="mefLayer"
terrainLayer = "terrainLayer"
allowance="200 Feet"
accuracy="20 Feet"
# field names
mefval = "mefvalue"
mefvo = "mefMaxVoValue"
mefter = "mefTerrain"
pointfld ="Elevation"
# make the mef feature layer
arcpy.MakeFeatureLayer_management(mef, mefLayer)
# make the terrain feature layer
arcpy.MakeFeatureLayer_management(elevations, terrainLayer)
# check for mef fields in mefLayer
addField(mefLayer,mefval)
addField(mefLayer,mefvo)
addField(mefLayer,mefter)
# exec Calculate Max Elevation Figures
arcpy.CalculateMaxElevationFigures_production(mefLayer,mefval,mefvo,mefter,allowance,terrainLayer,pointfld,accuracy,terrainLayer,pointfld)
print arcpy.GetMessages()
The following ArcGIS label expression can be used to label your maximum elevation figures in the MEF feature layer. To use this label expression:
- Execute the Calculate MEF tool on your MEF feature layer.
- Right-click the MEF feature layer in the ArcMap table of contents and click Properties.
The Layer Properties dialog box appears.
- Click the Labels tab.
- Click Expression.
- Load the expression listed below into the Expression window. Make sure you change all [MEF_VALUE] occurrences to the name of your in_mef_val_field.
- Click Verify to validate the label expression.
- Click OK to close the Label Expression dialog box.
- Check on the Label features in this layer check box in the Labels tab of the Layer Properties dialog box.
- Click OK to close the Layer Properties dialog box.
Function FindLabel ( [MEF_VALUE] ) Dim l, h, s, f, z, j, len2, lenfin s = [MEF_VALUE] len2 = len(s) if len2 < 4 then l = mid(s, 1, 1) z = "<FNT name='Arial' size='30'>" & "0" & "</FNT>" j = "<SUP><FNT name='Arial' size='30'>" & l & "</FNT></SUP>" Findlabel = z & j elseif len2 = 4 then l = mid(s, 1, 1) h = mid(s, 2, 1) z = "<FNT name='Arial' size='30'>" & l & "</FNT>" j = "<SUP><FNT name='Arial' size='30'>" & h & "</FNT></SUP>" Findlabel = Z & j else l = mid(s, 1, 2) h = mid(s, 3, 1) z = "<FNT name='Arial' size='30'>" & l & "</FNT>" j = "<SUP><FNT name='Arial' size='30'>" & h & "</FNT></SUP>" Findlabel = Z & j end if End Function