用于驱动ArcMap

mapactionpy-arcmap的Python项目详细描述


mapchef

主分支Build StatusCoverage Status

根据菜谱配置文件中的配方和产品名称将地理空间数据添加到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"
    },

字段

#FieldDescription
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 ^{} field in the ^{} file.
4^{}Folder under the <root>^{} directory
5^{}Regular Expression. Used when selecting files to display
6^{}Definition Query
7^{}Shows if set to 'Yes'
进度
#TestedMapFrameLayerGroupLayerNameSourceFolderRegExpDefinitionQueryDisplay
1:heavy_check_mark:Main MapNoneSettlements - Places229_stle^[a-z]{3}stle_stl_pt(.?)_(.?)([phm][phm])(.*?).shp$"place IN ('national_capital', 'city')"Yes
2:heavy_check_mark:Main MapTransport PointsTransport - Seaports232_tran^[a-z]{3}tran_sea_pt(.?)_(.?)([phm][phm])(.*?).shp$Yes
3:heavy_check_mark:Main MapAdmin - linesElevation - Coastline211_elev^[a-z]{3}elev_cst_ln(.?)_(.?)_([phm][phm]).shp$Yes
4:heavy_check_mark:Main MapProvincesProvinces202_admn^[a-z]{3}admn_ad1_py(.?)_(.?)_([phm][phm]).shp$Yes
5:heavy_check_mark:Main MapAdmin LinesBorders - Admin 0202_admn^[a-z]{3}admn_ad0_ln(.?)_(.?)_([phm][phm]).shp$Yes
6:heavy_check_mark:Main MapAdmin LinesBorders - Admin 1202_admn^[a-z]{3}admn_ad1_ln(.?)_(.?)_([phm][phm]).shp$Yes
7:heavy_check_mark:Location MapAdmin LinesBorders - Admin 2202_admn^[a-z]{3}admn_ad2_ln(.?)_(.?)_([phm][phm]).shp$Yes
8:heavy_check_mark:Main MapTransport LinesTransport - Rail232_tran^[a-z]{3}tran_rrd_ln(.?)_(.?)_([phm][phm]).shp$Yes
9:heavy_check_mark:Main MapTransport PointsTransport - Airports232_tran^[a-z]{3}tran_air_pt(.?)_(.?)([phm][phm])(.*?).shp$Yes
10:heavy_check_mark:Main MapNoneCartography - Feather207_carto^[a-z]{3}carto_fea_py(.?)_(.?)_pp.shp$Yes
11:heavy_check_mark:Main MapPhysicalPhysical - Lakes221_phys^[a-z]{3}phys_lak_py(.?)_(.?)_([phm][phm]).shp$Yes
12:heavy_check_mark:Main MapPhysicalPhysical - Rivers221_phys^[a-z]{3}phys_riv_ln(.?)_(.?)_([phm][phm]).shp$Yes
13:heavy_check_mark:Main MapAdmin PolygonsAdmin - Ad 1 Polygon202_admn^[a-z]{3}admn_ad1_py(.*?).shp$Yes
14:heavy_check_mark:Main MapAdmin PolygonsAdmin - Ad 2 Polygon202_admn^[a-z]{3}admn_ad2_py(.*?).shp$Yes
15:heavy_check_mark:Main MapAdmin PolygonsAdmin - Ad 3 Polygon202_admn^[a-z]{3}admn_ad3_py(.*?).shp$Yes
16:heavy_check_mark:Main MapAdmin PolygonsAdmin - Ad 4 Polygon202_admn^[a-z]{3}admn_ad4_py(.*?).shp$Yes
17:heavy_check_mark:Main MapAdmin PolygonsAdmin 0 - Affected Country202_admn^[a-z]{3}admn_ad0_py(.?)_(.?)_([phm][phm]).shp$"""ADM0_NAME"" = '{COUNTRY_NAME}'"Yes
18:heavy_check_mark:Main MapAdmin PolygonsAdmin 0 - Surrounding Country202_admn^[a-z]{3}admn_ad0_py(.?)_(.?)_([phm][phm]).shp$"NOT ""ADM0_NAME"" = '{COUNTRY_NAME}'"Yes
19:heavy_check_mark:Main MapElevationPhysical - Sea221_phys^[a-z]{3}phys_sea_py(.?)_(.?)_([phm][phm]).shp$Yes
20:heavy_check_mark:Main MapImageryImagery - Imagery216_imgy^[a-z]{3}img_aer_ras_su_unknown_mp_tile\d*.TIF$Yes
21Main MapElevationElevation - DEM211_elev^Rasters.gdb/[a-z]{3}elev_dem_ras(.*?)$Yes
22:heavy_check_mark:Main MapElevationElevation - DEM211_elev^[a-z]{3}elev_dem_ras(.*?).tif$Yes
23:heavy_check_mark:Main MapElevationElevation - Hillshade211_elev^[a-z]{3}elev_hsh_ras(.?)_(.?)([phm][phm])((.+)).tif$Yes
24:heavy_check_mark:Main MapElevationElevation - Curvature211_elev^[a-z]{3}elev_cur_ras(.?)_(.?)([phm][phm])((.+)).tif$Yes
25:heavy_check_mark:Main MapTransport LinesTransport - Roads232_tran^[a-z]{3}tran_rds_ln(.?)_(.?)_([phm][phm]).shp$highway = 'primary'Yes
26:heavy_check_mark:Main MapPopulationPopulation223_popu^[a-z]{3}popu_pop_ras(.?)_(.?)_([phm][phm]).tif$Yes
27Main MapLegendLegend - Roads232_tran^[a-z]{3}tran_rds_ln(.?)_(.?)([phm][phm])((.+))No
28Main MapLegendLegend - Water221_phystbdNo
29:heavy_check_mark:Location MapNoneLocation Map - Admin 0 Polygon202_admn^[a-z]{3}admn_ad0_py(.?)_(.?)_([phm][phm]).shp$Yes
30:heavy_check_mark:Location MapNoneLocation - Surrounding Country202_admn^[a-z]{3}admn_ad0_py(.?)_(.?)([phm][phm])((.+))Yes

执行

参数

#FieldDescription
1```--cookbook``Path to the cookbook ^{} file.
2^{}Path to the ^{} file.
3^{}Path to the Crash Move Folder root.
4^{}Path to the ^{} file.
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映射:

alt text

文件类型

当前实现支持以下地理空间文件类型:

  • 形状文件(.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分支正在开发“自动化”外接程序:

  1. 来自\GIS\3_Mapping\38_Initial_Maps_Layer_Files\*目录下的所有层.lyr文件的副本被复制到位于以下位置的崩溃移动文件夹下名为All的文件夹中: \GIS\3_Mapping\38_Initial_Maps_Layer_Files\All
  2. 图层属性文件layerProperties.json已复制到以下位置的崩溃移动文件夹下的新目录: \GIS\3_Mapping\31_Resources\316_Automation
  3. 将Cookbook文件mapCookbook.json复制到以下位置的崩溃移动文件夹下的目录: \GIS\3_Mapping\31_Resources\316_Automation

作者

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java向嵌入式Jetty添加多个端点   java如何在JAXWS处理程序中区分请求和响应?   使用Scenebuilder for JAVAFx的登录应用程序的java MVC体系结构   java对话框将不显示   Windows 7上的Java系统变量   java删除动态添加的面板   java将Javadoc嵌入到HTML网站中   带有URL编码数据的java Spring RestTemplate POST请求   java JAXR只运行一次函数   HttpClient缺少java依赖项   java深层反射比较   基于javarmi和CORBA的分布式计算   如何使用当前数据库时间从Java更新MongoDB?   java通过光标保存数据调试时显示错误数据