Jusqu'à présent, j'utilisé la déclaration suivante dans la calculatrice raster d'ArcGIS:commande conditionnelle du transfert Raster Calculator à R
Con(("Land_use.rst" == -20), "Export.rst")
Ce calcule une nouvelle Raster qui ne contient que les données d'exportation où Land_use est égal à -20. C'est exactement ce que je veux. Mais je veux automatiser ceci dans R
, comme je dois le faire beaucoup de fois.
Jusqu'à présent, j'obtenu quelque chose comme ceci:
for (catch_dir in Dir_List) {
r1 <- raster(paste0(catch_dir, '/Export.rst'))
r2 <- raster(paste0(catch_dir,'/LAND_use.rst'))
### statement that output export_streams.rst contains the data of export.rst where LAND_use.rst equals -20.
x <- overlay(r2, r1, fun=function(x,y){ y[x!=-20] <- 0; y})
writeRaster(x, filename = paste0(catch_dir, "/export_streams.rst"), format="IDRISI", NAflag = 0, datatype = "FLT4S",
overwrite=TRUE)
}
Ce code fait ce qui suit: Il produit une trame qui contient les valeurs de r1 où r2 = -20. Donc c'est bien, mais il y a aussi des restes à la frontière du raster qui ne sont pas égaux à -20 en r2. L'étendue des deux rasters est la même. Donc, la superposition ne fonctionne probablement pas pour ma tâche. D'autres idées que de superposer? Peut-être une commande if(r2 == -20){ }
?