Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. require(raster)
  2. require(foreign)
  3. require(labgeo)
  4. require(dplyr)
  5. require(tidyverse)
  6. require(RQGIS)
  7.  
  8. #set QGIS directory
  9. qgis_env <-set_env(root ='C:/Program Files/QGIS 2.18')
  10. set_env()
  11. open_app()
  12.  
  13. -Function and parametrs.
  14.  
  15. #entrada = folder with all rasters in .tif
  16. #saida = folder witch zonal polygon will be dropped
  17. #bacia = polygons
  18.  
  19. zonalTop = function(entrada, saida, bacia){
  20.  
  21. nomesRasters = list.files(entrada, pattern="*.tif$")
  22. lerRasterCompl = list.files(entrada, pattern="*.tif$", full.names = TRUE)
  23. rasters = lapply(lerRasterCompl, raster)
  24.  
  25.  
  26. for (i in 1:length(rasters)){
  27.  
  28. run_qgis(alg = "qgis:zonalstatistics",
  29. INPUT_RASTER = rasters[[i]],
  30. RASTER_BAND = 1,
  31. INPUT_VECTOR = bacia,
  32. GLOBAL_EXTENT = 1,
  33. OUTPUT_LAYER = paste(saida, tools::file_path_sans_ext(nomesRasters[[i]]),".shp", sep = ""))
  34. }
  35.  
  36. nomesDbf = list.files(saida, pattern="*.dbf$")
  37. lerDbfCompl = list.files(saida, pattern="*.dbf$", full.names = TRUE)
  38. Dbfs = lapply(lerDbfCompl, read.dbf)
  39.  
  40. for (i in 1:length(Dbfs)){
  41.  
  42. names(Dbfs[[i]]) = paste(tools::file_path_sans_ext(nomesDbf[i]), names(Dbfs[[i]]), sep="_")
  43.  
  44. }
  45.  
  46.  
  47. Dbfs = clean_names(do.call("cbind", Dbfs))
  48.  
  49. drop.cols <- grep("gridcode", colnames(Dbfs))
  50.  
  51. Dbfs = Dbfs[,-drop.cols]
  52.  
  53. Dbfs$gridcode = bacia@data$gridcode
  54.  
  55. Dbfs = dplyr::select(Dbfs, gridcode, everything())
  56.  
  57. return(Dbfs)
  58.  
  59. }
  60.  
  61.  
  62. - Runnin Function Example
  63.  
  64. anch10k = zonalTop("E:/artigo_declividade/morfomometriatif/anchi/",
  65. "E:/artigo_declividade/morfomometriatif/anchi/shapes10k",
  66. bacia)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement