47
SIG 2013. Atelier technique. Atelier Technique SIG 2013 Conférence Francophone 2 & 3 Octobre | Versailles ArcGIS pour les développeurs Patrice Freydière Fabrice Leray

ArcGIS pour les développeurs - SIG 2013 · SIG 2013. Atelier technique. Objectifs de la session •Présentation générale des solutions de développements autour de la plateforme

Embed Size (px)

Citation preview

SIG 2013. Atelier technique.

Atelier Technique

SIG 2013 – Conférence Francophone 2 & 3 Octobre | Versailles

ArcGIS pour les développeurs

Patrice Freydière

Fabrice Leray

SIG 2013. Atelier technique.

Objectifs de la session

• Présentation générale des solutions de

développements autour de la plateforme ArcGIS

• SDK

• API

Titre de la session

SIG 2013. Atelier technique.

Agenda

• Introduction

- Les familles de SDK

- Runtime

• Outils de développements

- SDK Mobiles

- SDK Desktop

- SDK Server

- SDK Web

- SDK GeoEvent Processor

- Community SDK

ArcGIS pour les développeurs

SIG 2013. Atelier technique.

Familles de SDK (1)

Titre de la session

Runtime

Android

WPF IOS

OS X

Windows Phone Java

QT

Windows Store

WEB

Flex

3.5

SilverLight

3.1

Javascript

3.7

SIG 2013. Atelier technique.

Familles de SDK (4)

Titre de la session

ArcObjects

ArcGIS Engine

ArcGIS SDK for

Desktop

ArcGIS SDK for

Server

Produit

Windows Mobile

GeoEvent

Processor

SIG 2013. Atelier technique.

API Runtime

Locale

- LocalMap ..

Sémantique - API Web - Runtimes

Titre de la session

WEB

-Map

-Layers

-Geoprocessing

-Editing

-Geometry

-Symbols

-Portal

-Items WebMap

-…

Core Runtime

(C++ / Arcobjects)

(fonctionnalités dépendantes du

SDK)

ArcGIS Online

Portal for ArcGIS

ArcGIS Server

SIG 2013. Atelier technique. Titre de la session

SIG 2013. Atelier technique.

Runtimes

Titre de la session

SIG 2013. Atelier technique.

SDK – Mobiles

SIG 2013. Atelier technique.

ArcGIS Runtime Mobile - SDK Construisez des applications pour les mobiles

• Natifs plateforme

• Intégrés à la platforme ArcGIS (Online / Portal / Server)

• SDK efficaces basés sur la sémantique des api WEB

(simples), utilisant des widgets plateforme natifs

• Plateforme :

- IOS (Objective C / Cocoa / Touch)

- Android (Java)

- Windows Phone (.NET / XAML / Windows)

- QT (C++, Windows / Linux)

Titre de la session

SIG 2013. Atelier technique.

ArcGIS Runtime Mobile - SDK

• Nouveautés 10.1

- Support WMS / KML / OSM Layer

- WebMaps – Portal

- Routing Task

- À Venir (Octobre 10.2)

- Edition déconnectée – Synchronisation

- Support de géotraitements offline (eg : Routing)

Titre de la session

SIG 2013. Atelier technique.

SDK – Desktop

SIG 2013. Atelier technique.

ArcGIS Runtime SDK - Desktop Construisez des applications légères et performantes pour le poste

de travail

• Natifs Plateforme (Hardware Accelerated)

• Edition locale + Geoprocessing local

• SDK WPF (Windows)

• SDK Java (Windows/Linux)

• SDK Qt (Windows / Linux)

• SDK MacOS X - Nouveau

Titre de la session

SIG 2013. Atelier technique.

Particularité ArcGIS Runtime for Desktop

GIS Runtime = Petit ArcGIS Server Local

Core Runtime

API REST / HTTP

API WEB ++ (Java / WPF)

Application

Http

SIG 2013. Atelier technique.

ArcGIS Runtime SDK – Nouveautés 10.2 Windows Store

• Runtime for Windows Store

- Windows 8

- Construire des applications pour Windows Store

- Plateformes x86, x64 ou ARM

Titre de la session

http://esriurl.com/winstore

SIG 2013. Atelier technique.

ArcGIS Runtime SDK MacOS – Nouveautés 10.2

• Runtime for MacOS X

- Construire des applications cartographiques natives

pour Mac OS X

Titre de la session

