Introduction à la programmation VBA et VB dans ArcGis



Documents pareils
Instructions Mozilla Thunderbird Page 1

WEB page builder and server for SCADA applications usable from a WEB navigator

Contents Windows

How to Login to Career Page

lundi 3 août 2009 Choose your language What is Document Connection for Mac? Communautés Numériques L informatique à la portée du Grand Public

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

ArcScan Tutorial. Copyright Esri All rights reserved.

Once the installation is complete, you can delete the temporary Zip files..

Rapport de Mini-Projet en ArcGIS Engine

calls.paris-neuroscience.fr Tutoriel pour Candidatures en ligne *** Online Applications Tutorial

WiFi Security Camera Quick Start Guide. Guide de départ rapide Caméra de surveillance Wi-Fi (P5)

DOCUMENTATION - FRANCAIS... 2

Guide d'installation rapide TFM-560X YO.13

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

DOCUMENTATION - FRANCAIS... 2

Notice Technique / Technical Manual

DOCUMENTATION MODULE BLOCKCATEGORIESCUSTOM Module crée par Prestacrea - Version : 2.0

Tutoriel de formation SurveyMonkey

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Contrôle d'accès Access control. Notice technique / Technical Manual

Package Contents. System Requirements. Before You Begin

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Vanilla : Virtual Box

Adeunis-RF Softwares. Stand-Alone configuration Manager V2. User guide version V1 FRANCAIS ENGLISH

Matérialiser les données d une BdD : créer une carte de densité de points par maillage

Guide de Saisie de Factures sur le Formulaire Web OB10

Support de TD ArcGIS Introduction à l automatisation et au développement avec ArcGIS 10.1 JEAN-MARC GILLIOT e année ingénieur

Thank you for choosing the Mobile Broadband USB Stick. With your USB Stick, you can access a wireless network at high speed.

RAPID Prenez le contrôle sur vos données

Comment faire un Mailing A partir d une feuille Calc

esms Desktop Guide de l utilisateur

Comment sauvegarder ses documents

BIRT (Business Intelligence and Reporting Tools)

OpenOffice.org Calc Ouvrir un classeur

Cours iguess. inotes v10.1

Comment faire des étiquettes

Tapez le titre de la page «BASTIA ville méditerranéenne», puis allez deux fois à la ligne à l aide de la touche Entrée.

Lesson Plan Physical Descriptions. belle vieille grande petite grosse laide mignonne jolie. beau vieux grand petit gros laid mignon

< Atelier 1 /> Démarrer une application web

Connexion entre une BD FileMaker Pro 10 et ArcGis 10.x sous Windows 7

Table des matières. 1. Installation de VMware ESXI Pré-requis Installation... 3

Le passé composé. C'est le passé! Tout ça c'est du passé! That's the past! All that's in the past!

English Q&A #1 Braille Services Requirement PPTC Q1. Would you like our proposal to be shipped or do you prefer an electronic submission?

Contrôle d accès Access control MOD-TCPIP-AI. Notice technique / Technical Manual

Paxton. ins Net2 desktop reader USB

LOGICIEL D'ADMINISTRATION POUR E4000 & G4000 MANAGEMENT SOFTWARE FOR E4000 & G4000

Insérer des images dans Base

Summary / Sommaire. 1 Install DRIVER SR2 USB01 Windows seven 64 bits / Installation du DRIVER SR2 USB01 Windows seven 64 bits 2

Petit guide d utilisation Prezi

TABLE DES MATIERES A OBJET PROCEDURE DE CONNEXION

WDpStats Procédure d installation

DOCUMENTATION - FRANCAIS... 2

Configurer la supervision pour une base MS SQL Server Viadéis Services

USB 598. Quick Start Guide (Windows) Guide de démarrage rapide (Windows) USB Modem. Modem USB.

CEST POUR MIEUX PLACER MES PDF

Utiliser une WebCam. Micro-ordinateurs, informations, idées, trucs et astuces

