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
- Un projet intégré avec accès au portail SAD EAG ArcGIS
- 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¶
-
Installez les packages :
ou utilisez Artifactory
-
Importez les bibliothèques nécessaires dont vous aurez besoin dans le bloc-note.
-
Accéder au portail Votre groupe de projet recevra un identifiant client lors de l'intégration. Collez l'ID client entre les guillemets
client_id='######'
. -
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.
Afficher les informations utilisateur¶
En utilisant la fonction « me », nous pouvons afficher diverses informations sur l'utilisateur connecté.
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.
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.
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.
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