Top Banner
1 Construction d’itinéraires à l’aide d’ArcGIS Tracking Analyst et VB.Net Prologue L’aménagement d’itinéraires routiers Au vu des grands besoins de désenclavement encore fortement ressentis dans de nombreuses régions du monde il reste un travail gigantesque à réaliser en matière de construction de routes d’où la nécessite d’automatiser les différentes phases d’étude. Dans ce contexte on propose une solution de comparaison spatiale d’alternatives moyennant la visualisation sur une carte d’un ensemble d’itinéraires possibles. En général l’objectif principal d’un projet routier reste l’amélioration de l’accessibilité en direction (ou à partir) des principaux pôles urbains dans perspective de minimiser le temps de parcours. La notion d’itinéraire revêt une importance capitale dans l’optimisation du temps d’accès. L’optimisation de l’aspect accessibilité implique la mise au point d’une procédure automatique d’analyse spatio-temporelle des différents itinéraires possibles cas par cas. Cette démarche nous conduit naturellement à la mise au point d’un programme de traçage sur une carte routière qui constitue un cadre global d’analyse et de comparaison d’itinéraires routiers. Pour réaliser le programme en question on a incorporé la fonction AddTrackingLayerToMap (composante de l’extension Tracking) dans un Add-Ins d’ArcMap écrit en Visual Basic de Microsoft Visual Studio 2008.
29

Construction itinéraires

Mar 12, 2023

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Construction itinéraires

1

Construction d’itinéraires à l’aide d’ArcGIS Tracking Analyst et

VB.Net

Prologue

L’aménagement d’itinéraires routiers

Au vu des grands besoins de désenclavement encore fortement ressentis dans de

nombreuses régions du monde il reste un travail gigantesque à réaliser en

matière de construction de routes d’où la nécessite d’automatiser les

différentes phases d’étude.

Dans ce contexte on propose une solution de comparaison spatiale d’alternatives

moyennant la visualisation sur une carte d’un ensemble d’itinéraires possibles.

En général l’objectif principal d’un projet routier reste l’amélioration de

l’accessibilité en direction (ou à partir) des principaux pôles urbains dans

perspective de minimiser le temps de parcours.

La notion d’itinéraire revêt une importance capitale dans l’optimisation du temps

d’accès. L’optimisation de l’aspect accessibilité implique la mise au point d’une

procédure automatique d’analyse spatio-temporelle des différents itinéraires

possibles cas par cas.

Cette démarche nous conduit naturellement à la mise au point d’un programme

de traçage sur une carte routière qui constitue un cadre global d’analyse et de

comparaison d’itinéraires routiers.

Pour réaliser le programme en question on a incorporé la fonction

AddTrackingLayerToMap (composante de l’extension Tracking) dans un Add-Ins

d’ArcMap écrit en Visual Basic de Microsoft Visual Studio 2008.

Page 2: Construction itinéraires

2

Contenu Prologue .................................................................................................................................................. 1

L’aménagement d’itinéraires routiers ................................................................................................. 1

Présentation de Tracking Analyst ............................................................................................................ 3

L’extension Tracking Analyst ............................................................................................................... 3

Vocabulaire Tracking Analyst .............................................................................................................. 3

Données temporelles .......................................................................................................................... 5

Exemple de données temporelles ....................................................................................................... 6

Extension ArcGIS bureautique avec Microsoft .Net ................................................................................ 9

Création de compléments (Add-Ins) pour ArcGIS Desktop ................................................................. 9

Génération automatiquement des Add-Ins ........................................................................................ 9

Réalisation de l’application ................................................................................................................... 10

Préparation des données .................................................................................................................. 10

Construction de l’Add-ins bouton simple .......................................................................................... 17

Exécution de la personnalisation ...................................................................................................... 22

Annexe1 code source ........................................................................................................................ 25

Page 3: Construction itinéraires

3

Présentation de Tracking Analyst

L’extension Tracking Analyst

Tracking Analyst est une extension ArcGIS conçue pour représenter les objets

qui se déplacent géographiquement ou dont le statut change au fil du temps.

Tracking Analyst nous permet de :