SIG 2013. Atelier technique.

• SDK pour créer des applications Desktop SIG centrique

• Basé sur l’API ArcObjects.

• Support de plusieurs langages de développements (Java,

.Net)

SDK Desktop / ArcGIS Engine

SIG 2013. Atelier technique.

• Depuis la 10.0 sont apparus les add-ins Java, .Net puis Python.

• But de ces développements : personnalisation des clients ArcGIS

Desktop ArcMap et ArcCatalog :

- ajout de fonctionnalités avancées (extensions à ces clients lourds)

- Développement de macros métier (pour les tâches répétitives => optimisation de

workflows : suite de géo traitements spécifiques par exemple)

• Outils à disposition :

- Composants d’IHM (boutons, outils (ToolBox), combobox, menus contextuels, barre

d’outils,…)

- Accès à l’API ArcObjects (.Net et Java)

- API tierces

• IDE de développement : Visual Studio 2010 (2012 pour 10.2

seulement), Eclipse (Java), PyDev (Python)

SDK Desktop / Les add-ins

SIG 2013. Atelier technique.

SDK Serveur

SIG 2013. Atelier technique.

SDK Serveur

• Permet de créer des géo traitements :

- Hébergés sur ArcGIS Server

- Exposant sur une interface REST ou SOAP

- Facilité de déploiement et de mise à l’échelle

• 2 solutions de développement pour ces géo traitements

- Géo traitements issus de ceux développés pour ArcGIS Desktop

- Géo traitements basés sur un développement de type Server Object

Extension (accès à toutes les fonctionnalités de l’API ArcObject)

ArcGIS pour les développeurs

ArcGIS Servers

-Géo traitements

(model Builder,

Python)

- SOE

HTTP

SIG 2013. Atelier technique.

SDK Serveur / services de géo traitements

• Repose sur les géo traitements Desktop :

- Accès à la boîte à outils (Toolbox) ArcGIS Server

- Model Builder

- Code extensible avec un développement Python spécifique*

• Avantages :

- Facilité de codage => permet de tester rapidement un algorithme

- Aucune compilation => facilement modifiable

• Limitation :

- Consommation mémoire importante si utilisation intensive => préférer le second

mode d’implantation basée sur les SOE

- Accès à un sous-ensemble fonctionnel : outils (toolboxes) utilisant les ArcObject.

- Interface REST uniquement

• Type d’exécution:

- Synchrone : le client attend la fin de l'exécution de la tâche par le serveur.

- Asynchrone : le client peut effectuer d'autres travaux pendant que le serveur exécute

la tâche.

ArcGIS pour les développeurs

SIG 2013. Atelier technique.

• Du code spécifique* peut être ajouté pour enrichir les fonctionnalités

