-
Rapport de Mini-Projet en ArcGISEngine
Ralise par :
Asmae BENMESSAOUD
3me Anne Cycle dIngnieur Goinformation Anne 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
Lanalyse gographique et la visualisation spatiale
amliorent le fonctionnement, la prise de dcision et la
rsolution des problmes, pour ces raisons et bien
dautre les dveloppeurs de logiciels ont pu concevoir
des applications simples et spcialises aillant la
puissance de la technologie des systmes dinformation
gographique (SIG) pour notre expertise domaine.
LArcGIS Engine prsente un outil trs puissant de
dveloppement qui rassemble tout ce quon a besoin
pour dvelopper et dployer des solutions SIG
personnalises.
2Rapport de Mini-Projet en ArcGIS Engine
-
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
I .Prsentation de lArcGIS Engine :I-1) Introduction dArcGIS Engine :ArcGIS Engine est une nouvelle infrastructure de composants au sein de la gamme de produits ESRI ArcGIS, conue pour intgrer des fonctionnalits spatiales de nouvelles applications ou des applications existantes.
ArcGIS Engine intgre les deux composants suivants :
Le Kit de dveloppement d'ArcGIS Engine, qui contient les composants et les outils de dveloppement permettant de concevoir des solutions,
La Licence de dploiement d'ArcGIS Engine, l'infrastructureindispensable pour excuter les applications ArcGIS Engine.
ArcGIS Engine constitue une gamme complte de composants logiciels cls, doutils et de ressources rassembls permettant aux dveloppeurs de concevoir des applications SIG et cartographiques personnalises. Les dveloppeurs peuvent tendre les bibliothques dobjets et contrler intgralement lapparence et lutilisation des interfaces utilisateur de leurs applications.
Les fonctionnalits dArcGIS Engine peuvent tre utilises occasionnellement dans une application ou en constituer le
3Rapport de Mini-Projet en ArcGIS Engine
http://www.esrifrance.fr/kit_ArcGIS_Engine%20.asp
-
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
composant central. Les applications peuvent tre dployes au sein de linfrastructure dArcGIS Engine ou les dveloppeurs peuvent intgrer des fonctionnalits SIG dautres applications personnalises ou commerciales telles que Microsoft Word ou Excel.
I-2) Les fonctionnalits principales dArcGIS Engine :*Cration de cartes :
Affichage des donnes, transparence des donnes multicouches, projections la vole,Classification des donnes,Etiquetage de la symbologie,Mise en forme et impression
*Interaction avec les cartes :
Dplacement et zoom Identification,Hyperlien vers des applications ou adresses URL externes,Analyse de cartes,Oprations de slection : slection interactive, slection par attribut, Oprations danalyse : mise en zone tampon, dcoupage, fusion,intersection, union, jointure spatiale.
*Cration de donnes (fichier de formes et godatabase personnelle) :
Edition de fichiers de formes et de godatabase, Rectification dimages Gocodage et vnements, Segmentation dynamique Fichiers MXD en lecture et
criture.
ArcGIS Engine permet :
Dintgrer une logique SIG des applications industrielles personnalises,
4Rapport de Mini-Projet en ArcGIS Engine
-
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
De concevoir et de dployer efficacement des applicationsSIG,
Daccder une logique SIG avance partir dapplications simplifies,
Dintgrer 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 dapplications avec ArcGIS Engine:
Les dveloppeurs conoivent des applications ArcGIS Engine dans lenvironnement de dveloppement intgr de leur choix, tel que :
Microsoft Visual Basic (VB) et Visual Studio .NET Eclipse, Sun ONE Studio et Borland JBuilder pour les dveloppeurs Java
Les dveloppeurs enregistrent les composants du kit de dveloppementdArcGIS Engine dans leur environnement de dveloppement intgr,Par exemple, un dveloppeur VB peut concevoir une applicationSIGspcialise en ajoutant lapplication un contrle de carte, un contrlede table des matires et les barres doutils de son choix. Lapplication termine peut alors tre installe sur nimporte quel poste ArcGIS Engine Runtime (y compris les postes ArcGIS Desktop) des fins de dploiement.
I-4) Dploiement dapplications ArcGIS Engine :Toutes les applications conues avec le kit de dveloppement
5Rapport de Mini-Projet en ArcGIS Engine
-
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
dArcGIS Engine ncessitent ArcGIS Engine Runtime ou une application ArcGIS Desktop (ArcView, ArcEditor ou ArcInfo)pour sexcuter correctement. Le crateur dune application peut fournir le logiciel ArcGIS Engine Runtime intgr au code excutable ou demander lutilisateur finaldobtenir une licence pour le logiciel ArcGIS Engine Runtime directement auprs dESRI.
Le logiciel ArcGIS Engine Runtime standard fournit les fonctionnalitsde base de tous les produits ArcGIS et peut tre amlior par :
Lextension Godatabase Update pour un accs total en lecture/criture une godatabase multiutilisateurs,
Lextension 3D pour la visualisation 3D avance,
Lextension spatiale pour lanalyse spatiale complexe.
I I. Prsentation de Mini-Projet:I I-1) Introduction :
Dans le cadre de notre formation dune semaine avec Mr. BOUAZAOUI, qui tait trs intressante pour nous, car on avait appris tous un bagage pour le dveloppement des applications en ArcGIS Engine travers : des cours thoriques, des exposs 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 quon 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 conue de refaire la cartographie qualitatif travers la valeur unique et la cartographie quantitatif en utilisant le changement du couleur et de symbole, pratiquement cest comme ce qui existe sur ArcMap dans les proprits des couches dans longlet Symbology .
I I-1) Linterface demand par le professeur :
Le professeur nous a propos de faire une interface qui ressemble au schma ci-dessous :
*Le schma propos :
7Rapport de Mini-Projet en ArcGIS Engine
-
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
III. Application : lexcution 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 linterface 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 rgion 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 rseaux 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 ralisation de cette premire 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 appels 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 mme la possibilit de modifier la couleur en faisant un double clique sur la couleur afficher sur la DataGrid:
La partie la plus intressante dans le code de cette deuxime 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 troisime partie est un petit peu o on a trouv des problmes car on doit faire une cartographie quantitatif par un symbole gradu et on a trois types de couche diffrentes comme on a dj prsent : on a des couches sous formats : point, ligne et polygone, mais heureusement on a pu arriver enfin raliser notre but et on a comme une premire 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 rsultat suivant :
20Rapport de Mini-Projet en ArcGIS Engine
-
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
Pour la couche rgion on a suivis les mmes dmarches et on avait comme rsultat :
21Rapport de Mini-Projet en ArcGIS Engine
-
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
Le code le plus intressant dans cette deuxime partie se rsume dans lesdeux fonctions quon a ajoutes dans le module : symbol_gradu_point et symbol_gradu_line, ont les a appels 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 laffichage dans la DataGrid ntait pas facile raliser 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 laffichage 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 lArcGIS Engine permetdlaborer une vaste gamme dapplications SIG, etdincorporer le SIG dans une application quelconque.Certains dpartements SIG souhaitent mettre au pointdes visionneuses SIG spcialises avec des outilsadapts leurs utilisateurs. Par exemple, un service administratif municipal peutavoirbesoin dune srie dapplications de rapports fonciersspcialiss, bass sur des informations de la base dedonnes SIG, qui les intgrent des commandes de
23Rapport de Mini-Projet en ArcGIS Engine
-
UNIVERSITE ABDELMALEK ESSAADI FACULTE DES SCIENCES ET TECHNIQUES DE TANGER
travaux auprs dentreprises des fins dautorisations,dimposition, de revues de planification, etc.
Application foncire municipale avec ArcGIS Engine
24Rapport de Mini-Projet en ArcGIS Engine
SommaireIntroductionI.Prsentation de lArcGIS Engine:I-1) Introduction dArcGIS Engine:I-2) Les fonctionnalits principales dArcGIS Engine:I-3) Conception dapplications avec ArcGIS Engine:I-4) Dploiement dapplications ArcGIS Engine:
II. Prsentation de Mini-Projet:II-1) Introduction:II-1) Linterface demand par le professeur:
III. Application:Conclusion