readVECT moves one GRASS 7 vector object file with attribute data through a temporary shapefile to a Spatial*DataFrame object of type determined by the GRASS 7 vector object; writeVECT moves a Spatial*DataFrame object through a temporary shapefile to a GRASS vector object file. vect2neigh returns neighbour pairs with shared boundary length as described by Markus Neteler, in https://stat.ethz.ch/pipermail/r-sig-geo/2005-October/000616.html. cygwin_clean_temp can be called to try to clean the GRASS mapset-specific temporary directory under cygwin.

readVECT(vname, layer, type=NULL, plugin=NULL,
 remove.duplicates = TRUE, ignore.stderr=NULL,
 with_prj=TRUE, with_c=FALSE, mapset=NULL,
 pointDropZ=FALSE, driver=NULL)
writeVECT(SDF, vname,  v.in.ogr_flags=NULL,
 ignore.stderr = NULL, driver=NULL,
 min_area=0.0001, snap=-1)
vInfo(vname, layer, ignore.stderr = NULL)
vColumns(vname, layer, ignore.stderr = NULL)
vDataCount(vname, layer, ignore.stderr = NULL)
vect2neigh(vname, ID=NULL, ignore.stderr = NULL, remove=TRUE, vname2=NULL,
 units="k")

Arguments

vname

A GRASS 7 vector file name

layer

a layer name (string); if missing set to default of “1”

type

override type detection when multiple types are non-zero, passed to v.out.ogr

plugin

default NULL if which case it will be set to the value set by set.pluginOption; NULL for auto-detection, may be set to FALSE to avoid or TRUE if the plugin is known to be available; if the plugin is used, no further arguments other than mapset are respected

remove.duplicates

In line and area vector objects, multiple geometrical features may be associated with a single cat number, leading to duplication of data rows; this argument attempts to combine the geometrical features so that they match a single data row

ignore.stderr

default the value set by set.ignore.stderrOption; NULL, taking the value set by set.ignore.stderrOption, can be set to TRUE to silence system() output to standard error; does not apply on Windows platforms

with_prj

default TRUE, write ESRI-style PRJ file for transfered data

with_c

default FALSE in GRASS 7; if FALSE, export features with category (labeled) only; if not default, all features are exported, including GRASS “islands” which are probably spurious exterior rings filling holes.

mapset

if plugin is TRUE, the mapset of the file to be imported may be changed from the current mapset by passing a character string

pointDropZ

default FALSE, if TRUE, discard third coordinates for point geometries; third coordinates are alway discarded for line and polygon geometries

driver

default NULL, which will lead to the choice of the first driver found in a ordered preferred vector, currently c("SQLite", "ESRI Shapefile"); a valid OGR writable driver name to define the file format for intermediate files, one of c("GML", "SQLite"), c("ESRI_Shapefile", "MapInfo_File") is preferred as these construct the names of the intermediate files adequately

min_area

default 0.0001); Minimum size of area to be imported (square meters) Smaller areas and islands are ignored. Should be greater than snap^2

snap

default -1); Snapping threshold for boundaries (map units). '-1' for no snap

SDF

A Spatial*DataFrame to be moved to GRASS 7 as a vector object, for SpatialPointsDataFrame, SpatialLinesDataFrame, and SpatialPolygonsDataFrame objects, or an equivalent "sf" object

v.in.ogr_flags

Character vector containing additional optional flags and/or options for v.in.ogr, particularly "o" and "overwrite"

ID

A valid DB column name for unique identifiers (optional)

remove

default TRUE, remove copied vectors created in vect2neigh

vname2

If on a previous run, remove was FALSE, the name of the temporary vector may be given to circumvent its generation

units

default “k”; see GRASS v.to.db manual page for alternatives

Value

readVECT imports a GRASS 7 vector object into an Spatial*DataFrame or equivalent "sf" object with the type determined by the type of the GRASS 7 vector object. readVECT and writeVECT attempt to preserve longer column/field names despite using the “ESRI Shapefile” format for transfer.

vect2neigh returns a data frame object with left and right neighbours and boundary lengths, also given class GRASSneigh and spatial.neighbour (as used in spdep). The incantation to retrieve the neighbours list is sn2listw(vect2neigh())$neighbours, and to retrieve the boundary lengths: sn2listw(vect2neigh())$weights. The GRASSneigh object has two other useful attributes: external is a vector giving the length of shared boundary between each polygon and the external area, and total giving each polygon's total boundary length.