Logitech Tablet Keyboard for Windows 8, Windows RT and Android 3.0+ Setup Guide Guide d installation

AMENDMENT TO BILL 32 AMENDEMENT AU PROJET DE LOI 32

(1) Network Camera

Get Instant Access to ebook Cest Maintenant PDF at Our Huge Library CEST MAINTENANT PDF. ==> Download: CEST MAINTENANT PDF

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Compléter le formulaire «Demande de participation» et l envoyer aux bureaux de SGC* à l adresse suivante :

Module d introduction Comment réaliser vos propres cartes avec ArcGIS Online

that the child(ren) was/were in need of protection under Part III of the Child and Family Services Act, and the court made an order on

Acronymes et abréviations. Acronymes / Abbréviations. Signification

ArcGIS Desktop Les nouveautés de la version 10. Gaëtan LAVENU

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

Installation de GFI MailSecurity en mode passerelle

Développer avec les technologies ESRI. ESRI Developer Network (EDN) Gaëtan LAVENU ESRI France Jérémie MAJEROWICZ ESRI France

Préparation à l examen EFA en Macro

Votre premier projet Android

3615 SELFIE. HOW-TO / GUIDE D'UTILISATION

Form Designer Guide d utilisateur DOC-FD-UG-FR-01/01/12

Academic Project. B2- Web Development. Resit Project. Version 1.0 Last update: 24/05/2013 Use: Students Author: Samuel CUELLA

Archivage de courriels avec Outlook ( )

APPENDIX 6 BONUS RING FORMAT

Gestion de stock pour un magasin

Initiation à Mendeley AUT2012

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Institut français des sciences et technologies des transports, de l aménagement

MANUEL MARKETING ET SURVIE PDF

Atelier Progress Rollbase

ESPACE COLLABORATIF SHAREPOINT

Mendeley, pour gérer sa bibliographie et la partager. Patricia Volland-Nail

PARTAGER UN ANNUAIRE COLLECTIF DE SIGNETS AVEC DEL.ICIO.US

Didacticiel de mise à jour Web

Comment Définir une Plage de données Pour Utiliser Fonctions de Filtres et de Tris

GIGABIT PCI DESKTOP ADAPTER DGE-530T. Quick Installation Guide+ Guide d installation+

et Active Directory Ajout, modification et suppression de comptes, extraction d adresses pour les listes de diffusion

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Thank you for choosing the Mobile Broadband USB Stick. With your USB Stick, you can access a wireless network at high speed.

Cadastre du bruit SIT-JURA. Connecteur Arcview9.x - MSAccess. Mode d emploi. Appel formulaire. Page 1 sur 15

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

THE SUBJUNCTIVE MOOD. Twenty-nineth lesson Vingt-neuvième leçon

Déploiement d'une application Visual Studio Lightswitch dans Windows Azure.

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var - E mail : bij@agasc.fr / Tel : CONSIGNE N 1 :

Transcription:

