Lisää

Peräkkäiset rasterit - milloin piste x muuttui

Peräkkäiset rasterit - milloin piste x muuttui


ArcGIS 10.1: n käyttö Spatial- ja 3D-analyytikoiden sekä Python 2.7: n kanssa

Minulla on sarja uudelleenluokiteltuja rastereita, joissa jokainen solu on joko yksi tai nolla. Minun on luotava ohjelmallisesti yksi rasteri, joka näyttää, milloin jokaisella solulla oli ensimmäisen arvo. Rasterit sisältävät päivämäärän tiedostonimessä sekä rasterin päivämääräkentässä. (Tarkempi kuvaus tiedoista alla)

Olen täysin hämmentynyt. Olen yrittänyt käyttää Spatial Analystin Plus-toimintoa, mutta menetän päivämäärän. Minulla on hyvin vähän kokemusta rastereiden käytöstä, joten toivon, että ongelmani on tuntemattomuus terminologiaan ja että joku voi osoittaa minut oikeaan suuntaan.

Jos pystyn selvittämään, miten se tehdään käsin ArcMapissa, olen varma, että voin luoda komentosarjat prosessin automatisoimiseksi. Tietenkin valmis menemään -skripti olisi erittäin mukava: ^)

Tiedot ovat 35 vuotta meri-jääpitoisuuden muotoilutiedostoja Kanadan jääpalvelusta. Leikatut tifit tuotettiin ja luokiteltiin uudelleen siten, että jokaisella rasterin solulla on joko yksi arvo, jos jääpitoisuus on alle 50% (hajoaminen), tai nolla, jos se ei ole (ts. Pitoisuus yli 50% tai maa) . Lisäsin sitten tiedostonimestä jäsennetyn päivämäärän Luo ja LaskeKentänhallinta -toiminnolla. Tavoitteena on luoda vuosittaiset kartat, joissa esitetään jään hajoamisen eteneminen käytettäväksi biologisissa analyyseissä.


Koska tämä analyysi on paikallinen--tulos missä tahansa solussa riippuu vain kyseisen solun arvopinosta - saatamme etsiä ensin inspiraatiota paikallisesta työkalupakista. On parasta, kun tällaisia ​​työkaluja voidaan käyttää ilman tietojen alustavaa muuntamista, koska näin vältetään mahdollisesti aikaa vievä silmukka kaikkien rastereiden yli.

Ehkä yleisin tässä muodossa oleva ratkaisu käyttää korkeinta sijaintia. Tämä laskelma koskee rasterisekvenssiä, jonka tulisi olla täysin linjassa ja rekisteröity (joten arvojen uudelleenotannasta ei ole komplikaatiota). Se palauttaa indeksin 1, 2, 3,… jne ensimmäinen rasteri, jolla esiintyy sekvenssin maksimiarvo. Joten kun sekvenssi on puhtaasti binaarinen ja sellainen on, sen ensimmäisen esiintymisen sijainti palautetaan - ja juuri sitä tarvitaan.

Kun aikayksikköä kohden (kuten vuosi) on yksi rasteri, ilman aukkoja, aloitusvuotta edeltävän vuoden lisääminen muuntaa tämän tuloksen rasteripäivämääräksi. Muussa tapauksessa luokittele tulos uudelleen vastaavien vuosien saamiseksi.

Kaksi varoitusta ovat kunnossa.

Ensinnäkin, jos jossakin syöttörasterista on NoData solussa, kyseisen solun lähtö on NoData. Jos tämä on ongelma, rasterit on esikäsiteltävä korvaamaan NoData-arvot sopivilla koodeilla. Jatkuva negatiivinen arvo saattaa toimia hyvin. Käytä ehdollista operaattoria vaihtoon.

Toiseksi, jos kaikki solun arvot ovat nollia, niinKorkein sijaintipalauttaa ensimmäisen nollan indeksin, nimittäin 1. Se ei ole erotettavissa solun tuloksesta, jossa kaikki arvot ovat yhtä. Vaikka joitain ehdollisia jälkikäsittelyjä voidaan käyttää erottamaan nämä kaksi tilannetta, yksinkertainen ja tyylikäs tapa välttää tämä ongelma on luoda alusta alkaen nollaraster ja luetella se ensin laskennassa. Nyt palautetaan 1 kaikilla nollasoluilla ja 2 palautetaan kaikilla soluilla.