Géospatial
Environnement d'analyse géospatial (EGA) - Accès multiplateforme
Mise en route
IMPORTANT: Prérequis
1. Un projet intégré avec accès à DAS GAE ArcGIS Portal
2. Un id client ArcGIS Portal (clé API)
ArcGIS Enterprise Portal est accessible dans AAW ou CAE à l'aide de l'API, à partir de n'importe quel service qui exploite le langage de programmation Python.
Par exemple, dans AAW et l'utilisation de Jupyter Notebooks dans l'espace, ou dans CAE 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 DAS] (https://statcan.github.io/gae-eag/french/portalFR/)
Utilisation d'ArcGIS API (interface de programmation d'application) for Python
Connexion à ArcGIS Enterprise Portal à l'aide de l'API ArcGIS
-
Installer les packages :
python conda install -c esri arcgis
ou en utilisant Artifactory
python3333 conda install -c https://jfrog.aaw.cloud.statcan.ca/artifactory/api/conda/esri-remote arcgis
-
Importez les bibliothèques nécessaires dont vous aurez besoin dans le Bloc-notes.
python from arcgis.gis import GIS from arcgis.gis import Item
-
Accéder au portail Votre groupe de projet recevra un ID client lors de l'intégration. Collez l'ID client entre les guillemets
client_id='######'
.python gis = GIS("https://geoanalytics.cloud.statcan.ca/portal", client_id=' ') print("succès: " + gis.properties.user.username)
-
- Le résultats vous redirigera vers un portail de connexion.
- Utilisez l'option connexion Azure de StatCan et votre ID cloud
- Après une connexion réussie, vous recevrez un code pour vous connecter à l'aide de SAML.
- Collez ce code dans le résultat (en anglais seulement).
(en anglais seulement)
Afficher les informations de l'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)
Recherche de contenu
Recherchez le contenu que vous avez hébergé sur le portail géographique DAaaS. 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.
Rechercher tous vos itmes hébergés dans le portail géographique DAaaS.
my_content = me.items()
my_content
Recherchez le contenu spécifique que vous possédez dans le portail géographique DAaaS.
Ceci est similaire à l'exemple ci-dessus, mais si vous connaissez le titre de la couche qu'ils 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 == "Flood in 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 ="Feature Service")
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. Pour ce faire, vous fournissez le numéro d'identification unique de l'élément que vous souhaitez utiliser. Trois exemples sont décrits ci-dessous, tous accédant à la couche identique.
item1 = gis.content.get(my_content[5].id) #À partir de la recherche de votre contenu ci-dessus
display(item1)
item2 = gis.content.get(flood_item.id) #De l'exemple ci-dessus - recherche de contenu spécifique
display(item2)
item3 = gis.content.get('edebfe03764b497f90cda5f0bfe727e2') #Le numéro d'identification de l'article
display(item3)
Effectuer une analyse
Une fois les couches introduites dans le bloc-notes Jupyter, nous sommes en mesure d'effectuer des types d'analyse similaires que vous vous attendez à trouver dans un logiciel SIG tel qu'ArcGIS. Il existe de nombreux modules contenant de nombreux sous-modules dont 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' - zones de distance égale par rapport aux entités. Ici, nous spécifions la couche que nous voulons utiliser, la distance, les unités et le nom en sortie (vous pouvez également spécifier d'autres caractéristiques telles que le champ, le type d'anneau, le type d'extrémité et autres). En spécifiant un nom en sortie, après avoir exécuté la commande de zone tampon, une nouvelle couche sera automatiquement téléchargée dans le portail GEO DAaaS contenant la nouvelle fonctionnalité que vous venez de créer.
buffer_lyr = use_proximity.create_buffers(item1, distances=[1],
units = "Kilometers",
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.
# create a Spatially Enabled DataFrame object
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 DAaaS GEO. Nous pouvons mettre à jour les propriétés des éléments, les données, les vignettes et les métadonnées.
item1_buffer = gis.content.get('c60c7e57bdb846dnbd7c8226c80414d2')
item1_buffer.update(item_properties={'title': 'Enter Title'
'tags': 'tag1, tag2, tag3, tag4',
'description': 'Enter description of item'}
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 ('Changement de population') 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, en Ontario. Les données utilisées seront décrites ci-dessous.
Commencez par coller conda install -c conda-forge ipyleaflet
vous permettant d'installer des bibliothèques ipyleaflet dans l'environnement Python.
Importez 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) (en anglais seulement). Des contrôles supplémentaires ont été ajoutés, tels que des couches et des mises à 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 ArcGIS API for Python
La documentation complète de l'API ArGIS peut être trouvée ici (en anglais seulement)