Auteur Date de création 18/01/07 Date de dernière modification Logiciels utilisés Nom de la procédure Jules FLEURY, SIGéo / CEREGE 18/01/07 Table des matières ArcGIS, VBA, VB Introduction à la programmation VBA et VB dans ArcGis A.Automatisation et développement dans ARCGIS...1 B.Introduction à Visual Basic for Applications...2 a.utilisation de VBA dans ARCGIS...2 C.Création d une macro dans ARCGIS...7 D.Création de contrôles pour macro dans ARCGIS...8 E.Ajout d une dll dans arcgis...9 F.Création d une dll dans VB...10 Programmation ArcGis On pourra se reporter au site du P. Sawada de l Université d Ottawa (lien mort) dont cette partie est la traduction. Les livres numériques livrés avec ArcGIS sont aussi très utiles et complets, et le site internet d ESRI fournira également toutes les informations utiles. Voir notamment : http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm? TopicName=Creating_custom_commands_with_VBA_and_UI_Controls et http://resources.esri.com/help/9.3/arcgisdesktop/com/com/vba/working_vba.htm A.Automatisation et développement dans ARCGIS Dans de nombreux cas, il est préférable de développer soi-même une application qui n est pas implémentée dans le SIG : 1. pour une fonction qui n existe pas en standard ; 2. pour une opération fastidieuse en standard ; 3. pour une opération répétitive. ArcGIS est personnalisable à l'aide de tout langage de programmation conforme à la norme COM (par exemple, Visual Basic, Visual C++, et Visual J++). Tous les composants d'arcgis sont utilisables pour développer des applications. Ces composants sont livrés dans la plateforme ArcObjects. Il est possible d étendre ArcObjects en écrivant des composants COM. ArcView est livré avec le langage de programmation Visual Basic for Applications (VBA). Les tâches que l'on accomplit fréquemment avec le logiciel peuvent être automatisées et de nouveaux masques, boîtes de dialogue et contrôles graphiques viennent s'ajouter aux applications ArcMap, ArcCatalog et ArcScene. Si vous n avez jamais programmé ARCGIS, vous pourrez pour mieux saisir la méthodologie utilisée les outils suivants dans l ordre cité : a. La base de la programmation dans ARCGIS se trouve dans la calculatrice de champ, qui permet de saisir des fonctions plus ou moins avancées pour le calcul d un attribut. b. On pourra utiliser le langage VBA (Visual Basic for Applications) qui est fournit avec ARCGIS. Cet outil, bien que pratique et puissant, ne permet pas la diffusion sur d autres postes de manière facile. c. On peut aussi écrire son code sur d autres plateformes (ex : Visual Studio, Delphi, ) mais on ne bénéficie plus des variables d entrée dans ArcMap et ArcCatalog (bien pratiques). Pour dernière màj 01/2007 1/11

le portage et la réutilisation d une application, il sera souhaitable d utiliser cette méthode qui permet de générer des Dll active X. Bien sûr il faudra disposer de l outil de développement adéquat. Avant de vous lancer dans le développement d un outil, assurez vous que tout ou partie de cet outil n existe pas déjà. Pour cela, je vous conseille d utiliser les forums de discussion d utilisateurs ou les sites rassemblant les scripts. B.Introduction à Visual Basic for Applications Visual Basic est un langage orienté-objet et commandé par des événements. a.utilisation de VBA dans ARCGIS Nous allons présenter l utilisation de code VBA dans ArcMap à travers la Calculatrice de champ. Pour mettre à jour un champ, on utilise la calculatrice. Pour y accéder, faire un clic droit sur un champ puis fonction Calculer les valeurs ouvre la calculatrice. Figure 1 : Mise à jour d un champ par la calculatrice Une fois la calculatrice ouverte, on peut taper une expression simple (bouton avancé non coché) ou alors utiliser du code vba (bouton avancé coché) pour mettre à jour le champ : Figure 2 : Utilisation de code VBA dans la calculatrice Par le bouton Enreg on pourra enregistrer l expression qui sera alors sauvegardée sous forme de fichier.cal. dernière màj 01/2007 2/11

