29 novembre 2011

Mettre vos fonds de carte en nuances de gris dans ArcMap

Il y quelques semaines, je vous proposais une série d'articles expliquant comment mettre un service de fond de carte en nuances de gris dans une application web afin de mettre mieux en évidence les autres informations de la carte. Plusieurs lecteurs d'arcOrama m'ont alors demandé s'il est possible de faire la même chose dans ArcGIS for Desktop. Je vous propose donc de décrire une méthode particulièrement efficace réaliser de tels affichages dans ArcGIS for Desktop. 


 

Pour l'exemple j'ai utilisé les services web Esri France mais la méthode décrite ci-dessous s'applique à n'importe quel service web ArcGIS (dynamique ou tuilé).

En quelques mots, la méthode nécessite ArcGIS 10 et consiste à créer une mosaïque de rasters à partir du service web ArcGIS. Une fois cette mosaïque créée, il suffira d'appliquer une fonction raster permettant d'obtenir un affichage en nuances de gris. Pour l'exemple, j'ai utilisé les services web Esri France mais la méthode décrite ci-dessous s'applique à n'importe quel service web ArcGIS (dynamique ou tuilé).
  • Démarrer l'application ArcMap puis ouvrir la fenêtre du Catalogue.
     
  • En double-cliquant sur la commande "Ajouter un serveur ArcGIS", créer la connexion à votre serveur ArcGIS for Server.


  • Une fois la connexion créée, vous devez visualiser la liste de vos services.


  • Choisir ensuite un répertoire de votre catalogue de données.
     
  • A l'aide d'un clic droit sur ce répertoire créer une nouvelle Géodatabase Fichier en exécutant la commande Nouveau > Géodatabase Fichier.
     
  • Dans cette Géodatabase, à l'aide d'un clic droit, exécuter la commande Nouveau > Mosaïque.


  • Dans la boîte de dialogue, vous indiquerez le nom de votre mosaïque ainsi que le système de coordonnées des rasters qu'elle va contenir (dans cet exemple, RGF 93 - Lambert 93).


  • Une fois la mosaïque créée, celle-ci est automatiquement ajoutée dans votre carte.
     
  • Vous allez maintenant ajouter votre service web comme source de données raster pour votre mosaïque. Pour cela, faire un clic droit sur la mosaïque puis exécuter la commande Ajouter des rasters.


  • Dans la boîte de dialogue, sélectionner "Web services" comme type de raster puis sélectionner dans la zone sources le service web ArcGIS que vous souhaitez afficher en nuances de gris.


  • La mosaïque se met alors automatiquement à jour dans la carte et votre service web ArcGIS s'affiche désormais avec ses couleurs par défaut. Vous pouvez décocher la sous-couche Emprise qui n'a pas d'intérêt dans ce contexte.


  • Dans votre Catalogue, faire un clic droit sur la mosaïque afin d'afficher ses Propriétés puis cliquez ensuite sur l'onglet Fonctions.
     
  • Faire ensuite un clic droit sur Fonction Mosaïque puis exécutez la commande Insérer > Fonction Nuances de gris.


  • Dans la boîte de dialogue qui s'affiche, vous pouvez spécifier des poids pour chacune des bandes RVB ce qui permet de modifier le rendu final de votre fond de carte. Une fois les poids saisis, validez la création de cette fonction en cliquant sur le bouton OK.


  • Après avoir quitté la fenêtre des propriétés de la couche, votre mosaïque affiche désormais votre fond de carte en nuances de gris.


De cette manière vous pouvez créer autant de mosaïque raster que de fonds de carte nécessitant un affichage en niveau de gris.

Enjoy !

25 novembre 2011

ArcGIS for Silverlight/WPF/Windows Phone passe en version 2.3

Comme je l'évoquais dans mon article en début de semaine, Esri continue d'investir dans le développement de ces APIs Web. Cette semaine c'est une nouvelle version (2.3) des APIs ArcGIS for Silverlight, ArcGIS for WPF et ArcGIS for Windows Phone, qui vient d'être mise en ligne sur le Centre de Ressources ArcGIS. Il s'agit d'une version significative pour les trois plateformes Microsoft qui inclut de nombreuses nouveautés et corrections de bugs. Cette version 2.3 sera d'ailleurs utilisée pour étendre les fonctionnalités des applications ArcGIS Viewer for Silverlight 1.0 et ArcGIS for SharePoint 2.1 dont la sortie (en version finale) est prévue pour le mois prochain.


Ci-dessous quelques unes des nouveautés communes à ces 3 APIs:
  • Amélioration de l'intégration avec ArcGIS Online avec le support des formats de données KML, WMS, CSV
  • Support des diagrammes des Web Maps
  • Support des légendes pour les couches KML et WMS
  • Re-projection automatique des couches d'éléments graphiques (Graphics Layers)
  • Ajout de fonctions coté client pour réaliser des opérations géodésiques pour la densification des géométries et les mesures
  • Support des valeurs de domaines et de sous-types dans contrôles FeatureDataGrid et FeatureDataForm
  • Support de la classe GPSLayer pour l'API en WPF 4.0 sur les PC en Windows 7
  • Les librairies de l'API ArcGIS for Silverlight sont compatibles avec Mango (SDK Windows Phone 7.1)

Pour plus d'information sur cette version 2.3, vous pouvez vous consulter les pages suivantes:



Enfin, un dernier point, c'est pour cette version de l'API ArcGIS for Silverlight qu'Esri vient de recevoir, pour la deuxième année consécutive, l'Award de Visual Studio Magazine.


24 novembre 2011

Mise à jour de l'application ArcGIS for Android en 1.0.1

Une mise à jour mineure de l'application ArcGIS for Android vient d'être publiée par l'équipe Mobile d'Esri sur l'Android Market.


Cette mise à jour inclut le support des appareils disposant de processeurs ARMv6 exécutant Android OS v2.2 (et supérieur). Il s'agissait en effet d'une demande récurrente des utilisateurs depuis la sortie de la première version.

D'autres ameliorations ont également été apportées comme la possibilité de déporter l'installation de l'application sur la carte SD.

Ci-dessous quelques amelioration intégrée également dans cette mise à jour:

  • Ajout d'un bouton d'option Photo lors de l'ajout de pièce jointe sur une entité.
  • Amélioration du support pour l'affichage des textes dans les différentes langues.
  • Amélioration du support des Web Maps ArcGIS Online et des services ArcGIS Server 9.3.1.
  • Corrections de differents bugs provoquant des erreurs et des arrêts reportés automatiquement par les utilisateurs via Android Market.
  • Meilleur support des tablettes.

Vous pouvez faire part de vos remarques via le forum dédié sur le Resources Center ou par email via l'adresse arcgis4android@esri.com

21 novembre 2011

Tendances et réflexions à propos des APIs Web ArcGIS


Avec l'annonce d'Adobe la semaine dernière d'arrêter le support de Flash dans les navigateurs des appareils mobiles, les rumeurs sur la durée de vie de Silverlight, et la confirmation d'un futur prometteur pour HTML5, certains d'entre vous souhaitent connaître les perspectives envisagées par Esri vis-à-vis de ces tendances et évolutions.

Aujourd'hui, Esri propose 4 grandes options pour le développement d'applications web SIG:
  • JavaScript / HTML5
  • Silverlight
  • Flex
  • Les applications en code natif (Android, iOS, Windows Mobile, Windows Phone)

Ces technologies sont aujourd'hui largement utilisées par vos applications ArcGIS, elles vont donc continuer à être supportées et développées par Esri dans les prochaines années.

L'objectif d'Esri est de fournir les meilleures technologies aux développeurs SIG et de leur offrir une large palette de choix parmi les environnements de développement les plus utilisées du marché. Cette approche permet aux développeurs d'adresser les différents besoins et attentes de leurs clients. Techniquement, cette évolution importante du système ArcGIS de s'affranchir de la technologie cliente a été amorcée avec l'arrivée dans ArcGIS for Server des deux APIs ouvertes SOAP et Rest. Pour chacune des options proposées par Esri: JavaScript/HTML 5, Flex, Silverlight et applications en code natif, des améliorations très significatives sont à attendre avec la version 10.1 d'ArcGIS.

