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

State Of The Map 2024

#1 Mon 09 March 2009 13:26

Raphael
Participant assidu
Date d'inscription: 5 Sep 2005
Messages: 188
Site web

Import d'un tiff en vba et calcul de la pyramide

Bonjour,

Je cherche une script vba pour importer un tiff dans un mxd.
Je cherche aussi un script vba qui permettrait de calculer la pyramide de ce raster.

Merci de vos réponses

Hors ligne

 

#2 Mon 09 March 2009 21:06

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

Re: Import d'un tiff en vba et calcul de la pyramide

Le tiff, s'il possède des informations de géoréférencement correctement normalisé (GeoTiff ou tfw) peut être ajouté comme n'importe quelle autre donnée.

Un peu de recherche pour savoir comment ajouter des données résoudront ton problème !

Tu peux configurer ArcMap pour qu'il calcul automatiquement les pyramides du raster qu'il importe. Pas besoin de VBA donc smile


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#3 Tue 10 March 2009 08:21

Raphael
Participant assidu
Date d'inscription: 5 Sep 2005
Messages: 188
Site web

Re: Import d'un tiff en vba et calcul de la pyramide

Bonjour,

J'ai passé plus de 2 heures à essayer, mais j'ai pas réussit à adapté un bout de code ;-(

J'ai à la base un code pour un lyr, mais si je remplace le lyr par un tif, sa veut pas ;-(

Code:

    Dim pGxLayer As esriCatalog.IGxLayer
    Dim pGxFile As esriCatalog.IGxFile
    Dim pObjFactory As IObjectFactory
    Dim strLayerPath As String
    Dim pMxDoc As esriArcMapUI.IMxDocument
    Dim pMap As esriCarto.IMap
    
    Set pMxDoc = ThisDocument
    Set pObjFactory = Application

    Set pGxLayer = pObjFactory.Create("esriCatalog.GxLayer")
    Set pGxFile = pGxLayer

    ' Set this variable to the location of you layer file
    strLayerPath = "d:\data\test.lyr"
    
    pGxFile.Path = strLayerPath

    If Not pGxLayer.Layer Is Nothing Then
        ' Ouverture du fichier mxd par AV
        Set pMap = pMxDoc.FocusMap
        pMap.AddLayer pGxLayer.Layer
    End If

Et le code pour ajouter un tiff depuis l'aide ESRI fonctionne pas

Code:

  Dim pRasterDataset As IRasterdataset
  Dim pRasterWs As IRasterWorkspace
  Set pRasterWs = OpenRasterWorkspace("D:\data")
  Set pRasterDataset = pRasterWs.OpenRasterDataset("airphoto.img",0)

Pour la pyramide, effectivement je peux régler ArcMap pour qu'il calcul la pyramide à l'ouverture, mais je peux aussi me trouver sur un ArcMap qui n'a pas se réglage.
Mais j'ai fini par trouvé un bout de code qui fonctionne ;-)

Code:

Sub BuildPyramid()
    'http://support.esri.com/index.cfm?fa=knowledgebase.techarticles.articleShow&d=15921
    
    Dim pWorkspaceFactory As IWorkspaceFactory
    Dim pWorkspace As IWorkspace
    Dim pRasterDataset As IRasterDataset
    Dim pEnumDataset As IEnumDataset
    
    Set pWorkspaceFactory = New RasterWorkspaceFactory
    Set pWorkspace = pWorkspaceFactory.OpenFromFile("d:\TempData", 0)
    
    Set pEnumDataset = pWorkspace.Datasets(esriDTRasterDataset)
    Set pRasterDataset = pEnumDataset.Next
    Do Until pRasterDataset Is Nothing
        'QI for IRasterPyramid from IRasterDataset
        Dim pRasterPyramid As IRasterPyramid
        Set pRasterPyramid = pRasterDataset
        If pRasterPyramid.Present = False Then
            pRasterPyramid.Create
            MsgBox "Created Pyramid for " & pRasterDataset.CompleteName
        Else
            MsgBox "Pyramid already exists for " & pRasterDataset.CompleteName
        End If
        Set pRasterDataset = pEnumDataset.Next
    Loop

End Sub

Et sa fonctionne

Je vais repartir à la chasse aux infos pour ajouter le tif...

Raphael

Hors ligne

 

#4 Tue 10 March 2009 08:30

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

Re: Import d'un tiff en vba et calcul de la pyramide

Deux heures, c'est un bon début. J'ai pu chercher parfois une semaine sur un problème particulier.

Pour qu'on raccourcisse ton temps de recherche, je crois que tu peux nous ce que veux dire "ça marche pas". Il doit bien y avoir quelque chose qui te montre que ça ne va pas ?

Et aussi, c'est bien de montrer exactement comment tu as adapté ces bouts de code, et indiquer l'emplacement exact des données que tu essaies d'importer.


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#5 Tue 10 March 2009 10:08

Raphael
Participant assidu
Date d'inscription: 5 Sep 2005
Messages: 188
Site web

Re: Import d'un tiff en vba et calcul de la pyramide

Pour le moment, je vais me contenter du calcul de la pyramide.

Je suis un peu (beaucoup)  à la bourre et j'ai plus trop de temps de chercher pour le tif ;-(
Je m'y remettrai dans un mois

Hors ligne

 

Pied de page des forums

Powered by FluxBB