From 7f15104bff1bce8a5619af8eb7365fe4cf2b723a Mon Sep 17 00:00:00 2001 From: be-marc Date: Sun, 10 Mar 2019 16:26:09 +0100 Subject: [PATCH 01/12] First draft --- _rmd/2018-02-23-RPyGeo-1_0_0.Rmd | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 _rmd/2018-02-23-RPyGeo-1_0_0.Rmd diff --git a/_rmd/2018-02-23-RPyGeo-1_0_0.Rmd b/_rmd/2018-02-23-RPyGeo-1_0_0.Rmd new file mode 100644 index 0000000..e6cd88f --- /dev/null +++ b/_rmd/2018-02-23-RPyGeo-1_0_0.Rmd @@ -0,0 +1,23 @@ +--- +layout: post +title: "RPyGeo 1.0.0" +date: "`r format(Sys.time(), '%d %B, %Y')`" +comments: true +author: Marc Becker +categories: r +--- + + + +[DOWNLOADHERE] + +RPyGeo 1.0.0 has been released on CRAN. The RPyGeo package establishes an interface to the geoprocessing tools of ArcGIS from within R. ArGIS is a geographic information system developed by Esri. + +The new RPyGeo package accesses the ArcPy Python side-package via the [reticulate](https://cran.r-project.org/web/packages/reticulate/index.html) package. ArcGIS provides almost all of it's geoprocessing tools via ArcPy. With RPyGeo these functions are available in R. Additonally RPyGeo provides utilitiy functions to create a seamless workflow between ArcGIS and R. + +In 2015 Esri released the R-ArcGIS Bridge, a software that also connects ArcGIS and R. Essentially, the R-ArcGIS Bridge offers read, write and conversion functions to transfer data from ArcGIS to R and vice versa. The idea is to use the large number of R packages to solve spatial problems, which cannot be solved with ArcGIS alone. R scripts can be run as geospatial scripts with an interactive user inferface from within ArcGIS. However, no functionality is added for the R user. RPyGeo is able to run the geoprocessing tools of ArcGIS directly from the R session. +The update added many new features to the package. It is now possible to chain ArcPy functions togheter with the pipe operator. Help files for all ArcGIS functions can be viewed directly inside RStudio. Moreover, map algebra expressions can be used to modify raster objects. + +For a detailed instruction on how to use RPyGeo we would like to refer to the [vignette](https://cran.r-project.org/web/packages/RPyGeo/RPyGeo.pdf). It includes a tutorial with all essential RPyGeo functions. + +The devolepment of RPyGeo is now integrated into the r-spatial.org community. If you find any bugs please report them at our new development repository [r-spatial/RPyGeo](https://github.com/r-spatial/RPyGeo) or help us fix them via a pull request. \ No newline at end of file From 59bbfed71b8117e6b73e0b4acd50aa0872cde73c Mon Sep 17 00:00:00 2001 From: pat-s Date: Sun, 10 Mar 2019 16:53:21 +0100 Subject: [PATCH 02/12] rename --- _rmd/{2018-02-23-RPyGeo-1_0_0.Rmd => 2019-03-10-RPyGeo-1_0_0.Rmd} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename _rmd/{2018-02-23-RPyGeo-1_0_0.Rmd => 2019-03-10-RPyGeo-1_0_0.Rmd} (100%) diff --git a/_rmd/2018-02-23-RPyGeo-1_0_0.Rmd b/_rmd/2019-03-10-RPyGeo-1_0_0.Rmd similarity index 100% rename from _rmd/2018-02-23-RPyGeo-1_0_0.Rmd rename to _rmd/2019-03-10-RPyGeo-1_0_0.Rmd From 06f4a2c87ba7ca9786cf048ff53ec523e50b512c Mon Sep 17 00:00:00 2001 From: be-marc Date: Thu, 14 Mar 2019 13:42:13 +0100 Subject: [PATCH 03/12] Second draft --- _rmd/2019-03-11-RPyGeo-1_0_0.Rmd | 76 +++++++++++++++++++++++++++++++ images/rpygeo1.png | Bin 0 -> 36085 bytes 2 files changed, 76 insertions(+) create mode 100644 _rmd/2019-03-11-RPyGeo-1_0_0.Rmd create mode 100644 images/rpygeo1.png diff --git a/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd b/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd new file mode 100644 index 0000000..0b87e60 --- /dev/null +++ b/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd @@ -0,0 +1,76 @@ +--- +layout: post +title: "RPyGeo 1.0.0" +date: "`r format(Sys.time(), '%d %B, %Y')`" +comments: true +author: Marc Becker +categories: r +--- + + + +[DOWNLOADHERE] + +RPyGeo 1.0.0 has been released on 14.11.2018 on CRAN. The RPyGeo package establishes an interface to the geoprocessing tools of ArcGIS from within R. [ArcGIS](https://www.esri.com/en-us/arcgis/about-arcgis/overview) is the leading commercial geographic information system platform, which is developed by Esri since 1999. + +ArcGIS offers access to its geoprocessing tools via a Python site-package called ArcPy. The new version of RPyGeo reads the site-package via the [reticulate](https://cran.r-project.org/web/packages/reticulate/index.html) package into the R session. + +If you want to run the following examples you need a working ArcMap or ArcGIS Pro installation. In addition, install and attach the following packages and execute the other commands to get some data. + +```{r, eval=FALSE} +library("RPyGeo") +library("sf") +library("raster") +library("magrittr") + +data(dem, package = "RQGIS") +writeRaster(dem, file.path(tempdir(), "dem.tif"), format = "GTiff") +``` + +After a quick initialization, which usually finds the ArcGIS installation automatically, all geoprocessing tools of ArcGIS are available in R. + +```{r, eval=FALSE} +arcpy <- rpygeo_build_env(workspace = tempdir(), + overwrite = TRUE) +``` + +The ArcPy functions can be accessed via the `$` operator. All functions are listed after typing the `$` operator in RStudio. + +```{r, eval=FALSE} +arcpy$Slope_3d(in_raster = "dem.tif", out_raster = "slope.tif") +``` + +RPyGeo can load spatial objects stored in Esri's proprietary geodatabases as well as files from the hard disk with the `rpygeo_load()` function. + +```{r, eval=FALSE} +slope <- rpygeo_load("slope.tif") + +plot(slope) +``` + + +*Figure 1: Slope computed with Slope_3d() and plotted in R.* + +Both functions can be chained using the pipe operator. It is also possible to use the pipe operator to chain multiple geoprocessing tools. + +```{r, eval=FALSE} +arcpy$Slope_3d(in_raster = "dem.tif", out_raster = "slope.tif") %>% + rpygeo_load() +``` + +Map algebra expressions can be used in RPyGeo with special operators to modify ArcPy raster objects. The resulting temporary files can be saved to the hard disk with the helper function `rpygeo_save()`. + +```{r, eval=FALSE} +ras <- arcpy$sa$Raster("dem.tif") + +ras %rpygeo_+% 2 %>% + rpygeo_save("dem_2.tif") +``` + +With the new version many other utility functions are added. Help files for all AcrPy functions can be viewed directly inside Rstudio with the `rpygeo_help()` function. `rpygeo_search()` returns all available geoprocessing functions that contain a specified search term. The new functions try to provide a seamless workflow between ArcGIS and R. + +In 2015 Esri released the [R-ArcGIS Bridge](https://r-arcgis.github.io), a software that also connects ArcGIS and R. Essentially, the R-ArcGIS Bridge offers read, write and conversion functions to transfer data from ArcGIS to R and vice versa. The idea is to use the large number of R packages to solve spatial problems, which cannot be solved with ArcGIS alone. R scripts are integrated into geoprocessing scripts, which can be run as geoprocessing tools from within ArcGIS. The user can add a user interface to the geoprocessing tool or use it as a part of a ModelBuilder workflow. However, no functionality is added for the R user. The R-ArcGIS Bridge cannot run geoprocessing tools from within R, whereas RPyGeo offers almost all geoprocessing tools of ArcGIS directly from the R session. The R-ArcGIS Bridge is developed for users, who want to process their whole workflow from within ArcGIS, whereas RPyGeo is developed for R users who wants to integrate a geoprocessing tool into their R workflow. + +For a detailed instruction on how to use RPyGeo we would like to refer to the [vignette](https://cran.r-project.org/web/packages/RPyGeo/RPyGeo.pdf). It includes a tutorial with all essential RPyGeo functions and the necessary data to run the above examples. + +The source code of RpyGeo is now hosted on Github within the r-spatial organization. If you find any bugs please report them at our new development repository [r-spatial/RPyGeo](https://github.com/r-spatial/RPyGeo) or help us fix them via a pull request. diff --git a/images/rpygeo1.png b/images/rpygeo1.png new file mode 100644 index 0000000000000000000000000000000000000000..0f281b77c2a2f42ea0149ed276316c6944a93935 GIT binary patch literal 36085 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 u!Aj^DhG7_rDWMvMVHk=H35H=9hVp;4%>E0?AqG Date: Sat, 1 Jun 2019 13:25:41 +0200 Subject: [PATCH 04/12] Update _rmd/2019-03-11-RPyGeo-1_0_0.Rmd Co-Authored-By: Patrick Schratz --- _rmd/2019-03-11-RPyGeo-1_0_0.Rmd | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd b/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd index 0b87e60..906f75f 100644 --- a/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd +++ b/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd @@ -11,7 +11,9 @@ categories: r [DOWNLOADHERE] -RPyGeo 1.0.0 has been released on 14.11.2018 on CRAN. The RPyGeo package establishes an interface to the geoprocessing tools of ArcGIS from within R. [ArcGIS](https://www.esri.com/en-us/arcgis/about-arcgis/overview) is the leading commercial geographic information system platform, which is developed by Esri since 1999. +RPyGeo 1.0.0 has been released on 14.11.2018 on CRAN. +The _RPyGeo_ package establishes an interface to the geoprocessing tools of _ArcGIS_ from within R. +[ArcGIS](https://www.esri.com/en-us/arcgis/about-arcgis/overview) is one of the leading commercial GIS applications and is being developed by Esri since 1999. ArcGIS offers access to its geoprocessing tools via a Python site-package called ArcPy. The new version of RPyGeo reads the site-package via the [reticulate](https://cran.r-project.org/web/packages/reticulate/index.html) package into the R session. From 7e057b834c2749c9a88ad725ab8eab1d247c276c Mon Sep 17 00:00:00 2001 From: Marc Becker <33069354+be-marc@users.noreply.github.com> Date: Sat, 1 Jun 2019 13:26:02 +0200 Subject: [PATCH 05/12] Update _rmd/2019-03-11-RPyGeo-1_0_0.Rmd Co-Authored-By: Patrick Schratz --- _rmd/2019-03-11-RPyGeo-1_0_0.Rmd | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd b/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd index 906f75f..d0a491e 100644 --- a/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd +++ b/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd @@ -15,7 +15,8 @@ RPyGeo 1.0.0 has been released on 14.11.2018 on CRAN. The _RPyGeo_ package establishes an interface to the geoprocessing tools of _ArcGIS_ from within R. [ArcGIS](https://www.esri.com/en-us/arcgis/about-arcgis/overview) is one of the leading commercial GIS applications and is being developed by Esri since 1999. -ArcGIS offers access to its geoprocessing tools via a Python site-package called ArcPy. The new version of RPyGeo reads the site-package via the [reticulate](https://cran.r-project.org/web/packages/reticulate/index.html) package into the R session. +ArcGIS offers access to its geoprocessing tools via a Python site-package called _ArcPy_. +The new version of _RPyGeo_ reads the site-package via the [reticulate](https://cran.r-project.org/web/packages/reticulate/index.html) package into the R session. If you want to run the following examples you need a working ArcMap or ArcGIS Pro installation. In addition, install and attach the following packages and execute the other commands to get some data. From 4e95e7d9a00683a64fe5eb03331b64bfa9834a2e Mon Sep 17 00:00:00 2001 From: Marc Becker <33069354+be-marc@users.noreply.github.com> Date: Sat, 1 Jun 2019 13:30:04 +0200 Subject: [PATCH 06/12] Apply suggestions from code review Co-Authored-By: Patrick Schratz --- _rmd/2019-03-11-RPyGeo-1_0_0.Rmd | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd b/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd index d0a491e..bb1ae9d 100644 --- a/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd +++ b/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd @@ -18,7 +18,7 @@ The _RPyGeo_ package establishes an interface to the geoprocessing tools of _Arc ArcGIS offers access to its geoprocessing tools via a Python site-package called _ArcPy_. The new version of _RPyGeo_ reads the site-package via the [reticulate](https://cran.r-project.org/web/packages/reticulate/index.html) package into the R session. -If you want to run the following examples you need a working ArcMap or ArcGIS Pro installation. In addition, install and attach the following packages and execute the other commands to get some data. +If you want to run the following examples you need a working _ArcMap_ or _ArcGIS Pro_ installation. ```{r, eval=FALSE} library("RPyGeo") @@ -30,14 +30,15 @@ data(dem, package = "RQGIS") writeRaster(dem, file.path(tempdir(), "dem.tif"), format = "GTiff") ``` -After a quick initialization, which usually finds the ArcGIS installation automatically, all geoprocessing tools of ArcGIS are available in R. +After the environment has been set using `rpygeo_build_env()`, all geoprocessing tools of _ArcGIS_ are available in R. ```{r, eval=FALSE} arcpy <- rpygeo_build_env(workspace = tempdir(), overwrite = TRUE) ``` -The ArcPy functions can be accessed via the `$` operator. All functions are listed after typing the `$` operator in RStudio. +The ArcPy functions can be accessed via the `$` operator. +Autocompletion of all available functions is supported. ```{r, eval=FALSE} arcpy$Slope_3d(in_raster = "dem.tif", out_raster = "slope.tif") @@ -61,7 +62,8 @@ arcpy$Slope_3d(in_raster = "dem.tif", out_raster = "slope.tif") %>% rpygeo_load() ``` -Map algebra expressions can be used in RPyGeo with special operators to modify ArcPy raster objects. The resulting temporary files can be saved to the hard disk with the helper function `rpygeo_save()`. +Map algebra expressions can be used in _RPyGeo_ with special operators to modify _ArcPy_ raster objects. +The resulting temporary files can be saved to the hard disk using the function `rpygeo_save()`. ```{r, eval=FALSE} ras <- arcpy$sa$Raster("dem.tif") @@ -70,10 +72,21 @@ ras %rpygeo_+% 2 %>% rpygeo_save("dem_2.tif") ``` -With the new version many other utility functions are added. Help files for all AcrPy functions can be viewed directly inside Rstudio with the `rpygeo_help()` function. `rpygeo_search()` returns all available geoprocessing functions that contain a specified search term. The new functions try to provide a seamless workflow between ArcGIS and R. +With the new version many other utility functions are added. +Help files for all _ArcPy_ functions can be viewed directly inside R using `rpygeo_help()`. +`rpygeo_search()` returns all available geoprocessing functions that contain a specified search term. +The new functions try to provide a seamless workflow between _ArcGIS_ and R. -In 2015 Esri released the [R-ArcGIS Bridge](https://r-arcgis.github.io), a software that also connects ArcGIS and R. Essentially, the R-ArcGIS Bridge offers read, write and conversion functions to transfer data from ArcGIS to R and vice versa. The idea is to use the large number of R packages to solve spatial problems, which cannot be solved with ArcGIS alone. R scripts are integrated into geoprocessing scripts, which can be run as geoprocessing tools from within ArcGIS. The user can add a user interface to the geoprocessing tool or use it as a part of a ModelBuilder workflow. However, no functionality is added for the R user. The R-ArcGIS Bridge cannot run geoprocessing tools from within R, whereas RPyGeo offers almost all geoprocessing tools of ArcGIS directly from the R session. The R-ArcGIS Bridge is developed for users, who want to process their whole workflow from within ArcGIS, whereas RPyGeo is developed for R users who wants to integrate a geoprocessing tool into their R workflow. +In 2015 Esri released the [R-ArcGIS Bridge](https://r-arcgis.github.io), a software that also connects _ArcGIS_ and R. +Essentially, the _R-ArcGIS_ Bridge offers read, write and conversion functions to transfer data from _ArcGIS_ to R and vice versa. +The idea is to use the large number of R packages to solve spatial problems, which cannot be solved with _ArcGIS_ alone. +R scripts are integrated into geoprocessing scripts, which can be run as geoprocessing tools from within _ArcGIS_. +The user can add a user interface to the geoprocessing tool or use it as a part of a ModelBuilder workflow in _ArcGIS_. +However, no extra functionality is added for the R user. +The _R-ArcGIS_ Bridge cannot run geoprocessing tools from within R, whereas _RPyGeo_ offers almost all geoprocessing tools of _ArcGIS_ directly from the R session. +The _R-ArcGIS_ Bridge is developed for users, who want to process their whole workflow from within _ArcGIS_, whereas _RPyGeo_ is developed for R users who want to integrate a geoprocessing tool into their R workflow. -For a detailed instruction on how to use RPyGeo we would like to refer to the [vignette](https://cran.r-project.org/web/packages/RPyGeo/RPyGeo.pdf). It includes a tutorial with all essential RPyGeo functions and the necessary data to run the above examples. +For detailed instructions on how to use _RPyGeo_ we would like to refer to its [vignette](https://cran.r-project.org/web/packages/RPyGeo/RPyGeo.pdf). +It includes a tutorial with all essential _RPyGeo_ functions and the necessary data to run the above examples. -The source code of RpyGeo is now hosted on Github within the r-spatial organization. If you find any bugs please report them at our new development repository [r-spatial/RPyGeo](https://github.com/r-spatial/RPyGeo) or help us fix them via a pull request. +The source code of _RPyGeo_ is now hosted on [Github](https://github.com/r-spatial/RPyGeo) within the [r-spatial](https://github.com/r-spatial/) organization. From 03390091c830f4ccb482ed348d47a980bc112e8c Mon Sep 17 00:00:00 2001 From: be-marc Date: Mon, 3 Jun 2019 17:18:55 +0200 Subject: [PATCH 07/12] Change pipe operator paragraph --- _rmd/2019-03-11-RPyGeo-1_0_0.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd b/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd index bb1ae9d..0b72727 100644 --- a/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd +++ b/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd @@ -55,7 +55,7 @@ plot(slope) *Figure 1: Slope computed with Slope_3d() and plotted in R.* -Both functions can be chained using the pipe operator. It is also possible to use the pipe operator to chain multiple geoprocessing tools. +The pipe operator can be used to chain ArcGIS geoprocessing tools and _RPyGeo_ functions. ```{r, eval=FALSE} arcpy$Slope_3d(in_raster = "dem.tif", out_raster = "slope.tif") %>% From 2e140174848f16d1037556cd24a5290ba25a1336 Mon Sep 17 00:00:00 2001 From: be-marc Date: Mon, 3 Jun 2019 17:36:23 +0200 Subject: [PATCH 08/12] Update date and remove old post --- _rmd/2019-03-10-RPyGeo-1_0_0.Rmd | 23 ------------------- ...-1_0_0.Rmd => 2019-06-03-RPyGeo-1_0_0.Rmd} | 0 2 files changed, 23 deletions(-) delete mode 100644 _rmd/2019-03-10-RPyGeo-1_0_0.Rmd rename _rmd/{2019-03-11-RPyGeo-1_0_0.Rmd => 2019-06-03-RPyGeo-1_0_0.Rmd} (100%) diff --git a/_rmd/2019-03-10-RPyGeo-1_0_0.Rmd b/_rmd/2019-03-10-RPyGeo-1_0_0.Rmd deleted file mode 100644 index e6cd88f..0000000 --- a/_rmd/2019-03-10-RPyGeo-1_0_0.Rmd +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: post -title: "RPyGeo 1.0.0" -date: "`r format(Sys.time(), '%d %B, %Y')`" -comments: true -author: Marc Becker -categories: r ---- - - - -[DOWNLOADHERE] - -RPyGeo 1.0.0 has been released on CRAN. The RPyGeo package establishes an interface to the geoprocessing tools of ArcGIS from within R. ArGIS is a geographic information system developed by Esri. - -The new RPyGeo package accesses the ArcPy Python side-package via the [reticulate](https://cran.r-project.org/web/packages/reticulate/index.html) package. ArcGIS provides almost all of it's geoprocessing tools via ArcPy. With RPyGeo these functions are available in R. Additonally RPyGeo provides utilitiy functions to create a seamless workflow between ArcGIS and R. - -In 2015 Esri released the R-ArcGIS Bridge, a software that also connects ArcGIS and R. Essentially, the R-ArcGIS Bridge offers read, write and conversion functions to transfer data from ArcGIS to R and vice versa. The idea is to use the large number of R packages to solve spatial problems, which cannot be solved with ArcGIS alone. R scripts can be run as geospatial scripts with an interactive user inferface from within ArcGIS. However, no functionality is added for the R user. RPyGeo is able to run the geoprocessing tools of ArcGIS directly from the R session. -The update added many new features to the package. It is now possible to chain ArcPy functions togheter with the pipe operator. Help files for all ArcGIS functions can be viewed directly inside RStudio. Moreover, map algebra expressions can be used to modify raster objects. - -For a detailed instruction on how to use RPyGeo we would like to refer to the [vignette](https://cran.r-project.org/web/packages/RPyGeo/RPyGeo.pdf). It includes a tutorial with all essential RPyGeo functions. - -The devolepment of RPyGeo is now integrated into the r-spatial.org community. If you find any bugs please report them at our new development repository [r-spatial/RPyGeo](https://github.com/r-spatial/RPyGeo) or help us fix them via a pull request. \ No newline at end of file diff --git a/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd b/_rmd/2019-06-03-RPyGeo-1_0_0.Rmd similarity index 100% rename from _rmd/2019-03-11-RPyGeo-1_0_0.Rmd rename to _rmd/2019-06-03-RPyGeo-1_0_0.Rmd From fa852c5a532012c271c89ef9c3ae52fa26c10b00 Mon Sep 17 00:00:00 2001 From: be-marc Date: Thu, 20 Jun 2019 18:42:40 +0200 Subject: [PATCH 09/12] Add markdown file --- _posts/2019-03-11-RPyGeo-1_0_0.markdown | 103 ++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 _posts/2019-03-11-RPyGeo-1_0_0.markdown diff --git a/_posts/2019-03-11-RPyGeo-1_0_0.markdown b/_posts/2019-03-11-RPyGeo-1_0_0.markdown new file mode 100644 index 0000000..6c15f24 --- /dev/null +++ b/_posts/2019-03-11-RPyGeo-1_0_0.markdown @@ -0,0 +1,103 @@ +--- +author: Marc Becker +categories: r +comments: True +date: 11 March, 2019 +layout: post +title: RPyGeo 1.0.0 + +--- + +\[[view raw +Rmd](https://raw.githubusercontent.com//r-spatial/r-spatial.org/gh-pages/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd)\] + +RPyGeo 1.0.0 has been released on 14.11.2018 on CRAN. The RPyGeo package +establishes an interface to the geoprocessing tools of ArcGIS from +within R. +[ArcGIS](https://www.esri.com/en-us/arcgis/about-arcgis/overview) is the +leading commercial geographic information system platform, which is +developed by Esri since 1999. + +ArcGIS offers access to it’s geoprocessing tools via a Python +site-package called ArcPy. The new version of RPyGeo reads the +site-package via the +[reticulate](https://cran.r-project.org/web/packages/reticulate/index.html) +R package into the R session + +``` r +arcpy <- rpygeo_build_env(workspace = tempdir(), + overwrite = TRUE, + extensions = "Spatial") +``` + +After a quick initialization, which usually finds the ArcGIS +installation automatically, all geoprocessing tools of ArcGIS are +available in R. + +``` r +arcpy$Slope_3d(in_raster = "dem.tif", out_raster = "slope.tif") +``` + +The ArcPy functions can be accessed via the `$` operator. All functions +are listed after typing the `$` operator in RStudio. + +``` r +slope <- rpygeo_load("slope.tif") + +plot(slope) +``` + +RPyGeo can load spatial objects stored in Esri’s proprietary +geodatabases as well as files from the hard disk with the +`rpygeo_load()` function. + +![Slope computed with Slope\_3d() and plotted in R.](/images/rpygeo1.png) + +``` r +arcpy$Slope_3d(in_raster = "dem.tif", out_raster = "slope.tif") %>% + rpygeo_load() +``` + +Both functions can be chained using the pipe operator. It is also +possible to use the pipe operator to chain multiple geoprocessing tools +togheter. + +``` r +ras <- arcpy$sa$Raster("dem.tif") + +ras %rpygeo_+% 2 %>% + rpygeo_save("dem_2.tif") +``` + +Map algebra expression can be used in RPyGeo with special operators to +modify ArcPy raster objects. The resulting temporary files can be saved +to the hard disk with the helper funtion `rpygeo_save()`. + +With the new version many other utility functions are added. Help files +for all AcrPy functions can be viewed directly inside Rstudio with the +`rpygeo_help()` function. `rpygeo_search()` returns all available +geoprocessing functions that contain a specified search term. The new +functions try to provide a seamless workflow between ArcGIS and R. + +In 2015 Esri released the R-ArcGIS Bridge, a software that also connects +ArcGIS and R. Essentially, the R-ArcGIS Bridge offers read, write and +conversion functions to transfer data from ArcGIS to R and vice versa. +The idea is to use the large number of R packages to solve spatial +problems, which cannot be solved with ArcGIS alone. R scripts can be run +as geospatial scripts with an interactive user inferface from within +ArcGIS. However, no functionality is added for the R user. The R-ArcGIS +Bridge cannot run geoprocessing tools from within R, whereas RPyGeo +offers allmost all geoprocessing tools of ArcGIS directly from the R +session. + +For a detailed instruction on how to use RPyGeo we would like to refer +to the +[vignette](https://cran.r-project.org/web/packages/RPyGeo/RPyGeo.pdf). +It includes a tutorial with all essential RPyGeo functions and the +necessary data to run the above examples. + +The devolepment of RPyGeo is now integrated into the r-spatial.org +community. If you find any bugs please report them at our new +development repository +[r-spatial/RPyGeo](https://github.com/r-spatial/RPyGeo) or help us fix +them via a pull request. From 8dbe82d926fdb89127922bff062e443a6801f071 Mon Sep 17 00:00:00 2001 From: be-marc Date: Sat, 20 Jul 2019 20:41:34 +0200 Subject: [PATCH 10/12] Change URL --- _rmd/2019-06-03-RPyGeo-1_0_0.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_rmd/2019-06-03-RPyGeo-1_0_0.Rmd b/_rmd/2019-06-03-RPyGeo-1_0_0.Rmd index 0b72727..ce0b321 100644 --- a/_rmd/2019-06-03-RPyGeo-1_0_0.Rmd +++ b/_rmd/2019-06-03-RPyGeo-1_0_0.Rmd @@ -86,7 +86,7 @@ However, no extra functionality is added for the R user. The _R-ArcGIS_ Bridge cannot run geoprocessing tools from within R, whereas _RPyGeo_ offers almost all geoprocessing tools of _ArcGIS_ directly from the R session. The _R-ArcGIS_ Bridge is developed for users, who want to process their whole workflow from within _ArcGIS_, whereas _RPyGeo_ is developed for R users who want to integrate a geoprocessing tool into their R workflow. -For detailed instructions on how to use _RPyGeo_ we would like to refer to its [vignette](https://cran.r-project.org/web/packages/RPyGeo/RPyGeo.pdf). +For detailed instructions on how to use _RPyGeo_ we would like to refer to its [vignette](https://cran.r-project.org/web/packages/RPyGeo/vignettes/RPyGeo.html). It includes a tutorial with all essential _RPyGeo_ functions and the necessary data to run the above examples. The source code of _RPyGeo_ is now hosted on [Github](https://github.com/r-spatial/RPyGeo) within the [r-spatial](https://github.com/r-spatial/) organization. From 447ca257aaa08a5d41fac6afbd18df61a2ecf7c0 Mon Sep 17 00:00:00 2001 From: be-marc Date: Sat, 20 Jul 2019 20:42:57 +0200 Subject: [PATCH 11/12] Change date --- _rmd/{2019-06-03-RPyGeo-1_0_0.Rmd => 2019-20-06-RPyGeo-1_0_0.Rmd} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename _rmd/{2019-06-03-RPyGeo-1_0_0.Rmd => 2019-20-06-RPyGeo-1_0_0.Rmd} (100%) diff --git a/_rmd/2019-06-03-RPyGeo-1_0_0.Rmd b/_rmd/2019-20-06-RPyGeo-1_0_0.Rmd similarity index 100% rename from _rmd/2019-06-03-RPyGeo-1_0_0.Rmd rename to _rmd/2019-20-06-RPyGeo-1_0_0.Rmd From dc57df8310f407ac1f4c1cba7dee866bd36f0347 Mon Sep 17 00:00:00 2001 From: be-marc Date: Sat, 20 Jul 2019 20:48:07 +0200 Subject: [PATCH 12/12] Remove wrong post --- _posts/2019-03-11-RPyGeo-1_0_0.markdown | 103 ------------------------ 1 file changed, 103 deletions(-) delete mode 100644 _posts/2019-03-11-RPyGeo-1_0_0.markdown diff --git a/_posts/2019-03-11-RPyGeo-1_0_0.markdown b/_posts/2019-03-11-RPyGeo-1_0_0.markdown deleted file mode 100644 index 6c15f24..0000000 --- a/_posts/2019-03-11-RPyGeo-1_0_0.markdown +++ /dev/null @@ -1,103 +0,0 @@ ---- -author: Marc Becker -categories: r -comments: True -date: 11 March, 2019 -layout: post -title: RPyGeo 1.0.0 - ---- - -\[[view raw -Rmd](https://raw.githubusercontent.com//r-spatial/r-spatial.org/gh-pages/_rmd/2019-03-11-RPyGeo-1_0_0.Rmd)\] - -RPyGeo 1.0.0 has been released on 14.11.2018 on CRAN. The RPyGeo package -establishes an interface to the geoprocessing tools of ArcGIS from -within R. -[ArcGIS](https://www.esri.com/en-us/arcgis/about-arcgis/overview) is the -leading commercial geographic information system platform, which is -developed by Esri since 1999. - -ArcGIS offers access to it’s geoprocessing tools via a Python -site-package called ArcPy. The new version of RPyGeo reads the -site-package via the -[reticulate](https://cran.r-project.org/web/packages/reticulate/index.html) -R package into the R session - -``` r -arcpy <- rpygeo_build_env(workspace = tempdir(), - overwrite = TRUE, - extensions = "Spatial") -``` - -After a quick initialization, which usually finds the ArcGIS -installation automatically, all geoprocessing tools of ArcGIS are -available in R. - -``` r -arcpy$Slope_3d(in_raster = "dem.tif", out_raster = "slope.tif") -``` - -The ArcPy functions can be accessed via the `$` operator. All functions -are listed after typing the `$` operator in RStudio. - -``` r -slope <- rpygeo_load("slope.tif") - -plot(slope) -``` - -RPyGeo can load spatial objects stored in Esri’s proprietary -geodatabases as well as files from the hard disk with the -`rpygeo_load()` function. - -![Slope computed with Slope\_3d() and plotted in R.](/images/rpygeo1.png) - -``` r -arcpy$Slope_3d(in_raster = "dem.tif", out_raster = "slope.tif") %>% - rpygeo_load() -``` - -Both functions can be chained using the pipe operator. It is also -possible to use the pipe operator to chain multiple geoprocessing tools -togheter. - -``` r -ras <- arcpy$sa$Raster("dem.tif") - -ras %rpygeo_+% 2 %>% - rpygeo_save("dem_2.tif") -``` - -Map algebra expression can be used in RPyGeo with special operators to -modify ArcPy raster objects. The resulting temporary files can be saved -to the hard disk with the helper funtion `rpygeo_save()`. - -With the new version many other utility functions are added. Help files -for all AcrPy functions can be viewed directly inside Rstudio with the -`rpygeo_help()` function. `rpygeo_search()` returns all available -geoprocessing functions that contain a specified search term. The new -functions try to provide a seamless workflow between ArcGIS and R. - -In 2015 Esri released the R-ArcGIS Bridge, a software that also connects -ArcGIS and R. Essentially, the R-ArcGIS Bridge offers read, write and -conversion functions to transfer data from ArcGIS to R and vice versa. -The idea is to use the large number of R packages to solve spatial -problems, which cannot be solved with ArcGIS alone. R scripts can be run -as geospatial scripts with an interactive user inferface from within -ArcGIS. However, no functionality is added for the R user. The R-ArcGIS -Bridge cannot run geoprocessing tools from within R, whereas RPyGeo -offers allmost all geoprocessing tools of ArcGIS directly from the R -session. - -For a detailed instruction on how to use RPyGeo we would like to refer -to the -[vignette](https://cran.r-project.org/web/packages/RPyGeo/RPyGeo.pdf). -It includes a tutorial with all essential RPyGeo functions and the -necessary data to run the above examples. - -The devolepment of RPyGeo is now integrated into the r-spatial.org -community. If you find any bugs please report them at our new -development repository -[r-spatial/RPyGeo](https://github.com/r-spatial/RPyGeo) or help us fix -them via a pull request.