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

#1 Tue 24 July 2012 09:48

marine.g
Participant occasionnel
Date d'inscription: 4 Aug 2009
Messages: 43

Calculatrice de champ : transformation involontaire de la géométrie

Bonjour,

Je rencontre un problème assez curieux..
Je cherche à calculer un identifiant en passant par la calculatrice de champs. J'exécute cet outil dans un model Builder. Mon code fonctionne, il calcul bien mes identifiants (en récupérant l'ID le plus élevé existant dans la table et en completant les ID vides avec ce max+1 , max+2 et ainsi de suite. Le code est le suivant :

Code:

Static rec As Double
Dim pMxDoc As IMxDocument
Dim pFLayer As IFeatureLayer
Dim pCursor As ICursor
    
Set pMxDoc = ThisDocument
    
Dim icompteur As Integer
icompteur = 0
    
'couche recherchée
While (pMxDoc.FocusMap.Layer(icompteur).Name <> "REAUA" Or icompteur = pMxDoc.FocusMap.LayerCount)
icompteur = icompteur + 1
Wend
    
If icompteur < pMxDoc.FocusMap.LayerCount Then
Set pFLayer = pMxDoc.FocusMap.Layer(icompteur)
'Else
'Exit Sub
End If
    
'déselectionne les champs sélectionnés
Set pCursor = pFLayer.Search(Nothing, False)
    
'on prend les stats
Dim pData As IDataStatistics
Dim pStatResults As IStatisticsResults
Dim Maximum As Double
    
Set pData = New DataStatistics
'le nom du champ dont tu veux avoir le max
pData.Field = "Id_arc"
    
Set pData.Cursor = pCursor
Set pStatResults = pData.Statistics
Maximum = pStatResults.Maximum

'2. Calcul des identifiants en fonction de la valeur maximum trouvée précédemment

'si l'identifiant est déjà renseigné sa valeur reste inchangée
If [Id_arc] <> 0 Then
rec = [Id_arc] 
    
'sinon
Else
rec = Maximum + 1
End If

Mais le problème est qu'en exécutant cet outil, la géométrie de mes objets est modifiée! A la place de mon réseau linéaire d'origine, je me retrouve avec un réseau de quelques arcs seulement qui ne colle plus du tout avec le réseau d'origine!
Par contre, la table attributaire reste inchangée, j'ai bien le même nombre d'objets et les mêmes attributs qu'avant d'avoir exécuté cet outil.

Quelqu'un saurait-il ce qui déclenche cette transformation?

Merci d'avance,

Marine

Hors ligne

 

Pied de page des forums

Powered by FluxBB