Calculate Maximum 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.
The 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.
To use this tool in a stand-alone script, check out a Production Mapping foundation license: arcpy.CheckOutExtension("Foundation").
A polygon layer that contains the MEF grid and the three fields that will be updated by the tool.
The in_mef_feat_layer field in which the tool writes MEF values.
The in_mef_feat_layer field in which the tool writes maximum vertical obstruction values from in_vo_feat_layer.
The in_mef_feat_layer field in which the tool writes maximum elevation values from in_terrain_layer.
A vertical allowance value added to each calculated MEF value. The value accounts for nonrepresented natural or manufactured features. The default is 200 feet.
A point feature layer or DEM raster layer used to determine the terrain elevation.
|Feature Layer;Raster Layer|
The field that contains elevation values in in_point_layer. Use this parameter if in_point_layer is a feature layer.
A value that represents the accuracy of the terrain layer within a specified number of units. The default is 20 meters.
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).
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).
A value that represents the accuracy of the vertical obstruction feature layer within a specified number of units. The default is 20 meters.
This ArcGIS Python window script uses grid and elevation data from production mapping sample datasets. To use it, change the paths to the sample data and load the script into an empty ArcMap document.
import arcpy # Set up paths to the Production Mapping Sample data demdd = "C:\\data\\Foundation_Data_Tutorials\\Reference\\DEM\\demdd" ElevP = "C:\\data\\Foundation_Data_Tutorials\\PLTSDatabase\\GDB\\SoCal.mdb\\SoCal\\ElevP" SC_Index = "C:\\data\\Foundation_Data_Tutorials\\Reference\\Reference.gdb\\SC_Index" # These will be the feature layers ElevP_Layer = "ElevP_Layer" MakeRas_demdd1 = "MakeRas_demdd2" SC_Index_Layer = "SC_Index_Layer" # Make Raster Layer from demdd arcpy.MakeRasterLayer_management(demdd, MakeRas_demdd1, "", "-117.39358183757 32.4865905390336 -116.856162842319 33.0136745536059", "") # Make Feature Layer from SC_index arcpy.MakeFeatureLayer_management(SC_Index, SC_Index_Layer) # Make Feature Layer from ElevP arcpy.MakeFeatureLayer_management(ElevP, ElevP_Layer) arcpy.ImportToolbox(r'C:\Program Files\ArcGIS\Desktop10.0\ArcToolbox\Toolboxes\Production Mapping Tools.tbx') # Calculate Max Elevation Figures - Note the mefvalue, mefMaxVoValue, and mefTerrainField fields must be LONGs and exist in SC_index arcpy.CalculateMaxElevationFigures_production(SC_Index_Layer, "mefvalue", "mefMaxVoValue", "mefTerrainField", "200 Feet", MakeRas_demdd1, "", "20 Feet", ElevP_Layer, "zv2", "20 Feet")
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