#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