Je vous propose de faire un point sur chacune d'entre-elles.

JavaScript / HTML5

Esri supporte les développeurs HTML5 via son API ArcGIS for JavaScript. HTML5 est pris en charge, au cœur de l'API lorsque le navigateur le supporte. La documentation de l'API ArcGIS for JavaScript fournit d'ailleurs une série d'exemples dédiés illustrant l'usage de certaines fonctions clés d'HTML5. Le calendrier d'Esri pour le support d'HTML5 dans les prochaines versions de son API JavaScript va s'accélérer. Par exemple, la version 2.6 qui sortira dans quelques semaines, supportera plus largement HTML5 CSS3 pour prendre en charge l'accélération matérielle pour un affichage plus rapide des cartes.



Flex

Adobe a annoncé récemment l'arrêt du support du Flash Player sur les navigateurs des appareils mobiles, tout en confirmant la poursuite de ses développements du Flash Player sur les navigateurs des postes bureautiques. En outre, Adobe recommande aux développeurs sur les plateformes mobiles, d'écrire des applications natives en utilisant des outils de conception Flash Builder et le Runtime AIR, et de remplacer leurs applications web devant s'exécuter dans le navigateur mobile par des applications basées sur HTML5. Adobe a d'ailleurs commencé à faire évoluer son offre pour coller à cette vision en proposant aux développeurs utilisant Flash Builder 4.5 de compiler leur développement Flex en une application native iOS.

L'API ArcGIS for Flex est déjà en large partie compatible avec cette vision (un exemple dans cet article) et Esri va continuer à coller étroitement à cette vision dans les prochaines versions de son API ArcGIS. En dehors de l'espace des plateformes mobiles, Adobe va continuer à jouer un rôle majeur dans les RIA et Esri va donc également poursuivre ses développements pour supporter Flash/Flex. Les succès croissant des déploiements d'applications web ArcGIS en Flex prouvent plus que jamais l'intérêt de nos utilisateurs pour cette plateforme. Esri sortira dans quelques semaines la version 2.5 de l'API ArcGIS for Flex ainsi que le modèle d'application ArcGIS Viewer for Flex. Ce dernier proposera désormais un configurateur pour les non-développeurs.




Silverlight

Certains d'entre vous s'interrogent également sur le support de Silverlight et notamment sur sa pérennité suite aux rumeurs de ces derniers mois. Esri travaille étroitement avec Microsoft et va continuer à supporter et à développer cette plateforme au travers de l'API ArcGIS for Silverlight, d'une part parce que c'est une demande de nos utilisateurs et d'autre part parce qu'elle est au cœur de plusieurs composants importants du système ArcGIS comme l'ArcGIS Viewer for Silverlight (qui sera disponible dans quelques semaines), ArcGIS Explorer Online, ArcGIS for Windows Phone et en fin ArcGIS for SharePoint. Esri souhaite fournir aux développeurs Microsoft les outils SIG les plus puissants du marché et ceci en leur offrant les API correspondant aux dernières technologies mises en avant par Microsoft. En dehors des applications web, il en est d'ailleurs de même pour l'API ArcGIS for WPF sur laquelle Esri va continuer d'investir. On peut signaler la sortie, il y a deux jours, de la version 2.3 de ces trois APIs (Silverlight, WPF et Windows Phone).




Applications en code natif

Au-delà des trois plateformes de développement évoquées précédemment, Esri propose l'alternative de développer des applications autonomes en code natif sur les principales plateformes du marché via les SDKs ArcGIS Runtime. Ces SDK ArcGIS Runtime vont permettre aux développeurs d'exploiter les capacités natives des différentes plateformes ou appareils, et ceci sur des environnements bureautiques (Windows et Linux) ou smatphones/tablettes (Android, iOS, Windows Phone et Windows Mobile). Les SDK ArcGIS Runtime pour les plateformes smatphones/tablettes sont déjà disponibles, les SDK ArcGIS Runtime (Java, .Net et Qt C++) pour Windows et Linux seront disponibles pour la version 10.1 d'ArcGIS.


