Exemple de service de géotraitement : données à la demande

Complexité : Débutant Exigences relatives aux données : ArcGIS Tutorial Data Setup

Dossier

DataOnDemand

Objet

Dans le cadre d'un polygone numérisé par l'utilisateur, ce service découpe des jeux de données dans une géodatabase fichier en générant des fichiers de formes, puis crée un fichier .zip qui est envoyé par e-mail à l'utilisateur.

Services

PortlandDataMapService (service de carte) et DataOnDemand (service de géotraitement)

Tâches de géotraitement

ClipZipAndEmail

Entrées

La zone d'intérêt (jeu d'entités surfaciques) et une adresse e-mail pour l'envoi des données

Sorties

aoizip.zip, un fichier compressé contenant les données

Données

L'exemple utilise un petit jeu de données de la ville de Portland dans l'Oregon.

Extensions

Aucune

A remarquer

Ce service est hébergé sur ESRI sampleserver (voir remarque ci-dessous). Il s'agit d'un service de découpage et d'expédition qui est décrit dans l'exemple de découpage et d'expédition.

A propos de cet exemple

Dossier correspondant

C:\arcgis\ArcTutor\GP Service Examples\DataOnDemand contient les outils et les données.

A propos de cet exemple

Ce service DataOnDemand est un autre exemple de service de découpage et d'expédition. Avant d'étudier ce service, vous devez commencer par lire l'exemple de découpage et d'expédition, car les entités et les fonctions du service DataOnDemand sont comparées à ce service (voir tableau ci-dessous). Si vous créez votre propre service de découpage et d'expédition, vous pouvez y associer les entités et les fonctions de ces deux services.

Exemple de découpage et d'expédition

L'exemple suivant

L'utilisateur peut sélectionner les couches à télécharger.

Un jeu de données fixe est téléchargé.

Il est possible de spécifier la référence spatiale des données en sortie.

La référence spatiale ne peut pas être spécifiée. Elle est définie en fonction de la référence spatiale des jeux de données en cours de découpage.

Le format en sortie peut être spécifié.

Seuls les fichiers de formes sont en sortie.

Utilise des modèles, des scripts et des couches d'outils. Le service est publié à l'aide d'une carte.

Aucun modèle n'est utilisé, seulement des scripts. La boîte à outils est publiée, plutôt qu'une carte.

Les couches de la carte sont découpées.

Les jeux de données sont découpés. (Comme aucune carte source ne contient de couches, ces dernières couches ne peuvent pas être utilisées. Seuls les jeux de données peuvent l'être.)

La zone d'intérêt (le polygone de découpage que l'utilisateur numérise) n'est pas téléchargée.

La zone d'intérêt est téléchargée.

La sortie ne peut pas être envoyée par e-mail.

La sortie peut être envoyée par e-mail en spécifiant un nom de serveur de messagerie dans le script ClipZipAndEmail (le fichier source est DataOnDemand/Scripts/zipandemail.py).

Comparaison entre l'exemple de découpage et d'expédition et cet exemple de données à la demande

Ce service inclut d'autres entités :

Hébergement de ce service par ESRI

Ce service est hébergé sur les serveurs ESRI ArcGIS Online. Vous pouvez tester ce service comme suit :

  1. Ajoutez http://sampleserver1.arcgisonline.com/arcgis/services en tant que serveur ArcGIS.
  2. Ajoutez http://sampleserver2.arcgisonline.com/arcgis/services en tant que serveur ArcGIS.
  3. Dans ArcMap, ajoutez le service de carte Portland/Portland_ESRI_LandBase_AGO à partir de sampleserver1.
  4. Ajoutez le service de géotraitement Portland/ESRI_CadastralData_Portland à ArcToolbox à partir de sampleserver2.
  5. Développez la boîte à outils ESRI_CadastralData_Portland et exécutez la tâche ClipAndShip.

Les scripts et les outils du dossier DataOnDemand sont les mêmes que ceux utilisés par la tâche ClipAndShip dans le service de géotraitement ESRI_CadastralData_Portland. Les données présentées dans cet exemple, qui se trouvent dans DataOnDemand/ToolData/Portland.gdb, représentent un petit sous-ensemble des données utilisées dans le service de carte Portland_Portland_ESRI_LandBase_AGO.

RemarqueRemarque :

Les cartes et les services de géotraitement qui se trouvent dans sampleserver1 et sampleserver2 sont susceptibles d'être modifiés dans le futur. La disponibilité permanente des services décrits ci-dessus n'est pas garantie.

Données

Les données, qui concernent une petite zone de la ville de Portland dans l'Oregon, se trouvent dans C:\arcgis\ArcTutor\GP Service Examples\DataOnDemand\ToolData\Portland.gdb.

L'outil ClipZipAndEmail utilise une variable de jeu d'entités, qui nécessite une structure pour définir les types et les champs d'entités. Cette structure se trouve dans C:\arcgis\ArcTutor\GP Service Examples\DataOnDemand\ToolData\Templates.gdb.

Le dossier ToolData contient également Mapofzip.mxd, qui est inclus dans le fichier ZIP et affiche les données découpées et expédiées.

Scripts

La boîte à outils DataOnDemandTools contient un outil de script, ClipZipAndEmail. La source de cet outil de script est DataOnDemand/Scripts/zipandemail.py.

Avant d'utiliser l'outil ClipZipAndEmail, vous devez modifier le code et indiquer le nom de votre serveur de messagerie. (Vous pouvez soit modifier la source Python directement dans une application comme PythonWin, soit cliquer avec le bouton droit sur l'outil de script et cliquer sur Modifier.) Votre administrateur système doit être en mesure de vous indiquer le nom de ce serveur de messagerie.

Certaines propriétés et entités importantes de ce script sont décrites ci-dessous.

Publication

PortlandDataMapService est publié en tant que service de carte.

La boîte à outils DataOnDemandTools est publiée en tant que service de géotraitement.

Configuration du service

Pour configurer ce service pour vos données, vous devez modifier l'outil de script ClipZipAndEmail. La source de cet outil de script est DataOnDemand/Scripts/zipandemail.py. Vous pouvez soit modifier la source Python directement dans une application comme PythonWin, soit cliquer avec le bouton droit sur l'outil de script et cliquer sur Modifier.

Vous devrez changer l'emplacement des données et la liste des jeux de données. Dans la routine principale :

if __name__ == '__main__':

Recherchez la définition de la variable dataloc et modifiez-la :

 global dataloc; dataloc = os.path.dirname(sys.path[0]) + g + "tooldata" + g + "portland.gdb" + g

L'emplacement des données est relatif à celui du script.

Pour en savoir plus sur l'utilisation de l'emplacement du script pour créer des chemins d'accès

Ensuite, modifiez la liste des jeux de données à découper, qui se trouve dans cet extrait de code :

    ds = ["Streets" + g + "streets", \
            "Water" + g + "StreamRoute", "Water" + g + "floodplain", "Water" + g + "riv_fill", \
            "Transit" + g + "railroad", \
            "Census" + g + "blockgrp", \
            "Develop" + g + "Buildings", \
            "Land" + g + "zoning", "Land" + g + "Parks", \
            "Places" + g + "schools", "Places" + g + "hospital"]

Pour terminer, vous devez indiquer le nom du serveur de messagerie dans le script sendemail.py. Le code à modifier se trouve presque en haut du script :

def send_mail(send_from, send_to, subject, text, f=""):
    assert type(send_to)==list

    # Provide the name of your email server below
    #
    server = "ouremailserver.somewhere.com"

Rubriques associées


2/28/2012