Upload
hoangquynh
View
219
Download
0
Embed Size (px)
Citation preview
Rapport de Mini-Projet en ArcGIS
Engine
Réalisée par :
Asmae BENMESSAOUD
3ème Année Cycle d’Ingénieur Géoinformation Année Universitaire 2010-
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
Sommaire
1Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
Introduction
L’analyse géographique et la visualisation spatiale
améliorent le fonctionnement, la prise de décision et la
résolution des problèmes, pour ces raisons et bien
d’autre les développeurs de logiciels ont pu concevoir
des applications simples et spécialisées aillant la
puissance de la technologie des systèmes d’information
géographique (SIG) pour notre expertise domaine.
L’ArcGIS Engine présente un outil très puissant de
développement qui rassemble tout ce qu’on a besoin
pour développer et déployer des solutions SIG
personnalisées.
2Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
I .Présentation de l’ArcGIS Engine :
I-1) Introduction d’ArcGIS Engine :
ArcGIS® Engine est une nouvelle infrastructure de composants au sein de la gamme de produits ESRI ArcGIS, conçue pour intégrer des fonctionnalités spatiales à de nouvelles applications ou des applications existantes.
ArcGIS Engine intègre les deux composants suivants :
Le Kit de développement d'ArcGIS Engine, qui contient les composants et les outils de développement permettant de concevoir des solutions,
La Licence de déploiement d'ArcGIS Engine, l'infrastructureindispensable pour exécuter les applications ArcGIS Engine.
ArcGIS Engine constitue une gamme complète de composants logiciels clés, d’outils et de ressources rassemblés permettant aux développeurs de concevoir des applications SIG et cartographiques personnalisées. Les développeurs peuvent étendre les bibliothèques d’objets et contrôler intégralement l’apparence et l’utilisation des interfaces utilisateur de leurs applications.
Les fonctionnalités d’ArcGIS Engine peuvent être utilisées occasionnellement dans une application ou en constituer le
3Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
composant central. Les applications peuvent être déployées au sein de l’infrastructure d’ArcGIS Engine ou les développeurs peuvent intégrer des fonctionnalités SIG à d’autres applications personnalisées ou commerciales telles que Microsoft® Word ou Excel.
I-2) Les fonctionnalités principales d’ArcGIS Engine :
*Création de cartes :
Affichage des données, transparence des données multicouches, projections à la volée,Classification des données,Etiquetage de la symbologie,Mise en forme et impression
*Interaction avec les cartes :
Déplacement et zoom Identification,Hyperlien vers des applications ou adresses URL externes,Analyse de cartes,Opérations de sélection : sélection interactive, sélection par attribut, Opérations d’analyse : mise en zone tampon, découpage, fusion,intersection, union, jointure spatiale.
*Création de données (fichier de formes et géodatabase personnelle) :
Edition de fichiers de formes et de géodatabase, Rectification d’images Géocodage et événements, Segmentation dynamique Fichiers MXD en lecture et
écriture.
ArcGIS Engine permet :
D’intégrer une logique SIG à des applications industrielles personnalisées,
4Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
De concevoir et de déployer efficacement des applicationsSIG,
D’accéder à une logique SIG avancée à partir d’applications simplifiées,
D’intégrer une logique et des cartes SIG à des applicationscommerciales telles que Microsoft Word et Excel,
De concevoir des applications compatibles entre plates-formes avec VB .NET, C++, ou Java.
I-3) Conception d’applications avec ArcGIS Engine:
Les développeurs conçoivent des applications ArcGIS Engine dans l’environnement de développement intégré de leur choix, tel que :
· Microsoft Visual Basic® (VB) et Visual Studio .NET· Eclipse, Sun™ ONE Studio et Borland® JBuilder® pour les développeurs Java
Les développeurs enregistrent les composants du kit de développementd’ArcGIS Engine dans leur environnement de développement intégré,Par exemple, un développeur VB peut concevoir une applicationSIGspécialisée en ajoutant à l’application un contrôle de carte, un contrôlede table des matières et les barres d’outils de son choix. L’application terminée peut alors être installée sur n’importe quel poste ArcGIS Engine Runtime (y compris les postes ArcGIS Desktop) à des fins de déploiement.
I-4) Déploiement d’applications ArcGIS Engine :
Toutes les applications conçues avec le kit de développement
5Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
d’ArcGIS Engine nécessitent ArcGIS Engine Runtime ou une application ArcGIS Desktop (ArcView®, ArcEditor™ ou ArcInfo®)pour s’exécuter correctement. Le créateur d’une application peut fournir le logiciel ArcGIS Engine Runtime intégré au code exécutable ou demander à l’utilisateur finald’obtenir une licence pour le logiciel ArcGIS Engine Runtime directement auprès d’ESRI.
Le logiciel ArcGIS Engine Runtime standard fournit les fonctionnalitésde base de tous les produits ArcGIS et peut être amélioré par :
L’extension Géodatabase Update pour un accès total en lecture/écriture à une géodatabase multiutilisateurs,
L’extension 3D pour la visualisation 3D avancée,
L’extension spatiale pour l’analyse spatiale complexe.
I I. Présentation de Mini-Projet:
I I-1) Introduction :
Dans le cadre de notre formation d’une semaine avec Mr.
BOUAZAOUI,
qui était très intéressante pour nous, car on avait appris tous
un bagage pour le développement des applications en ArcGIS
Engine à travers : des cours théoriques, des exposés et ainsi
des exercices quotidiens.
À la fin de cette formation on avait été censé de faire une
application qui constitue la continuité de dernier exercice qu’on
a fait sur la cartographie qualitatif et quantitatif mais nous
6Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
avons été conçue de refaire la cartographie qualitatif à travers
la valeur unique et la cartographie quantitatif en utilisant le
changement du couleur et de symbole, pratiquement c’est
comme ce qui existe sur ArcMap dans les propriétés des
couches dans l’onglet « Symbology ».
I I-1) L’interface demandé par le professeur :
Le professeur nous a proposé de faire une interface qui ressemble au schéma ci-dessous :
*Le schéma proposé :
7Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
III. Application :À l’exécution de mini-projet vous trouvez la page suivante :
8Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
Pour passer à faire une cartographie on fait :
On aura l’interface suivante:
9Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
Pour faire une cartographie qualitatif on choisit une couche sousforme des points et on clique sur le bouton « Valeur Unique » onobtient :
10Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
Sur la Map on trouve :
Pour une couche sous format polygone comme « région » on obtient :
Sur la Map on a :
11Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
Pour une couche sous format line comme « les réseaux hydrauliques » on a :
Sur la carte on avait :
12Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
Pour la réalisation de cette première étape on a utilisé deux fonctions principales dans le module « valeur_unique_point » et « valeur_unique_ fil » et selon la forme de notre couche, onles a appelés dans le bouton valider par le code suivant:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Form2.DataGridView1.Rows.Clear() If Rechercher_Layer_byname_in_carte(Form2.cmb1.Text).FeatureClass.ShapeType = ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint Then valeur_unique_point(Rechercher_Layer_byname_in_carte(Form2.cmb1.Text), ComboBox1.Text, 50) ElseIf Rechercher_Layer_byname_in_carte(Form2.cmb1.Text).FeatureClass.ShapeType = ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon Then valeur_unique_fil(Rechercher_Layer_byname_in_carte(Form2.cmb1.Text), ComboBox1.Text, 50) Else
valeur_unique_Line(Rechercher_Layer_byname_in_carte(Form2.cmb1.Text), ComboBox1.Text, 50) End If decl = False End Sub
13Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
Pour la cartographie qualitatif suivant la couleur on choisit la couche et on clique sur le bouton « couleur », on choisit le champ, la classe et a couleur :
Et sur la Map on obtient :
14Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
Pour une autre type de format de couche polygone par exempleon a même la possibilité de modifier la couleur en faisant un double clique sur la couleur afficher sur la DataGrid:
La partie la plus intéressante dans le code de cette deuxième partie est celle qui existe sur le bouton OK où on modifie la couleur on a fait : Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim min As Integer Dim max As Integer Dim pGeoLayer As IGeoFeatureLayer pGeoLayer = Rechercher_Layer_byname_in_carte(Form2.cmb1.Text) 'Find the selected field in the feature layer Dim featureClass As IFeatureClass = m_featureLayer.FeatureClass Dim field As IField = featureClass.Fields.Field(featureClass.FindField(frm_couleur.ComboBox1.Te))
'Get a feature cursor Dim cursor As ICursor cursor = m_featureLayer.Search(Nothing, False)
'Create a DataStatistics object and initialize properties Dim dataStatistics As IDataStatistics = New DataStatisticsClass dataStatistics.Field = field.Name dataStatistics.Cursor = cursor
'Get the result statistics Dim statisticsResults As IStatisticsResults statisticsResults = dataStatistics.Statistics
15Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
'Set the values min min and max values min = statisticsResults.Minimum max = statisticsResults.Maximum 'Create a new ClassBreaksRenderer and set properties m_classBreaksRenderer = New ClassBreaksRenderer m_classBreaksRenderer.Field = frm_couleur.ComboBox1.SelectedItem m_classBreaksRenderer.BreakCount = Convert.ToInt32((frm_couleur.ComboBox2.Text)) + 1 m_classBreaksRenderer.MinimumBreak = Convert.ToDouble(min)
'Calculate the class interval by a simple mean value Dim interval As Double interval = (Convert.ToDouble(max + 1) - m_classBreaksRenderer.MinimumBreak) / m_classBreaksRenderer.BreakCount
'Get the color ramp Dim colorRamp As IColorRamp colorRamp = m_styleGalleryItem.Item 'Set the size of the color ramp and recreate it colorRamp.Size = Convert.ToInt32(frm_couleur.ComboBox2.Text) + 2 colorRamp.CreateRamp(False)
Dim i As Integer, currentBreak As Double Dim simpleFillSymbol As ISimpleFillSymbol Dim smarker As ISimpleMarkerSymbol Dim simpleline As ISimpleLineSymbol 'Get the enumeration of colors from the color ramp Dim enumColors As IEnumColors = colorRamp.Colors
enumColors.Reset() currentBreak = m_classBreaksRenderer.MinimumBreak ' test de shapetype If m_featureLayer.FeatureClass.ShapeType = ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint Then
For i = 0 To m_classBreaksRenderer.BreakCount - 1 'Set class break m_classBreaksRenderer.Break(i) = currentBreak 'Create simple marker symbol and set color smarker = New SimpleMarkerSymbol smarker.Style = esriSimpleMarkerStyle.esriSMSCircle smarker.Size = 5 smarker.Color = enumColors.Next() 'Add symbol to renderer
m_classBreaksRenderer.Symbol(i) = smarker currentBreak += interval addcontrol(smarker, i, m_classBreaksRenderer.Label(i)) Next i
ElseIf m_featureLayer.FeatureClass.ShapeType = ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon Then For i = 0 To m_classBreaksRenderer.BreakCount - 1 'Set class break m_classBreaksRenderer.Break(i) = currentBreak 'Create simple fill symbol and set color simpleFillSymbol = New SimpleFillSymbolClass simpleFillSymbol.Color = enumColors.Next() 'Add symbol to renderer ' m_classBreaksRenderer.Symbol(i) = simpleFillSymbol
16Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
m_classBreaksRenderer.Symbol(i) = simpleFillSymbol currentBreak += interval addcontrol(simpleFillSymbol, i, m_classBreaksRenderer.Label(i)) Next i
'Form1.AxMapControl1.ActiveView.Refresh()
Else For i = 0 To m_classBreaksRenderer.BreakCount - 1 'Set class break m_classBreaksRenderer.Break(i) = currentBreak 'Create simple fill symbol and set color simpleline = New SimpleLineSymbol simpleline.Color = enumColors.Next() simpleline.Style = esriSimpleLineStyle.esriSLSSolid simpleline.Width = 5 'Add symbol to renderer ' m_classBreaksRenderer.Symbol(i) = simpleFillSymbol m_classBreaksRenderer.Symbol(i) = simpleline currentBreak += interval addcontrol(simpleline, i, m_classBreaksRenderer.Label(i)) Next i End If
If pGeoLayer Is Nothing Then Exit Sub ''Set the new renderer pGeoLayer.Renderer = m_classBreaksRenderer
Form1.AxMapControl1.ActiveView.ContentsChanged() ''Refresh the display Form1.AxMapControl1.Refresh(esriViewDrawPhase.esriViewGeography, pGeoLayer, Nothing) ''Hide the form
Me.Hide()
End Sub
17Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
La troisième partie est un petit peu où on a trouvé des problèmes car on doit faire une cartographie quantitatif par un symbole gradué et on a trois types de couche différentes comme on a déjà présenté : on a des couches sous formats : point, ligne et polygone, mais heureusement on a pu arriver enfin à réaliser notre but et on a comme une première interface :
Et sur la Map on a :
18Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
Pour une couche sous format line on choisit le nombre de classe, la taille ; et le nouveau symbole :
On clique sur OK on obtient :
19Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
On valide notre choix par :
Sur la Map on avait le résultat suivant :
20Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
Pour la couche région on a suivis les mêmes démarches et on avait comme résultat :
21Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
Le code le plus intéressant dans cette deuxième partie se résume dans lesdeux fonctions qu’on a ajoutées dans le module : «symbol_gradué_point» et « symbol_gradué_line», ont les a appelés dans Le bouton ‘valider’ de la forme « frm_symbol » par la syntaxe suivante :
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Select Case Rechercher_Layer_byname_in_carte(Form2.cmb1.Text).FeatureClass.ShapeType Case esriGeometryType.esriGeometryPoint symbol_gradué_point(ComboBox2.Text, Rechercher_Layer_byname_in_carte(Form2.cmb1.Text), ComboBox1.Text, ComboBox3.Text, ComboBox4.Text)
Case esriGeometryType.esriGeometryPolyline symbol_gradué_line(ComboBox2.Text, Rechercher_Layer_byname_in_carte(Form2.cmb1.Text), ComboBox1.Text, ComboBox3.Text, ComboBox4.Text) Case esriGeometryType.esriGeometryPolygon symbol_gradué_point(ComboBox2.Text, Rechercher_Layer_byname_in_carte(Form2.cmb1.Text), ComboBox1.Text, ComboBox3.Text, ComboBox4.Text) End Select decl = False End Sub
Aussi le code de l’affichage dans la DataGrid n’était pas facile à réaliser on a utilisé deux autre fonctions dans le module :Private Function PreviewImage() As Image
'Get and set the style class Dim symbologyStyleClass As ISymbologyStyleClass symbologyStyleClass = frmSymbol.AxSymbologyControl1.GetStyleClass(frmSymbol.AxSymbologyControl1.StyleClass)
'Preview an image of the symbol Dim picture As stdole.IPictureDisp picture = symbologyStyleClass.PreviewItem(galleryitem, 70, 30)
Return System.Drawing.Image.FromHbitmap(New System.IntPtr(picture.Handle)) End Function
Private Function PreviewImageline() As Image Dim image As System.Drawing.Image
'Get and set the style class Dim symbologyStyleClass As ISymbologyStyleClass symbologyStyleClass = frmSymbol.AxSymbologyControl1.GetStyleClass(esriSymbologyStyleClass.esriStyleClassLineSymbols) 'Preview an image of the symbol
22Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
Dim picture As stdole.IPictureDisp picture = symbologyStyleClass.PreviewItem(galleryitem, 70, 30) image = System.Drawing.Image.FromHbitmap(New System.IntPtr(picture.Handle)) Return image End Function
et pour les relier à l’affichage sur la DataGrid on les a appeler dans deux autre fonctions qui sont :
Public Sub addcontrol2(ByVal jsy As ISymbol, ByVal i As Integer, ByVal str As String)
Form2.DataGridView1.Rows.Add() Form2.DataGridView1.Rows(i).Cells(0).Value = PreviewImage() Form2.DataGridView1.Rows(i).Cells(1).Value = str Form2.DataGridView1.Rows(i).Cells(2).Value = str
End Sub
Public Sub addcontrol3(ByVal jsy As ISymbol, ByVal i As Integer, ByVal strAs String) Form2.DataGridView1.Rows.Add() Form2.DataGridView1.Rows(i).Cells(0).Value = PreviewImageline() Form2.DataGridView1.Rows(i).Cells(1).Value = str Form2.DataGridView1.Rows(i).Cells(2).Value = strEnd Sub
Conclusion
A la fin de ce Mini-Projet et on guide de conclusion ilparait crucial à nos yeux que l’ArcGIS Engine permetd’élaborer une vaste gamme d’applications SIG, etd’incorporer le SIG dans une application quelconque.Certains départements SIG souhaitent mettre au pointdes visionneuses SIG spécialisées avec des outilsadaptés à leurs utilisateurs. Par exemple, un service administratif municipal peutavoirbesoin d’une série d’applications de rapports fonciersspécialisés, basés sur des informations de la base dedonnées SIG, qui les intègrent à des commandes de
23Rapport de Mini-Projet en ArcGIS Engine
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
travaux auprès d’entreprises à des fins d’autorisations,d’imposition, de revues de planification, etc.
Application foncière municipale avec ArcGIS Engine
24Rapport de Mini-Projet en ArcGIS Engine