Skip to contents

Infers Esri field types from R objects.

Usage

infer_esri_type(
  .data,
  arg = rlang::caller_arg(.data),
  call = rlang::caller_env()
)

get_ptype(field_type, n = 1, call = rlang::caller_env())

ptype_tbl(fields, n = 0, call = rlang::caller_env())

remote_ptype_tbl(fields, call = rlang::caller_env())

Arguments

.data

an object of class data.frame.

arg

An argument name in the current function.

call

The execution environment of a currently running function, e.g. call = caller_env(). The corresponding function call is retrieved and mentioned in error messages as the source of the error.

You only need to supply call when throwing a condition from a helper function which wouldn't be relevant to mention in the message.

Can also be NULL or a defused function call to respectively not display any call or hard-code a code to display.

For more information about error calls, see Including function calls in error messages.

field_type

a character of a desired Esri field type. See details for more.

n

the number of rows to create in the prototype table

fields

a data.frame containing, at least, the columns type and name. Typically retrieved from the field metadata from a FeatureLayer or Table. Also can use the output of infer_esri_type().

Value

  • get_pytpe() returns an object of the class of the prototype.

  • ptype_tbl() takes a data.frame with columns name and type and creates an empty data.frame with the corresponding columns and R types

  • remote_ptype_tbl() provides the results of ptype_tbl() as a lazy data frame from the dbplyr package.

  • infer_esri_ptype() returns a data.frame with columns name, type, alias, nullable, and editable columns

    • This resembles that of the fields returned by a FeatureService

Details

  • get_ptype() takes a scalar character containing the Esri field type and returns a prototype of the pertinent R type

  • infer_esri_type() takes a data frame-like object and infers the Esri field type from it.

  • remote_ptype_tbl() takes a data frame of fields as derived from list_fields() and creates a lazy table proto type intended to be used with dbplyr integration

Field type mapping:

Esri field types are mapped as

  • esriFieldTypeSmallInteger: integer

  • esriFieldTypeSingle: double

  • esriFieldTypeGUID: integer

  • esriFieldTypeOID: integer

  • esriFieldTypeInteger: integer

  • esriFieldTypeBigInteger: double

  • esriFieldTypeDouble: double

  • esriFieldTypeString: character

  • esriFieldTypeDate: date

R types are mapped as

  • double: esriFieldTypeDouble

  • integer: esriFieldTypeInteger

  • character: esriFieldTypeString

  • date: esriFieldTypeDate

  • raw: esriFieldTypeBlob

Examples


get_ptype("esriFieldTypeDouble")
#> [1] 0
inferred <- infer_esri_type(iris)
ptype_tbl(inferred)
#> [1] Sepal.Length Sepal.Width  Petal.Length Petal.Width  Species     
#> <0 rows> (or 0-length row.names)