Par le bouton Charger on pourra charger des expressions au format.cal. Calcul des coordonées de point L exemple ci-dessous permet le calcul de la coordonnée x de chaque point. Le code est le suivant : Dim dblpoint as double Dim ppoint as IPoint Set ppoint = [shape] dblpoint = ppoint.x dblpoint Si la projection native de la classe n est pas la même que celle de la carte et que l on souhaite récupérer les coordonnées dans la projection de la carte, alors on utilisera le code suivant : Dim pmxdoc As IMxDocument Dim pmap As IMap Dim ppoint As IPoint Dim dx As Double Set pmxdoc = ThisDocument Set pmap = pmxdoc.focusmap If (Not IsNull([Shape])) Then Set ppoint = [Shape] ppoint.project pmap.spatialreference dx = ppoint.x End If dx Pour calculer la coordonnée y de chaque point, utiliser la propriété Y au lieu de X. Calcul de surface d un polygone Utiliser le code suivant : Dim dblarea as double Dim parea as IArea Set parea = [shape] dblarea = parea.area dblarea Calcul du centroïde d un polygone Utiliser le code suivant pour la coordonnée x du contrïde d une polygone : Dim dblcentx as double Dim parea as IArea Set parea = [shape] dblcentx = parea.centroid.x dblcentx Changer X par Y pour avoir la coordonnée y du centroïde. Attention la défintion du centroïde utilisée par la méthode Centroid ne renvoie pas toujours un point à l intérieur du polygone. Pour avoir le centre de gravité du polygone programmer le sans cette fonction. Calcul du périmètre d un polygone Utiliser le code suivant pour calculer le périmètre d un polygone : dernière màj 01/2007 3/11

Calcul de l enveloppe minimum Dim dblperimeter as double Dim pcurve as ICurve Set pcurve = [shape] dblperimeter = pcurve.length dblperimeter Figure 3 : Enveloppe (rectangle englobant) On peut calculer l enveloppe (rectangle englobant) d une forme (polygone, polyligne, multipoint). Pour la largeur de l enveloppe : dblgeom =geom.envelope.width dblgeom Pour la hauteur de l enveloppe : dblgeom =geom.envelope.height dblgeom Pour la coordonnée y maximum : dblgeom =geom.envelope.ymax dblgeom Pour la coordonnée y minimum : dernière màj 01/2007 4/11

dblgeom =geom.envelope.ymin dblgeom Pour la coordonnée X maximum: dblgeom =geom.envelope.xmax dblgeom Pour la coordonnée X minimum : dblgeom =geom.envelope.xmin dblgeom Type de géométrie d un objet ARCGIS gère différents types de géométrie. Les plus courant étant bien sûr les polygones, les polylignes et les points mais il y en a bien d autres : Figure 4 : Géométries gérées par ARCGIS Ci-dessous une liste de géométries avec leur code : esrigeometrynull = 0 esrigeometrypoint = 1 esrigeometrymultipoint = 2 esrigeometrypolyline = 3 esrigeometrypolygon = 4 esrigeometryenvelope = 5 esrigeometrypath = 6 esrigeometryany = 7 esrigeometrymultipatch = 9 esrigeometryring = 11 esrigeometryline = 13 esrigeometrycirculararc = 14 esrigeometrybezier3curve = 15 esrigeometryellipticarc = 16 dernière màj 01/2007 5/11

esrigeometrybag = 17 esrigeometrytrianglestrip = 18 esrigeometrytrianglefan = 19 esrigeometryray = 21 esrigeometrysphere = 22 Le type de géométrie d une classe peut être connu par la fonction : dim intgeomtype as Integer dblgeomtype =geom.geometrytype intgeomtype Par exemple si la valeur retournée est 4 le type de géométrie est un polygone. Instructions conditionnelles On peut insérer dans le code de la calculatrice des conditions if. Le type de condition peut être : If [champ] (=, <,>, <>, <=, >=) valeur then variable = nouvelle_valeur Else variable = nouvelle_valeur (e.g., [champ]) Endif Les signes (=, <,>, <>, <=, >=) sont les opérateurs. On peut aussi utiliser la forme suivante : If [fieldname] (=, <,>, <>, <=, >=) SomeValue then output_variable = SomeNewValue Elseif [fieldname] (=, <,>, <>, <=, >=) SomeSecondValue output_variable = SomeOtherNewValue (e.g., [fieldname]) Elseif.... else.. Endif Si l on veut choisir entre plusieurs valeurs possibles, on pourra utiliser select case : Select case [fieldname] Case valeur1 instructions Case valeur2 instructions.. Case else.. end select Comme exemple on peut vouloir classifier les superficies des polygones en 3 catégories : petite, moyenne, et grande. Pour cela on utilisera le code suivant : dim x as string if [area] <=1 then x="petite" elseif [area] >1 and [area] <=3 then x="moyenne" elseif [area] >3 then x = "grande" endif x dernière màj 01/2007 6/11