Conclusion

Esri s'est toujours focalisé sur les plateformes informatiques et les environnements de développement matures, ayant de la visibilité et largement demandés par ses clients. Ces critères n'ont pas changés. Esri a des alliances stratégiques avec des organisations comme Microsoft, Adobe, W3C et d'autres pour s'assurer d'être techniquement aligné et de participer aux orientations futures de ces technologies. Ceci permet à Esri de maintenir une offre SIG pertinente dans un monde de plateformes, d'appareils et de technologies qui évoluent si rapidement.

19 novembre 2011

En bref ...

Quelques brèves intéressantes piochées dans l'actualité Esri de ces derniers jours:
  • Dans la foulée de ma série d'articles sur la mise en nuance de gris des fonds de carte dans une application web, un excellent article du Blog ArcGIS Server va encore plus loin en démontrant les capacités de transformation et de filtrage à la volée des basemaps dans une application web Flex ou Silverlight.
  • Virtual Geographic Environments, un ouvrage particulièrement intéressant expliquant les relations en les SIG et les environnements et les technologies de réalité virtuelle dans des contextes géographiques.
  • Creating Map Books Using Data Driven Pages, un séminaire en ligne et gratuite sur la création d'atlas avec des pages dynamiques d'ArcGIS 10.

  • Getting the Most Out of ArcGIS Explorer Online, un séminaire en ligne et gratuite pour découvrir les récentes évolutions d'ArcGIS Explorer Online et des capicités des WebMaps.

  • Esri vient de mettre en ligne un kit de personnalisation pour la gestion des métadonnées dans ArcGIS (ArcGIS Metadata Toolkit). Ce kit fournit la documentation et les outils pour personnaliser la manière dont sont visulaisées, modifiées, validées et exportées les métadonnées. Sans aucun développement, il vous permettra par exemple de simplifier l'éditeur de métadonnées d'ArcGIS for Desktop.
  • L'extension très populaire "Geodatabase Toolset for ArcGIS 10" qui fournit différents outils de gestion pour la Géodatabase Enterprise a été déplacée. Vous trouverez désormais sur le Resources Center ArcGIS dans la Geodabase Gallery.

  • Esri France sera présent lors de la Journée de l'Intéropérabilité Géospatiale 2011 organisée par le Forum Français de l'OGC. Rendez-vous donc le lundi 21 novembre à la Grande Arche de la Défense.

17 novembre 2011

ArcGIS 10.1 beta 2 est disponible

Pour ceux d'entre vous qui ont rejoint le programme beta d'ArcGIS 10.1 vous pouvez, depuis ce matin, télécharger une nouvelle version beta à partir du site Esri Beta Community


Pour ceux qui souhaiteraient rejoindre ce programme beta, il suffit:
  • d'être sous condition de maintenance sur un des produits de la gamme ArcGIS
  • de s'engager à réaliser un minimum de tests et de reporting auprès d'Esri
  • de faire une demande d'inscription au programme auprès de votre contact commercial Esri France habituel.

Soyez ainsi prêt pour ArcGIS for Desktop et ArcGIS for Server, en découvrant avant tout le monde les nouveautés de cette version 10.1 et les autres composants du système ArcGIS comme ArcGIS Runtime, ArcGIS Online for Organization ou encore Portal for ArcGIS.

15 novembre 2011

Les vidéos de la conférence SIG 2011 sont en ligne

Pour la première fois depuis que cet événement existe, Esri France a mis en ligne la totalité des vidéos des sessions plénières de la conférence des utilisateurs francophones 2011. Vous y retrouverez également les vidéos les grands témoins, les lauréats des concours, les reportages diffusés durant la plénière ainsi que les interviews de clients enregistrées durant les deux jours. Que vous soyez venus ou pas à la conférence, ces 40 vidéos HD devraient vous intéresser.