1. Exploiter des données géographiques qui contiennent des données

temporelles (dates et heures) en les intégrant à une carte sous forme de

couche de suivi.

2. Suivre les objets en temps réel. Tracking Analyst permet d'établir des

connexions réseau à des systèmes de positionnement par satellite (GPS) et

des périphériques de suivi et de contrôle, de manière à ce que les données

soient positionnées sur la carte en temps réel.

3. Symboliser des données temporelles à l'aide de fenêtres horaires et

d'options spécialisées qui facilitent la visualisation des données qui

évoluent dans le temps.

Vocabulaire Tracking Analyst

Pour une compréhension complète de l'extension ArcGIS Tracking Analyst

voici quelques notions d’usage :

• Couche de traçage

Une couche de dispositif qui est utilisé avec l'extension Tracking Analyst.

Analyste de suivi fournit des outils pour la création d'une couche de suivi

d'une classe d'entités ou shapefile. Une couche de suivi en temps réel

peut également être créée à partir d'un service de suivi.

• Connexion de traçage

Une connexion au serveur de suivi. Suivi Server est un produit distinct qui

fournit en temps réel des flux de données pour ArcGIS Desktop sous la

forme de services de suivi. Une connexion à un serveur de suivi unique peut

contenir plusieurs services de suivi.

• Service de traçage

Un flux de données temps réel qui est publié par Tracking Server et

souscrit par une application cliente. Deux applications clientes, ArcMap et

ArcGlobe, sont incluses dans ArcGIS Desktop.

