Transcript
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.
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
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.
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.
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
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).
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
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.
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.
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 :
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 ) :
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 :
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 :
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()
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>
21
Remarque pour ajouter le code nécessaire on a simplement intégré des Snippets
comme suit :
Puis à l’aide de Snippet finder
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 :
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
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.
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.
'
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"
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
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>
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
top related