Aller au contenu

Environnement d'Analyse Géospatiale (EAG) - Accès multi-plateforme

Données non protégées uniquement, SSI bientôt disponible!

À l'heure actuelle, notre serveur géospatial ne peut héberger et donner accès qu'à des informations statistiques non sensibles.

Démarrage

Conditions préalables

  1. Un projet intégré avec accès au portail SAD EAG ArcGIS
  2. Un identifiant client ArcGIS Portal (clé API)

Le portail ArcGIS Enterprise est accessible dans ETAA ou EAC à l'aide de l'API, à partir de n'importe quel service qui exploite le langage de programmation Python.

Par exemple, dans ETAA et l'utilisation de Bloc-notes Jupyter dans l'espace, ou pour EAC l'utilisation de Databricks, DataFactory, etc.

Le portail DAS GAE ArcGIS Enterprise est accessible directement ici

Pour obtenir de l'aide sur l'auto-inscription en tant qu'utilisateur du portail géospatial SAD


Utilisation de l'API ArcGIS pour Python

Connexion à ArcGIS Enterprise Portal à l'aide de l'API ArcGIS

  1. Installez les packages :

    conda install -c esri arcgis
    

    ou utilisez Artifactory

    conda install -c https://jfrog.aaw.cloud.statcan.ca/artifactory/api/conda/esri-remote arcgis
    
  2. Importez les bibliothèques nécessaires dont vous aurez besoin dans le bloc-note.

    from arcgis.gis import GIS
    from arcgis.gis import Item
    

  3. Accéder au portail Votre groupe de projet recevra un identifiant client lors de l'intégration. Collez l'ID client entre les guillemetsclient_id='######'.

    gis = GIS("https://geoanalytics.cloud.statcan.ca/portal", client_id=' ')
    print("Connexion réussie sous le nom de: " + gis.properties.user.username)
    
  4. La sortie vous redirigera vers un portail de connexion.

    • Utilisez l'option de connexion Azure de StatCan et votre identifiant Cloud
    • Après une connexion réussie, vous recevrez un code pour vous connecter en utilisant SAML.
    • Collez ce code dans la sortie.

      Approbation OAuth2


Afficher les informations utilisateur

En utilisant la fonction « me », nous pouvons afficher diverses informations sur l'utilisateur connecté.

me = gis.users.me
username = me.username
description = me.description
display(me)


Rechercher du contenu

Recherchez le contenu que vous avez hébergé sur le portail SAD EAG. En utilisant la fonction « me », nous pouvons rechercher tout le contenu hébergé sur le compte. Il existe plusieurs façons de rechercher du contenu. Deux méthodes différentes sont décrites ci-dessous.

Recherchez tous vos éléments hébergés dans le portail géographique SAD.

my_content = me.items()
my_content
Recherchez du contenu spécifique que vous possédez dans le portail géographique SAD.

Ceci est similaire à l'exemple ci-dessus, mais si vous connaissez le titre de la couche que vous souhaitez utiliser, vous pouvez l'enregistrer en tant que fonction.

my_items = me.items()
for items in my_items:
    print(items.title, " | ", items.type)
    if items.title == "Inondation à Sorel-Tracy":
        flood_item = items

    else:
        continue
print(flood_item)

Recherchez tout le contenu auquel vous avez accès, pas seulement le vôtre.

flood_item = gis.content.search("tags: flood", item_type ="Service des caractéristiques")
flood_item

Obtenir du contenu

Nous devons obtenir l'élément du portail géographique SAD afin de l'utiliser dans le bloc-notes Jupyter. Cela se fait en fournissant le numéro d'identification unique de l'article que vous souhaitez utiliser. Trois exemples sont décrits ci-dessous, tous accédant à la même couche.

item1 = gis.content.get(my_content[5].id) #de la recherche de votre contenu ci-dessus
display(item1)

item2 = gis.content.get(flood_item.id) #de la recherche de votre contenu ci-dessus
display(item2)