14 novembre 2011

Les McDo en France : carte de proximité (mise à jour 14/11/2011 à 17h28)

Mise à jour du 14/11/2011 à 17:30

Le blog Big Brother du monde.fr a rebondi sur cet article vieux de plus de 2 ans, ce qui n'est pas sans nous faire un grand plaisir et, depuis, les commentaires et reprises dans la presse pleuvent (Europe 1, La Montagne, ...). Bref, arcOrama a rarement eu une si belle visibilité sur le Net. C'est l'occasion pour rafraîchir un peu l'étude originale :

- avec un problème de source, car McDonald's France ne publie son fichier de positions de restaurants au format CSV (destinés à l'intégration dans les GPS à l'époque). Je suis donc parti d'une autre source, moins officielle, celle d'une communauté d'utilisateurs de GPS, gpspassion.com.
- La comparaison des 2 sources est difficile, cependant elle montre 14 restaurants supplémentaires fin 2011. Il semble cependant que le fichier 2011 ne soit pas complet à l'instar du restaurant d'Ussel, signalé par Etienne Vuillaume, journaliste à La Montagne, et qui on le verra aura son importance dans la mise à jour de l'analyse.

- La carte évolue peu si ce n'est que le "désert français" de la restauration rapide s'est comblé gràce au restaurant d'Ussel :


- Mais la carte suivante est intéressante : c'est la carte de 2009 avec les implantations des nouveaux restaurants de fin 2011. Elle montre clairement une logique d'implantation à la limite des zones d'influence des restaurants de 2009 : comment optimiser l'occupation du territoire...


- Avec le restaurant d'Ussel, le territoire de France continentale à plus de 50km à vol d'oiseau s'est encore réduit, passant de 2200 à 933 km2. Et encore, si on ne retrouve pas d'autres nouveaux restaurants absents du fichier utilisé...

- Le point le plus éloigné à vol d'oiseau d'un McDonald's est désormais sur la commune de Thollet (Vienne) à 62 km du plus proche restaurant à St Maur (36) ! Thollet est suivi de peu par Aisey sur Seine (21) à 57 km de Dijon.
- Enfin, il est amusant de noter que si Saint-Martial-Le-Vieux (Creuse) a perdu le titre de la commune la plus éloignée d'un restaurant McDonald's en France continentale à vol d'oiseau, elle est maintenance aussi le site élu pour la mise en place d'un centre d'engraissement de bovins limousins comme l'annonce Le Populaire de Limoges ! Voila de quoi alimenter le fameux restaurant d'Ussel !

--------------------------------------------------------------------------------------------------------

Article original



Il y a quelques jours dans ma revue du Web, je suis tombé sur cet article intéressant : une belle carte de l'espace US suivant sa proximité au plus proche McDo. L'auteur n'explique pas comment il a fait, mais il dit qu'il y est arrivé avec "a bit of software engineering gymnastics". Ma curiosité est alors piquée, ne peut on faire cela simplement avec un SIG (sans gymnastique) ?



1. Trouver les données

McDo nous les fournit simplement sous forme d'un fichier CSV à mettre dans votre GPS histoire de ne pas rouler l'estomac vide. Facile à intégrer dans ArcGIS pour obtenir une carte des restaurants


2. Comment réaliser le halo autour des restaurant ? Ce halo est un dégradé coloré proportionnel à la distance du restaurant, délimitant avec ses voisins des polygones de Voronoï ou de Thiessen.

Le rendu devant être un dégradé lissé, une approche raster semble la plus appropriée (par opposé à la création de polygones de Thiessen vectoriels comme le permet par ailleurs ArcGIS).

Spatial Analyst rentre donc dans la danse avec sa fonction Euclidean Distance qui fait exactement le boulot attendu :


3. Symboliser le raster de distance :

Tout d'abord choisir un rendu "strectché" (étiré) pour le raster et prendre une rampe de couleurs jaune -> noir. Puis pour avoir un effet moins linéaire du dégradé et donc donner plus de relief à la carte, changer le stretching du rendu en travaillant l'histogramme :



