基于Arcgis Arcpy 绘制专题图,前提是提前绘制好专题图模板,如下图1
图1
具体代码实现方式如下:
def mapping_15000(self, shpfile_15000, mxd, jpg_dict, year, index_type, jpg_type, jpg_name, date): """ 针对全区生成专题图 """ # mxd名称中包含中文需要转成unicode编码 mxd = mapping.MapDocument(mxd) # 获取损坏数据源列表: lstBrokenDS = mapping.ListBrokenDataSources(mxd) # 获取模板中Maplayer名字 layername = [layer.name for layer in lstBrokenDS][0] # 获取模板中Maplayer名字对应的图层——Type:Layer xian_layer = mapping.ListLayers(mxd, layername)[0] if xian_layer.symbologyType == 'UNIQUE_VALUES': shp_dir = os.path.dirname(shpfile_15000).encode('utf-8') shp_name = os.path.basename(shpfile_15000)[:-4].encode('utf-8') # shp_dir+shp_name图层代替模板中的Maplayer图层 xian_layer.replaceDataSource(shp_dir, "SHAPEFILE_WORKSPACE", shp_name) # 遍历专题图中的文本元素 for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"): if elm.name == 'datetime': # 修改专题图中的日期 text = elm.text.encode('utf-8') text1 = text[:52] text = text1 + date[:4] + '年' + date[4:6] + '月' + date[-2:] + '日' elm.text = text jpg_base_name = '150000' + '_' + '内蒙古自治区' + '_' + jpg_name + '_' + date + '.jpg' jpg_path = os.path.join(os.path.dirname(shpfile_15000), jpg_base_name) # 导出专题图 arcpy.mapping.ExportToJPEG(mxd, jpg_path, resolution=200) jpg_dict['150000'] = ['150000', year, jpg_base_name, index_type, jpg_type, jpg_path] del mxd return jpg_dict