• Observation (également connu sous le nom d'un événement)

un ensemble de valeurs mesurées pour une entité en un point spécifique

dans le temps. Pour une observation qui doit être utilisée pour le suivi, il

doit avoir un temps associé, dénommé le temps d'observation. Une couche

de suivi contient un ensemble d'observations.

Page 4: Construction itinéraires

4

• Objet

une entité objet de traçage.

• Suivre

une piste est une collection d'observations qui appartiennent au même

objet. Un objet en mouvement, comme une voiture, peut avoir une piste qui

montre les emplacements de la voiture au cours de la dernière heure. Un

objet stationnaire peut aussi avoir une piste. Un exemple de ceci est une

collection de mesures de température à partir d'un capteur

météorologique stationnaire. Dans tous les cas, une piste est formée par

l'agrégation des observations pour une seule entité avec un track ID

unique.

• Id de traçage

un champ qui identifie de manière unique des pistes individuelles, ou

objets, dans une couche de suivi.

• Ligne de traçage

une ligne reliant les observations dans une piste. Des lignes sont utiles

pour décrire la trajectoire approximative d'une entité. Il est important de

comprendre que la ligne de piste est seulement une estimation de la vraie

voie de l'entité sur la base des données disponibles. Une ligne à voie n'est

pas une caractéristique dans une couche de suivi, de sorte qu'elle ne peut

pas être sélectionnée ou utilisée comme entrée pour un outil de

géotraitement.

• Fenêtre de temps

une période de temps pendant lequel les événements de suivi sont affichés

sur la carte. Analyste de suivi offre également la possibilité de modifier la

Symbologie utilisée pour des événements qui relèvent de la fenêtre de

temps.

• Action

de traitement personnalisé qui se produit quand un événement de suivi

répond aux conditions de déclenchement de l'action. Actions de la couche

sont définis pour une couche de suivi. Actions de service sont définis pour

un service de suivi en temps réel.

• Déclencheur

un ensemble de conditions qui doivent être remplies par un suivi des

événements pour que l'action correspondante à exécuter. Un déclencheur

peut être construit à partir des conditions d'attributs ou d'emplacement,

ou une combinaison des deux.

Page 5: Construction itinéraires

5

Données temporelles

L'extension Tracking Analyst permet d'afficher des données temporelles

comme une couche ArcMap.

L’ensemble des données temporelles doit comprendre un événement ou

plusieurs associés en temps et dates spécifiques à des emplacements

géographiques.

L'extension reconnaît deux types de données temporelles

sources: des données fixes dans le temps et des données en temps réel.

La source de données fixes est un ensemble de données temporelles stockée

dans un dispositif de stockage informatique, qui est affichée comme une

entité shapefile ou géodatabase.

La source de données temps réel sont des données temporellement disponible

s en streaming par le biais une connexion serveur ArcIMS Tracking.

La connexion entre le serveur de suivi et le GPS permet aux utilisateurs de

suivre les événements en temps réel à mesure qu'ils surviennent.

Afin d'afficher le temps fixe ou en temps réel des événements temporels sur

ArcMap en utilisant Tracking Analyst, les données devraient être aménagées

en certaines structures de données qui peuvent être reconnues.

L'extension Tracking Analyst accepte des structures de données:

1. Evénement simple

2. Evénement stationnaire complexe

3. Evénement dynamique complexe

Page 6: Construction itinéraires

6

Exemple de données temporelles

Date Time Idengin Latitude Longitude Datetime1

6/26/2007 15:03:35 V1 40.426832 -3.734385 6/26/2007 15:03:35

6/26/2007 15:06:57 V1 40.402715 -3.724250 6/26/2007 15:06:57

6/26/2007 15:08:01 V2 40.404332 -3.723422 6/26/2007 15:08:01

6/26/2007 15:18:16 V3 40.458658 -3.664083 6/26/2007 15:18:16

6/26/2007 15:19:43 V1 40.477313 -3.674392 6/26/2007 15:19:43

6/26/2007 15:20:47 V4 40.491613 -3.671458 6/26/2007 15:20:47

6/26/2007 15:21:49 V2 40.504830 -3.658110 6/26/2007 15:21:49

6/26/2007 15:22:51 V2 40.518927 -3.652487 6/26/2007 15:22:51

6/26/2007 15:23:53 V3 40.531197 -3.642967 6/26/2007 15:23:53

6/26/2007 15:24:55 V4 40.531557 -3.623812 6/26/2007 15:24:55

6/26/2007 15:25:57 V3 40.541487 -3.608488 6/26/2007 15:25:57

6/26/2007 15:26:59 V4 40.556645 -3.602988 6/26/200715:26:59

1. Chacune des trois structures de données doivent comprendre au moins un

champ ID (Idengin), un champ de date( dtaetime1), et un emplacement

géographique( point ou latitude & longitude).

Page 7: Construction itinéraires

7

2. Le champ ID (Idengin) identifie un objet ou un événement étant observé à

travers le temps.

3. La date et l'heure de l'événement (s) doivent être combinées en un seul

champ et dans un format texte afin d'être

reconnues par l'extension.

4. Enfin, le champ position géographique comprend la latitude et la longitude

de l'événement (s).

5. Un simple événement temporel contient toutes les informations

nécessaires dans un seul message ou un dossier, qui est appelé un

composant d'observation temporelle.

6. Un événement temporel complexe comprend une table d'observation

temporelle et une seconde composante - l'objet temporel.

Lorsque la table d'observation temporelle ne comprennent pas toutes les

informations nécessaires concernant un événement / objet, les

informations supplémentaires stockées dans une table distincte

concernant l'événement / object est appelé le composant objet temporel.

7. Cette composante comprendra au minimum le champ ID

qui peut être liée à la table d'observation temporelle et d'autres

attributs. Le tableau suivant en est un exemple d'une table d'objet

temporelle, qui contient le nom du conducteur, et la marque et l'année de

chaque voiture

énumérées dans le tableau précédent. Les deux tableaux forment un

ensemble de complexes d’événements temporels.

Object_ID Pilote Marque Couleur Année

V1 Ahmed Renault rouge 2008

V2 Esther Peugeot Grise 2005

V3 Mirka Honda blanche 2004

V4 Jalil Lada Noire 2007

Page 8: Construction itinéraires

8

• Un événement complexe peut être davantage ventilé en un événement

complexe fixe ou d'un événement complexe dynamique.

• L'événement complexe stationnaire se réfère à un événement / objet qui

n'a pas de changement de situation géographique.

• Par exemple, l'observation de l'état du trafic à un instant donné par

différents capteurs peut être considérée comme un événement

stationnaire parce que l'emplacement des capteurs est statique.

• la Table d'observation temporelle peut comprendre l'identifiant pour

chaque capteur, l'état des capteurs, et le date et l'heure associée à l'état

de chaque capteur.

Page 9: Construction itinéraires

9

Extension ArcGIS bureautique avec Microsoft .Net

Création de compléments (Add-Ins) pour ArcGIS Desktop

ArcGIS 10 a introduit plusieurs nouvelles fonctionnalités innovantes qui rendent

facile la personnalisation des applications ArcGIS Desktop.

Les Add-Ins fournissent un cadre déclaratif basée sur la création d'une

collection de personnalisations commodément packagés dans un seul fichier.

Les Add-Ins sont ajoutés à un système en les copiant simplement dans un dossier

bien précis et enlevé en les supprimant de ce dossier.

Les Add-Ins peuvent également être partagés entre les utilisateurs au sein

d'une équipe à l'aide d'un partage réseau centralisé.

Les compléments sont créés à l'aide de .NET ou Java et XML.

XML décrit les personnalisations, tandis que les classes .NET ou Java

fournissent un comportement personnalisé.

Le kit de développement logiciel ArcObjects (SDK) comprend un Assistant Add-

Ins qui s'intègre avec les environnements de développement tels que Eclipse,

Microsoft Visual Studio ce qui simplifie la mise au point de développements.

Génération automatiquement des Add-Ins

Les Add-ins sont construits en utilisant un environnement de

développement intégré (IDE), tels que Visual Studio Express pour. NET et

Eclipse pour Java ainsi que des assistants simples d’usage.

Des modèles sont fournis avec les kits de développement logiciel ArcObjects

pour générer automatiquement entièrement des Add-Ins de projets constitués

des fichiers de classe et des fichiers XML.

En outre, lorsque ces projets sont construits, ils générer automatiquement un

fichier Add-Ins et le copier dans un dossier bien connu. Pour la plupart,

le XML a été fourni par les assistants.

Page 10: Construction itinéraires

10

Réalisation de l’application

Préparation des données

Nous avons utilisé comme fond de carte un shapefile représentant les 1493

communes du Maroc

Après quelques touches esthétiques et un agrandissement approprié la carte se

présente comme suit :

Page 11: Construction itinéraires

11

Encore un petit effort pour la construction dans une geodatabase nommée

trakingdonnees de deux shapefiles points correspondant à deux itinéraires

(itineraire et itineraire1 ) :

Page 12: Construction itinéraires

12

Les tables attributaires des deux itinéraires sont :

Page 13: Construction itinéraires

13

Page 14: Construction itinéraires

14

Les deux itinéraires affichés sur ArcMap donnent l’écran suivant :

Page 15: Construction itinéraires

15

On va se contenter de ces deux itinéraires mais on peut utiliser ArcGIS network

Analyst et Vb.net pour générer autant d’itinéraires qu’on veut moyennant le

réseau routier comme suit :

Page 16: Construction itinéraires

16

Page 17: Construction itinéraires

17

Construction de l’Add-ins bouton simple

Ouvrir Microsoft Visual Studio 2008

Ouvrir nouveau projet puis choisir ArcGISAdd-Ins dans le volet gauche et

ArcMap Add-In dans celui de droite comme suit :

Vous déroulez l’assistant comme suit :

Page 18: Construction itinéraires

18

Sélectionner le bouton à titre d’exemple

Page 19: Construction itinéraires

19

Après génération vous obtenez automatiquement

1. Un fichier de configuration Config.esriaddinx.xml

2. Un fichier de classe VB Button1.vb

3. Deux fichiers d’mage avec extension png

4. Un fichier de projet My project

Maintenant il est possible de personnaliser le bouton en ajoutant le code

répondant à notre objectif et modifier des valeurs dans le fichier XMl

Examinons d’abord le code suivant :

Notre révision du code généré est réalisée en 3 actions :

1. Modifier la procédure OnClik()

Page 20: Construction itinéraires

20

2. Intégrer le code Snippet nécessaire

3. Ajouter au projet les références vers les .Net assemblies ou bibliothèques

qui vont nous permettre de développer notre commande à partir des

composants ArcObjects

Le fichier XML est resté presque intact on y change seulement l’attribut

caption du nœud button en lui donnant la valeur exemple pour expliquer le rôle

du fichier de configuration dont le code est le suivant :

<ESRI.Configuration xmlns="http://schemas.esri.com/Desktop/AddIns"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<Name>ArcMapAddin1</Name>

<AddInID>{d86cd9ab-ee3d-48c4-a1e9-9fbc4bdcc068}</AddInID>

<Description>Type in a description for this Add-in.</Description>

<Version>1.0</Version>

<Image>Images\ArcMapAddin1.png</Image>

<Author>Abdeljalil</Author>

<Company>CISYS</Company>

<Date>07/04/2012</Date>

<Targets>

<Target name="Desktop" version="10.0" />

</Targets>

<AddIn language="CLR" library="ArcMapAddin1.dll"

namespace="ArcMapAddin1">

<ArcMap>

<Commands>

<Button id="CISYS_ArcMapAddin1_Button1" class="Button1"

message="Add-in command generated by Visual Studio project wizard."

caption="exemple" tip="Add-in command tooltip." category="Add-In Controls"

image="Images\ArcMapAddin1.png" />

</Commands>

</ArcMap>

</AddIn>

</ESRI.Configuration>

Page 21: Construction itinéraires

21

Remarque pour ajouter le code nécessaire on a simplement intégré des Snippets

comme suit :

Puis à l’aide de Snippet finder

Page 22: Construction itinéraires

22

Le reste des modifications est une évidence limpide.

Exécution de la personnalisation

Pour exécuter le bouton personnalisé il faut l’ajouter à une barre d’outils

d‘ArcMap. Il faut donc ouvrir ArcMap et dans le menu principal choisir

Personnaliser et Mode personnalisation comme suit :

Page 23: Construction itinéraires

23

Il faut cliquer sur le bouton Ajouter depuis un fichier puis choisir Add-Ins1

comme suit :

Puis glisser le bouton exemple sur une barre d’outils

Page 24: Construction itinéraires

24

Une fois le bouton placé sur une barre d’outils on peut afficher les deux

itinéraires et ça donne sur le fond de carte décrit précédemment l’écran

suivant :

Remarque on peut géneraliser à plusieurs itinéraires moyennant une boucle

itérative il faut juste avoir des tables atribitaires ayant la même structure.

Ceci ne présente qu’une variante le lecteur peut faire des analogies avec ses

propres besoins l’idée principale étant l’intégration des fonctions des extensions

d’ArcGIS dans un programme Visual studio.

Page 25: Construction itinéraires

25

Annexe1 code source Imports ESRI.ArcGIS.Geometry

Imports ESRI.ArcGIS.Carto

Imports ESRI.ArcGIS.ArcMapUI

Imports ESRI.ArcGIS.Geodatabase

Imports ESRI.ArcGIS.TrackingAnalyst

Imports ESRI.ArcGIS.DataSourcesFile

Imports Microsoft.VisualBasic

Imports ESRI.ArcGIS.Display

Imports ESRI.ArcGIS.esriSystem

Imports ESRI.ArcGIS.GlobeCore

Public Class Button1

Inherits ESRI.ArcGIS.Desktop.AddIns.Button

Public Sub New()

End Sub

Protected Overrides Sub OnClick()

Dim pnxdoc As IMxDocument

Dim map As ESRI.ArcGIS.Carto.IMap

map = GetMapFromArcMap(My.ArcMap.Application)

pnxdoc = GetMxDocumentFromArcMap(My.ArcMap.Application)

ZoomToActiveLayerInTOC(pnxdoc)

AddTrackingLayerToMap(map, "c:\SIGR", "datetime1", "Idengin")

AddTrackingLayerToMap(map, "c:\SIGR\S1", "datetime1", "Name")

End Sub

Protected Overrides Sub OnUpdate()

Enabled = My.ArcMap.Application IsNot Nothing

End Sub

#Region "Add Tracking Layer To Map"

' ArcGIS Snippet Title:

' Add Tracking Layer To Map

'

' Long Description:

' Add a tracking layer (shapefile) to the active map.

'

' Add the following references to the project:

' ESRI.ArcGIS.Carto

' ESRI.ArcGIS.DataSourcesFile

' ESRI.ArcGIS.Display

' ESRI.ArcGIS.Geodatabase

' ESRI.ArcGIS.GlobeCore

' ESRI.ArcGIS.System

' ESRI.ArcGIS.TrackingAnalyst

'

' Intended ArcGIS Products for this snippet:

' ArcGIS Desktop (ArcEditor, ArcInfo, ArcView)

' ArcGIS Engine

'

' Applicable ArcGIS Product Versions:

' 9.2

' 9.3

' 9.3.1

' 10.0

'

' Required ArcGIS Extensions:

' ArcGIS Tracking Analyst

'

' Notes:

' This snippet is intended to be inserted at the base level of a Class.

' It is not intended to be nested within an existing Function or Sub.

'

Page 26: Construction itinéraires

26

''' <summary>

''' Add a tracking layer (shapefile) to the active map.

''' </summary>

''' <param name="map"></param>

''' <param name="string_ShapefileDirectory">A System.String that is the

directory location where a shapefiel is located. Example:

"D:\arcgis\ArcTutor\Tracking_Analyst\Simple"</param>

''' <param name="string_TemporalFieldName">A System.String that is the

TemporalFieldName. Example: "TA_DATE"</param>

''' <param name="string_TemporalObjectColumnName">A System.String that

is the TemporalObjectColumnName. Example: "EVENTID"</param>

''' <remarks></remarks>

Private Sub AddTrackingLayerToMap(ByVal map As ESRI.ArcGIS.Carto.IMap,

ByVal string_ShapefileDirectory As System.String, ByVal

string_TemporalFieldName As System.String, ByVal

string_TemporalObjectColumnName As System.String)

If map Is Nothing Then

Exit Sub

End If

Dim temporalRenderer As

ESRI.ArcGIS.TrackingAnalyst.ITemporalRenderer = New

ESRI.ArcGIS.TrackingAnalyst.CoTrackSymbologyRendererClass

' Get the hurricane feature class from the shape file

Dim workspaceFactory As ESRI.ArcGIS.Geodatabase.IWorkspaceFactory =

New ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass

Dim workspace As ESRI.ArcGIS.Geodatabase.IWorkspace =

workspaceFactory.OpenFromFile(string_ShapefileDirectory, 0)

Dim enumDataset As ESRI.ArcGIS.Geodatabase.IEnumDataset =

workspace.Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny)

