用于驱动ArcMap
mapactionpy-arcmap的Python项目详细描述
mapchef
根据菜谱配置文件中的配方和产品名称将地理空间数据添加到Arcmap MXD文件中。
先决条件
python和arcpy
C:\Python27\ArcGIS10.6\python.exe
配置文件
食谱文件
mapCookbook.json文件是一个静态配置文件,其中包含每个映射产品的“配方”。
这个示例食谱只包含一个产品:Country Overview
。
{
"recipes": [
{
"product": "Country Overview",
"classification": "Core",
"layers": [
"Settlements - Places",
"Provinces",
"Cartography - Feather",
"Transport - Airports",
"Transport - Seaports",
"Elevation - Coastline",
"Borders - Admin 0",
"Borders - Admin 1",
"Transport - Rail",
"Transport - Roads",
"Physical - Lakes",
"Physical - Rivers",
"Admin - Ad 1 Polygon",
"Admin 0 - Affected Country",
"Elevation - DEM",
"Physical - Sea",
"Location Map - Admin 0 Polygon"
]
}
]
}
“layers
”数组中的层名称必须与指定层目录中的层文件(.lyr
)相关。
layerconfig文件
层配置文件(layerProperties.json)是一个静态文件,定义如何添加特定层。
{
"MapFrame": "Main Map",
"LayerGroup": "Elevation",
"LayerName": "Physical - Sea - py",
"SourceFolder": "220_phys",
"RegExp": "^[a-z]{3}_phys_ocn_py_(.*?).shp$",
"DefinitionQuery": "None",
"Display": "Yes"
},
字段
# | Field | Description |
---|---|---|
1 | ^{ | Name of the Map Frame that the layer is to be added to |
2 | ^{ | Layer Group (:warning: NOT CURRENTLY IN USE) |
3 | ^{ | Name of the Layer. This must correlate with the ^{ |
4 | ^{ | Folder under the <root>^{ |
5 | ^{ | Regular Expression. Used when selecting files to display |
6 | ^{ | Definition Query |
7 | ^{ | Shows if set to 'Yes' |
进度
# | Tested | MapFrame | LayerGroup | LayerName | SourceFolder | RegExp | DefinitionQuery | Display | |
---|---|---|---|---|---|---|---|---|---|
1 | :heavy_check_mark: | Main Map | None | Settlements - Places | 229_stle | ^[a-z]{3}stle_stl_pt(.?)_(.?)([phm][phm])(.*?).shp$ | "place IN ('national_capital', 'city')" | Yes | |
2 | :heavy_check_mark: | Main Map | Transport Points | Transport - Seaports | 232_tran | ^[a-z]{3}tran_sea_pt(.?)_(.?)([phm][phm])(.*?).shp$ | Yes | ||
3 | :heavy_check_mark: | Main Map | Admin - lines | Elevation - Coastline | 211_elev | ^[a-z]{3}elev_cst_ln(.?)_(.?)_([phm][phm]).shp$ | Yes | ||
4 | :heavy_check_mark: | Main Map | Provinces | Provinces | 202_admn | ^[a-z]{3}admn_ad1_py(.?)_(.?)_([phm][phm]).shp$ | Yes | ||
5 | :heavy_check_mark: | Main Map | Admin Lines | Borders - Admin 0 | 202_admn | ^[a-z]{3}admn_ad0_ln(.?)_(.?)_([phm][phm]).shp$ | Yes | ||
6 | :heavy_check_mark: | Main Map | Admin Lines | Borders - Admin 1 | 202_admn | ^[a-z]{3}admn_ad1_ln(.?)_(.?)_([phm][phm]).shp$ | Yes | ||
7 | :heavy_check_mark: | Location Map | Admin Lines | Borders - Admin 2 | 202_admn | ^[a-z]{3}admn_ad2_ln(.?)_(.?)_([phm][phm]).shp$ | Yes | ||
8 | :heavy_check_mark: | Main Map | Transport Lines | Transport - Rail | 232_tran | ^[a-z]{3}tran_rrd_ln(.?)_(.?)_([phm][phm]).shp$ | Yes | ||
9 | :heavy_check_mark: | Main Map | Transport Points | Transport - Airports | 232_tran | ^[a-z]{3}tran_air_pt(.?)_(.?)([phm][phm])(.*?).shp$ | Yes | ||
10 | :heavy_check_mark: | Main Map | None | Cartography - Feather | 207_carto | ^[a-z]{3}carto_fea_py(.?)_(.?)_pp.shp$ | Yes | ||
11 | :heavy_check_mark: | Main Map | Physical | Physical - Lakes | 221_phys | ^[a-z]{3}phys_lak_py(.?)_(.?)_([phm][phm]).shp$ | Yes | ||
12 | :heavy_check_mark: | Main Map | Physical | Physical - Rivers | 221_phys | ^[a-z]{3}phys_riv_ln(.?)_(.?)_([phm][phm]).shp$ | Yes | ||
13 | :heavy_check_mark: | Main Map | Admin Polygons | Admin - Ad 1 Polygon | 202_admn | ^[a-z]{3}admn_ad1_py(.*?).shp$ | Yes | ||
14 | :heavy_check_mark: | Main Map | Admin Polygons | Admin - Ad 2 Polygon | 202_admn | ^[a-z]{3}admn_ad2_py(.*?).shp$ | Yes | ||
15 | :heavy_check_mark: | Main Map | Admin Polygons | Admin - Ad 3 Polygon | 202_admn | ^[a-z]{3}admn_ad3_py(.*?).shp$ | Yes | ||
16 | :heavy_check_mark: | Main Map | Admin Polygons | Admin - Ad 4 Polygon | 202_admn | ^[a-z]{3}admn_ad4_py(.*?).shp$ | Yes | ||
17 | :heavy_check_mark: | Main Map | Admin Polygons | Admin 0 - Affected Country | 202_admn | ^[a-z]{3}admn_ad0_py(.?)_(.?)_([phm][phm]).shp$ | """ADM0_NAME"" = '{COUNTRY_NAME}'" | Yes | |
18 | :heavy_check_mark: | Main Map | Admin Polygons | Admin 0 - Surrounding Country | 202_admn | ^[a-z]{3}admn_ad0_py(.?)_(.?)_([phm][phm]).shp$ | "NOT ""ADM0_NAME"" = '{COUNTRY_NAME}'" | Yes | |
19 | :heavy_check_mark: | Main Map | Elevation | Physical - Sea | 221_phys | ^[a-z]{3}phys_sea_py(.?)_(.?)_([phm][phm]).shp$ | Yes | ||
20 | :heavy_check_mark: | Main Map | Imagery | Imagery - Imagery | 216_imgy | ^[a-z]{3}img_aer_ras_su_unknown_mp_tile\d*.TIF$ | Yes | ||
21 | Main Map | Elevation | Elevation - DEM | 211_elev | ^Rasters.gdb/[a-z]{3}elev_dem_ras(.*?)$ | Yes | |||
22 | :heavy_check_mark: | Main Map | Elevation | Elevation - DEM | 211_elev | ^[a-z]{3}elev_dem_ras(.*?).tif$ | Yes | ||
23 | :heavy_check_mark: | Main Map | Elevation | Elevation - Hillshade | 211_elev | ^[a-z]{3}elev_hsh_ras(.?)_(.?)([phm][phm])((.+)).tif$ | Yes | ||
24 | :heavy_check_mark: | Main Map | Elevation | Elevation - Curvature | 211_elev | ^[a-z]{3}elev_cur_ras(.?)_(.?)([phm][phm])((.+)).tif$ | Yes | ||
25 | :heavy_check_mark: | Main Map | Transport Lines | Transport - Roads | 232_tran | ^[a-z]{3}tran_rds_ln(.?)_(.?)_([phm][phm]).shp$ | highway = 'primary' | Yes | |
26 | :heavy_check_mark: | Main Map | Population | Population | 223_popu | ^[a-z]{3}popu_pop_ras(.?)_(.?)_([phm][phm]).tif$ | Yes | ||
27 | Main Map | Legend | Legend - Roads | 232_tran | ^[a-z]{3}tran_rds_ln(.?)_(.?)([phm][phm])((.+)) | No | |||
28 | Main Map | Legend | Legend - Water | 221_phys | tbd | No | |||
29 | :heavy_check_mark: | Location Map | None | Location Map - Admin 0 Polygon | 202_admn | ^[a-z]{3}admn_ad0_py(.?)_(.?)_([phm][phm]).shp$ | Yes | ||
30 | :heavy_check_mark: | Location Map | None | Location - Surrounding Country | 202_admn | ^[a-z]{3}admn_ad0_py(.?)_(.?)([phm][phm])((.+)) | Yes |
执行
参数
# | Field | Description |
---|---|---|
1 | ```--cookbook`` | Path to the cookbook ^{ |
2 | ^{ | Path to the ^{ |
3 | ^{ | Path to the Crash Move Folder root. |
4 | ^{ | Path to the ^{ |
5 | ^{ | Path to the Layer File directory. |
6 | ^{ | Name of product (must correlate with a product in the cookbook file). |
7 | ^{ | Name of country. |
示例
C:\Python27\ArcGIS10.6\python.exe main.py \
--cookbook "D:\MapAction\2019-06-25 - Automation - El Salvador\GIS\3_Mapping\31_Resources\316_Automation\mapCookbook.json" \
--layerConfig "C:\Users\steve\Source\Repos\mapactionpy_arcmap\poc\MapChef\Config\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\38_Initial_Maps_Layer_Files\All" \
--product "Country Overview" \
--country "El Salvador"
结果
生成了这个Country Overview
映射:
文件类型
当前实现支持以下地理空间文件类型:
- 形状文件(.shp)
- tif文件(.tif)
- 文件地理数据库(.gdb)
包装
python setup.py bdist_wheel
安装
为开发目的安装: 克隆github repo,然后从本地克隆的根目录进行克隆:
python -m pip install --user -e .
为非开发目的安装: 克隆github repo,然后从本地克隆的根目录进行克隆:
python -m pip install .
待办事项: []通过PYPI启用安装。
与MapAction工具栏集成
要将此MapActionPy_ArcMap
模块与MapAction工具栏集成,需要执行以下步骤:
:information\u source:https://github.com/mapaction/mapaction-toolbox/tree/automation处的automation
分支正在开发“自动化”外接程序:
- 来自
\GIS\3_Mapping\38_Initial_Maps_Layer_Files\*
目录下的所有层.lyr
文件的副本被复制到位于以下位置的崩溃移动文件夹下名为All
的文件夹中:\GIS\3_Mapping\38_Initial_Maps_Layer_Files\All
- 图层属性文件layerProperties.json已复制到以下位置的崩溃移动文件夹下的新目录:
\GIS\3_Mapping\31_Resources\316_Automation
- 将Cookbook文件mapCookbook.json复制到以下位置的崩溃移动文件夹下的目录:
\GIS\3_Mapping\31_Resources\316_Automation
作者
- steve hurst-https://github.com/mapaction/mapactionpy_arcmap