Il y a quelques jours, j'ai évoqué sur arcOrama les avantages de l'API Python ArcGIS pour disposer d'une API Python pour automatiser des tâches autour de son SIG distribué (ou SIG Web) ArcGIS. J'ai également eu l'occasion d'expliqué l'intérêt de pouvoir utiliser cette API dans une IDE telle que Jupyter Notebook.
Aujourd'hui, je vous propose un premier tutorial sur l'usage de l'API ArcGIS for Python dans le contexte Jupyter Notebook à travers un premier Notebook qui vous permettra de découvrir les concepts de bases de l'API et en particulier de l'objet GIS.
Le Notebook présenté ci-dessous est téléchargeable ici.
Aujourd'hui, je vous propose un premier tutorial sur l'usage de l'API ArcGIS for Python dans le contexte Jupyter Notebook à travers un premier Notebook qui vous permettra de découvrir les concepts de bases de l'API et en particulier de l'objet GIS.
L'objet GIS est l'objet principal lorsque vous travaillez avec l'API Python ArcGIS. Il représente le SIG distribué avec lequel vous souhaitez travailler. Il peut s'agir d'une connexion via un portail ArcGIS Online ou ArcGIS Enterprise. L'objet GIS permet de consommer et de publier des contenus SIG mais il permet également aux administrateur de gérer les utilisateurs, les groupes, les applications et datastores.
Pour créer cet objet 'GIS' qui constitue le point d'entrée de tous vos scripts, il suffit de l'importer depuis le module 'arcgis.gis":
Pour créer cet objet 'GIS' qui constitue le point d'entrée de tous vos scripts, il suffit de l'importer depuis le module 'arcgis.gis":
In [1]:
from arcgis.gis import GIS
Pour créer une instance de cet objet GIS, vous passez l'url du portai et vos informations d'identification. Si vous ne souhaitez pas enregistrer le mot de passe dans le script, vous pouvez ne pas mettre le troisième argument. Il sera alors demandé interactivement à l'exécution du code.
In [2]:
my_gis = GIS("https://www.arcgis.com", "username", "password")
Si vous ne souhaitez pas enregistrer le mot de passe dans le script, vous pouvez ne pas mettre le troisième argument. Il sera alors demandé interactivement à l'exécution du code.
In [3]:
my_gis = GIS("https://www.arcgis.com", "username")
Pour une connexion anonyme à ArcGIS Online, vous pourrez utiliser le code suivant:
In [4]:
my_gis = GIS()
Si vous vous connectez à un portail ArcGIS avec un compte d'organisation, selon vos privilèges vous aurez accès à différentes propriétés de ce portail.
In [5]:
my_gis = GIS("https://www.arcgis.com", "username", "password")
In [6]:
my_gis.properties.availableCredits
Out[6]:
In [7]:
my_gis.properties.isPortal
Out[7]:
In [8]:
my_gis.properties.name
Out[8]:
Un point d'interogation directement positionné après une variable (ou une classe d'objet) permet d'afficher l'aide sur cet objet.
In [9]:
my_gis?
Vous pouvez maintenant utiliser l'objet GIS. Ce dernier propose des objets "helpers" permettant d'accéder et de gérer simplement différentes ressources, tels que les utilisateurs, les groupes, les contenus ou les datastores. Les objets correspondants se nomment respectivement: users, groups, content et datastore.
Par exemple, ci-dessous un exemple permettant de récupérer un utilisateur spécifique parmi la liste des utilisateurs via l'objet GIS.
Par exemple, ci-dessous un exemple permettant de récupérer un utilisateur spécifique parmi la liste des utilisateurs via l'objet GIS.
In [10]:
user = my_gis.users.get('glavenu')
L'API Python ArcGIS est intégrée avec Jupyter Notebook pour rendre facile la visualisation et l'interaction avec les ressources de votre SIG Web. Pour cela, des représentations riches peuvent être utilisée dans votre code Python pour mieux comprendre les ressources que vous manipulez:
In [11]:
user
Out[11]:
Les propriétés de ces ressources peuvent se récupérer en utilisant la notation ['propriété']:
In [12]:
user.keys()
Out[12]:
In [13]:
user['firstName']
Out[13]:
Ces propriétés peuvent aussi être récupérées en tant que propriété de l'objet à l'aide d'un simple ".":
In [14]:
user.firstName + ' ' + user.lastName + ' ' + user.culture
Out[14]:
In [15]:
from datetime import datetime
ts = user.created/1000
print(datetime.utcfromtimestamp(ts).strftime('%d-%m-%Y %H:%M:%S'))
Interagir avec des contenus¶
L'objet GIS vous permet d'utiliser des cartes web pour visualiser des contenus. Il peut s'gir de cartes existantes sur votre portail ou simplement de cartes créées dynamiquement par votre code. Cette carte 2D (ou 3D) pourra servir, par exemple, à afficher le résultat d'une analyse faite en ligne ou à partir de données locales.
In [16]:
my_map = my_gis.map()
my_map
In [17]:
my_map = my_gis.map("Tour Eiffel",17)
my_map
In [18]:
my_items = my_gis.content.search('PLU',item_type='Feature Layer',outside_org=True)
for the_item in my_items:
display(the_item)
On récupère ici un élément par une recherche dans les contenus.
In [19]:
my_item = my_gis.content.search('production énergie renouvelable France 2012',item_type='Web Map')[0]
my_item
Out[19]:
On récupère ici un élément directement par son ID.
In [20]:
my_item = my_gis.content.get('62226def755748f0a2275fd4583f1e11')
my_item
Out[20]:
L'élément étant une carte web, on peut créer un objet WebMap pour interagir avec dans le script.
In [21]:
from arcgis.mapping import WebMap
my_web_map = WebMap(my_item)
my_web_map
In [22]:
my_feature_layer = my_gis.content.get('b91faa65a84d4ef2b3864454b631500b')
my_feature_layer
Out[22]:
L'API permet également de créer une nouvelle carte web et d'y ajouter différentes couches existantes ou issues du résultat de vos traitements Python.
In [23]:
new_web_map = WebMap()
new_web_map.add_layer(my_feature_layer)
new_web_map
In [24]:
webmap_item_properties = {'title':'Limites Départements',
'snippet':'Map créée à l\'aide de l\'API Python ArcGIS',
'tags':['Départements', 'GeoFLA', 'Limites administratives', 'Python']}
new_web_map.save(webmap_item_properties, thumbnail='https://geoinnova.org/blog-territorio/wp-content/uploads/2016/10/3.jpg')
Out[24]:

0 comments :
Enregistrer un commentaire