Meer

Tel het aantal streamsegmenten in een bepaalde streamvolgorde: Bifurcatieverhouding

Tel het aantal streamsegmenten in een bepaalde streamvolgorde: Bifurcatieverhouding


Vraag over stroommorfometrie. Waarin we het aantal streamsegmenten van een bepaalde streamvolgorde berekenen.

Het probleem is dat ArcGIS een onjuist aantal segmenten geeft. Wat er gebeurde in ArcGIS 10.1 na conversie naar Vector-formaat (feature class), rastercode toont streamvolgorde. Maar het nr. van segmenten is anders. Ik bedoel In deze figuur hebben we drie segmenten van 2 orderstromen [Blauwe streams] maar ArcGIS telde het 7 segmenten.

Streams van hogere orde werden losgekoppeld wanneer nieuwe streams van lagere orde toetreden (op knooppunten). Hoewel bij klikken dezelfde volgorde wordt weergegeven, maar de frequentie is anders, d.w.z. geen enkel segment zal anders zijn.

Maar als twee van dezelfde orde samenkomen en ze voldoen aan een hogere orde, dan mag het streamsegment niet worden samengevoegd (zoals wanneer twee 2e orde (blauwe) samenkomen met de 3e (hogere orde) (rode) hierin zullen deze twee blauwe streams niet worden samengevoegd Omdat ze verschillende zijrivieren zijn.

Als we dit correct doen, kunnen we andere morfometrische parameters krijgen, zoals de bifurcatieverhouding.

Kun je me helpen om het op te lossen? We kunnen handmatig tellen, maar voor een groter gebied is dit geen goede manier.

Ik ben nieuw in Python-codering.


Uw geometrie hoeft niet bij elke vertakking te worden gesplitst als u dat niet wilt. Het is gemakkelijker als u de geometrie maakt die past bij uw morfologieregel in plaats van elk segment te splitsen en vervolgens alles opnieuw samen te voegen om aan uw regel te voldoen. Dus het handmatig samenvoegen van de segmenten met 2 als de streamvolgorde en het handmatig splitsen ervan bij streams van hogere orde, is wat u vanaf het begin had moeten doen.

Aangezien je ervoor hebt gekozen om alles te splitsen, is de telling correct voor het aantal daadwerkelijke segmenten dat je hebt gemaakt vanuit een GIS-perspectief. Uw morfologieregel is een aangepaste regel die u alleen kunt afdwingen om een ​​segmenttelling te krijgen zoals u dat wilt.

Om uw regels opnieuw te maken alsof u deze regel handmatig hebt gevolgd, moet u verschillende stappen uitvoeren en verschillende tussenliggende functieklassen maken. Ik ga ervan uit dat u of uw bedrijf een geavanceerde licentie beschikbaar heeft, zodat u alle tools kunt gebruiken die ik hieronder zal noemen. Zo niet, dan wordt het moeilijker.

Je kunt het beste het hulpmiddel Oplossen gebruiken om de segmenten samen te voegen met het veld voor de stroomvolgorde als het veld Oplossen en de optie Niet-gesplitste lijnen gebruiken om alleen lijnen samen te voegen die elkaar van begin tot eind raken. Gebruik optioneel andere velden als onderdeel van uw Dissolve-veldset, zoals streamnaam, als dat ongewenste samenvoeging van regels voorkomt.

Vervolgens zou u voor elke volgorde van streams een afzonderlijke functieklasse moeten maken. Doe dit handmatig door Select By Attribute te gebruiken om elke streamvolgorde achtereenvolgens te selecteren en elke bestelling naar een afzonderlijke functieklasse te exporteren, aangezien u niet veel streamorders lijkt te hebben om mee om te gaan. Gebruik het snijgereedschap op de eerste-orde streams-lijnenset in combinatie met de tweede-orde streams-lijnenset en maak een uitvoer van punten. Gebruik vervolgens het hulpmiddel Lijn splitsen bij punten met de eerste-ordestromen en de puntuitvoer. Herhaal dat proces voor de stromen van de tweede orde met de stromen van de derde orde, enz. totdat u het laatste bestelpaar bereikt.

Voeg de klassen van lijnkenmerken samen of voeg ze toe die zijn uitgevoerd door alle processen van het gereedschap Lijn splitsen bij punten. Deze samengevoegde reeks lijnen zou de reeks lijnen moeten zijn waarvan u een op morfologie gebaseerde segmenttelling wilt krijgen.


Je hebt ongelijk. Op de foto staan ​​precies 7 segmenten van de 2e orde. Zo werkt het netwerk. Als u uw segmenten wilt converteren naar doorlopende lijnen, kunt u proberen segmenten op te lossen in stroomvolgorde - geen multiparts - en ze elk in een aparte functieklasse op te slaan. Volgende stap - begin met het bewerken van een klasse, b.v. 2e. Voeg alle segmenten van de derde orde toe die elkaar kruisen dat wordt bewerkt. Alles selecteren, lijnen ontleden, 3e orde verwijderen. Houd er rekening mee dat de richting van sommige lijnen in tegengestelde richting verandert.

EDIT: Dit komt heel dicht in de buurt van de suggestie van @Richard.


Bekijk de video: SHAYNA BASZLER and the House of Streaming! Savepoint