et enfin la touche finale, un petit point jaune pour les restaurants afin de renforcer l'effet "source lumineuse" de la représentation. Et voila le résultat :


Bon appétit !

Mise à jour 28/10 16:28

Pour Oliv, suite à son commentaire !

Voila la cartes des 3 zones de la France continentale situées à + de 50 km d'un McDo pour un total de 2200 km2 de superficie.


Et enfin Oliv, le point le plus éloigné d'un McDo en France continentale est dans la Creuse, à Saint Martial le Vieux et là, aux coordonnées 2°17'14"E 45°40'45"N, un oiseau est à 62,6 km de vol du plus proche McDo ! Mais Oliv n'était pas loin, le point est à 1300m de la frontière Creuse/Corrèze !

13 novembre 2011

Quelles compétences logicielles recherchées pour les géomaticiens en 2011 ? (maj 14/11/2011 14:05)


Mise à jour du 14 novembre 2011 à 14:05

Merci à Vincent d'avoir signaler l'absence de PostgreSQL et de PostGIS. J'ai refais les calculs et modifié les graphiques et tableaux ci-dessous. Au total, cela ajoute 45 occurences au mots-clés "Open Source" et fait passer la "part de marché" du tag "Open Source" de 11% à 14%, soit le niveau mesuré il y a deux ans (mais sans PostgreSQL et PostGIS à l'époque...)


Il y a 2 ans, je publiais une étude des compétences logicielles recherchées en géomatique à travers une analyse des offres d'emploi postées sur le forum Jobs de Géorezo (maintenant aussi sur le site de SIG La Lettre), le média le plus dynamique en terme de publication d'offres d'emploi dans le domaine.

Fin 2011, il est temps de renouveler l'expérience ! J'ai cette fois-ci utilisé un échantillon plus large avec une année d'offres d'emploi d'octobre 2010 à octobre 2011 contre 6 mois en 2009. Variations saisonnières non considérées, le nombre d'offres a augmenté de 28% avec 1211 offres publiées d'octobre 2010 à novembre 2011. Voila un signe très positif pour nos métiers !

1. 47% de CDI, 29% de stages, 23% de CDD


Les CDI sont beaucoup plus présents qu'en 2009 (avec près de la moitié des offres publiées), les stages représentent la même proportion qu'il y a 2 ans et les CDD sont moins représentés (au bénéfice des CDI).

2. Classement par compétences "logicielles" recherchées.

Pour cela, une analyse par mots-clés a été réalisée, recherchant la présence d'un ou plusieurs mots-clés permettant de catégoriser les offres. l'annonce doit comporter au moins un des mots clés suivants pour rentrer dans chaque catégorie :

ESRI = {ESRI, ArcGIS, ArcView, ArcEditor, ArcInfo, ArcSDE, ArcIMS, ArcSDE, ArcMap, ArcPAD}
Mapinfo = {Mapinfo}

GeoConcept = {Geoconcept, Géoconcept}
Autodesk = {Autodesk, AutoCAD, AutoCAD Map, Mapguide}

Open Source = {Open Source, OpenSource, Logiciels libres, Mapserver, Geoserver, gvSIG, QGis, OpenLayers, Géosource, Geosource, GeoNetwork, mapfish}

Intergraph = {Intergraph, géomédia, geomedia}
Oracle Spatial = {Oracle Spatial, Locator}
Google = {Google}
Star-Apic = {Star, Apic, Elyx}
Bentley = {Bentley, Microstation}

Aigle ={Aigle}

Simalis = {Simalis, Dynmap}

FME={FME,SAFE}

ERDAS={erdas, imagine, appolo}
ITT ={ITT, ENVI}

36% des offres requiert des compétences Esri ce qui est relativement stable par rapport aux 37% de 2009. Cela représente aussi 59% des offres citant au moins une compétence recherchée car 39% des offres ne contiennent aucun des mots-clés recherchés.