Dim featureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass =

CType(enumDataset.Next, ESRI.ArcGIS.Geodatabase.IFeatureClass)

' Create a tracking layer

Dim temporalLayer As ESRI.ArcGIS.TrackingAnalyst.ITemporalLayer =

New ESRI.ArcGIS.TrackingAnalyst.TemporalFeatureLayerClass

Dim layer As ESRI.ArcGIS.Carto.ILayer = CType(temporalLayer,

ESRI.ArcGIS.Carto.ILayer)

Dim featureLayer As ESRI.ArcGIS.Carto.IFeatureLayer = CType(layer,

ESRI.ArcGIS.Carto.IFeatureLayer)

' Set the temporal column and event id column

' Note: Set up the renderer before adding to layer

temporalRenderer.TemporalFieldName = string_TemporalFieldName

temporalRenderer.TemporalObjectColumnName =

string_TemporalObjectColumnName

temporalLayer.Renderer = CType(temporalRenderer,

ESRI.ArcGIS.Carto.IFeatureRenderer)

' Set the data

featureLayer.FeatureClass = featureClass

' Add layer to map

map.AddLayer(layer)

End Sub

#End Region

#Region "Get MxDocument from ArcMap"

Page 27: Construction itinéraires

27

' ArcGIS Snippet Title:

