Lisää

Maaperän koostumuksen laskentaalgoritmi

Maaperän koostumuksen laskentaalgoritmi


Minulla on prosenttiosuus hiekan/lietteen/saven arvoista 30 näytteenottopistettä ruudukossa. Käytin näitä arvoja luodakseni kolme interpoloitua IDW -rasteria. Haluan jotenkin (mielestäni rasterilaskimessa) tehdä koodin if/sitten -lausekkeiden avulla ottamaan arvot jokaisesta IDW: stä ja tuottamaan tekstuurin.

Esimerkki: jos rasterin "sand_IDW" arvo> 50 ja <70 ja rasterin "save_IDW" arvo> 20 ja <40, niin "Texture" = hiekkainen savi.


Grass 7: ssä on lisäosa nimeltä r.soils.teksture, joka laskee maaperän rakenteen %savesta ja %hiekkakerroksesta.

Se ei kuitenkaan toiminut tietokoneellani (vielä).


En tiedä miksi tämä törmäsi, mutta se sai minut ajattelemaan niin.

Jos aiot luokitella Arciin, tarvitset todennäköisesti (vähintään) hakutaulukon, jossa on sarakkeet savi | liete | hiekka | rakenne. Jokaisella rivillä on oltava kaikki mahdolliset yhdistelmät kolmesta positiivisesta kokonaisluvusta, jotka lisäävät 100%, ja sitten kyseisen yhdistelmän luokka, joka on määritetty viitaten olemassa olevaan tekstuurikolmioon. Sitten sinun on pyöristettävä kaikki rasterisi kokonaislukuiksi, ennen kuin käytät hakutaulukkoa rasterilaskimessa. Suurempi tarkkuus vaatisi paljon pidemmän taulukon, ei sitä, että vaivautuisit menemään kahden desimaalin ohi. Se on edelleen rajallinen, tylsä ​​voima.

Minulla on työnkulku nopeaan ja likaiseen tekstuurikarttaan, joka käyttää blogissani R -kirjainta, jos olet valmis poistumaan ArcGISista. Se perustuu pakettiin, joka on kirjoitettu juuri tätä tarkoitusta varten, ja sen perusta on paljon kehittyneempi kuin hakutaulukko (hullu rekvisiitta tekijälle Julien Moeysille).

Syöttöjulisteiden tulee olla oikein projisoituja ja muodossa, jota GDAL pystyy käsittelemään.

Lyhyt versio:

kirjasto (sp) kirjasto (rgdal) kirjasto (raster) kirjasto (maaperärakenne) savi_src <- 'polku//savi/raster' silt_src <- 'polku/sinne/raster' sand_src <- 'polku/kohteeseen/hiekka/ rasterin tulot <- c (savi_src, silt_src, hiekka_src) # lukea rastereista, pinoa ja mainostaa SpatialPixelsDataFrame SSC <- pino () for (i in 1: pituus (tulot)) {rn <- tulot [i] r < - rasteri (rn) SSC <- addLayer (SSC, r)} SSCP <- kuten (SSC, 'SpatialPixelsDataFrame')

SpatialPixelsDataFrame on siisti, koska sen avulla voit ripustaa määriteluettelon jokaisesta pikselistä ja käsitellä näitä luetteloita taulukkona. Kaikki pysyy järjestyksessä ja järjestyksessä prosessin aikana. Huonona puolena on, että kaikki on muistissa, joten kokorajoituksia on.

# tee siivousnimiä ([email protected]) <- c ('CLAY', 'SILT', 'SAND') [email protected] <- round ([email protected], 2) [email protected] $ raw_totals <- rowSums (SSCP @data [, 1: 3]) # tämä normalisoi kolme tietojoukkoa, jotta ne pysyvät suhteellisina, mutta lisäävät 100%: n: SSCP_norm <- TT.normalise.sum (tri.data = [email protected], residuals = T)

ehdottomasti tarkista jäännökset. Jos huomaat, että liian suuri osa aineistostasi on 95–105%: n ulkopuolella, sinulla on ongelma kriged -rastereidesi kanssa - mitä suurempi vaihtelu, sitä suurempi ongelma. Jos ne näyttävät hyviltä:

# liitä normalisoidut tiedot alkuperäiseen joukkoon- sen hyvä käytäntö pitää molemmat sarakenimet (SSCP_norm) [1: 3] <- paste0 (colnames (SSCP_norm) [1: 3], "_n") [email protected] <- cbind ( [email protected], round (SSCP_norm, 2)) rm (SSCP_norm) # the following tuottaa uuden sarakkeen, jossa on kunkin pikselin luokitus (melko paljon!) tietojoukko (luokan kokorajoituksilla on väliä!), siellä on joukko ennalta määritettyjä [email protected] <- cbind ([email protected], "TEXCLASS" = TT.points.in.classes (tri.data = [email protected] [, c (' CLAY_n ',' SILT_n ',' SAND_n ')], css.names = c (' CLAY_n ',' SILT_n ',' SAND_n '), class.sys = "AU2.TT", PiC.type = "t", romahtaa = ','))

Tulos saattaa vaatia jonkin verran siistimistä käsittelemään tietoja, jotka putosivat suoraan> 1 tekstuuriluokan reunaan, mutta sen jälkeen se on melko helppo muuntaa numeeriseksi ja viedä lopullinen luokiteltu rasteri.


Ole hyvä ja kokeile r.soils.texturment ruohoa. GRASS 7.0: n sisällä voit asentaa r.soils.texture tällä komentorivillä: g.extension extension = r.soils.texture operation = add

voit suorittaa lisäosan r.soils.texture saadaksesi tekstuurirasteritiedoston tällä komentorivillä: r.soils.texture sand = name save = nimi schema = name output = name

Voit noutaa esimerkkitietoja tai skeemarakenne tiedostoja tältä sivustolta: http://maplab.alwaysdata.net/soilstools.html

Jos sinulla on ongelmia, pyydä minulta apua.