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

#1 Tue 25 July 2006 13:35

jamasig
Participant occasionnel
Date d'inscription: 25 Jul 2006
Messages: 14

decoupage d'un raster

bonjour,
je sais pas si qlq un px m'aider a resoudre mon probleme
je veux decouper un raster automatiquement en utilisant un shapefile qui est tracé en dessus
je crois qu"il me faut developper un programme en arcobject, pour l'affaire
j'ai trouvé un outil qui s'appelle hawths (la foctionnalité decouper par des polygones), mais ce que je veux c est d'utiliser cette fonctionnalité dans un script arcobject.
en plus lorsque j ai testé l'outil hawths mais celui ci me crie une image tif georeferencée mais sans le fichier tfw ce qui infecte la portabilité de l'image
je sais pas si qlq un à une solution à mon probleme et merci

Hors ligne

 

#2 Tue 25 July 2006 22:48

Miniopterine
Participant assidu
Date d'inscription: 29 Nov 2005
Messages: 278

Re: decoupage d'un raster

Il existe cet outil ici,

http://support.esrifrance.fr/

  Découpage d'un raster

Description:
Cet outil permet de découper, dans ArcMap, une couche raster en spécifiant
les coordonnées du rectangle de découpage ou en utilisant l'enveloppe d'une
entité (ou d'un élément graphique) de la carte. Le raster résultant du
découpage peut être sauvegardé au format TIFF ou ERDAS Imagine.

Téléchargement:
Télécharger le fichier
Decoupage_raster.zippuis
le décompresser dans le répertoire de votre choix.

Prérequis:

Cet outil nécessite ArcGIS 8.x ou ArcGIS 9.x.

Hors ligne

 

#3 Wed 26 July 2006 10:50

janyv
Participant assidu
Lieu: Montreuil, France
Date d'inscription: 8 Feb 2006
Messages: 356

Re: decoupage d'un raster

Voici un exemple de code VB qui découpe une classe raster stockée dans une geodatabase ArcSDE vers une classe raster stockée dans une geodatabase personnelle (en fait un fichier .img). Le découpage est effectué en précisant les coordonnées terrain du rectangle de découpage. On pourrait, pour améliorer le code aller chercher l'enveloppe d'une entité d'une classe d'entités ou d'un shapefile servant de source de découpage

Bon codage,

Code:

Private Sub ClipRaster()

Dim pRasterProp As esriDataSourcesRaster.IRasterProps

Dim pBands As esriDataSourcesRaster.IRasterBandCollection

Dim pBand As esriDataSourcesRaster.IRasterBand

Dim pRaster As esriGeoDatabase.IRaster

Dim pRasterDS As esriGeoDatabase.IRasterDataset



Dim pSDEFact As esriGeoDatabase.IWorkspaceFactory

Dim pAccessWksFact As esriGeoDatabase.IWorkspaceFactory



Dim pPropset As esriSystem.IPropertySet

Dim pWks As esriGeoDatabase.IWorkspace



Dim pSigDONRas As esriGeoDatabase.IRasterWorkspaceEx

Dim pClipRas As esriGeoDatabase.IRasterWorkspaceEx



Dim pExt As esriGeometry.IEnvelope



Dim dTailleCell As Double



Dim iCol As Integer

Dim iRow As Integer

Dim sName As String

Dim sNewPath As String



' *********************************************************************************

' * Connexion à la géodatabase personnelle qui accueille le résultat du découpage *

' *********************************************************************************

Set pAccessWksFact = New esriDataSourcesGDB.AccessWorkspaceFactory

Set pClipRas = pAccessWksFact.OpenFromFile("C:\temp\clipraster.mdb", 0)

Set pAccessWksFact = Nothing



' *******************************************************************************

' * Connextion à la géodatabase ArcSDE qui contient la classe raster à découper *

' *******************************************************************************



Set pPropset = New esriSystem.PropertySet

With pPropset

  .SetProperty "SERVER", "NOM_DU_SERVEUR_ARCSDE"

  .SetProperty "INSTANCE", "NOM_SERVICE_OU_PORT_TCP"

  .SetProperty "DATABASE", ""

  .SetProperty "USER", "UTILISATEUR_AUTORISE"

  .SetProperty "PASSWORD", "MOT_DE_PASSE"

  .SetProperty "VERSION", "SDE.DEFAULT_OU_AUTRE_VERSION"

End With



Set pSDEFact = New esriDataSourcesGDB.SdeWorkspaceFactory

Set pSigDONRas = pSDEFact.Open(pPropset, 0)

Set pPropset = Nothing

Set pSDEFact = Nothing



' **********************************************

' * Pointer sur la classe raster à découper    *

' * et initialiser l'objet cible du découpage. *

' **********************************************

Set pRasterDS = pSigDONRas.OpenRasterDataset("NOM_DE_LA_CLASSE_RASTER_A_DECOUPER")



Set pRaster = pRasterDS.CreateDefaultRaster

Set pRasterProp = pRaster

Set pBands = pRaster



' *********************************************

' * Définir le rectangle de découpage.        *

' * Dans l'exemple, on est en mètres terrain. *

' *********************************************



Set pExt = New esriGeometry.Envelope

With pExt

    .XMin = 361951

    .YMin = 2352451

    .XMax = 501128

    .YMax = 2445172

End With



' ************************************************************

' * Affecter les hauteur et largeur en pixel en fonction     *

' * de la taille de la cellule. Attention, ici la résolution *

' * est la même en X qu'en Y.                         *

' * Affecter l'etendue spatiale.                     *

' ************************************************************



With pRasterProp

    dTailleCell = (.MeanCellSize.X + .MeanCellSize.Y) / 2

    .Width = Int((pExt.XMax - pExt.XMin) / dTailleCell)

    .Height = Int((pExt.YMax - pExt.YMin) / dTailleCell)



    .Extent = pExt

End With



' ***********************************************************

' * Effectuer le découpage dans la géodatabase personnelle. *

' ***********************************************************



pBands.SaveAs "NOM_DE_LA_CLASSE_RASTER_DECOUPEE", pClipRas, "TIFF"



' ***********************

' * Détruire les objets *

' ***********************



Set pRasterDS = Nothing

Set pRaster = Nothing

Set pExt = Nothing

Set pRasterProp = Nothing

Set pBands = Nothing

Set pRasterDS = Nothing

set pClipRas = nothing

Set pSigDONRas = Nothing

End Sub

yvan.


Si tu ne sais pas demande, si tu sais partage smile

Hors ligne

 

#4 Wed 26 July 2006 11:14

jamasig
Participant occasionnel
Date d'inscription: 25 Jul 2006
Messages: 14

Re: decoupage d'un raster

merci bcp pour le code, mais j'aimerais bien savoir si cela marche bien avec les images tiff géoreferencées, et si l'image resultante est générée avec son fichier tws

Hors ligne

 

#5 Wed 26 July 2006 11:30

janyv
Participant assidu
Lieu: Montreuil, France
Date d'inscription: 8 Feb 2006
Messages: 356

Re: decoupage d'un raster

Si vous souhaitez vous en assurer, changer l'espace de stockage pour un système de fichiers plutôt qu'une geodatabase personnelle comme dans mon exemple et essayez. Si le fichier world (.tfw) n'est pas généré, vous pouvez utiliser l'interface esriDataSourcesRaster::IworldFileExport comme ci-après :

Code:

Dim pWorldFileExport as esriDataSourcesRaster.IWorldFileExport

'  Faire pointer sur le jeu de données Raster découpé
Set pWorldFileExport = pRasterDS
pWorldFileExport.Write

set pWorldFileExport = Nothing

bon courage,

yvan.


Si tu ne sais pas demande, si tu sais partage smile

Hors ligne

 

#6 Wed 26 July 2006 11:44

jamasig
Participant occasionnel
Date d'inscription: 25 Jul 2006
Messages: 14

Re: decoupage d'un raster

svp il y a un terme que je comprend pas , cad quoi la classe raster? et ensuite moi j'ai les images dispersées dans un repertoire, donc je n'ai aucune base de données ou je stock les rasters, je sais pas si je peux travailler ainsi, ou peut etre faut il creer une geodatabase, et si c est le cas, comment faire, et merci

Hors ligne

 

#7 Wed 26 July 2006 11:57

janyv
Participant assidu
Lieu: Montreuil, France
Date d'inscription: 8 Feb 2006
Messages: 356

Re: decoupage d'un raster

Une classe raster stocke des données raster dans une geodatabase ArcSDE.

C'est, pardonnez-moi le raccourci, l'équivalent d'un fichier TIFF (ou autre type) mais hébergé par une geodatabase ArcSDE.

Si vos images sont rassemblées au sein d'un répertoire, il va falloir les mosaïquer (arctoolbox propose si mes souvenirs sont bons un tel outil) avant d'effectuer le découpage, à moins que ce dernier ne soit possible à partir d'un catalogue d'images d'une géodatabase ArcSDE (renseignez-vous auprès de l'équipe d'ESRI France).

bon courage,

yvan.


Si tu ne sais pas demande, si tu sais partage smile

Hors ligne

 

#8 Wed 26 July 2006 12:13

jamasig
Participant occasionnel
Date d'inscription: 25 Jul 2006
Messages: 14

Re: decoupage d'un raster

merci bcp je vais essayer cela et restant en contact comme meme pour les difficultés que je vais avoir certainements

Hors ligne

 

#9 Thu 27 July 2006 15:11

juuuules
Juste Inscrit !
Date d'inscription: 10 May 2006
Messages: 5

Re: decoupage d'un raster

Bonjour

Je relance cette discussion qui m'a énormément servie car je n'arrive pas à récupérer le fichier de géoréférencement .tfw

Le raster en sortie se trouve dans un répertoire et le clip défini se réalise sans problème.
J'essaye d'utiliser l'objet "IWorldFileExport" comme il est conseillé mais je ne vois pas de résultat.
Pourtant il n'y a pas de bug sur cette cet objet ni quand je lance sa fonction Write.

Si quelqu'un peut m'éclairer sur ce sujet, je l'en remercie d'avance.

Juuuules

Hors ligne

 

#10 Thu 27 July 2006 16:25

janyv
Participant assidu
Lieu: Montreuil, France
Date d'inscription: 8 Feb 2006
Messages: 356

Re: decoupage d'un raster

Bonjour,

Je viens d'essayer la méthode write en créant un objet rasterdataset à partir du fichier tif qui vient d'être découpé et çà fonctionne : le fichier .tfw a été généré, il porte le même préfixe que le fichier tif et se trouve dans le même répertoire.


Si tu ne sais pas demande, si tu sais partage smile

Hors ligne

 

#11 Thu 27 July 2006 16:59

juuuules
Juste Inscrit !
Date d'inscription: 10 May 2006
Messages: 5

Re: decoupage d'un raster

C'est bon ça marche, j'oubliais juste de redéfinir le RasterDs.

Par contre j'ai un autre problème, l'apparence de l'image découpée, une fois chargée dans ArcMap, diffère quelque peu de l'original( au niveau de la teinte).
Par contre, si je l'ai compare sur un viewer d'image (en l'occurence XnView) il n'y a aucune différence.
ça doit pas être si grave.. enfin j'espère...

Sinon, vu que mes découpages seront souvent à effectuer sur plusieurs rasters concommitants, je pense ne pas pouvoir éviter l'étape du mosaïquage.
J'ai commencé à programmer la-dessus mais c'est pas fameux, j'obtiens un image toute noire.

Si vous avez quelques tuyaux à ce sujet....

Juuuules

Hors ligne

 

#12 Thu 27 July 2006 17:33

janyv
Participant assidu
Lieu: Montreuil, France
Date d'inscription: 8 Feb 2006
Messages: 356

Re: decoupage d'un raster

Concernant la différence d'affichage, ArcMap doit appliquer un filtre (Dans l'onglet Symbologie->Type) sur les histogrammes, écart-types par défaut je crois.

Pour le mosaïquage, il existe des outils avec ArcToolBox->Raster : Mosaic to NewRaster et Mosaïque. La boite à outils complémentaires d'ESRI France en propose aussi : Rasters vers Mosaïque et Rasters vers Nouvelle Mosaïque.

Bon courage,

yvan.


Si tu ne sais pas demande, si tu sais partage smile

Hors ligne

 

#13 Thu 27 July 2006 19:40

jamasig
Participant occasionnel
Date d'inscription: 25 Jul 2006
Messages: 14

Re: decoupage d'un raster

svp j ai essayé un exemple donnée par le help de arcgis developper concernant clip raster, mais lorsque j'ai essayer de le compiler il me signe qu'il y unje variable indefinié j ai essayer avec un autre exemple il me signe le meme erreur disant qu il y une variable non definie
svp si qlq peut m'aider pour savoir compiler les exemples

Dernière modification par jamasig (Thu 27 July 2006 19:45)

Hors ligne

 

#14 Thu 27 July 2006 20:22

janyv
Participant assidu
Lieu: Montreuil, France
Date d'inscription: 8 Feb 2006
Messages: 356

Re: decoupage d'un raster

Bonsoir,

Cela veut dire que tu utilises une variable sans l'avoir auparavant déclarée. Cela arrive souvent avec les pointeurs vers un objet ESRI.

Si l'exemple est en Visual Basic, il n'y a pas besoin de compiler, tu peux utiliser le code dans ArcMAP/VBA

yvan.


Si tu ne sais pas demande, si tu sais partage smile

Hors ligne

 

#15 Fri 28 July 2006 09:00

juuuules
Juste Inscrit !
Date d'inscription: 10 May 2006
Messages: 5

Re: decoupage d'un raster

J'ai fais les tests de mosaïquage vers un nouveau raster et je rencontre encore un problème. Vu que je suis contraint de renseigner une taille de pixel identique à celle de mes images d'origine (cad 0.5), j'obtiens comme résultat une image agrandie. Il n'y a plus aucun respect de l'échelle.

C'est en faisant des tests avec plusieurs tailles de pixel que je me suis rendu compte que cela venait de là.
En effet, dès que je mets une taille de pixel inférieur à 1, il y a automatiquement agrandissement de l'image.
J'ai tenté un redimensionnement mais l'image n'est plus bien géoréférencée.

De plus, ce que je veux c'est lancer mon mosaïquage dans une routine par programmation. Donc plutôt avec des objets du genre IMosaic....  Mais il se peut que l'on puisse appeler directement les outils d'arctoolbox sans faire apparaître la boite de dialogue.

Sinon, qu'est ce c'est que la boîte à outils complémentaires d'ESRI France? Je vais aller voir sur le support...

Juuuules

Hors ligne

 

#16 Fri 28 July 2006 10:55

jamasig
Participant occasionnel
Date d'inscription: 25 Jul 2006
Messages: 14

Re: decoupage d'un raster

voila l'exemple que je utilise est c est sur cette page que la variable "cboInput" est inconnue

aussi, j'ai bien testé le code de decoupage que vous m avez donné et c est bien marché, merci
le seul pb et comment faire la lecture de l'image enregistreé dans la BD Acces, et je me demande si il y une possibilité que le resultat soit une image tiff directement enregistrée dans repertoire
et merci

Dernière modification par jamasig (Mon 31 July 2006 12:07)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#17 Sun 30 July 2006 23:29

Miniopterine
Participant assidu
Date d'inscription: 29 Nov 2005
Messages: 278

Re: decoupage d'un raster

La boite outil complementaire d'ESRI se telecharge gratuitement sur le site du support d'ESRI.

Description:

La boîte d'outils complémentaires ESRI France contient un ensemble d'outils de géotraitement accessibles à partir de la fenêtre ArcToolBox.
Régulièrement complétée par nos soins, elle a pour principal objectif d'illustrer les possibilités de personnalisation de l'environnement de géotraitement d'ArcGIS 9 (scripts, modèles, ...) tout en essayant de répondre à vos besoins les plus fréquents.

Dernière modification par Miniopterine (Wed 08 August 2007 22:33)

Hors ligne

 

#18 Mon 31 July 2006 11:05

jamasig
Participant occasionnel
Date d'inscription: 25 Jul 2006
Messages: 14

Re: decoupage d'un raster

merci pour la boite a outil, je vx savoir si elle existe une autre en langage VB
et merci

Hors ligne

 

Pied de page des forums

Powered by FluxBB