' Get MxDocument from ArcMap

'

' Long Description:

' Get MxDocument from ArcMap.

'

' Add the following references to the project:

' ESRI.ArcGIS.ArcMapUI

' ESRI.ArcGIS.Framework

' ESRI.ArcGIS.System

'

' Intended ArcGIS Products for this snippet:

' ArcGIS Desktop (ArcEditor, ArcInfo, ArcView)

'

' Applicable ArcGIS Product Versions:

' 9.2

' 9.3

' 9.3.1

' 10.0

'

' Required ArcGIS Extensions:

' (NONE)

'

' Notes:

' This snippet is intended to be inserted at the base level of a Class.

' It is not intended to be nested within an existing Function or Sub.

'

'''<summary>Get MxDocument from ArcMap.</summary>

'''<param name="application">An IApplication interface that is the

ArcMap application.</param>

'''<returns>An IMxDocument interface.</returns>

'''<remarks></remarks>

Public Function GetMxDocumentFromArcMap(ByVal application As

ESRI.ArcGIS.Framework.IApplication) As ESRI.ArcGIS.ArcMapUI.IMxDocument

If application Is Nothing Then

Return Nothing

End If

Dim document As ESRI.ArcGIS.Framework.IDocument =

application.Document

Dim mxDocument As ESRI.ArcGIS.ArcMapUI.IMxDocument =