Lorsque les valeurs sont des chaînes de caractère on utilise les guillemets comme illustré cidessus. Lorsque on utilise comme variable ou comme valeur un champ, alors il est entre crochets comme illustré ci-dessus par le champ [area]. C.Création d une macro dans ARCGIS Une macro dans ArcGIS utilise le langage VBA et les composants ArcObjects pour automatiser une opération. VBA est un langage de programmation par évenements (utilisation de boutons, de formulaires qui déclenchent une opération). Avant de coder avec ArcObjects, il faudra se familiariser avec toutes les notions qu il utilise. Citons entre autres : - c est une variante de la programmation objet ; on utilisera ici les termes de classe, d objet, d interface, de méthode et de propriété (ou attribut). Pour plus d infos voir la documentation online fournit avec ArcGis. L apprentissage du modèle de données d ArcObjects est assez complexe. On pourra imprimer les diagrammes des classes pour avoir tous les objets sous les yeux. - on entre dans le modèle de données par des variables prédéfinies : «ThisDocument» qui est le document utilisé ; «Application» qui est l application utilisée. ArcCatalog ou ArcMap par exemple. - On peut coder dans Normal.mxt avec ArcMap (c est le template de tous les documents arcmap) (respectivement Normal.gxd avec ArcCatalog) auquel cas la macro sera accessible dans tous les documents. On peut coder dans Project auquel cas la macro sera accessible seulement dans le document ouvert et le code sera sauvegardé dans le document.mxd. 1- Ouvrir ArcMap 2- Aller dans le menu Outils, Macro et ouvrir l editeur VBA 3- Vous allez saisir votre code soit dans le ThisDocument du Normal.mxt, soit dans celui du Project. Essayez d utiliser des modules réutilisables si une partie du code peut être réutilisée dans d autres programmes et pour simplifier la lisibilité du code. 4- sauvegarder votre projet et fermer l editeur VBA 5- créer un contrôle pour la macro. Dans le menu Outils, Personnaliser, onglet Commandes, selectionner la catégorie UIcontrols et cliquer sur Nouveau contrôle. dernière màj 01/2007 7/11

Faire Créer et vous obtenez Le nouveau contrôle se trouve ici dans Normal.mxt, d où le préfixe normal. Pour lui associer le code que vous venez de saisir, chagner le nom UibuttonControl1 par le nom de la procédure principale que vous avez créée. 6- Faire glisser l icône de l outil vers la barre d outils où vous voulez l insérer 7- Clic droit sur l icône pour changer son apparence D.Création de contrôles pour macro dans ARCGIS voir le site officiel ESRI : http://webhelp.esri.com/arcgisdesktop/9.3/index.cfm? TopicName=Creating_custom_commands_with_VBA_and_UI_Controls et http://resources.esri.com/help/9.3/arcgisdesktop/com/com/vba/working_vba.htm dernière màj 01/2007 8/11

E.Ajout d une dll dans arcgis Voir le document load dll ou le site introduction to gis du Prof. Sawada de l Université d Ottawa. On pourra aussi voir le support d ESRI France, dans la section outils et exemples de scripts d ArcGIS Desktop. 1. Eventuellement effectuer la registration de la dll avec regsvr32, ou par un clic droit dans l explorateur windows puis avec Register, ou en lançant le script d inscription dans le registre qui porte le même nom que la dll. Pour désinstaller une dll, faire dans la boîte MsDos regsvr32 /u nomdll 2. Ouvrir un document dans ArcMap. 3. Exécuter la commande Outil > Personnaliser puis se placer dans la rubrique Commandes. 4. Dans la zone Enregistrer dans, sélectionner le fichier Normal.mxt si l on veut que l outil soit accessibles dans tous les documents arcmap, sinon choisir le nom d un document dans lequel enregistrer la dll. 5. Cliquer sur le bouton Ajouter depuis un fichier puis sélectionner le fichier nom.dll. 6. Un nouvel outil est ajouté dans une des catégories de l onglet Commandes. Figure 5 : Ajout d une dll dans Normal.mxt 7. Faire glisser le nouvel outil vers une des barres de l'interface d'arcmap. Figure 6 : Ajout d un bouton lié à une dll dans l interface d Arcmap 8. Fermer la boîte de dialogue Personnaliser. dernière màj 01/2007 9/11

