#1 Mon 09 March 2009 13:26
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
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
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
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
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
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