offertes par les Toolboxes (rajout des tests conditionnels, boucles,

utilisation d’autres API externes Python…

Ce code Python peut être :

• soit écrit intégralement from scratch

• soit injecté dans un code produit par Model Builder

- Via Model-> Export -> To Python Script

ArcGIS pour les développeurs

SDK Serveur / services de

géo traitements – mise en œuvre

SIG 2013. Atelier technique.

SDK Serveur / services de géo traitements Didacticiel associé :

http://resources.arcgis.com/fr/help/main/10.1/index.html#//0057000

00042000000

ArcGIS pour les développeurs

SIG 2013. Atelier technique.

SDK Serveur / Server Object Extension

(SOE)

ArcGIS pour les développeurs

• Repose sur :

- Accès à la boîte à outils (Toolbox) ArcGIS Server

- La librairie ArcObject

- Langages supportés : .Net, Java

• Avantages :

- Accès intégral à la librairie ArcObject

- Possibilité de debugger les dév. (Java & .Net)

- Exposition d’une interface REST ou SOAP

• Limitation :

- Aucune : les SOE ont accès à toutes les fonctionnalités portées par les

ArcObject ESRI

• Type d’exécution:

- Synchrone : mode par défaut.

- Asynchrone : une implémentation spécifique peut émuler ce mode (HTTP

polling coté client + code serveur).

SIG 2013. Atelier technique.

SDK Serveur / SOE – mise en œuvre

ArcGIS pour les développeurs

• Suivant le langage choisi, installer le plugin de

développement fourni avec ArcGIS Server (SDK) :

• SDK Java (plugin Eclipse)

• SDK .Net (plugin pour Visual Studio)

• Interfaces à respecter :

- Suivant le type d’interface web (REST ou SOAP), le SOE doit

implémenter les interfaces adhoc.

- Possibilité de debugger les dév. (Java & .Net)

SIG 2013. Atelier technique.

• Problématique lié au débogage :

- Le SOE s’exécute dans un process lancé par AGS (pas de main)

- Nécessité d’attacher le débugger au process lançant ce service.

- Possibilité de debugger les dév. (Java & .Net) :

- Java :

http://resources.arcgis.com/en/help/main/10.2/index.html#/Debugging_a_server_object_exten

sion/015400000545000000/

- .Net : http://resources.arcgis.com/en/help/arcobjects-

net/conceptualhelp/index.html#//000100000pn6000000

SDK Serveur / SOE – débogage

ArcGIS pour les développeurs

SIG 2013. Atelier technique.

SDK Serveur / Mauvaises raisons pour un

développement serveur

ArcGIS pour les développeurs

• Bien que les développements côté serveur soient possibles,

les récentes versions d’ArcGIS Server apportent un ensemble

de fonctionnalités serveur de haut niveaux dont il faut

privilégier l’usage :

- Changement du rendu de couches => utiliser les dynamic layers

- Edition Web => utiliser les feature services

- Logique de géo traitements métiers « basiques » => utiliser les outils de

la boîte à outils (Model Builder et scripts Python)

- Fonction de calcul géométriques => Utiliser le geometry service d’ArcGIS

Server.

- Impression haute qualité => Utiliser le PrintingTools service d’ArcGIS

Server.

SIG 2013. Atelier technique.

SDK Web

SIG 2013. Atelier technique.

• Les API Web (JavaScript, Flex, Silverlight) reposent toutes

sur une architecture de type REST :

- pas de gestion des états,

- chaque URL désigne une ressource unique.

Ex. d’appel HTTP utilisant l’architecture REST : - http://localhost:6080/arcgis/rest/services/MyServices/nuts93/MapServer/export?dpi=96&transparent=tr

ue&format=png8&bbox=-

2921001.799268956%2C3250058.598209275%2C6654196.027668955%2C9617754.38628162&bboxSR=

102100&imageSR=102100&size=1012%2C673&f=image

ArcGIS Server

SDK Web / Fonctionnement des API

ArcGIS pour les développeurs

Client web

API Web : JS, Flex, Silverlight

API REST API SOAP

HTTP

SIG 2013. Atelier technique.

• Les API Web sont des briques logicielles de haut niveau

définissant des classes d’objets et réalisant des requêtes sur

AGS ou AGOL.

• Les API Web permettent :

- Web mapping (map service : export)

- Web editing (feature service : add/delete/update)

- Interrogation de couches (query, identify)

- Authentification sur le Portal (AGOL ou ArcGIS for Portal)

- …

- Autres appels serveur (AGS ou autre) via leurs API clientes HTTP

respectives (esri.request (JS), URLLoader/HTTPService (Flex),…)

• Elles proposent toutes des mécanismes de communication

client/serveur basés sur des requêtes asynchrones :

- Mise en place de callbacks pour JavaScript/HTML (Ajax), Flex et

Silverlight

SDK Web / Fonctionalités des API

ArcGIS pour les développeurs

SIG 2013. Atelier technique.

SDK Web / API JavaScript

ArcGIS pour les développeurs

• Repose sur :

- Le framework JavaScript Dojo lui-même basé sur :

- Dojo (noyau),

- Dijit (surcouche de Dojo contenant des widgets graphiques)

Par exemple, la classe esri.Map est un widget basé sur Dojo.

- Dojox (projets expérimentaux à vocation à être intégrés vers Dojo/Dijit si

poussés par la communauté et stables)

- Existe sous 2 formes :

- Mode « legacy » : mode synchrone et utilisation du mot-clé dojo.require

- Mode AMD (Asynchronous Module Definition) : le module et ses dépendances

sont alors chargés de manière asynchrone (gain de perf, meilleure isolation) Cf.

https://github.com/amdjs/amdjs-api/wiki/AMD

- Peut être référencé sur js.arcgis.com

- ou sur un serveur web local (API téléchargeable sur

http://www.esri.com/apps/products/download/):

• Documentation:

- https://developers.arcgis.com/en/javascript/

- http://proceedings.esri.com/library/userconf/devsummit13/papers/devsummit-052.pdf

<link rel="stylesheet" href=" http://js.arcgis.com/3.7 /js/css/esri.css">

<script src="http://js.arcgis.com/3.7/"></script>

SIG 2013. Atelier technique.

SDK Web / Créer ses propres widgets Dojo

ArcGIS pour les développeurs

• Dojo est extensible et permet à chaque développeur de créer son

propre widget:

- Extension des composants graphiques Dijit

- Mécanisme classique d’héritage de la classe dijit/_WidgetBase

• Documentation :

- http://dojotoolkit.org/reference-guide/1.8/quickstart/writingWidgets.html

• Démo :

- http://driskull.github.io/arcgis-dijit-sample-js/

SIG 2013. Atelier technique.

SDK Web / Les composants RIA Flex et

Silverlight

ArcGIS pour les développeurs

• Composants RIA dont l’architecture est très proches et présentant

de nombreux avantages:

- Les plugins dans le navigateur, sortes de mini machine virtuelles

permettant de lancer des composants clients riches pour une expérience

utilisateur proche d’un client lourd.

- Portabilité multi navigateurs et multi OS jusqu’alors !

- Langage : séparation de la partie vue (xaml vs mxml) de la partie « code

behind » (action script versus C# ou VB).

- Facilité de codage : langage objet et manipulation de balises XML.

• Inconvénients majeurs :

- Perte de portabilité avec l’arrivée des périphériques mobiles (tablettes,

smartphones) : les plugins sont de moins en moins supportés partout.

- Revival du JavaScript qui concurrence fortement ces 2 technologies

(framework Dojo, JQuery… offrant de bonnes performances) et assure

une meilleure portabilité.

SIG 2013. Atelier technique.

SDK Web / Les frameworks Flex et

Silverlight

ArcGIS pour les développeurs

• Flex :

- API agslib 3.5 (septembre 2013)

- Framework de développement proposé par ESRI :

- FlexViewer : http://resources.arcgis.com/en/communities/flex-viewer/

- Code ouvert de l’Application Builder (https://github.com/Esri/arcgis-viewer-

flex/tags) pour faciliter la configuration du FlexViewer

- Développements d’extension par la communauté des développeurs autour de ce

framework :

- https://github.com/Esri/arcgis-samples-flex

- Galerie d’extensions pour le FlexViewer :

http://www.arcgis.com/home/search.html?q=flex%20viewer&focus=applications-

web-flex

Flex Application

Builder

ArcGIS Viewer For Flex

SIG 2013. Atelier technique.

SDK Web / Les frameworks Flex et

Silverlight

ArcGIS pour les développeurs

• Silverlight :

- API Silverlight 3.1

- Viewer 32 et 64 bits.

- Framework de développement proposé par ESRI :

- Silverlight Viewer : http://resources.arcgis.com/en/communities/silverlight-viewer/

- Application Builder : http://resources.arcgis.com/en/help/silverlight-

viewer/concepts/index.html#//01770000000n000000 pour faciliter la

configuration du Silverlight Viewer

- Galerie d’extensions pour le Silverlight Viewer:

http://www.arcgis.com/home/search.html?q=tags%3A%20%22silverlight%20vie

wer%22&t=content

ArcGIS Viewer for Silverlight

Silverlight Application Builder

SIG 2013. Atelier technique.

SDK Web / API ArcGIS Portal

ArcGIS pour les développeurs

• API REST aussi

• Présente au sein des 3 technologies web (JS/Flex/Silverlight)

• Compatible avec AGOL et les portails déployés en interne créés avec Portal

for ArcGIS.

• Permet de s’authentifier sur le Portal

• Manipule les objets du Portal (Item, Folder, Group, WebMap…)

• Accède aux services exposés par le Portal (Geometry Service, Route

Service…)

• Documentation complémentaire :

http://resources.arcgis.com/fr/help/arcgisonline/index.html#//010q000000mv0

00000

AGOL / ArcGIS for Portal

HTTP REST

SIG 2013. Atelier technique.

SDK - GeoEvent

Processor

SIG 2013. Atelier technique.

GeoEvent Processor

• Moteur d’évènements, orienté « message », permettant de traiter et

diffuser des évènements géographiques en « temps réel ».

A

• Titre de la session

SIG 2013. Atelier technique.

GeoEvent Processor SDK

• Permet d’étendre les capacités du GeoEvent Processor sur deux

axes :

- Connectivité : Implémentation de Connecteurs

- Transport

- Adaptor

- Processeurs

- Implémentation Custom de traitements intégrés au GeoEvent

Processor

- Le SDK est disponible en Java – Maven

- Javadoc

- Exemples

- Librairies - Dependances

A

• Titre de la session

SIG 2013. Atelier technique.

SDK - Community

SIG 2013. Atelier technique.

GitHub – Projets / Bibliotheques

• Esri fournit un ensemble de projets et de Bibliothèques, d’exemples

pour les développeurs ou utilisateurs

- Code source

- Ouvert à la communauté

A

• Titre de la session

http://esri.github.io

SIG 2013. Atelier technique.

Esri.GitHub.io – 121 projets • node-geoservices-adaptor

• gptools-for-aws

• map-tour-storytelling-template-js

• military-feature-toolbox

• local-government-online-apps

• arcgis-samples-flex

• arcgis-viewer-builder-flex

• arcgis-viewer-flex

• my-government-services

• side-accordion-map-storytelling-template-js

• social-media-map-template-js

• koop

• arcgis-osm-editor

• geoportal-server

• quickstart-map-js

• maps-app-android

• html5-geolocation-tool-js

• offline-windturbine-inspector-android

• position-analysis-js

• patrol-data-capture-toolbox

• military-features-data

A

• Titre de la session

• defense-and-intel-basemaps-misc-toolbox

• vehicle-commander

• image-discovery-app-js

• defense-and-intel-analysis-toolbox

• application-boilerplate-js

• permit-status-app

• ago-tools

• ago-assistant

• geometry-api-java

• geocoder-search-widget-js

• esri-leaflet

• terraformer-arcgis-parser

• community-addressing

• executive-dashboard

• countdown-storytelling-template-js

• quickstart-map-library-flex

• arcgis-samples-winphone

• omniauth-arcgis

• park-and-recreation-finder

• code-violation

• parcel-value

• water-utility-mobile-map

• value-analysis-dashboard

• tax-parcel-viewer

• public-safety-cop

• public-information-center

• map-and-app-gallery

• local-government-desktop-addins

• land-use-public-notification

• land-use-public-comment

• election-results

• gis-tools-for-hadoop

• election-polling-places

• community-planning

• citizen-service-request

• campus-place-finder

• route-status-dashboard-js

• 3d-cities-template

• spatial-framework-for-hadoop

• geoprocessing-tools-for-hadoop

• route-planner-csharp

• swipe-map-storytelling-template-js

• map-gallery-template-js

• terraformer-geostore

• terraformer-geostore-rtree

• terraformer-geostore-memory

• terraformer-geostore-localstorage

• terraformer-wkt-parser

• text-and-legend-map-storytelling-template-js

• geocon-file-routines

• ntv2-file-routines

• configurable-place-finder

• deed-drafter

• compare-map-storytelling-template-js

• basic-map-storytelling-template-js

• preview-app-osx

• R-toolbox-py

• twitter-for-geoevent

• mongodb-for-geoevent

• hadoop-for-geoevent

• activemq-for-geoevent

• instagram-for-geoevent

• heatmap-widget-flex

• thematic-widget-flex

• geoservices-js

• feature-service-editor-js

• quickstart-map-ios

• ogc-crs-wkt-parser

SIG 2013. Atelier technique.

Esri.GitHub – Quelques exemples (1)

• geometry-api-java

- Manipulation de geometries en java

- Lecture/Ecriture

WKB/WKT/GeoJSON …

• gis-tools-for-hadoop

• Spatial-framework-for-hadoop

• Geoprocessing-tools-for-hadoop

A

• Titre de la session

SIG 2013. Atelier technique.

Esri.GitHub – Quelques exemples (2)

• add-shapefile-js

- Lecture d’un shapefile en javascript

• esri-leaflet

- Plugin pour leaflet pour utiliser ArcGIS Server / ArcGIS Online

• arcgis-viewer-flex

- Sources / projet

• thematic-widget-flex

- Carte thematiques pour le builder / viewer flex

A

• Titre de la session

SIG 2013. Atelier technique.

Ressources développeur

Titre de la session

http://developers.arcgis.com

SIG 2013. Atelier technique.

Questions?

ArcGIS pour les développeurs

SIG 2013. Atelier technique. Titre de la session