You can create multiple map series but a layout can only have one associated map series at a time. There are two basic ways you can work with a map series.
First, you can reference the layout's currently active map series using the MapSeries property on the Layout. This returns a map series CIM definition. Changes can be made and then pushed back to the Layout using the SetMapSeries() method.
Second, you can create a new map series using a constructor like CreateSpatialMapSeries. This will also return a CIM definition that can be modified and pushed back to the Layout using the SetMapSeries() method.
To export a map series you need to contruct an ExportFormat and a MapSeriesExportOptions.
//Modify the currently active map series and changes its sort field and page number field. //Perform on the worker thread await QueuedTask.Run(() => { SpatialMapSeries SMS = layout.MapSeries as SpatialMapSeries; //cast as spatial map seris for additional members SMS.SortField = "State_Name"; SMS.SortAscending = true; SMS.PageNumberField = "PageNum"; //Overwrite the current map series with these new settings layout.SetMapSeries(SMS); });
// This example create a new spatial map series and then applies it to the active layout. This will automatically // overwrite an existing map series if one is already present. //Reference map frame and index layer MapFrame mf = layout.FindElement("Map Frame") as MapFrame; Map m = mf.Map; BasicFeatureLayer indexLyr = m.FindLayers("Countries").FirstOrDefault() as BasicFeatureLayer; //Construct map series on worker thread await QueuedTask.Run(() => { //SpatialMapSeries constructor - required parameters SpatialMapSeries SMS = MapSeries.CreateSpatialMapSeries(layout, mf, indexLyr, "Name"); //Set optional, non-default values SMS.CategoryField = "Continent"; SMS.SortField = "Population"; SMS.ExtentOptions = ExtentFitType.BestFit; SMS.MarginType = ArcGIS.Core.CIM.UnitType.PageUnits; SMS.MarginUnits = ArcGIS.Core.Geometry.LinearUnit.Centimeters; SMS.Margin = 1; SMS.ScaleRounding = 1000; layout.SetMapSeries(SMS); //Overwrite existing map series. });
//Export a map series with multiple pages to a single PDF. //Create PDF format with appropriate settings PDFFormat MS_PDF = new PDFFormat() { OutputFileName = filePath, Resolution = 300, DoCompressVectorGraphics = true, DoEmbedFonts = true, HasGeoRefInfo = true, ImageCompression = ImageCompression.Adaptive, ImageQuality = ImageQuality.Best, LayersAndAttributes = LayersAndAttributes.LayersAndAttributes }; //Set up map series export options MapSeriesExportOptions MS_ExportOptions = new MapSeriesExportOptions() { ExportPages = ExportPages.Custom, //Provide a specific list of pages CustomPages = "1-3, 5", //Only used if ExportPages.Custom is set ExportFileOptions = ExportFileOptions.ExportAsSinglePDF, //Export all pages to a single, multi-page PDF ShowSelectedSymbology = false //Do no show selection symbology in the output }; //Export on the worker thread await QueuedTask.Run(() => { //Check to see if the path is valid and export if (MS_PDF.ValidateOutputFilePath()) { layout.Export(MS_PDF, MS_ExportOptions); //Export to PDF } });
//Export each page of a map series to an individual TIFF file. //Create TIFF format with appropriate settings TIFFFormat TIFF = new TIFFFormat() { OutputFileName = filePath, Resolution = 300, ColorMode = ColorMode.TwentyFourBitTrueColor, HasGeoTiffTags = true, HasWorldFile = true, TIFFImageCompression = TIFFImageCompression.LZW }; //Set up map series export options MapSeriesExportOptions MSExportOptions_TIFF = new MapSeriesExportOptions() { ExportPages = ExportPages.All, //All pages ExportFileOptions = ExportFileOptions.ExportMultipleNames, //Export each page to an individual file using page name as a suffix. ShowSelectedSymbology = true //Include selection symbology in the output }; //Export on the worker thread await QueuedTask.Run(() => { //Check to see if the path is valid and export if (TIFF.ValidateOutputFilePath()) { layout.Export(TIFF, MSExportOptions_TIFF); //Export to TIFF } });
System.Object
ArcGIS.Desktop.Layouts.MapSeries
ArcGIS.Desktop.Layouts.BookmarkMapSeries
ArcGIS.Desktop.Layouts.SpatialMapSeries
Target Platforms: Windows 10, Windows 8.1