F.Création d une dll dans VB Voir sur le forum d ESRI la discussion ici. Voici l explication : I.First, you need to set up the project environment in Visual Basic: - Open VB, and click "ActiveX Dll" in the New Project dialog box. - Since you will be using ArcObjects, you will need to reference the ESRI Object Library (esricore.olb). - Click on Project/References from the menu bar - Scroll down the list and click "Esri Object Library" then "OK" - Change the name of your project - Click Project/Project Properties - On the General tab, enter the new name of your project under "Project Name" - Change the name of your class (default is Class1). You might want to name it as clsclassname (e.g., clsmyclass). - Click F4 to bring up Properties window - Type new name in (Name) property - Now you are ready to start coding...(later you will cut and paste your vba code) - At a minimum, to create any command in Visual Basic that will be used in an ESRI product, you need to implement the ICommand interface. - If you are also creating a tool - you need to implement the ITool interface. At the top of your code page for your class, type: Option Explicit Implements ICommand Implements ITool Private m_papp as IApplication Private m_pdoc as IMxDocument - The two lines ("Implements...") will automatically populate the Object and Procedure (methods, properties) drop down boxes. - Even if you are not going to provide code for all of the properties and methods, you have to at least "stub out" all of them. ESRI provides an Add-in that does this for you, but to do so manually, just click on ICommand in the object drop down list and click on each of the methods and properties in the procedure drop down list, then the same for ITool. - It is a good idea to add code that at least identifies your command from others. - For example, you can create it's own category Private Property Get ICommand_Category() As String ICommand_Category = "MyCustomCategory" End Property In addition, code should be provided for the ITool_Enabled property: Private Property Get ICommand_Enabled() As Boolean ICommand_Enabled = True End Property - You don't have access to Application like you do in VBA, so you have to get it through the hook supplied as a value passed into the ICommand's On_Create procedure. - You already created variables for these items above, so now you need to set them: - In the OnCreate procedure, get the hook: Private Sub ICommand_OnCreate(ByVal hook As Object) set m_papp = hook set m_pdoc = m_papp.document dernière màj 01/2007 10/11

End Sub The set m_pdoc = m_papp.document in VB is the "equivalent" of set pdoc = ThisDocument in VBA. - Go ahead and Save your project if you haven't already. Si vous voulez transférer la variable m_papp à des formulaires ou des modules externs, alors déclarez dans ces formulaires (modules) une variable public papp. Puis dans Private Sub ICommand_OnClick(), pour un formulaire nommé frmcore (par exemple), faire Set Frmcore.papp = m_papp 'on établit la variable avant de charger le formulaire Load frmcore frmcore.show - You are now ready to transfer your code from VBA. Just cut and paste (except for the above changes). - Once you have finished coding, you need to compile your code. - Under the File menu, choose "Make Project1 dll..." or whatever your project's name is. - You will be notified if there are any compilation errors. - Once your code compiles without errors, save it, then you are ready to use it in ArcMap. - Open ArcMap, and go into Tools/Customize. - Click on the "Commands" Tab. - Click "Add From File..." (You can use this as long as you only implement ICommand/ITool - if you implement any additional interfaces, you must use the Components Category - but that's another topic...) - Locate your.dll and click "Open" - Your tool appears in the category you gave it and with the name you gave it. - Drag it to a toolbar, and you are ready to go. dernière màj 01/2007 11/11