In [1]:
"""
Cols to map - Multiple Layers
"""
main_mxd = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\npass_08h30_08h45.mxd'
LYRS_SRC = {
"metro_passageiros" : r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\metro_passageiros.shp',
"metro_s2" : r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\metro_passageiros.shp'
}
LYRS_JOKER = {
"metro_passageiros" : 'joker',
"metro_s2" : 'joker_s2'
}
mapColsTable = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\nr_passageiros.xlsx'
graphicsTable = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\passageiros_legenda.xlsx'
OUT_MXD = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\mxd'
OUT_MAPS = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\maps'
In [ ]:
"""
Cols to map - Multiple Layers
"""
main_mxd = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\lug_08h30_08h45.mxd'
LYRS_SRC = {
"metro_passageiros" : r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\metro_passageiros.shp',
"metro_s2" : r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\metro_passageiros.shp'
}
LYRS_JOKER = {
"metro_passageiros" : 'joker',
"metro_s2" : 'joker_s2'
}
mapColsTable = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\nr_lugares.xlsx'
graphicsTable = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\lugares_legenda.xlsx'
OUT_MXD = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\mxd'
OUT_MAPS = r'D:\TRENMO_JASP\METRO_LISBOA\txocupacao\maps'
In [2]:
import arcpy
import os
from senpy.fromxls.pnd import xls_to_dict
from senpy.arcgis.manage.fields import calculate_field
from senpy.arcgis.maps.graph import get_elem_by_name
from senpy.arcgis.maps.wmap import mxd_saveas
from senpy.arcgis.maps.wmap import write_map
In [3]:
# Get maps to do
mapsToDo = xls_to_dict(mapColsTable)
In [4]:
# Get dict with association between maps and graphics elements
graphicElem = xls_to_dict(graphicsTable)
In [5]:
for newMap in mapsToDo:
print "Producing {} Map".format(newMap)
# Update JOKER's FIELD's
for lyr in mapsToDo[newMap]:
calculate_field(
LYRS_SRC[lyr], LYRS_JOKER[lyr],
"[{}]".format(str(mapsToDo[newMap][lyr]))
)
# Open mxd and change it
mxd = arcpy.mapping.MapDocument(main_mxd)
# Get Text elements in the main mxd to be changed
elem_names = graphicElem[newMap].keys()
text_elem = get_elem_by_name(mxd, elem_names)
if not text_elem:
print 'No Graphic/Text element was finded'
for e in text_elem:
text_elem[e].text = graphicElem[newMap][e]
outmap = write_map(mxd, os.path.join(OUT_MAPS, newMap + '.jpg'))
# Create a new mxd
mxd_saveas(mxd, os.path.join(OUT_MXD, newMap + '.mxd'))
# Close mxd
del mxd
print "{} Map is done!".format(newMap)
In [ ]: