Skip To Content

Veröffentlichen von Kacheln

In diesem Thema

Kacheln, die in Ihrem Portal veröffentlicht und gehostet werden, unterstützen die schnelle Visualisierung großer Datasets mithilfe einer Sammlung vorab gezeichneter Kartenbilder bzw. Kacheln. Gehostete Kacheln stellen geographischen Kontext für operationale Layer zur Verfügung. Sie können z. B. Kacheln von Straßen der Umgebung einschließen, um eine visuelle Referenz für die Straßenschilder im Feature-Layer bereitzustellen.

Sie können Kacheln aus einer Service-Definitionsdatei oder einem ArcMap-Dokument veröffentlichen, die in Ihrem Portal gehostet werden sollen.

Sie können festlegen, dass für Ihre Kacheln ein Cache automatisch bei der Veröffentlichung oder manuell nach der Veröffentlichung erstellt wird. Weitere Informationen finden Sie unter Empfehlungen für Kachel-Caches.

Um eine Karte oder eine Service-Definitionsdatei als gehosteten Kachel-Layer zu veröffentlichen, müssen Sie über Berechtigungen zum Erstellen von Inhalten und zum Veröffentlichen gehosteter Kachel-Layer verfügen.

Definieren und Veröffentlichen einer Karte in ArcMap

In ArcMap können Sie Kacheln veröffentlichen, die in Ihrem Portal gehostet werden sollen.

Stellen Sie sicher, dass ArcGIS for Desktop mit Ihrem Portal verbunden ist, bevor Sie ArcMap starten.

  1. Starten Sie ArcMap, und öffnen Sie die Karte, die Sie veröffentlichen möchten.
  2. Melden Sie sich bei Ihrem Portal mit einem Konto an, das über Berechtigungen zum Erstellen von Inhalten und zum Veröffentlichen gehosteter Kachel-Layer verfügt.
    1. Klicken Sie Datei > Anmelden klicken.
    2. Geben Sie Ihren Benutzernamen und Ihr Kennwort für Ihr Portal ein, und klicken Sie auf Anmelden.
  3. Veröffentlichen Sie jetzt die Karte.
  4. Klicken Sie Datei > Freigeben als > Service klicken.
  5. Wählen Sie Service veröffentlichen, und klicken Sie auf Weiter.
    Vorsicht:

    Wenn Sie den Service stattdessen überschreiben möchten, wird das vorhandene Karten-Kachelelement aus dem Portal gelöscht und ein neues Element mit demselben Namen erstellt. Das neue Element wird im Stammordner erstellt und ihm wird eine neue ID zugewiesen. Sie müssen die Freigabe neu konfigurieren und das Element bei Bedarf zurück in den Ordner verschieben, in dem es sich vor der erneuten Veröffentlichung befand.

  6. Wählen Sie in der Dropdown-Liste der Verbindungstypen den Eintrag Eigene gehostete Services aus. Geben Sie dann einen Namen für die Kacheln ein, und klicken Sie auf Weiter.
  7. Legen Sie die gewünschten Eigenschaften im Fenster Service-Editor fest. Hier können Sie angeben, auf welche Weise Benutzer die Kacheln verwenden können. Außerdem können Sie ganz genau festlegen, wie sie vom Server bereitgestellt werden.

    Weitere Informationen zum optimalen Konfigurieren von Kacheln für die Bereitstellung finden Sie unter Optimieren und Konfigurieren von Services in der ArcGIS for Server-Hilfe. Einige der in diesem Thema genannten Eigenschaften gelten nur für ArcGIS for Server und nicht für die Arbeit mit gehosteten Kachel-Layern.

    Tipp:

    Wenn Sie den Service-Editor während dieser Sitzung schließen, werden Sie aufgefordert, Ihre Arbeit als Entwurf zu speichern. Dies ermöglicht Ihnen, Ihre Arbeit an der Service-Konfiguration später wieder aufzunehmen. Service-Entwürfe werden standardmäßig im Ordner Entwürfe der Verbindung mit "Eigene gehostete Karten" gespeichert. Weitere Informationen finden Sie unter Service-Entwürfe in der ArcGIS for Server-Hilfe.

  8. Sie müssen einige Eigenschaften festlegen, die für in ArcGIS Online gehostete Kachel-Layer spezifisch sind. Diese werden in den folgenden Abschnitten beschrieben.
  9. Klicken Sie im linken Service-Editor-Bereich auf Funktionen, und aktivieren Sie dann Gekachelte Karte, um die Karte als Kachel-Layer verfügbar zu machen. Aktivieren Sie die Option Feature-Zugriff, um einen Feature-Layer mit Ihren Kacheln zu veröffentlichen, falls Sie Pop-ups für den Layer konfigurieren möchten, wenn Sie ihn zu Map Viewer hinzufügen.

    Sie können auf das Unterelement Gekachelte Karte im linken Bereich des Service-Editors klicken, um erweiterte Eigenschaften zu den Funktionen veröffentlichter Kachel-Layer für Clients festzulegen.

  10. Klicken Sie auf das Element Caching, um Eigenschaften für den Kachel-Cache festzulegen. Ausführliche Informationen finden Sie unter Erstellen eines Karten-Cache in der ArcGIS for Server-Hilfe. Beachten Sie jedoch, dass einige erweiterte Caching-Einstellungen nur bei direkten Veröffentlichungen in ArcGIS for Server verfügbar sind.
  11. Klicken Sie im linken Service-Editor-Bereich auf Elementbeschreibung, und geben Sie eine Zusammenfassung und Tags für den Kachel-Layer ein. Diese Informationen müssen Sie vor dem Veröffentlichen eingeben. Weitere Informationen finden Sie im Abschnitt zu Elementbeschreibungen unter Festlegen von Karten-Service Eigenschaften in der ArcGIS for Server-Hilfe.
  12. Klicken Sie im linken Bereich von Service-Editor auf Freigeben, und legen Sie fest, für wen der gehostete Kachel-Layer freigegeben werden soll. Der gehostete Kachel-Layer wird standardmäßig nur für Eigene Inhalte freigegeben, d. h. er ist nur für Sie zugänglich. Der Kachel-Layer kann immer in Eigene Inhalte angezeigt werden, Sie können ihn jedoch auch für alle Benutzer, Mitglieder Ihrer Organisation oder nur für Mitglieder bestimmter Gruppen freigeben.
  13. Klicken Sie im Service-Editor auf Analysieren Analysieren (Werkzeug) klicken.

    Daraufhin wird die Karte geprüft, um festzustellen, ob sie veröffentlicht werden kann. Sie müssen die Fehler Fehler im Fenster Vorbereiten vor der Veröffentlichung korrigieren. Sie können optional die Warnungen und Informationsmeldungen korrigieren, um die Performance und Darstellung der veröffentlichten Kacheln zu verbessern. Weitere Informationen zum Beheben dieser Probleme finden Sie unter Analysieren der GIS-Ressource in der ArcGIS for Server-Hilfe.

  14. Klicken Sie optional auf Vorschau Vorschau im Service-Editor. Dies kann Ihnen eine Vorstellung davon geben, wie der Kachel-Layer im Internet angezeigt wird.
  15. Nachdem Sie die Fehler korrigiert und optional auch die Vorschläge aus Warnungen und Informationsmeldungen eingearbeitet haben, klicken Sie auf Veröffentlichen Veröffentlichen klicken.
    Hinweis:

    Ihre Daten werden nun auf den Server kopiert.Die zur Veröffentlichung benötigte Zeit hängt von der Datengröße sowie der Bandbreite und Geschwindigkeit der Netzwerkverbindung ab. Sie sollten auch etwas Zeit zum Generieren der Kacheln reservieren.

Sobald die Kacheln in Ihrem Portal veröffentlicht und gehostet wurden, werden sie beim Einblenden des Knotens Eigene gehostete Services im Fenster Katalog angezeigt.

Auf der Seite Eigene Inhalte der Portal-Website wird der gehostete Kachel-Layer als zwei unabhängige Elemente aufgeführt: als Kacheln und als Service-Definition. Bei einer Service-Definition handelt es sich um eine ZIP-Datei, welche die Karte, deren Daten sowie Details zur Art der Veröffentlichung der Kacheln enthält. Eine Service-Definition kann auf jeden Computer mit ArcGIS for Server übertragen und dort veröffentlicht werden.

Definieren und Veröffentlichen einer Karte in ArcGIS Pro

Von einer Karte in ArcGIS Pro können Sie Kacheln veröffentlichen, die in Ihrem Portal gehostet werden sollen.

Stellen Sie sicher, dass die Verbindung Ihres Portals aktiv ist, bevor Sie fortfahren.

Beachten Sie auch, dass Webbrowser einige der komplexeren kartografischen Symbole, die Sie ursprünglich beim Erstellen der Karte verwendet haben, nicht anzeigen können. Die meisten Symboltypen sind verfügbar, in einigen Fällen werden die Symbole beim Veröffentlichen jedoch möglicherweise verschlechtert . Lesen Sie in der Hilfe zu ArcGIS for Server unter Erstellen von Feature-Services nach, welche Symbole unterstützt werden, und nehmen Sie vor dem Veröffentlichen alle erforderlichen Änderungen an der Kartensymbologie vor.

  1. Starten Sie ArcGIS Pro und öffnen Sie das Projekt, das die Karte enthält, die Sie veröffentlichen möchten.
  2. Melden Sie sich über ArcGIS Pro bei Ihrer Organisation an. Verwenden Sie dazu ein Konto, das über Berechtigungen zum Erstellen von Inhalten und zum Veröffentlichen gehosteter Kachel-Layer verfügt.
  3. Klicken Sie in der Gruppe Freigeben als der Registerkarte Freigeben auf Web-Layer.
  4. Geben Sie einen Namen für den Feature-Layer ein. Der Layer wird standardmäßig unter Eigene Inhalte gespeichert. Sie können ihn in einem Ordner unter Eigene Inhalte speichern, indem Sie den Ordnernamen eingeben oder zu einem vorhandenen Ordner navigieren.
  5. Wählen Sie Kacheln als Layer-Typ aus.
  6. Stellen Sie eine Zusammenfassung und Tags für den Titel-Layer bereit.
  7. Legen Sie fest, wie der Kachel-Layer freigegeben werden soll. Alle Layer, die Sie veröffentlichen, werden automatisch für Ihren persönlichen Workspace in Ihrer Organisation(Eigene Inhalte) freigegeben. Andere Benutzer können erst auf Ihre Inhalte zugreifen, wenn Sie sie mindestens für eine der folgenden Benutzer freigeben:
    • Eigene Organisation – Durch Auswahl dieser Option kann der Layer für alle authentifizierten Benutzer in der Organisation freigegeben werden.
    • AlleDurch Auswahl dieser Option wird der Layer für jeden verfügbar gemacht, der Zugriff auf Ihr Portal hat.
    • Gruppen – Sie können den Layer für Mitglieder von Gruppen freigeben, denen Sie angehören.
  8. Klicken Sie auf die Registerkarte Konfiguration, um die Cache-Einstellungen festzulegen.
    1. Ändern Sie die Größe des Balkens Detaillierungsebene, um den minimalen und maximalen Maßstab für den Kachel-Layer anzugeben.

      Die geschätzte Größe des resultierenden Cache ändert sich, wenn Sie den minimalen und maximalen Maßstab ändern.

    2. Wählen Sie beim Veröffentlichen des Layers die Option Cache erstellen aus, oder wählen Sie die Option Cache manuell erstellen aus, nachdem der Layer veröffentlicht wurde.

      Öffnen Sie den Kachel-Layer nach der Veröffentlichung auf der Portal-Website, um den Cache manuell zu erstellen.

  9. Klicken Sie auf die Registerkarte Inhalt, um zu bestätigen, dass der Kachel-Layer die gewünschten Daten-Layer enthält.
  10. Klicken Sie auf Analysieren Analysieren (Werkzeug) , um eine Überprüfung auf Fehler oder Probleme durchzuführen.

    Falls Probleme erkannt werden, werden sie auf der Registerkarte Meldungen aufgelistet. Wenn Sie mit der rechten Maustaste auf die einzelnen Meldungen klicken, erhalten Sie weitere Informationen zu den Fehlern bzw. Warnungen und können auf die vorgeschlagenen Korrekturen klicken. Vor dem Veröffentlichen müssen die Fehler behoben werden. Sie können optional die Warnungen korrigieren, um die Performance und Darstellung des gehosteten Kachel-Layers zu verbessern.

  11. Sobald Sie die Fehler und optional auch etwaige Warnungen behoben haben, klicken Sie auf Veröffentlichen. Veröffentlichen klicken.
    Hinweis:

    Ihre Daten werden nun auf den Server kopiert. Die zur Veröffentlichung benötigte Zeit hängt von der Datenmenge sowie der Netzwerkgeschwindigkeit und Bandbreite ab.

