#1 Thu 19 June 2008 17:12
- bosmed
- Juste Inscrit !
- Date d'inscription: 19 Jun 2008
- Messages: 3
code VBA pour enregistrer une shapefile
bonjour;
j'ai besoin d'un code VBA sous arcgis permettant d'enregistrer une shapefile dans un repertoire de mon poste.est ce ke possible?
merci.
Hors ligne
#2 Thu 19 June 2008 17:52
- Tnarbiv
- Participant assidu
- Lieu: Véretz
- Date d'inscription: 5 Sep 2005
- Messages: 392
Re: code VBA pour enregistrer une shapefile
bonjour,
que veux tu faire exactement: depuis quelle application tu veux le faire ? depuis arcmap, depuis arccatalog ?
Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.
Hors ligne
#3 Thu 19 June 2008 17:59
- bosmed
- Juste Inscrit !
- Date d'inscription: 19 Jun 2008
- Messages: 3
Re: code VBA pour enregistrer une shapefile
merci de me répondre,c'est a partir d'arcmap ke je veux enregistrer automatiquement mes résultats aprés une convertion des layers raster en mode vecteur
Hors ligne
#4 Mon 23 June 2008 10:58
- Tnarbiv
- Participant assidu
- Lieu: Véretz
- Date d'inscription: 5 Sep 2005
- Messages: 392
Re: code VBA pour enregistrer une shapefile
bonjour,
en espérant que cela puisse t'aider:
Code:
Public Sub test()
'recuperation du document
Dim pmxdoc As IMxDocument
Set pmxdoc = ThisDocument
'recuperation du bloc de données actif
Dim pmap As IMap
Set pmap = pmxdoc.FocusMap
'recuperation des couches sous forme d'enumeration
Dim players As IEnumLayer
Set players = pmap.Layers
'recuperation de la premiere couche de l'enumeration players
Dim player As ILayer
Set player = players.Next
'creation de l'outil d'export arcmap
Dim pexportoperation As IExportOperation
Set pexportoperation = New ExportOperation
'tant qu'il y une couche
Do Until player Is Nothing
'si la couche est de type vectorielle
If TypeOf player Is IFeatureLayer Then
'changement d'interface
Dim pfl As IFeatureLayer
Set pfl = player
'RECUPERATION DES INFOS NECESSAIRES A L'EXPORT
'recuperation de classe d'entites et changement d'interface
Dim pds As IDataset
Set pds = pfl.FeatureClass
'recuparation du nom complet du dataset
Dim pdsname As IDatasetName
Set pdsname = pds.FullName
'recuperation du nom du champ stockant la geometrie
Dim sShpName As String
sShpName = pfl.FeatureClass.ShapeFieldName
'recuperation de la collection de champs de la classe d'entites
Dim pFields As IFields
Set pFields = pfl.FeatureClass.Fields
'recuperation de l'index du champ contenant la geometrie
Dim lGeomIndex As Long
lGeomIndex = pFields.FindField(sShpName)
'recuperation du champ contenant la geometrie
Dim pField As IField
Set pField = pFields.Field(lGeomIndex)
'recuperation de la definition de la geometrie
Dim pGeometryDef As IGeometryDef
Set pGeometryDef = pField.GeometryDef
'creation du workspacefactory de type shapefile
Dim pWkSpFactory As IWorkspaceFactory
Set pWkSpFactory = New ShapefileWorkspaceFactory
'creation de l'espace de travail de sortie(repertoire "c:\temp" par exemple)
Dim pWkSp As IWorkspace
Set pWkSp = pWkSpFactory.OpenFromFile("c:\temp", 0)
'changement d'interface
Dim pWkSpDS As IDataset
Set pWkSpDS = pWkSp
'changement d'interface pour recuperer les infos sur le workspace
Dim pWkSpName As IWorkspaceName
Set pWkSpName = pWkSpDS.FullName
'creation d'un featureclassname (shapefile de sortie)
Dim pOutDSName As IDatasetName
Set pOutDSName = New FeatureClassName
'affectation du nom du shapefile en sortie (par exemple le nom de la couche sur laquelle on travaille)
pOutDSName.Name = player.Name
'affectation de l'espace de travail en sortie au shapefile en sortie
Set pOutDSName.WorkspaceName = pWkSpName
'export du shapefile
pexportoperation.ExportFeatureClass pdsname, Nothing, Nothing, pGeometryDef, pOutDSName, 0
End If
'on passe a la couche suivante
Set player = players.Next
Loop
End SubDernière modification par Tnarbiv (Mon 23 June 2008 11:01)
Ayez le réflexe "Développement Durable": N'imprimez ce message que si nécessaire.
Hors ligne