Note

Please note that the OGR drivers used may not handle missing data gracefully. From rgdal release 0.5-27, missing values are taken as unset OGR field values. If the OGR driver encodes them in this way, NAs will be moved across the interface correctly from R to GRASS, and from GRASS to R using the OGR GRASS vector plugin. Work is continuing to correct v.out.ogr so that it emits unset fields, which affects users with no OGR GRASS plugin for the present. Thanks to Dylan Beaudette for helping with missing data handling.

Author

Roger S. Bivand, e-mail: Roger.Bivand@nhh.no.

Examples

use_sp() run <- FALSE if (nchar(Sys.getenv("GISRC")) > 0 && read.dcf(Sys.getenv("GISRC"))[1,"LOCATION_NAME"] == "nc_basic_spm_grass7") run <- TRUE GV <- Sys.getenv("GRASS_VERBOSE") Sys.setenv("GRASS_VERBOSE"=0) # require(rgdal) ois <- get.ignore.stderrOption() set.ignore.stderrOption(TRUE)
#> [1] FALSE
if (run) { execGRASS("v.info", map="schools", layer="1") }
#> +----------------------------------------------------------------------------+ #> | Name: schools | #> | Mapset: PERMANENT | #> | Location: nc_basic_spm_grass7 | #> | Database: /home/rsb/topics/grassdata | #> | Title: Wake County schools (points map) | #> | Map scale: 1:1 | #> | Name of creator: helena | #> | Organization: NC OneMap | #> | Source date: Tue Nov 7 19:34:09 2006 | #> | Timestamp (first layer): none | #> |----------------------------------------------------------------------------| #> | Map format: native | #> |----------------------------------------------------------------------------| #> | Type of map: vector (level: 2) | #> | | #> | Number of points: 167 Number of centroids: 0 | #> | Number of lines: 0 Number of boundaries: 0 | #> | Number of areas: 0 Number of islands: 0 | #> | | #> | Map is 3D: No | #> | Number of dblinks: 1 | #> | | #> | Projection: Lambert Conformal Conic | #> | | #> | N: 248159.84441077 S: 203559.01136227 | #> | E: 671714.55110786 W: 619215.13388253 | #> | | #> | Digitization threshold: 0 | #> | Comment: | #> | | #> +----------------------------------------------------------------------------+ #>
if (run) { print(vInfo("schools")) schs <- readVECT("schools", plugin=NULL) print(summary(schs)) }
#> nodes points lines boundaries centroids areas islands #> 0 167 0 0 0 0 0 #> primitives map3d #> 167 0
#> Warning: Discarded datum NAD83_High_Accuracy_Reference_Network in CRS definition: +proj=lcc +lat_0=33.75 +lon_0=-79 +lat_1=36.1666666666667 +lat_2=34.3333333333333 +x_0=609601.22 +y_0=0 +ellps=GRS80 +units=m +no_defs
#> Length Class Mode #> 167 SpatialPointsDataFrame S4
if (run) { schs1 <- readVECT("schools", plugin=FALSE) print(summary(schs1)) }
#> Warning: Discarded datum NAD83_High_Accuracy_Reference_Network in CRS definition: +proj=lcc +lat_0=33.75 +lon_0=-79 +lat_1=36.1666666666667 +lat_2=34.3333333333333 +x_0=609601.22 +y_0=0 +ellps=GRS80 +units=m +no_defs
#> Length Class Mode #> 167 SpatialPointsDataFrame S4
if (run) { writeVECT(schs, "newsch", v.in.ogr_flags=c("o", "overwrite")) execGRASS("v.info", map="newsch", layer="1") }
#> WARNING: Vector map <newsch> already exists and will be overwritten #> +----------------------------------------------------------------------------+ #> | Name: newsch | #> | Mapset: rsb | #> | Location: nc_basic_spm_grass7 | #> | Database: /home/rsb/topics/grassdata | #> | Title: | #> | Map scale: 1:1 | #> | Name of creator: rsb | #> | Organization: | #> | Source date: Wed Jan 6 13:39:56 2021 | #> | Timestamp (first layer): none | #> |----------------------------------------------------------------------------| #> | Map format: native | #> |----------------------------------------------------------------------------| #> | Type of map: vector (level: 2) | #> | | #> | Number of points: 167 Number of centroids: 0 | #> | Number of lines: 0 Number of boundaries: 0 | #> | Number of areas: 0 Number of islands: 0 | #> | | #> | Map is 3D: No | #> | Number of dblinks: 1 | #> | | #> | Projection: Lambert Conformal Conic | #> | | #> | N: 248159.84441077 S: 203559.01136227 | #> | E: 671714.55110786 W: 619215.13388253 | #> | | #> | Digitization threshold: 0 | #> | Comment: | #> | | #> +----------------------------------------------------------------------------+ #>
if (run) { nschs <- readVECT("newsch") print(summary(nschs)) }
#> Warning: Discarded datum NAD83_High_Accuracy_Reference_Network in CRS definition: +proj=lcc +lat_0=33.75 +lon_0=-79 +lat_1=36.1666666666667 +lat_2=34.3333333333333 +x_0=609601.22 +y_0=0 +ellps=GRS80 +units=m +no_defs
#> Length Class Mode #> 167 SpatialPointsDataFrame S4
if (run) { print(all.equal(names(nschs), as.character(vColumns("newsch")[,2]))) }
#> [1] TRUE
if (run) { names(nschs) <- paste("ABCDEFGHIJKLMNO", names(nschs), sep="") writeVECT(nschs, "newsch1", v.in.ogr_flags=c("o", "overwrite")) }
#> WARNING: Vector map <newsch1> already exists and will be overwritten
if (run) { print(all.equal(names(nschs), as.character(vColumns("newsch1")[-1,2]))) }
#> [1] TRUE
if (run) { nschs1 <- readVECT("newsch1") print(all.equal(names(nschs), names(nschs1)[-1])) }
#> Warning: Discarded datum NAD83_High_Accuracy_Reference_Network in CRS definition: +proj=lcc +lat_0=33.75 +lon_0=-79 +lat_1=36.1666666666667 +lat_2=34.3333333333333 +x_0=609601.22 +y_0=0 +ellps=GRS80 +units=m +no_defs
#> [1] TRUE
if (run) { print(summary(nschs1)) }
#> Length Class Mode #> 167 SpatialPointsDataFrame S4
if (run) { schs <- readVECT("schools", driver="ESRI Shapefile") names(schs) <- paste("ABCDEFGHIJKLMNO", names(schs), sep="") writeVECT(schs, "newsch", v.in.ogr_flags=c("o", "overwrite"), driver="ESRI Shapefile") print(all.equal(names(schs), as.character(vColumns("newsch")[-1,2]))) }
#> Warning: Discarded datum NAD83_High_Accuracy_Reference_Network in CRS definition: +proj=lcc +lat_0=33.75 +lon_0=-79 +lat_1=36.1666666666667 +lat_2=34.3333333333333 +x_0=609601.22 +y_0=0 +ellps=GRS80 +units=m +no_defs
#> Warning: Field names abbreviated for ESRI Shapefile driver
#> Warning: field names ABCDEFGHIJKLMNOc, ABCDEFGHIJKLMNOT, ABCDEFGHIJKLMNONAMES, ABCDEFGHIJKLMNONAMEL, ABCDEFGHIJKLMNOCO, ABCDEFGHIJKLMNOMOBILEU, ABCDEFGHIJKLMNOMOBILEC, ABCDEFGHIJKLMNOG, ABCDEFGHIJKLMNOL, ABCDEFGHIJKLMNOHI, ABCDEFGHIJKLMNOCAL, ABCDEFGHIJKLMNOHA, ABCDEFGHIJKLMNOI, ABCDEFGHIJKLMNOPH, ABCDEFGHIJKLMNOADDRN, ABCDEFGHIJKLMNOADDRP, ABCDEFGHIJKLMNOADDRR, ABCDEFGHIJKLMNOADDRT, ABCDEFGHIJKLMNOADDRS, ABCDEFGHIJKLMNOADDRC, ABCDEFGHIJKLMNOADDRZ, ABCDEFGHIJKLMNOSP, ABCDEFGHIJKLMNOST, ABCDEFGHIJKLMNONOD, ABCDEFGHIJKLMNOCAP, ABCDEFGHIJKLMNOE, ABCDEFGHIJKLMNOB, ABCDEFGHIJKLMNOPR, ABCDEFGHIJKLMNONOT changed by driver to: ABCDEFGHIJ, ABCDEFGH_1, ABCDEFGH_2, ABCDEFGH_3, ABCDEFGH_4, ABCDEFGH_5, ABCDEFGH_6, ABCDEFGH_7, ABCDEFGH_8, ABCDEFGH_9, ABCDEFGH10, ABCDEFGH11, ABCDEFGH12, ABCDEFGH13, ABCDEFGH14, ABCDEFGH15, ABCDEFGH16, ABCDEFGH17, ABCDEFGH18, ABCDEFGH19, ABCDEFGH20, ABCDEFGH21, ABCDEFGH22, ABCDEFGH23, ABCDEFGH24, ABCDEFGH25, ABCDEFGH26, ABCDEFGH27, ABCDEFGH28
#> WARNING: Vector map <newsch> already exists and will be overwritten #> [1] TRUE
if (run) { nschs <- readVECT("newsch", driver="ESRI Shapefile") all.equal(names(schs), names(nschs)[-1]) }
#> WARNING: No attribute table found -> using only category numbers as #> attributes
#> Warning: Discarded datum NAD83_High_Accuracy_Reference_Network in CRS definition: +proj=lcc +lat_0=33.75 +lon_0=-79 +lat_1=36.1666666666667 +lat_2=34.3333333333333 +x_0=609601.22 +y_0=0 +ellps=GRS80 +units=m +no_defs
#> [1] TRUE
if (run) { print(vInfo("roadsmajor")) }
#> nodes points lines boundaries centroids areas islands #> 266 0 355 0 0 0 0 #> primitives map3d #> 355 0
if (run) { roads <- readVECT("roadsmajor") print(summary(roads)) }
#> Warning: Discarded datum NAD83_High_Accuracy_Reference_Network in CRS definition: +proj=lcc +lat_0=33.75 +lon_0=-79 +lat_1=36.1666666666667 +lat_2=34.3333333333333 +x_0=609601.22 +y_0=0 +ellps=GRS80 +units=m +no_defs
#> Length Class Mode #> 355 SpatialLinesDataFrame S4
if (run) { cen_neig <- vect2neigh("census") str(cen_neig) }
#> WARNING: Values in column <cat> will be overwritten #> WARNING: Values in column <left> will be overwritten #> WARNING: Values in column <right> will be overwritten #> WARNING: Values in column <length> will be overwritten #> Classes ‘GRASSneigh’, ‘spatial.neighbour’ and 'data.frame': 12128 obs. of 3 variables: #> $ left : int 1 1 1 1 2 2 2 2 2 3 ... #> $ right : int 2 18 176 177 1 3 20 176 182 2 ... #> $ length: num 0.2814 0.1166 0.0849 0.2747 0.2814 ... #> - attr(*, "external")= num [1:2537] 0 0 0 0 0.239 ... #> - attr(*, "total")= Named num [1:2537] 0.7577 0.9377 0.753 0.0995 1.7322 ... #> ..- attr(*, "names")= chr [1:2537] "1" "2" "3" "4" ... #> - attr(*, "n")= int 2537
use_sf() if (run) { print(vInfo("schools")) schs <- readVECT("schools", plugin=NULL) print(summary(schs)) }
#> nodes points lines boundaries centroids areas islands #> 0 167 0 0 0 0 0 #> primitives map3d #> 167 0 #> cat TAG NAMESHORT NAMELONG #> Min. : 1.0 Length:167 Length:167 Length:167 #> 1st Qu.: 42.5 Class :character Class :character Class :character #> Median : 84.0 Mode :character Mode :character Mode :character #> Mean : 84.0 #> 3rd Qu.:125.5 #> Max. :167.0 #> #> CORECAPACI MOBILEUNIT MOBILECAPA GLEVEL #> Min. : 0.0 Min. : 0.000 Min. :0.00 Length:167 #> 1st Qu.: 498.5 1st Qu.: 0.000 1st Qu.:0.75 Class :character #> Median : 586.0 Median : 6.000 Median :1.50 Mode :character #> Mean : 763.7 Mean : 7.318 Mean :1.75 #> 3rd Qu.: 903.0 3rd Qu.:11.000 3rd Qu.:2.50 #> Max. :2294.0 Max. :49.000 Max. :4.00 #> NA's :23 NA's :19 NA's :163 #> LOGRADE HIGRADE CALENDAR HASBASE #> Length:167 Length:167 Length:167 Length:167 #> Class :character Class :character Class :character Class :character #> Mode :character Mode :character Mode :character Mode :character #> #> #> #> #> ISMAGNET PHONE ADDRNUMBER ADDRPREFIX #> Length:167 Length:167 Length:167 Length:167 #> Class :character Class :character Class :character Class :character #> Mode :character Mode :character Mode :character Mode :character #> #> #> #> #> ADDRROOT ADDRTYPE ADDRSUFFIX ADDRCITY #> Length:167 Length:167 Length:167 Length:167 #> Class :character Class :character Class :character Class :character #> Mode :character Mode :character Mode :character Mode :character #> #> #> #> #> ADDRZIPCOD SPED STATUS NODEID #> Length:167 Min. : NA Length:167 Length:167 #> Class :character 1st Qu.: NA Class :character Class :character #> Mode :character Median : NA Mode :character Mode :character #> Mean :NaN #> 3rd Qu.: NA #> Max. : NA #> NA's :167 #> CAPACITYTO ESL BOARDDIS2 PROJ_CAP #> Min. : 0.0 Length:167 Length:167 Min. : 0.0 #> 1st Qu.: 543.0 Class :character Class :character 1st Qu.: 497.0 #> Median : 761.0 Mode :character Mode :character Median : 722.0 #> Mean : 867.0 Mean : 793.1 #> 3rd Qu.: 992.5 3rd Qu.: 975.0 #> Max. :2294.0 Max. :2390.0 #> NA's :20 NA's :2 #> NOTES geom #> Length:167 POINT :167 #> Class :character epsg:3358 : 0 #> Mode :character +proj=lcc ...: 0 #> #> #> #>
if (run) { schs1 <- readVECT("schools", plugin=FALSE) print(summary(schs1)) }
#> cat TAG NAMESHORT NAMELONG #> Min. : 1.0 Length:167 Length:167 Length:167 #> 1st Qu.: 42.5 Class :character Class :character Class :character #> Median : 84.0 Mode :character Mode :character Mode :character #> Mean : 84.0 #> 3rd Qu.:125.5 #> Max. :167.0 #> #> CORECAPACI MOBILEUNIT MOBILECAPA GLEVEL #> Min. : 0.0 Min. : 0.000 Min. :0.00 Length:167 #> 1st Qu.: 498.5 1st Qu.: 0.000 1st Qu.:0.75 Class :character #> Median : 586.0 Median : 6.000 Median :1.50 Mode :character #> Mean : 763.7 Mean : 7.318 Mean :1.75 #> 3rd Qu.: 903.0 3rd Qu.:11.000 3rd Qu.:2.50 #> Max. :2294.0 Max. :49.000 Max. :4.00 #> NA's :23 NA's :19 NA's :163 #> LOGRADE HIGRADE CALENDAR HASBASE #> Length:167 Length:167 Length:167 Length:167 #> Class :character Class :character Class :character Class :character #> Mode :character Mode :character Mode :character Mode :character #> #> #> #> #> ISMAGNET PHONE ADDRNUMBER ADDRPREFIX #> Length:167 Length:167 Length:167 Length:167 #> Class :character Class :character Class :character Class :character #> Mode :character Mode :character Mode :character Mode :character #> #> #> #> #> ADDRROOT ADDRTYPE ADDRSUFFIX ADDRCITY #> Length:167 Length:167 Length:167 Length:167 #> Class :character Class :character Class :character Class :character #> Mode :character Mode :character Mode :character Mode :character #> #> #> #> #> ADDRZIPCOD SPED STATUS NODEID #> Length:167 Min. : NA Length:167 Length:167 #> Class :character 1st Qu.: NA Class :character Class :character #> Mode :character Median : NA Mode :character Mode :character #> Mean :NaN #> 3rd Qu.: NA #> Max. : NA #> NA's :167 #> CAPACITYTO ESL BOARDDIS2 PROJ_CAP #> Min. : 0.0 Length:167 Length:167 Min. : 0.0 #> 1st Qu.: 543.0 Class :character Class :character 1st Qu.: 497.0 #> Median : 761.0 Mode :character Mode :character Median : 722.0 #> Mean : 867.0 Mean : 793.1 #> 3rd Qu.: 992.5 3rd Qu.: 975.0 #> Max. :2294.0 Max. :2390.0 #> NA's :20 NA's :2 #> NOTES geom #> Length:167 POINT :167 #> Class :character epsg:3358 : 0 #> Mode :character +proj=lcc ...: 0 #> #> #> #>
if (run) { writeVECT(schs, "newsch", v.in.ogr_flags=c("o", "overwrite")) execGRASS("v.info", map="newsch", layer="1") }
#> WARNING: Vector map <newsch> already exists and will be overwritten #> +----------------------------------------------------------------------------+ #> | Name: newsch | #> | Mapset: rsb | #> | Location: nc_basic_spm_grass7 | #> | Database: /home/rsb/topics/grassdata | #> | Title: | #> | Map scale: 1:1 | #> | Name of creator: rsb | #> | Organization: | #> | Source date: Wed Jan 6 13:40:04 2021 | #> | Timestamp (first layer): none | #> |----------------------------------------------------------------------------| #> | Map format: native | #> |----------------------------------------------------------------------------| #> | Type of map: vector (level: 2) | #> | | #> | Number of points: 167 Number of centroids: 0 | #> | Number of lines: 0 Number of boundaries: 0 | #> | Number of areas: 0 Number of islands: 0 | #> | | #> | Map is 3D: No | #> | Number of dblinks: 1 | #> | | #> | Projection: Lambert Conformal Conic | #> | | #> | N: 248159.84441077 S: 203559.01136227 | #> | E: 671714.55110786 W: 619215.13388253 | #> | | #> | Digitization threshold: 0 | #> | Comment: | #> | | #> +----------------------------------------------------------------------------+ #>
if (run) { nschs <- readVECT("newsch") print(summary(nschs)) }
#> cat cat_ TAG NAMESHORT #> Min. : 1.0 Min. : 1.0 Length:167 Length:167 #> 1st Qu.: 42.5 1st Qu.: 42.5 Class :character Class :character #> Median : 84.0 Median : 84.0 Mode :character Mode :character #> Mean : 84.0 Mean : 84.0 #> 3rd Qu.:125.5 3rd Qu.:125.5 #> Max. :167.0 Max. :167.0 #> #> NAMELONG CORECAPACI MOBILEUNIT MOBILECAPA #> Length:167 Min. : 0.0 Min. : 0.000 Min. :0.00 #> Class :character 1st Qu.: 498.5 1st Qu.: 0.000 1st Qu.:0.75 #> Mode :character Median : 586.0 Median : 6.000 Median :1.50 #> Mean : 763.7 Mean : 7.318 Mean :1.75 #> 3rd Qu.: 903.0 3rd Qu.:11.000 3rd Qu.:2.50 #> Max. :2294.0 Max. :49.000 Max. :4.00 #> NA's :23 NA's :19 NA's :163 #> GLEVEL LOGRADE HIGRADE CALENDAR #> Length:167 Length:167 Length:167 Length:167 #> Class :character Class :character Class :character Class :character #> Mode :character Mode :character Mode :character Mode :character #> #> #> #> #> HASBASE ISMAGNET PHONE ADDRNUMBER #> Length:167 Length:167 Length:167 Length:167 #> Class :character Class :character Class :character Class :character #> Mode :character Mode :character Mode :character Mode :character #> #> #> #> #> ADDRPREFIX ADDRROOT ADDRTYPE ADDRSUFFIX #> Length:167 Length:167 Length:167 Length:167 #> Class :character Class :character Class :character Class :character #> Mode :character Mode :character Mode :character Mode :character #> #> #> #> #> ADDRCITY ADDRZIPCOD SPED STATUS #> Length:167 Length:167 Min. : NA Length:167 #> Class :character Class :character 1st Qu.: NA Class :character #> Mode :character Mode :character Median : NA Mode :character #> Mean :NaN #> 3rd Qu.: NA #> Max. : NA #> NA's :167 #> NODEID CAPACITYTO ESL BOARDDIS2 #> Length:167 Min. : 0.0 Length:167 Length:167 #> Class :character 1st Qu.: 543.0 Class :character Class :character #> Mode :character Median : 761.0 Mode :character Mode :character #> Mean : 867.0 #> 3rd Qu.: 992.5 #> Max. :2294.0 #> NA's :20 #> PROJ_CAP NOTES geom #> Min. : 0.0 Length:167 POINT :167 #> 1st Qu.: 497.0 Class :character epsg:3358 : 0 #> Median : 722.0 Mode :character +proj=lcc ...: 0 #> Mean : 793.1 #> 3rd Qu.: 975.0 #> Max. :2390.0 #> NA's :2
Sys.setenv("GRASS_VERBOSE"=GV) set.ignore.stderrOption(ois)
#> [1] TRUE