EsriJSON is a format for encoding a variety of geographic data structures. When referring to EsriJSON, most typically it is in reference to the FeatureSet object, where the FeatureSet contains a set of Feature objects. EsriJSON can be ingested in ArcGIS Velocity as either a FeatureSet object (collection of features) or individual Feature objects as lines.
EsriJSON is supported as a data format for the following feed and data source types:
- Feeds—Azure Event Hub, Azure Service Bus, AWS IoT, Website (Poll), Endpoint (Receive), Kafka, WebSocket, RabbitMQ, MQTT.
- Data sources—Azure Blob Store, Amazon S3, Website (Poll).
Supported EsriJSON
Velocity supports EsriJSON that maintains a consistent geometry type, set of fields, and spatial reference.
Generate EsriJSON
Data can be converted from a variety of formats into EsriJSON using the ArcGIS Pro Features to JSON or ArcMap Features to JSON tools.
Specify EsriJSON configuration
When configuring a feed or data source, sampling will occur to determine the type of data being ingested. If sampling determines the data to be in the EsriJSON format, additional properties for the EsriJSON configuration that can be specified.
Location properties
In certain cases, particularly when sampling individual Feature objects, additional location information might need to be configured if not present in the sample data. For example, it is common for geometry objects in an array of features to not include the spatial reference for each feature. When sampling a FeatureSet object, Velocity can derive the full location information and no additional configuration of location properties is necessary.
Considerations and limitations
When working with data in EsriJSON format in Velocity, there are several important considerations and limitations.
EsriJSON feature properties must remain consistent
In the EsriJSON data format, attribute data is represented with name value pairs within the attributes object. The value for any property should either be a null or a value. If a feature does not have a value for a property, it should be represented by a null for that value as opposed to the absence of that attribute name.
Changing field types
Typically, it is recommended you not change field types for EsriJSON. When Velocity samples and ingests FeatureSet objects, an accurate representation of the field types is derived and these should not be changed when configuring a source or feed. The exception to changing field types is with Feature objects. Considering Feature objects represent time in date fields as epoch milliseconds, they will always be derived as integer field types without a full FeatureSet that explicitly contains field types and thus should be adjusted accordingly. Additionally, in the case of Feature objects, Velocity will attempt to derive other field types based solely on the samples retrieved and the field types should be reviewed accordingly.
EsriJSON file size
As a best practice, EsriJSON files being ingested should be under 100 MB per file. If you have a larger amount of data to be ingested, it is recommended you break the files up into files under 100 MB per file.