La "part de marché" de Mapinfo dans les offres d'emploi passe de 24% à 16%. Les autres restent assez stables.

3. Quelles compétences pour quel type d'offre ?



Les chiffres sont moins tranchés que dans l’étude précédente :
- 
Esri et Autodesk sont très présents dans les offres de CDI
-
  Les CDD sont surreprésentés pour Mapinfo par rapport aux CDI
- 
Mapinfo est très recherché dans les offres de stages, ainsi qu’à une moindre mesure Géoconcept.

4. Les données de l'analyse




Une fois de plus, cette étude ne se veut pas représentative de tous le marché de l'emploi SIG et ne se base que sur les compétences logicielles recherchées dans les offres d'emploi. Par exemple, elle n'est peut être pas significative quant au recrutement de développeurs SIG, de par le canal choisi (Géorézo) ou les mots-clés employés. Elle reste cependant un indicateur fiable du dynamisme du marché de l'emploi (+28% en 2 ans en nombre d'offres) et de la part de marché d'Esri en France.

Enfin, dernier mot, si vous avez des compétences Esri et que vous cherchez un job, faites vous certifier, vos compétences seront ainsi mises en valeur et reconnues !

12 novembre 2011

API de Géolocalisation et applications web ArcGIS - 3/3


Je termine ma série d'articles concernant l'utilisation de l'API de Géolocalisation d'HTML5 en traitant, aujourd'hui, le cas des applications web développées avec Silverlight.

Le SDK Silverlight ne propose pas plus solution que Flex pour géolocaliser l'utilisateur. Tout comme avec Flex, la solution peut consister à se connecter directement à des services de Géolocalisation pour établir la correspondance entre l'adresse IP de l'utilisateur avec une position géographique. Cette option nécessitera un codage non négligeable et la qualité du positionnement sera dépendante de la qualité de la base de données de votre fournisseur (potentiellement très variable).

Comme pour Flex, une solution plus standard et plus rapide à l'implémenter consistera à s'appuyer sur l'API de Géolocalisation du navigateur. La méthode sera d'ailleurs la même, nous allons appeler une fonction JavaScript de la page hébergeant l'application Silverlight afin de tirer profit de ses capacités de Géolocalisation.

Appeler la fonction JavaScript à partir de l'application Silverlight

Invoquer notre fonction JavaScript de Géolocation à partir de Silverlight est un chose très simple puisque Silverlight peut appeler n’importe quel code JavaScript de la page hôte en utilisant l'instruction: HtmlPage.Windows.Invoke("nom_de_la_fonction_JS").



Appeler une fonction Silverlight à partir de JavaScript

Pour pouvoir exploiter la position géographique renvoyée par la fonction JavaScript, cette dernière doit pouvoir appeler une méthode dans l'application Silverlight. Ce mécanisme nécessite les étapes suivantes:

Dans le constructeur de l’application Silverlight, il faudra faire un appel à l'intruction HtmlPage.RegisterScriptableObject() pour autoriser le dialogue entre JavaScript et l’application Silverlight. Cette instruction créé, en même temps, un nom par lequel le plugin Silverlight sera visible de la fonction JavaScript (ici ce nom est "MainPage").


Ensuite, toute méthode devant pouvoir être appelée de l’extérieur doit être marquée par l’attribut ScriptableMember.


Enfin, depuis JavaScript, il est maintenant possible d’accéder directement aux membres visibles de la classe Silverlight au travers du DOM. Dans l'exemple ci-dessous on récupère, via son ID, le contrôle correspondant à l'application Silverlight. A partir de ce contrôle, on accède au contenu de l'application en utilisant le nom d'enregistrement (ici: MainPage) puis on appelle la méthode (ici: ResultGeolocalisation) en passant éventuellement un argument (ici: la chaine contenant les coordonnées géographiques) pour le traiter dans l'application Silverlight.



Un exemple d'application avec l'API ArcGIS for Silverlight

Maintenant que nous avons détaillé le mécanisme de communication entre Silverlight et JavaScript (et inversement), vous pouvez l'utiliser dans une application Web basée sur l'API ArcGIS for Silverlight. Vous noterez que les positions retournées par l'API de Géolocalisation sont exprimées dans le système WGS84, vous pourrez donc les convertir directement en Web Based Mercator à l'aide de la classe ESRI.ArcGIS.Client.Projection.WebMercator de l'API ArcGIS, si vous utilisez les fonds de carte ArcGIS Online ou Bing Maps. Si vous utilisez d'autres systèmes de coordonnées pour votre carte, vous utiliserez alors un Geometry Service (celui de votre propre serveur ArcGIS ou celui d'ArcGIS Online). J'ai développé cet exemple d'application en guise d'illustration, vous trouverez le code source de l'application ici.



11 novembre 2011

API de Géolocalisation et applications web ArcGIS - 2/3


Dans mon premier article, j'ai décris l'API de Géolocalisation introduite par HTML5 et comment l'utiliser conjointement à l'API ArcGIS for JavaScript. Voyons aujourd'hui comment implémenter cette même fonctionnalité dans une application web ArcGIS avec Flex. En dehors du cas particulier du SDK 4.5 for Mobile Application, il n'existe pas directement dans Flex d'objets permettant la localisation géographique du poste de l'utilisateur. Il faut donc trouver une autre solution.

Vous pouvez par exemple développer vos propres fonctions d'accès aux nombreuses APIs et bases de données en ligne pour obtenir la localisation correspond à votre adresse IP. Cette solution n'est cependant pas idéale car elle nécessite un codage non négligeable et assez peu portable car lié au fournisseur d'information de géolocalisation.

Une solution plus efficace et plus standardisée consiste tout simplement à s'appuyer sur les fonctionnalités d'HTML5 évoquée dans mon précédent article. Il faudra pour cela être capable de faire communiquer votre application Flex avec du code HTML5 (JavaScript) ce qui n'est pas très compliqué. Il vous faudra tout d'abord, depuis votre application Flex, appeler une fonction JavaScript de votre page HTML pour réaliser la géolocalisation. Une fois exécutée, votre fonction JavaScript devra renvoyer les coordonnées latitude/longitude/altitude vers l'application.

Communication entre la page HTML et l'application Flex

Flex fournit une classe ExternalInterface bien pratique pour communiquer avec la page HTML qui contient votre application Flash. Cette classe permet d'appeler une fonction de la page HTML à l'aide de méthode call. Dans l'exemple ci-dessous, on appelle la fonction JavaScript GeolocalisationJS (sans passer d'argument car inutile dans notre exemple). Préalablement, on a utilisé la méthode addCallback pour déclarer la fonction Flex qui sera appelée en retour de l'appel JavaScript. Cette fonction nommée GeolocalisationFromJS (dans notre l'exemple) permettra de traiter la chaine de caractère contenant les coordonnées géographiques renvoyés par notre fonction JavaScript.

Code Flex: Appel de la fonction JavaScript



La fonction JavaScript doit pouvoir renvoyer le résultat à l'application flex. Pour cela, vous devez appeler la  fonction de Callback de l'application Flex (GeolocalisationFromJS) en faisant référence à l'objet correspondant à l'application Flash (ici son id dans la page HTML est Geolocalisation). L'appel à la fonction Flex se fait donc à l'aide de l'instruction JavaScript suivante:
 document.Geolocalisation.GeolocalisationFromJS(resultat).

Page HTML: Fonction JavaScript réalisant la géolocalisation



La fonction Flex de Callback récupère les arguments transmis par la fonction JavaScript et traite les coordonnées ainsi reçues pour centrer la carte sur la localisation géographique.

Code Flex: Fonction de Callback 


Un exemple d'application avec l'API ArcGIS for Flex

Une fois que l'on a compris ce mécanisme on peut donc facilement développer une fonction de géolocalisation dans une application Flex ArcGIS. J'ai développé cet exemple en guise d'illustration, vous trouverez le code source de l'application ici.



Dans un dernier article, je traiterai le cas d'application Silverlight.