Daugiau

Dirvožemio tekstūros apskaičiavimo algoritmas

Dirvožemio tekstūros apskaičiavimo algoritmas


Turiu procentines smėlio/dumblo/molio reikšmes 30 mėginio taškų tinklelyje. Naudojau šias vertes, kad sukurtų 3 interpoliuotus IDW rasterius. Noriu kažkaip (manau, rastrinėje skaičiuoklėje) sukurti kodą, naudojant if/then teiginius, kad būtų paimtos vertės iš kiekvieno IDW ir išvestos tekstūros.

Pavyzdys: jei rastrų „sand_IDW“ vertė> 50 ir <70, o rastro „mol_IDW“ vertė> 20 ir <40, tada „tekstūra“ = smėlingas molis.


„Grass 7“ turi priedą, vadinamą r.soils.texture, kuris apskaičiuoja dirvožemio tekstūrą iš %molio ir %smėlio sluoksnio.

Tačiau tai neveikė mano kompiuteryje (dar).


Nežinau, kodėl tai atsitiko, bet privertė susimąstyti.

Jei ketinate klasifikuoti „Arc“, jums tikriausiai reikės (bent jau) paieškos lentelės su stulpeliais molis | dumblas | smėlis | tekstūra. Kiekvienoje eilutėje turėtų būti visi įmanomi trijų teigiamų sveikųjų skaičių deriniai, kurie padidėja iki 100%, ir tada to derinio klasė, apibrėžta atsižvelgiant į esamą tekstūros trikampį. Tada, prieš naudodami rastro skaičiuoklės peržiūros lentelę, turėsite suapvalinti visus savo rastrus iki sveiko skaičiaus. Didesniam tikslumui reikia daug ilgesnės lentelės, o ne tai, kad jums būtų sunku peržengti 2 ženklus po kablelio. Tai vis dar ribotas, bukas jėgos metodas.

Turiu darbo eigą greitam ir nešvariam tekstūros žemėlapiui, naudojant dienoraštį „R“, jei džiaugiatės atsitraukę nuo „ArcGIS“. Jis remiasi paketu, kuris buvo parašytas būtent šiam tikslui, kurio pagrindai yra daug sudėtingesni nei paieškos lentelė (beprotiški rekvizitai autoriui Julienui Moeysui).

Jūsų įvesties reketoriai turės būti teisingai suprojektuoti ir tokiu formatu, kurį gali tvarkyti GDAL.

Trumpa versija:

biblioteka (sp) biblioteka (rgdal) biblioteka (rastrinė) biblioteka (dirvožemio tekstūra) molis_src <- 'kelias/į/molis/rastrinis' silt_src <- 'kelias/į/dumblą/rastrą' sand_src <- 'kelias/į/smėlis/ rastrų įvestys <- c (molio_src, dumblo_src, smėlio_src) # skaityti rasteriuose, sukrauti ir reklamuoti į „SpatialPixelsDataFrame SSC“ <- kaminas (), skirtas (i in 1: ilgis (įėjimai)) {rn <- įėjimai [i] r < - rastrinis (rn) SSC <- addLayer (SSC, r)} SSCP <- kaip (SSC, 'SpatialPixelsDataFrame')

„SpatialPixelsDataFrame“ yra puikus, nes leidžia pakabinti atributų sąrašą nuo kiekvieno pikselio ir tuos sąrašus traktuoja kaip lentelę. Viskas lieka organizuota ir nuosekli, kai atliekate apdorojimą. Neigiama yra tai, kad visa tai yra atmintyje, todėl yra tam tikrų dydžio apribojimų.

# daryk kai kuriuos sutvarkymo pavadinimus ([email protected]) <- c ('CLAY', 'SILT', 'SAND') [email protected] <- round ([email protected], 2) [email protected] $ raw_totals <- rowSums (SSCP @data [, 1: 3]) # tai normalizuoja tris duomenų rinkinius, kad jie išliktų proporcingi, bet padidėtų iki 100%: SSCP_norm <- TT.normalise.sum (tri.data = [email protected], likučiai = T)

būtinai patikrinkite likučius. Jei pastebite, kad per daug jūsų duomenų rinkinio yra už 95–105% ribų, turite problemų su savo kriged rasters - kuo didesnis skirtumas, tuo didesnė problema. Jei jie atrodo gerai:

# pridėkite normalizuotus duomenis prie pradinio rinkinio- tai gera praktika išlaikyti abi kolonos pavadinimus (SSCP_norm) [1: 3] <- paste0 (colnames (SSCP_norm) [1: 3], "_n") [email protected] <- cbind ( [email protected], apvalūs (SSCP_norm, 2)) rm (SSCP_norm) # toliau pateikiamas naujas stulpelis su kiekvieno pikselio klasifikacija (beveik!) duomenų rinkinį (klasės dydžio apribojimai yra svarbūs!), yra daugybė iš anksto apibrėžtų [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", sutraukti = ','))

išvestį gali tekti šiek tiek sutvarkyti, kad būtų galima tvarkyti duomenis, kurie pateko ties> 1 tekstūros klasės kraštu, tačiau po to ją gana lengva konvertuoti į skaitmeninę ir eksportuoti galutinį įslaptintą rastrą.


Prašome išbandyti žolės tekstūrą. GRASS 7.0 viduje galite įdiegti r.soils.texture naudodami šią komandų eilutę: g.extension extension = r.soils.texture operation = add

galite paleisti priedą r.soils.texture, kad gautumėte tekstūros rastrinį failą naudodami šią komandų eilutę: r.soils.texture sand = name agy = name schema = name output = name

Galite gauti pavyzdinius duomenis arba schemos tekstūros failus iš šios svetainės: http://maplab.alwaysdata.net/soilstools.html

Jei kyla problemų, prašykite manęs pagalbos.