Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Sat 18 March 2006 00:11

Julien
Membre
Lieu: Paris
Date d'inscription: 13 Feb 2006
Messages: 138

Arcobjet : quelqu'un saurait-il ce qui cloche dans mon gxdialogue ?

Bonjour à tous je commence à programmer sous arc object, et je ne parviens pas à ouvrir un raster à partir d'un pgsdialog. J'arrive sans problème à le faire pour un shapefile. Est ce quelqu'un pourrait m'aider, je vous montre mon code qui bloque  à "Set prlayer.Raster = pgxdataset.Dataset", en mettant un message d'erreur


En vous remerciant par avance


Private Sub cmd_addraster_Click()
Dim pmxdocument As IMxDocument
Dim pgxdialog As IGxDialog
Dim pgxobjectfilter As IGxObjectFilter
Dim penumgxobj As IEnumGxObject
Dim pgxdataset As IGxDataset
Dim prlayer As IRasterLayer
Dim jindex As Long
Dim pmap As IMap
Dim pmaps As IMaps

Set pgxdialog = New GxDialog
Set pmxdocument = ThisDocument
Set pgxobjectfilter = New GxFilterDatasets

pgxdialog.AllowMultiSelect = True
pgxdialog.Title = "Veuillez choisir votre/vos rasterclasses"
Set pgxdialog.ObjectFilter = pgxobjectfilter
If Not pgxdialog.DoModalOpen(ThisDocument.Parent.hWnd, penumgxobj) Then
MsgBox "Vous avez mis fin à l'opération", vbExclamation
Exit Sub
End If
penumgxobj.Reset
Set pgxdataset = penumgxobj.Next
Do Until pgxdataset Is Nothing
    Set prlayer = New RasterLayer
    Set prlayer.Raster = pgxdataset.Dataset
    pmxdocument.FocusMap.AddLayer prlayer
    Set pgxdataset = penumgxobj.Next
   
Loop
pmxdocument.UpdateContents
pmxdocument.ActivatedView.PartialRefresh esriViewGeography, Nothing, Nothing
End Sub

Hors ligne

 

#2 Mon 20 March 2006 09:42

oDevArc
Juste Inscrit !
Date d'inscription: 7 Sep 2005
Messages: 7

Re: Arcobjet : quelqu'un saurait-il ce qui cloche dans mon gxdialogue ?

Bonjour,

Il vous suffit de changer la ligne "Set prlayer.Raster =
pgxdataset.Dataset" en "prlayer.CreateFromDataset
pgxdataset.Dataset".

Bonne journée,

Olivier de LA POMMERAYE
GeoSYS

Hors ligne

 

#3 Mon 20 March 2006 10:00

Frédéric Prally
Participant occasionnel
Date d'inscription: 25 Oct 2005
Messages: 16

Re: Arcobjet : quelqu'un saurait-il ce qui cloche dans mon gxdialogue ?

Bonjour Julien,

J'ai apporté deux modifications sur ta procédure :
    - Définition du filter pour ne faire apparaitre que les données de type raster.
    - Récupération du dataset et ajout du raster au bloc de données.

Etant donné que tu récupéres le dataset de ton raster, il faut que tu crées le layer qui va s'afficher dans la Toc via la méthode CreateFromDataset.

Code:

Private Sub cmd_addraster_Click()
    Dim pmxdocument As IMxDocument
    Dim pgxdialog As IGxDialog
    Dim pRasterFilter As IGxObjectFilter 'ici changement
    Dim penumgxobj As IEnumGxObject
    Dim pgxdataset As IGxDataset
    Dim pRasterDataset As IRasterDataset
    Dim prlayer As IRasterLayer
    Dim jindex As Long
    Dim pmap As IMap
    Dim pmaps As IMaps
    
    Set pgxdialog = New GxDialog
    Set pmxdocument = ThisDocument
    Set pRasterFilter = New GxFilterRasterDatasets 'ici changement
    
    pgxdialog.AllowMultiSelect = True
    pgxdialog.Title = "Veuillez choisir votre/vos raster classes"
    Set pgxdialog.ObjectFilter = pRasterFilter
    If Not pgxdialog.DoModalOpen(ThisDocument.Parent.hWnd, penumgxobj) Then
    MsgBox "Vous avez mis fin à l'opération", vbExclamation
    Exit Sub
    End If
    penumgxobj.Reset
    Set pgxdataset = penumgxobj.Next
    Do Until pgxdataset Is Nothing
        Set pRasterDataset = pgxdataset.Dataset
        Set prlayer = New RasterLayer
        prlayer.CreateFromDataset pRasterDataset 'ici changement
        pmxdocument.FocusMap.AddLayer prlayer
        Set pgxdataset = penumgxobj.Next
        
    Loop
    pmxdocument.UpdateContents
    pmxdocument.ActivatedView.PartialRefresh esriViewGeography, Nothing, Nothing
End Sub

Hors ligne

 

Pied de page des forums

Powered by FluxBB