Rapport de Mini-Projet en ArcGIS...

download Rapport de Mini-Projet en ArcGIS Engined1n7iqsz6ob2ad.cloudfront.net/document/pdf/53847c26dc79c.pdf · Segmentation dynamique Fichiers MXD en lecture et ... Sur la Map on a : 11 Rapport

If you can't read please download the document

Transcript of Rapport de Mini-Projet en ArcGIS...

  • 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