Nach der Veröffentlichung können Sie auf Web-Layer verwalten klicken, um die Portal-Website zu öffnen.

Einen gehosteten Feature-Layer veröffentlichen

Sie können einen gehosteten Kachel-Layer in Ihrem Portal aus einem vorhandenen gehosteten Feature-Layer veröffentlichen. Dies ist ein nützlicher Workflow, wenn Sie keine ArcGIS-Produkte lokal installiert haben. Sie können beispielsweise ein Shapefile als gehosteten Feature-Layer und diesen gehosteten Feature-Layer anschließend als gehosteten Kachel-Layer veröffentlichen.

Hinweis:

Änderungen, die an dem gehosteten Feature-Layer vorgenommen werden, werden nicht automatisch auf den gehosteten Kachel-Layer angewendet. Sie müssen den gehosteten Kachel-Layer erneut aus dem aktualisierten gehosteten Feature-Layer veröffentlichen.

Beachten Sie außerdem, dass für das Veröffentlichen eines gehosteten Kachel-Layers aus einem gehosteten Feature-Layer einige Formatierungsbeschränkungen gelten.

Führen Sie die folgenden Schritte aus, um einen gehosteten Kachel-Layer aus einem gehosteten Feature-Layer zu veröffentlichen:

  1. Melden Sie sich mit einem Konto an, dem Berechtigungen zum Veröffentlichen von gehosteten Kachel-Layern zugewiesen sind, und klicken Sie auf Eigene Inhalte.
  2. Führen Sie zum Veröffentlichen eine der folgenden Aktionen aus:
    • Klicken Sie auf den gehosteten Feature-Layer, der veröffentlicht werden soll, und klicken Sie auf Veröffentlichen.
    • Klicken Sie Erstellen > Kachel-Layer , und wählen Sie einen Feature-Layer aus, der als Kacheln veröffentlicht werden soll.
  3. Geben Sie einen Titel, Tags und eine Zusammenfassung ein, und wählen Sie einen Ordner für den gehosteten Kachel-Layer aus.
  4. Ändern Sie optional den Bereich für die Anzeige des Layers, indem Sie Maßstäbe in den Dropdown-Listen unter Sichtbarer Bereich auswählen.
  5. Klicken Sie auf OK.
  6. Aktivieren Sie die Kontrollkästchen neben den Maßstäben, in denen Sie Kacheln erstellen möchten. Klicken Sie anschließend auf Kacheln erstellen.
    Vorsicht:

    Die Einbeziehung großer Maßstäbe in den Maßstabsbereich kann die auf dem Server verbrauchten Ressourcen stark erhöhen. Erstellen Sie keine Kacheln, die über die Genauigkeit Ihrer Daten hinausgehen.

  7. Überprüfen Sie die Meldung zur Anzahl der erstellten Kacheln. Wenn Sie den Vorgang dennoch fortsetzen möchten, klicken Sie auf Ja, Kacheln erstellen.

Veröffentlichen einer Service-Definitionsdatei

Die Veröffentlichung von Kacheln und die Erstellung eines Cache kann viele Serverressourcen in Anspruch nehmen. Wenn Sie eine große Anzahl von Kachel-Layern veröffentlichen müssen, können Ihre Kartenautoren Service-Definitionsdateien (.sd) in ArcMap erstellen, die alle Informationen enthält, die zum Veröffentlichen eines Kachel-Layers im Portal erforderlich sind. Anschließend können Sie ein Skript verwenden, um die Service-Definitionsdateien nach Geschäftsschluss in Ihr Portal hochzuladen und zu veröffentlichen. Die resultierenden Kachel-Layer werden auf dem Hosting-Server des Portals gehostet.

Erstellen einer Service-Definitionsdatei

Der Kartenautor sollte diese Schritte ausführen, um eine Service-Definitionsdatei mit den Daten und der Symbologie zu erstellen, die für den vom Portal gehosteten Kachel-Layer erforderlich ist.

  1. Starten Sie ArcMap, und melden Sie sich beim Portal an.
  2. Erstellen und speichern Sie eine Karte.

    Weitere Informationen zum Erstellen und Veröffentlichen einer Karte finden Sie in den Themen zu Karten-Services in der Hilfe zu ArcGIS.

  3. Erstellen Sie jetzt eine Service-Definitionsdatei.
  4. Klicken Sie Datei > Freigeben als > Service klicken.
  5. Wählen Sie Service-Definitionsdatei speichern aus, und klicken Sie auf Weiter.
  6. Klicken Sie auf Verbindung auswählen, und wählen Sie den Eintrag Eigene gehostete Services aus der Dropdown-Liste aus.
  7. Geben Sie einen Namen für die Datei ein, und klicken Sie auf Weiter.
  8. Geben Sie an, in welchem Verzeichnis auf dem Client-Computer die Service-Definitionsdatei erstellt werden soll, und klicken Sie auf Weiter.

    Der Service-Editor wird geöffnet.

  9. Klicken Sie im linken Service-Editor Bereich auf Caching.
  10. Wählen Sie ein Kachelschema aus.
  11. Wählen Sie die minimalen und maximalen Maßstäbe für die Kacheln und die Option Cache-Größe berechnen aus.
  12. Klicken Sie auf Cache manuell erstellen, nachdem der Service veröffentlicht wurde.
  13. Sie können auch auf Erweiterte Einstellungen klicken und zusätzliche Cache-Einstellungen für den Kachel-Cache festlegen.
  14. Klicken Sie im linken Service-Editor-Bereich auf Elementbeschreibung, und geben Sie Informationen für den Kachel-Layer ein.

    Sie müssen mindestens eine Zusammenfassung und Tags eingeben, bevor Sie die Service-Definitionsdatei erstellen.

  15. Klicken Sie auf Analysieren Analysieren (Werkzeug) , um sicherzustellen, dass keine Fehler vorliegen.

    Sie müssen alle Fehler beheben, bevor Sie die Service-Definitionsdatei bereitstellen können. Sie können auch Korrekturen an zurückgegebenen Warnungen und Meldungen vornehmen.

  16. Sobald Sie die Fehler und optional auch etwaige Warnungen und Meldungen behoben haben, klicken Sie auf Bereitstellen. Phase klicken.

Die Service-Definitionsdatei wird am angegebenen Speicherort gespeichert.

Laden und Veröffentlichen der Service-Definition

Nachdem Sie die Service-Definitionsdatei vom Autor erhalten haben, können Sie sie manuell in Eigene Inhalte Ihres Portals hochladen und einen Kachel-Layer veröffentlichen oder ein Skript zum Hochladen und Veröffentlichen der Datei planen.

Manuelles Hochladen und Veröffentlichen

Melden Sie sich bei der Portal-Website an, um die Service-Definitionsdatei zu Ihrem Portal hinzuzufügen und dort zu veröffentlichen.

  1. Melden Sie sich als Mitglied mit Berechtigungen zum Erstellen von Inhalten und Veröffentlichen von gehosteten Kachel-Layern bei Ihrem Portal an, und öffnen Sie Eigene Inhalte.
  2. Klicken Sie auf Element hinzufügen.
  3. Wählen Sie aus, dass die Datei vom Computer geladen werden soll.
  4. Klicken Sie auf die Schaltfläche "Durchsuchen", und wählen Sie die Service-Definitionsdatei aus.
  5. Aktivieren Sie Diese Datei als Feature-Service veröffentlichen.
  6. Geben Sie durch Kommas getrennte Tag-Begriffe ein.

    Tags sind Wörter oder knappe Formulierungen, die das Element beschreiben und dazu beitragen, dass es besser gefunden wird.Bundesland wird als ein Tag, bundesstaatlich, Land hingegen als zwei Tags betrachtet.

  7. Klicken Sie auf Element hinzufügen, um die Service-Definitionsdatei hinzuzufügen und den Kachel-Layer zu veröffentlichen.

    Der Kachel-Layer wird auf dem Hosting-Server Ihres Portals veröffentlicht. Sowohl die Service-Definition als auch die Kacheln werden zu Eigene Inhalte hinzugefügt.

  8. Wenn der Kachel-Layer veröffentlicht wurde, können Sie die Kachelerstellung starten. Klicken Sie auf diesen Link, um die Kacheln zu erstellen.

Standardmäßig haben nur Sie selbst Zugriff auf die Service-Definitionsdatei und den gehosteten Kachel-Layer. Sie können die Datei und die Kacheln für andere Benutzer in Ihrer Organisation oder für bestimmte Gruppen freigeben.

Ausführen eines Skripts zum Hochladen und Veröffentlichen