CType(document, ESRI.ArcGIS.ArcMapUI.IMxDocument) ' Explicit Cast

Return mxDocument

End Function

#End Region

#Region "Zoom to Active Layer in TOC"

'''<summary>Zooms to the selected layer in the TOC associated with the

active view.</summary>

'''

'''<param name="mxDocument">An IMxDocument interface</param>

'''

'''<remarks></remarks>

Public Sub ZoomToActiveLayerInTOC(ByVal mxDocument As IMxDocument)

If mxDocument Is Nothing Then

Return

Page 28: Construction itinéraires

28

End If

' Get the map

Dim activeView As IActiveView = mxDocument.ActiveView

' Get the TOC

Dim contentsView As IContentsView = mxDocument.CurrentContentsView

' Get the selected layer

Dim selectedItem As System.Object = contentsView.SelectedItem

If Not (TypeOf selectedItem Is ILayer) Then

Return

End If

Dim layer As ILayer = TryCast(selectedItem, ILayer) ' Dynamic Cast

' Zoom to the extent of the layer and refresh the map

activeView.Extent = layer.AreaOfInterest

activeView.Refresh()

End Sub

#End Region

#Region "Get Map from ArcMap"

' ArcGIS Snippet Title:

' Get Map from ArcMap

'

' Long Description:

' Get Map from ArcMap.

'

' Add the following references to the project:

' ESRI.ArcGIS.ArcMapUI

' ESRI.ArcGIS.Carto

' ESRI.ArcGIS.Framework

' ESRI.ArcGIS.System

'

' Intended ArcGIS Products for this snippet:

' ArcGIS Desktop (ArcEditor, ArcInfo, ArcView)

'

' Applicable ArcGIS Product Versions:

' 9.2

' 9.3

' 9.3.1

' 10.0

'

' Required ArcGIS Extensions:

' (NONE)

'

' Notes:

' This snippet is intended to be inserted at the base level of a Class.

' It is not intended to be nested within an existing Function or Sub.

'

'''<summary>Get Map from ArcMap</summary>

'''

'''<param name="application">An IApplication interface that is the

ArcMap application.</param>

'''

'''<returns>An IMap interface.</returns>

'''

'''<remarks></remarks>

Page 29: Construction itinéraires

29

Public Function GetMapFromArcMap(ByVal application As

ESRI.ArcGIS.Framework.IApplication) As ESRI.ArcGIS.Carto.IMap

Dim mxDocument As ESRI.ArcGIS.ArcMapUI.IMxDocument =

CType(application.Document, ESRI.ArcGIS.ArcMapUI.IMxDocument) ' Explicit

Cast

Dim activeView As ESRI.ArcGIS.Carto.IActiveView =

mxDocument.ActiveView

Dim map As ESRI.ArcGIS.Carto.IMap = activeView.FocusMap

Return map

End Function

#End Region

End Class