WebMap add_layer for Map Service

957
1
02-08-2018 08:35 AM
René_Ténière
Occasional Contributor

I am trying to add a layer that I have created from a map service. The layer is easily added to a web map using the online MapViewer in my org account. The map layer consists of multiple service layers. The result is as seen below:

When I try to programatically add it to the web map using add_layer, I get the following:

It breaks out all the layers individually from the service itself. Code is below for creating the layer from the service and creating the webmap and adding the layer to it.

# Internal modules go here
def createLayer(layerProperties, thumbnailPath, itemType='Map Service', layerOwner=None, layerFolder=None):
   layer = False
   sr = gis.content.search("title:"+layerProperties['title'],item_type=itemType)

   if (len(sr) > 1):
      print("Multiple Layers Found!")
      return False
   else:
      if (len(sr) == 1):
         print("Layer Exists!")
         item = gis.content.get(sr[0].id)
         item.delete()

      print("Creating Layer...")
      layer = gis.content.add(item_properties=layerProperties, thumbnail=thumbnailPath, owner=layerOwner, folder=layerFolder)
 
   return layer

layerError = False

# Create Wildlife layer from service
svcName_Wildlife = "WLD_ProvLandScapeViewer_WM84"
thumbnail_Wildlife = os.path.join(thumbURL,svcName_Wildlife+'.jpg')

layerProperties_Wildlife = {
'title':'Wildlife Areas',
'description':'This layer contains data for moose and deer management zones, Significant Habitats, Wetlands, and Special Management Practices for Atlantic Coastal Plain Flora Buffers, Marten, Lynx, and Mainland Moose.',
'snippet':'Wildlife Areas layer',
'tags':'wildlife,wetlands,moose,deer,habitat,marten,lynx,moose,NSGI,GeoNOVA',
'licenseInfo':licInfo,
'accessInformation':'Nova Scotia Department of Natural Resources',
'type':'Map Service',
'access':'org',
'url':os.path.join(devURL,'BIO/'+svcName_Wildlife+'/MapServer')
}

layer_Wildlife = createLayer(layerProperties_Wildlife, thumbnail_Wildlife)
if layer_Wildlife == False:
   layerError = True
else:
   print("Wildlife Layer Created Successfully!")
# Create an empty web map with a default basemap
from arcgis.mapping import WebMap
wm = WebMap()

svcName_WM_PLV = "ProvincialLandscapeViewer_WM"
thumbnail_WM_PLV = os.path.join(thumbURL,svcName_WM_PLV+'.jpg')

webMapProperties_PLV = {
'title':'Provincial Landscape Viewer Web Map',
'description':'Web map for the Provincial Landscape Viewer web application',
'snippet':'Map to hold Provincial Landscape Viewer data',
'tags':'PLV, crown, wildlife, property, protected, provincial, landscape, viewer, forestry, elc, roads',
'licenseInfo':licInfo,
'accessInformation':'NS Internal Services, NS Department of Natural Resources, Service NS, Land Services Branch, Surveys Division, GIS Cartography Section',
'access':'org',
'extent':'-7474460,5356290,-6600165,5966315'
}

if layerError ==False:
   # Update the BaseMap
   wm.basemap.update({'title':layerProperties_Base['title']})
   wm.basemap.baseMapLayers[0].update({'url':layerProperties_Base['url'], 'title':layerProperties_Base['title']})
 
   wm.add_layer(layer=layer_Wildlife)
   wm.save(item_properties=webMapProperties_PLV, thumbnail=thumbnail_WM_PLV)

0 Kudos
1 Reply
René_Ténière
Occasional Contributor

Anyone know if there is a way to show only the main layer in the TOC so it looks like the webmap created in the online mapviewer?

0 Kudos