Wenn Sie nach Geschäftsschluss eine Service-Definitionsdatei hochladen und veröffentlichen möchten, automatisieren Sie das folgende Skript, das auf Ihrem ArcGIS-Server-Computer ausgeführt werden soll:

  1. Kopieren Sie das folgende Skript in eine Textdatei, und speichern Sie die Datei mit der Erweiterung .py.

    import os, sys, json, urllib, urllib2, httplib, urlparse, mimetools, mimetypes
    from cStringIO import StringIO
    
    # generates a new token from Portal
    def generate_token(baseurl, username, password):
        tokenUrl = urlparse.urljoin(baseurl, 'sharing/generateToken')
        postdata = { 'username': username, 'password': password,
                   'client': 'requestip', 'expiration': 60, 'f': 'json' }
        encoded_postdata = urllib.urlencode(postdata)
        opener = urllib2.build_opener()
        try: resp = opener.open(tokenUrl, data=encoded_postdata)
        except urllib2.HTTPError as e: raise Exception('Unable to connect to Portal, please check the url: {} {}'.format(e.code, e.reason))
        resp_json = json.loads(resp.read())
        if 'error' in resp_json: raise Exception('\n'.join(resp_json['error']['details']))
        return resp_json['token']
        sys.exit(1)
    
    # create proper multi-part POST request data
    def _encode_multipart_formdata(fields, files):
        boundary = mimetools.choose_boundary()
        buf = StringIO()
        for (key, value) in fields.iteritems():
            buf.write('--%s\r\n' % boundary)
            buf.write('Content-Disposition: form-data; name="%s"' % key)
            buf.write('\r\n\r\n%s\r\n' % str(value))
        for (key, filepath, filename) in files:
            buf.write('--%s\r\n' % boundary)
            buf.write('Content-Disposition: form-data; name="%s"; filename="%s"\r\n' % (key, filename))
            buf.write('Content-Type: %s\r\n' % (mimetypes.guess_type(filename)[0] or 'application/octet-stream'))
            f = open(filepath, "rb")
            try:
                buf.write('\r\n' + f.read() + '\r\n')
            finally:
                f.close()
        buf.write('--' + boundary + '--\r\n\r\n')
        buf = buf.getvalue()
        return boundary, buf
    
    # send multi-part POST request
    def _postmultipart(host, selector, fields, files, ssl):
        boundary, body = _encode_multipart_formdata(fields, files)
        headers = { 'Content-Type': 'multipart/form-data; boundary={0}'.format(boundary) }
        if ssl: h = httplib.HTTPSConnection(host)
        else: h = httplib.HTTPConnection(host)
        
        h.request('POST', selector, body, headers)
        resp = h.getresponse()
    
        return resp.read()
    
    # first upload the SD file and create an item in Portal
    def addSDItem(baseurl, user, token, title, file, folder = ''):
        addUrl = 'sharing/rest/content/users/{}/{}addItem'
        if folder != '': addUrl = addUrl.format(user, folder + '/')
        else: addUrl = addUrl.format(user, '')
        
        url = urlparse.urljoin(baseurl, addUrl)
    
        files = [('file', file, os.path.split(file)[1])]
        fields = { 'token' : token, 'f' : 'json', 'type' : 'Service Definition', 'title' : title, 
                   'tags' : 'sampletag', 'name': title, 'typeKeywords' : 'Data, Service Definition, ArcGIS, sd' }
    
        ssl = url.startswith('https://')
        
        parsed_url = urlparse.urlparse(url)
        
        print('Uploading {} to {}..'.format(file, baseurl))
        resp = _postmultipart(parsed_url.netloc, str(parsed_url.path), fields, files, ssl)
        resp_json = json.loads(resp)
    
        if 'error' in resp_json:
          raise Exception('Unable to upload file {}: {}'.format(file, resp_json['error']['message']))
        
        return resp_json['id']
        
    # second publish the uploaded SD item as a new tiled service
    def publishTiles(baseurl, user, token, itemid):
        publishUrl = urlparse.urljoin(baseurl, 'sharing/rest/content/users/{}/publish'.format(user))
        query_dict= { 'f' : 'json', 'token': token, 'itemid': itemid, 'buildInitialCache' : True,
                      'publishParameters' : { 'name' : 'cities' }, 'fileType': 'serviceDefinition' }
                      
        query_string = urllib.urlencode(query_dict)
        print('Publishing tile service from item..')
        response = urllib.urlopen(publishUrl, query_string)
            
        resp_json = json.loads(response.read())
        
        if 'error' in resp_json: raise Exception('Unable to publish item: {}'.format(resp_json['error']['message']))
    
    # read input from command line when run as a standalone script
    if __name__ == '__main__':
        try: 
          url = sys.argv[1]
          user = sys.argv[2]
          password = sys.argv[3]
          f = sys.argv[4]
          title = sys.argv[5]
          if not url.endswith('/'): url += '/' # make sure the url ends with /
        except: # if too few parameters are passed on command line, show usage help
          print('Usage: ')
          print('       publishServiceItem.py [portalUrl] [userName] [password] [sdFilePath] [titleOfServiceItem]')
          print('')
          print('portalUrl           The secure url to the portal, e.g. https://portalmachine.example.com/arcgis/')
          print('userName            The username of a user to publish the service.')
          print('                    This user must have the required publishing privileges.')
          print('password            The password of the user')
          print('sdFilePath          Path to the .sd file containing the service definition')
          print('                    E.g. c:\\temp\cachedService.sd')
          print('titleOfServiceItem  The title to assign to the published item in the portal.')
          sys.exit(1)  
    
        token = generate_token(url, user, password)
    
        id = addSDItem(url, user, token, title, f)
        publishTiles(url, user, token, id)
        print('Publishing complete. Tile generation has been started and may take a while to finish.')

  2. Erstellen Sie eine Batch-Datei oder ein Shell-Skript, die/das für die Ausführung des Python-Skripts festgelegt werden soll.
  3. Rufen Sie das Python-Skript in der Datei auf, und stellen Sie Optionen bereit, die für Ihre Site spezifisch sind.

    Um beispielsweise das Skript "publishServiceItem.py" auszuführen, geben Sie die URL zu Ihrem Portal, den Benutzernamen, mit dem die Verbindung hergestellt werden soll, das Kennwort des Benutzers, den Pfad zu der Service-Definitionsdatei und einen Titel für den Service an, der erstellt werden soll. In diesem Beispiel lautet die Portal-URL https://portal.domain.com/arcgis/, der Benutzername und das Kennwort lauten pub1 und pub.1, der Pfad zu der Service-Definitionsdatei ist C:\maps\SDs\mymap.sd und der Service-Name lautet "studytiles".

    publishServiceItem.py https://portal.domain.com/arcgis/ pub1 pub.1 C:\maps\SDs\mymap.sd studytiles

    Tipp:

    Alternativ können Sie das folgende vereinfachte Skript verwenden, um eine Service-Definitionsdatei in Ihr Portal hochzuladen, einen Kachel-Layer zu veröffentlichen und einen Cache zu erstellen. Sie müssen jedoch zusätzliche Python-Pakete wie PortalPy und Python Requests installieren, um dieses Skript auszuführen. PortalPy ist für die Verwendung mit Portal for ArcGIS installiert. Weitere Informationen zum Installieren und Verwenden dieses Moduls finden Sie in der Hilfe für Portal for ArcGIS unter Skripterstellung für Verwaltungsaufgaben mit PortalPy.

    import portalpy, requests, urlparse, sys, os
    
    # first upload the SD file and create an item in Portal
    def addSDItem(baseurl, user, token, title, file, folder = ''):
        addUrl = 'sharing/rest/content/users/{}/{}addItem'
        if folder != '': addUrl = addUrl.format(user, folder + '/')
        else: addUrl = addUrl.format(user, '')
        
        url = urlparse.urljoin(baseurl, addUrl)
    
        files = { 'file' : (os.path.split(file)[1], open(file, 'rb')) }
        fields = { 'token' : token, 'f' : 'json', 'type' : 'Service Definition', 'title' : title, 
                   'tags' : 'sampletag', 'name': title, 'typeKeywords' : 'Data, Service Definition, ArcGIS, sd' }
    
        print('Uploading {} to {}..'.format(file, baseurl))
        
        # send POST with upload request
        # verify=False turns off SSL cert validation, turn on for production environments with CA-signed certs
        resp = requests.post(url, data=fields, files=files, verify=False)
        resp_json = resp.json()
    
        if 'error' in resp_json:
          raise Exception('Unable to upload file {}: {}'.format(file, resp_json['error']['message']))
        
        return resp_json['id']
    
    # second publish the uploaded SD item as a new tiled service
    def publishTiles(baseurl, user, token, itemid):
        publishUrl = urlparse.urljoin(baseurl, 'sharing/rest/content/users/{}/publish'.format(user))
        query_dict= { 'f' : 'json', 'token': token, 'itemid': itemid, 'buildInitialCache' : True,
                      'publishParameters' : "{ 'name' : 'cities' }", 'fileType': 'serviceDefinition' }
        
        print('Publishing tile service from item..')
        
        # send POST with publish request
        # verify=False turns off SSL cert validation, turn on for production environments with CA-signed certs
        response = requests.post(publishUrl, data=query_dict, verify=False) 
            
        resp_json = response.json()
        
        if 'error' in resp_json: raise Exception('Unable to publish item: {}'.format(resp_json['error']['message']))
    
    # read input from command line when run as a standalone script
    if __name__ == '__main__':
        try: 
          url = sys.argv[1]
          user = sys.argv[2]
          password = sys.argv[3]
          f = sys.argv[4]
          title = sys.argv[5]
          if not url.endswith('/'): url += '/' # make sure the url ends with /
        except: # if too few parameters are passed on command line, show usage help
          print('Usage: ')
          print('       publishServiceItem.py [portalUrl] [userName] [password] [sdFilePath] [titleOfServiceItem]')
          print('')
          print('portalUrl           The secure url to the portal, e.g. https://portalmachine.example.com/arcgis/')
          print('userName            The username of a user to publish the service.')
          print('                    This user must have the required publishing privileges.')
          print('password            The password of the user')
          print('sdFilePath          Path to the .sd file containing the service definition')
          print('                    E.g. c:\\temp\cachedService.sd')
          print('titleOfServiceItem  The title to assign to the published item in the portal.')
          sys.exit(1) 
    
        portal = portalpy.Portal(url, user, password)
        token = portal.generate_token(user, password)
    
        id = addSDItem(url, user, token, title, f)
        publishTiles(url, user, token, id)
        print('Publishing complete. Tile generation has been started and may take a while to finish.')

  4. Legen Sie fest, dass das Skript bei niedriger Portal-Auslastung ausgeführt wird.

    Weitere Informationen zum Planen eines Skripts finden Sie in der Hilfe zur ArcGIS-Geoverarbeitung unter Planen der Ausführung eines Python-Skriptes zu bestimmten Zeiten.