Mer

Hvordan veie størrelsen på en romlig begivenhet med hensyn til antall hotspots?

Hvordan veie størrelsen på en romlig begivenhet med hensyn til antall hotspots?


Dette er sannsynligvis et kart algebra problem. Jeg har et 2D -kart med verdier som varierer0.0til1.0spredt utover det. Algoritmen som produserer dem er en applikasjon av den brøkdelte Brown -bevegelsen. Kartet måler101x101piksler eller celler.

Mitt problem: Jeg vil finne på kartet regionene (eller øyene) hvilke verdier som overstiger en gitt terskel, f.eks.0.3(vi kan kalle dem hotspots). Jeg vil deretter beregne antall piksler eller celler som faller innenfor grensene for den øya. Gitt at det kan være mer enn én øy, kan jeg ende opp med:

  1. Situasjon 1: 1 øy med, si1000piksler eller celler;
  2. Situasjon 2: 2 øyer med500piksler eller celler hver;
  3. Ytterligere kombinasjoner.

Siden Jeg må kunne skille mellom de forskjellige situasjonene, Jeg tenkte på en eller annen måte veier det totale antall celler med hensyn til antall øyer. Hvordan kunne jeg gjøre dette, annet enn å vurdere gjennomsnittlig antall celler (som jeg ser på som en triviell løsning)?

Jeg spør dette siden hvis jeg skulle vurdere virkningen av disse hotspots på et system som er en del av på kartet kan det være store forskjeller mellom å ha ett stort sone midt på kartet og å ha flere, men mindre, hotspots spredt overalt.

Nedenfor er et visuelt eksempel på hva jeg mener med øyer eller regioner.


Jeg tror den enkleste måten å gjøre dette på er:

  1. Generer konturer. Du kan gjøre dette i ArcGiS, QGIS med plugin eller til og med med ren python (men du må finne et skikkelig skript eller skrive det selv). Generer dem med pauser 0.1, 0.2, 0.3 etc.
  2. Nå er alle verdier med 0,3 =
  3. Beregn min. område med hotspot. Bare få en oppløsning på raster (V- og H -pikselstørrelse), beregne pikselarealet og multipliser denne verdien med antall piksler i hotspot du ønsker.
  4. Iterer etter funksjoner i polygonene som er opprettet fra 0,3 kontur, og sjekk om funksjonsområdet er større enn en beregnet verdi fra punkt 3. Hvis det er sant, skriver du det til nytt lag.

Og nå bør du ha et polygonlag med "øyene". Hvis du trenger dem som linjer eller punkter, kan du bare konvertere til linjer eller få sentroider.

Dette er den enkle måten, andre ting du kan gjøre er mer kompliserte, for eksempel Radial Basis Funksjoner er fine verktøy for klassifisering, eller kanskje andre nevrale nettverkstilnærminger ville gjøre jobben.


Se videoen: MENIMBANG BERAT BENDA DENGAN SATUAN GRAM