(PART) Geoprocessing Tools {-}

About this Section {-}

Generally speaking ESRI's approach to building ArcGIS is to create a tool for every situation you might encounter. This is a little different in R. Depending on the package, the idea is usually to provide a minimal set of functions with which the user can create their own tools. The creators of the package sf are very strict on this paradigm [^github-1]. As Roger Bivand once put it:

Users should learn to catch fish, not be given tidied fish.

[^github-1]: This and this github nicely illustrate this.

library(dplyr)
library(readr)
library(stringr)
library(data.tree)
library(networkD3)
library(yaml)

tools <- read_csv("auxiliary/ESRI_Tool_names.csv") %>%
  mutate(toolb = str_remove(toolb," toolbox")) %>%
  distinct(toolb, toolset, Tool)

toolsets <-  read_csv("auxiliary/ESRI_Toolsets.csv") %>%
  distinct(toolb, tool)
toolboxes <- read_csv("auxiliary/ESRI_Toolboxes.csv") %>%
  distinct(name)

We haven't found a complete overview of all the "Geprocessing Tools" in ArcGIS, but we've scraped ESRI'S website and counted r nrow(toolboxes) Toolboxes, containing r nrow(toolsets) Toolsets and r nrow(tools) individual tools[^geoprocessing_tools-3]. We cannot possibly cover the R way for every tool in this list. It probably wouldn't make much sense either: Once you learn the fundamental building blocks, you will be able to replicate most, if not all tools from this list. The aim of this book is to cover these fundamental building block. See figure \@ref(fig:toolsviz) for an interactive visualisation of all tools in ArcGIS.

tools %>%
  filter(!is.na(Tool)) %>%
  transmute(tool = paste("GeprocessingTools",str_remove(toolb," toolbox"),toolset,Tool, sep = "/")) %>%
  as.Node(pathName = "tool") %>%
  ToListExplicit(unname = TRUE) %>%
  diagonalNetwork() #%>%
#   saveNetwork("all_tool.html")
# # 
# webshot::webshot("all_tool.html", "images/all_tools.png")
# 
# knitr::include_graphics("all_tools.png")

[^geoprocessing_tools-3]: Note: these numbers are an approximation only, we may have made errors when scraping

tools_toodo_yaml <- read_yaml("auxiliary/tools_todo.yaml")
tools_toodo2 <- imap(tools_toodo_yaml, function(toolbox,toolboxname){imap(toolbox, function(toolset,toolsetname){imap(toolset, function(tool,toolname){list(name = toolname)})})})

FromListSimple(tools_toodo2,nodeName =  "GeoprocessingTools") %>%
    ToListExplicit(unname = TRUE) %>%
    diagonalNetwork()


arc2r/book documentation built on March 5, 2021, 2:10 p.m.