#1 Mon 06 July 2009 17:52
- gabsig
- Participant occasionnel
- Date d'inscription: 22 May 2008
- Messages: 10
elongation et formes de polygones sur arcview
Bonjour,
Les urbanistes et écologues ont souvent à évaluer les formes des polygones (en tout cas, c'est mon cas): pour une analyse d'écologie du paysage, pour évaluer les formes urbaines ou les capacités de renouvellement urbain...
J'ai vu qu'il existait des manip sur des TIN utilisés en télédétection, mais je ne sais pas s'il existe un outil plus simple.
Il s'agirait de calculer un rapport entre la longueur maximale et la largeur maximale d'un polygone, ou encore la distance max. entre les coordonnées du polygones...
Si quelqu'un a des pistes pour Arcview, je suis preneur,
Merci
Gabriel
Hors ligne
#2 Mon 06 July 2009 18:19
Re: elongation et formes de polygones sur arcview
Hello encore,
J'ai vu passer un sujet sur la squelettisation des polygones sur arcgis (pour avoir leur direction) (ici : http://georezo.net/forum/viewtopic.php?id=54154), il y en a peut être d'autres. Ce n'est pas encore ce que tu cherches, mais ça peut peut être dépanner sur le principe...
On peut peut être aussi imaginer créer un nuage de points représentant le polygone et analyser les caractéristiques (forme, dissémination...) de celui ci ?
Autre piste, un script qui décompose le polygone en segments (source : http://forums.esri.com/Thread.asp?c=93& … p;t=280920), dont tu peux analyser la direction et la longueur peut être ?
Code:
Dim pSC As ISegmentCollection
Dim pEnumFeature As IEnumFeature
Dim pMap As IMap
Dim pMxDoc As IMxDocument
Dim pFeature As IFeature
Dim pPolygon As IPolygon
Dim pEnumSegment As IEnumSegment
Dim pSegment As ISegment
Dim pPoint As IPoint
Dim pFLayer As IFeatureLayer
Dim pPointFClass As IFeatureClass
Dim pNewFeature As IFeature
Dim outPartIndex As Integer
Dim segmentIndex As Integer
Dim pLELProps As ILabelEngineLayerProperties
Dim pAnnoLyrProps As IAnnotateLayerProperties
Dim pGeoFLayer As IGeoFeatureLayer
pMxDoc = m_pMxDoc
pMap = pMxDoc.FocusMap
pEnumFeature = pMap.FeatureSelection
pFeature = pEnumFeature.Next
Do Until pFeature Is Nothing
pPolygon = TryCast(pFeature.Shape, IPolygon)
If pPolygon IsNot Nothing Then
pSC = pPolygon
pFLayer = pMxDoc.SelectedLayer
pPointFClass = pFLayer.FeatureClass
pEnumSegment = pSC.EnumSegments
pEnumSegment.Next(pSegment, outPartIndex, segmentIndex)
Do Until pSegment Is Nothing
pPoint = New Point
pSegment.QueryPoint(esriSegmentExtension.esriNoExtension, 0.5, True, pPoint)
pNewFeature = pPointFClass.CreateFeature
pNewFeature.Value(pPointFClass.FindField("Length")) = pSegment.Length
pNewFeature.Shape = pPoint
pNewFeature.Store()
pEnumSegment.Next(pSegment, outPartIndex, segmentIndex)
Loop
End If
pFeature = pEnumFeature.Next
Loop
pLELProps = New LabelEngineLayerProperties
pLELProps.Expression = "[Length]"
pLELProps.IsExpressionSimple = True
pAnnoLyrProps = pLELProps
pAnnoLyrProps.DisplayAnnotation = True
pGeoFLayer = pFLayer
pGeoFLayer.AnnotationProperties.Clear()
pGeoFLayer.AnnotationProperties.Add(pAnnoLyrProps)
pMxDoc.ActiveView.Refresh()Quelques pistes, en vrac, sans aucune idée de ce que ça peut donner. Mais le résultat m'intéresse ![]()
Robin.
Hors ligne
#3 Tue 07 July 2009 09:42
- gabsig
- Participant occasionnel
- Date d'inscription: 22 May 2008
- Messages: 10
Re: elongation et formes de polygones sur arcview
Bonjour et merci pour ces pistes;
la première me semble la plus intéressante mais je ne peux pas télécharger ETgeowizards (pas administrateur réseau et on a eu des problèmes de virus).
De toute façon, je doute de pouvoir automatiser une analyse pour faire ressortir les polygones à supprimer car trop allongés (c'est mon objectif actuel): il faudrait avoir le rapport [longueur du plus petit segment/longueur du plus grand] ou l'inverse, et cette valeur pour chaque polygone.
J'ai essayé de faire un rapport périmètre/surface, ça marche dans une certaine mesure mais certains petits polygones qui ne sont pas allongés, sont aussi mis en évidence...
Gabriel
Hors ligne
#4 Tue 07 July 2009 10:34
- gabsig
- Participant occasionnel
- Date d'inscription: 22 May 2008
- Messages: 10
Re: elongation et formes de polygones sur arcview
Bonjour,
Je vais peut être me faire vilipender en rapportant ce qu'on m'a dit sur le forum géomaticien, mais ça semble donner d'assez bons résultats...
En essayant avec le rapport suivant dans le calculateur de champ d'arcview: périmètre/(5*superficie^0,5), ça semble donner de bons résultats sur les communes où mes polygones étaient avec des gros écarts de formes (des polygones obèses, des polygones étroits). En revanche, c'est bcp moins discriminant sur un autre secteur test où il y a plein de petits polygones tous aussi maigres les uns que les autres.
On peut ensuite jouer sur les seuils de classes dans la symbologie pour faire ressortir les parcelles qui sont vraiment allongées.
gabriel
Dernière modification par gabsig (Tue 07 July 2009 10:39)
Hors ligne