item3 = gis.content.get('edebfe03764b497f90cda5f0bfe727e2') #le numéro d'identification du contenu
display(item3)

Effectuer une analyse

Une fois les couches importées dans le bloc-note Jupyter, nous sommes en mesure d'effectuer des types d'analyse similaires à ceux que vous vous attendriez à trouver dans un logiciel SIG tel qu'ArcGIS. Il existe de nombreux modules contenant de nombreux sous-modules qui peuvent effectuer plusieurs types d'analyses.

À l'aide du module arcgis.features, importez le sous-module use_proximity from arcgis.features import use_proximity. Ce sous-module nous permet de .create_buffers - des zones à égale distance des entités. Ici, nous spécifions la couche que nous voulons utiliser, la distance, les unités et le nom de sortie (vous pouvez également spécifier d'autres caractéristiques telles que le champ, le type d'anneau, le type de fin et autres). En spécifiant un nom de sortie, après avoir exécuté la commande buffer, une nouvelle couche sera automatiquement téléchargée dans le portail SAD EAG contenant la nouvelle fonctionnalité que vous venez de créer.

buffer_lyr = use_proximity.create_buffers(item1, distances=[1], 
                                          units = "Kilomètres", 
                                          output_name='item1_buffer')

display(item1_buffer)

Certains utilisateurs préfèrent travailler avec des packages Open Source. La traduction d'ArcGIS vers Spatial Dataframes est simple.

# créer un objet DataFrame spatialisé
sdf = pd.DataFrame.spatial.from_layer(feature_layer)


Mettre à jour les éléments

En obtenant l'élément comme nous l'avons fait similaire à l'exemple ci-dessus, nous pouvons utiliser la fonction .update pour mettre à jour l'élément existant dans le portail SAD EAG. Nous pouvons mettre à jour les propriétés, les données, les vignettes et les métadonnées des éléments.

item1_buffer = gis.content.get('c60c7e57bdb846dnbd7c8226c80414d2')
item1_buffer.update(item_properties={'title': 'Saisir le titre'
                                     'tags': 'tag1, tag2, tag3, tag4',
                                     'description': 'Saisir la description de l'article'}


Visualisez vos données sur une carte interactive

Exemple : bibliothèque MatplotLib Dans le code ci-dessous, nous créons un objet ax, qui est un tracé de style carte. Nous traçons ensuite notre colonne de changement de données ("Population Change") sur les axes

import matplotlib.pyplot as plt
ax = sdf.boundary.plot(figsize=(10, 5))
shape.plot(ax=ax, column='Population Change', legend=True)
plt.show()

Exemple : bibliothèque ipyleaflet Dans cet exemple, nous utiliserons la bibliothèque ipyleaflet pour créer une carte interactive. Cette carte sera centrée autour de Toronto, ON. Les données utilisées seront décrites ci-dessous. Commencez par coller conda install -c conda-forge ipyleaflet vous permettant d'installer les bibliothèques ipyleaflet dans l'environnement Python.


Importer les bibliothèques nécessaires.

import ipyleaflet 
from ipyleaflet import *
Maintenant que nous avons importé le module ipyleaflet, nous pouvons créer une carte simple en spécifiant la latitude et la longitude de l'emplacement que nous voulons, le niveau de zoom et le fond de carte (plus de fonds de carte). Des contrôles supplémentaires ont été ajoutés tels que les calques et l'échelle.
toronto_map = Map(center=[43.69, -79.35], zoom=11, basemap=basemaps.Esri.WorldStreetMap)

toronto_map.add_control(LayersControl(position='topright'))
toronto_map.add_control(ScaleControl(position='bottomleft'))
toronto_map

En savoir plus sur l'API ArcGIS pour Python

La documentation complète de l'API ArcGIS peut être trouvée ici

En savoir plus sur l'environnement analytique géospatial (GAE) et les services SAD

Guide d'aide GAE