
Security News
Meet Socket at Black Hat and DEF CON 2025 in Las Vegas
Meet Socket at Black Hat & DEF CON 2025 for 1:1s, insider security talks at Allegiant Stadium, and a private dinner with top minds in software supply chain security.
Adds geospatial data to an ArcMap MXD file based on a recipe from a cookbook configuration file and a product name.
Python v2.7 and ArcPy v10.6.1
C:\Python27\ArcGIS10.6\python.exe
ArcMap MapAction templates and Crash Move Folder as setout here https://github.com/mapaction/default-crash-move-folder
For the Crash Move Folder to have been populated by the Data Scramble process.
To install the lastest stable release via PyPi:
pip install mapactionpy-controller
pip install mapactionpy-arcmap
To install a specific version for testing see the relevant commandline from here: https://pypi.org/project/mapactionpy-arcmap/#history
In additiona to the commandline the MapChef tool can also optionally be driven from an ArcMap Addin. To install this:
https://github.com/mapaction/default-crash-move-folder/blob/master/20YYiso3nn
In order to integrate this MapActionPy_ArcMap
module with the MapAction Toolbar, the following steps need to be carried out:
The mapCookbook.json file is a static configuration file which contains "recipes" for each map product, e.g.:
{
"recipes":[
{
"mapnumber":"MA001",
"category":"Reference",
"product":"Country Overview with Admin 1 Boundaries & P-Codes",
"export": true,
"layers":[
"mainmap-s0-pt-settlements",
"mainmap-s0-py-surroundingcountries",
"mainmap-s0-ln-admin1",
"mainmap-s0-ln-coastline",
"mainmap-s0-py-feather",
"mainmap-s0-py-surroundingcountries",
"mainmap-s0-py-admin1",
"mainmap-s0-py-sea",
"locationmap-s0-ln-admin1",
"locationmap-s0-ln-affectedcountry",
"locationmap-s0-ln-coastline",
"locationmap-s0-py-surroundingcountries"
]
},
...
}
]
}
The layer names in the "layers
" array MUST correlate to layer files (.lyr
) in the specified layer directory:
[GIS/3_Mapping/31_Resources/312_Layer_files] (https://github.com/mapaction/default-crash-move-folder/tree/master/20YYiso3nn/GIS/3_Mapping/31_Resources/312_Layer_files)
The Layer Config file (layerProperties.json) is a static file which defines how to add a particular layer.
"MapFrame": "Main Map",
"LayerName": "mainmap-s0-pt-settlements",
"RegExp": "^[a-z]{3}_stle_stl_pt_(.*?)_(.*?)_([phm][phm])(.*?).shp$",
"DefinitionQuery": "place IN ('national_capital', 'city', 'capital')",
"Display": true,
"AddToLegend": true,
"LabelClasses": [
{
"className": "National Capital",
"expression": "[name]",
"SQLQuery": "(\"place\" = 'national_capital')"
},
{
"className": "Admin 1 Capital",
"expression": "[name]",
"SQLQuery": "(\"place\" = 'city')"
}
]
},
# | Field | Description |
---|---|---|
1 | MapFrame | Name of the Map Frame that the layer is to be added to |
2 | LayerName | Name of the Layer. This must correlate with the names of the layers in the layers field in the mapCookbook.json file. |
3 | RegExp | Regular Expression. Used when selecting files to display |
4 | DefinitionQuery | Definition Query |
5 | AddToLegend | Includes this layer in the legend if set to true |
6 | Display | Shows if set to true |
7 | LabelClasses | Details for displaying labels |
# | Icon | Meaning |
---|---|---|
1 | :heavy_check_mark: | Must always be supplied |
2 | :zap: | If not supplied, this parameter can be inferred if the cmf_description.json and the event_description.json files are in he root of the Crash Move Folder. |
# | Field | Mandatory | Description |
---|---|---|---|
1 | --cookbook | :zap: | Path to the cookbook mapCookbook.json file. |
2 | --layerConfig | :zap: | Path to the layerProperties.json file. |
3 | --cmf | :heavy_check_mark: | Path to the Crash Move Folder root. |
4 | --template | :zap: | Path to the MXD file. |
5 | --product | :heavy_check_mark: | Name of product (must correlate with a product in the cookbook file). |
6 | --country | :zap: | Name of country. |
For a specified MXD using the --template
parameter:
--cookbook "D:\MapAction\2019-06-25 - Automation - El Salvador\GIS\3_Mapping\31_Resources\316_Automation\mapCookbook.json" \
--layerConfig "D:\MapAction\2019-06-25 - Automation - El Salvador\GIS\3_Mapping\31_Resources\316_Automation\layerProperties.json" \
--cmf "D:\MapAction\2019-06-25 - Automation - El Salvador" \
--template "D:\MapAction\2019-06-25 - Automation - El Salvador\GIS\3_Mapping\32_MXD_Templates\arcgis_10_2\MapAction\01 Reference mapping\arcgis_10_2_ma000_reference_landscape_bottom_DEV.mxd" \
--layerDirectory "D:\MapAction\2019-06-25 - Automation - El Salvador\GIS\3_Mapping\31_Resources\312_Layer_files" \
--product "Country Overview with Admin 1 Boundaries & P-Codes" \
--country "El Salvador"
This Country Overview
map was generated:
--cookbook "D:\MapAction\2019-06-25 - Automation - El Salvador\GIS\3_Mapping\31_Resources\316_Automation\mapCookbook.json" \
--layerConfig "D:\MapAction\2019-06-25 - Automation - El Salvador\GIS\3_Mapping\31_Resources\316_Automation\layerProperties.json" \
--cmf "D:\MapAction\2019-06-25 - Automation - El Salvador" \
--layerDirectory "D:\MapAction\2019-06-25 - Automation - El Salvador\GIS\3_Mapping\31_Resources\312_Layer_files" \
--product "Country Overview with Admin 1 Boundaries & P-Codes" \
--country "El Salvador"
If an MXD is not supplied with the --template
parameter as above, then the tool will decide the orientation of the map (landscape or portrait) and it will take a copy of the appropriate MXD from:
<crash move folder>\GIS\3_Mapping\32_MXD_Templates\arcgis_10_6\
Using the mapnumber
from the mapCookbook.json file, the Automation Tool will create a copy of the MXD under the following directory:
<crash move folder>\GIS\3_Mapping\33_MXD_Maps\
<map number>
For example:
D:\MapAction\2019-06-25 - Automation - El Salvador\GIS\3_Mapping\33_MXD_Maps\MA001
The MXD name will be <map number>_
<product name>.mxd
... (but with any characters removed that upset Windows Explorer)
For example:
MA001_country-overview-with-admin-1-boundaries-p-codes.mxd
C:\Python27\ArcGIS10.6\python.exe -m mapactionpy_arcmap.arcmap_runner \
--cmf "D:\MapAction\2019-06-25 - Automation - El Salvador" \
--product "Country Overview with Admin 1 Boundaries & P-Codes"
In this example, the following parameters were not provided:
--cookbook
--layerConfig
--layerDirectory
--country
The values for these parameters were inferred from the event_description.json
and the cmf_description.json
files.
These files were provided at the root of the Crash Move Folder, i.e. the directory supplied by the --cmf
parameter.
FAQs
Used to drive ArcMap
We found that mapactionpy-arcmap demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Meet Socket at Black Hat & DEF CON 2025 for 1:1s, insider security talks at Allegiant Stadium, and a private dinner with top minds in software supply chain security.
Security News
CAI is a new open source AI framework that automates penetration testing tasks like scanning and exploitation up to 3,600× faster than humans.
Security News
Deno 2.4 brings back bundling, improves dependency updates and telemetry, and makes the runtime more practical for real-world JavaScript projects.