Več

Zakaj reža @ data @ values ​​za RasterLayer vsebuje samo logične (0) in ne dejanskih vrednosti?

Zakaj reža @ data @ values ​​za RasterLayer vsebuje samo logične (0) in ne dejanskih vrednosti?


Poskušam priti do dna, zakaj, ko berem v rasterju NDVI, reža @ data @ values ​​ne vsebuje dejanskih vrednosti, dokler jih ne nastavim ročno. Na primer:

NDVI <- raster ("./ime_datoteke.tif", crs = "+ proj = longlat + datum = WGS84") NDVI @ data @ values ​​## vrne: logično (0)

To se ni zgodilo pri drugih rastrih, ki sem jih naložil po isti metodi, zato sem zmeden. Želim si, da bi bil bolj natančen, vendar se ne spomnim, da bi prej počel kaj drugače. Dovolj enostavno je ročno pridobiti vrednosti z uporabo:

NDVI1 @ data @ values ​​<- getValues ​​(NDVI19east)

Ampak še vedno je težko narediti to za vsako datoteko. Torej, dvodelno vprašanje:

  1. Zakaj se je to sploh zgodilo? Razumem, da bi to lahko imelo kakšno povezavo s tem, kako se hrani rastrska datoteka (tj. Ali je v pomnilniku ali ne), vendar pravzaprav ne morem razumeti, kako to spremeni metode, ki bi jih moral uporabiti za dostop do podatkov ...

  2. Ali obstaja način za avtomatizacijo tega postopka (morda z uporabo metode, podobne lapply) za branje datotek kot RasterLayers in dostop do vrednosti teh datotek? Moj trenutni projekt vključuje branje 6-10 datotek hkrati za NDVI, padavine in druge okoljske spremenljivke, da jih združim in izvedem nekaj tehtanih prekrivanj. Koristno bi bilo avtomatizirati postopek uvoza podatkov.


Na to vprašanje so odgovorili v komentarjih (mdsummer). To je le način, kako te ideje spraviti v red in to vprašanje spraviti iz neodgovorjene čakalne vrste.

Tu lahko prenesete NVDI jpg po vsem svetu iz nasa.

Tukaj imate kodo in rastrsko datoteko za preizkus.

Kot je prikazano v vprašanju, nalaganje rastra v funkcijo R z rastrom () ne naloži dejanskih vrednosti v pomnilnik.

Kot vidite, vrednosti NVDI @ data @ nima vrednosti, medtem ko je lahko grafikon upodobljen, ki prikazuje te "skrite" vrednosti. Vidite lahko, da če datoteko naložite v QGIS, se vrednosti dejansko preberejo.

Torej, morate uporabiti funkcijo readAll () iz rastrskega paketa (kot je v komentarjih dejal mdsummer). Tu je koda:

knjižnica (raster) NDVI <- raster ("./ RenderData.tif", crs = "+ proj = longlat + datum = WGS84") NDVI @ data @ values ​​str (NDVI) plot (NDVI) NDVI.all <- readAll ( NDVI) glava (NDVI.all @ data @ values)

S to funkcijo lahko zdaj dostopate do rastrskih vrednosti v datoteki.


Poglej si posnetek: Osnovne logične funkcije