- URL:https://<topographicProductionServer-url>/addProduct(POST only)
- Related Resources:Generate Product, Remove Product, Update Product
- Version Introduced:10.9
Description
License:
The use of this resource requires an ArcGIS GIS Server Advanced license and a Production Mapping or Defense Mapping server extension license.
The addProduct operation adds a definition of a map product to the Topographic Production Service resource that can be used to generate a map.
Request parameters
Parameter | Details |
---|---|
productDefinition (Required) | The JSON definition of a map product. More details are provided in the following section. |
raster (Optional) | The path to a raster on disk (server path) or the URL of an image service. |
ancillaryLayers (Optional) | A JSON array of additional layers to include in the final product. Syntax: Note:This parameter supports services located in the same portal site as the server object extension (SOE) or services that are publicly available. The featureClass, map, and layerIndex properties in the array are optional. If the dataset is identifiable from the feature service, it is not necessary to provide the featureClass property. The default values are 0 for layerIndex and BaseMap for map. |
productDefinition properties
The following are additional details about the properties of the map product specified in the productDefinition parameter:
Property | Details |
---|---|
version | Indicates the serialization version, currently at version 0. |
name | The name of the product. It must be unique in the map service. |
type | Indicates the product type. Valid values include MTM, TM, JOG, CTM, and Custom. |
gridType | Indicates the type of grid XML to use when running grid operations. |
description | Describes the type of map product being produced. |
sheetIDField | The field name that identifies the area of interest (AOI) for which the product is generated. This must be a field that exists on the features used as the AOI. |
productVersions | The JSON array of versions for this product. A version is a JSON object with two properties, name and template. A template can be either the full path to a layout template on a disk or the file name of a template installed with the Defense Mapping product files. |
resources | A JSON array of resources. A resource is a JSON object with three properties: name, type, and value. It provides values to the operation parameter at run time. There are seven types of resources:
To use a resource in the operation parameter, place brackets around its name. In the following example, the resource SheetID is defined, and the LayerProperties operation has a parameter named definition_query and the value is set to NRN = '[SheetID]'. At runtime, [SheetID] is replaced with the Sheet Identifier of the map being generated.
These are predefined resources known to the server object extension (SOE). The values of these resources are left blank in the JSON definition and the SOE sets the value at runtime. For example, the SourceWorkspace resource is set at runtime with the data from the map service. You can review map product definitions included with the Defense Mapping product files for examples of how resources are used. |
dataExtraction | A JSON array of objects that defines how the data will be extracted. The following JSON syntax is an example of a data extraction operation in the array:
|
operations | An operation is typically a geoprocessing operation, but there are also other types of operations. Operation types are predefined by the app so that it can optimize the execution of operations. There are 12 operation types:
A JSON array of operations. An operation is a JSON object with the following parameters:
Example operation:
Refer to the map product definitions in the Defense Mapping product files to learn more about how operations are used. |
Request example
The following is an example of the productDefinition parameter:
{
"version": 0,
"name": "ExampleProduct",
"type": "MTM",
"gridType": "TM50",
"description": "Test Masking Product",
"sheetIDField": "NRN",
"featureDataset": "BM",
"extractionDatabase": "MTM.gdb",
"scale": "1:50,000",
"productVersions": [
{
"name": "TRD_4_5",
"template": "MTM50_Layout.pagx"
}
],
"resources": [
{
"name": "SourceWorkspace",
"type": 3,
"value": ""
},
{
"name": "AOILayer",
"type": 2,
"value": ""
},
{
"name": "SheetID",
"type": 1,
"value": ""
},
{
"name": "Layout",
"type": 6,
"value": ""
},
{
"name": "ProductFiles",
"type": 7,
"value": ""
}
],
"dataExtraction": [
{
"name": "MapService",
"type": 19,
"id": "MapService",
"description": "Test extract from Map Service",
"parameters": [
{
"name": "input_data",
"value": "https://machinename.esri.com/server/rest/services/PostGreTest/MapServer"
},
{
"name": "AOI",
"value": "[AOILayer]\\Extent"
},
{
"name": "buffer",
"value": "5 kilometers"
},
{
"name": "spatial_relationship",
"value": "esriSpatialRelIntersects"
},
{
"name": "DefinitionQuery",
"value": ""
},
{
"name": "includeDatasets",
"value": ""
},
{
"name": "excludedDatasets",
"value": ""
}
]
}
],
"operations": [
{
"name": "MapResource",
"type": 11,
"id": "62C3FFDE-F2C9-401E-9F57-50BECC3E15AP",
"description": "Update BaseMap DataSources",
"parameters": [
{
"name": "in_map",
"value": "BaseMap"
}
]
},
{
"name": "Grid",
"type": 4,
"id": "22C3FFDE-F4C9-401E-9F57-50BRCC3E15GN",
"description": "BaseMap Grid",
"toolName": "MakeGridsAndGraticulesLayer_topographic",
"validation": 2,
"properties": {
"type": "PropertySet",
"propertySetItems" : [
"AddOutputToMap",
"BaseMap"
]
},
"parameters": [
{
"name": "in_grid_xml",
"value": "[GridLocator]\\BaseMap"
},
{
"name": "area_of_interest",
"value": "[AOILayer]"
},
{
"name": "target_feature_dataset",
"value": "[SourceWorkspace]\\BM_GRD"
},
{
"name": "out_layer_name",
"value": "BMGrid"
},
{
"name": "grid_name",
"value": "BMGrid"
},
{
"name": "configure_layout",
"value": "CONFIGURE_LAYOUT"
},
{
"name": "layout",
"value": "[Layout]"
},
{
"name": "map_frame",
"value": "BaseMap Map Frame"
}
]
},
{
"name": "CreateMasks",
"type": 7,
"id": "35C3FFRF-F2C9-401E-9F57-30BECC3E15KF",
"description": "Create Masks for Base Map",
"toolName": "MakeMasksFromRules_topographic",
"validation": 2,
"properties" : {
"type" : "PropertySet",
"propertySetItems" : [
"MapName",
"BaseMap"
]
},
"parameters": [
{
"name": "in_map",
"value": "BaseMap"
},
{
"name": "rule_file",
"value": "[ProductFiles]\\MTM_Basemap_Masking_Rules.xml"
},
{
"name": "out_feature_dataset",
"value": "[SourceWorkspace]\\Masks"
}
]
},
{
"name": "ApplyMasks",
"type": 7,
"id": "93C3FFDE-F2C9-401K-9F57-50BRCC3E15RW",
"description": "Apply Masks for Base Map",
"toolName": "ApplyMasksFromRules_topographic",
"validation": 2,
"properties" : {
"type" : "PropertySet",
"propertySetItems" : [
"MapName",
"BaseMap"
]
},
"parameters": [
{
"name": "in_map",
"value": "BaseMap"
},
{
"name": "rule_file",
"value": "[ProductFiles]\\MTM_Basemap_Masking_Rules.xml"
},
{
"name": "in_feature_dataset",
"value": "[SourceWorkspace]\\Masks"
}
]
}
]
}
Example usage
The following URL is an example of the addProduct REST operation:
https://machine.domain.com/server/rest/services/SampleService/TopographicProductionServer/addProduct?productDefinition=&raster=&ancillaryLayers=&f=json
JSON Response syntax
The following is the syntax of a response:
{
"success" : true | false
}
JSON Response example
The following is an example of a response:
{
"productName": "ExampleProduct",
"success": true
}
JSON Response example
The following is an example of an error response:
{
"error": {
"code": -2147211754,
"message": "Map product ExampleProduct already exists. Map product names must be unique.",
"details": [
]
}
}