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

GEODATA DAYS 2024

#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

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

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 smile
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

 

Pied de page des forums

Powered by FluxBB