arcgis.realtime.velocity.feeds module

RSS

class arcgis.realtime.velocity.feeds.RSS(label, description, rss_url, http_auth_type, http_headers=<factory>, data_format=None, track_id_field=None, geometry=None, time=None, run_interval=RunInterval(cron_expression='0 * * ? * * *', timezone='America/Los_Angeles'))

Poll an HTTP endpoint for RSS events. This data class can be used to define the feed configuration and to create the feed.

Argument

Description

label

str. Unique label for this feed instance.

description

str. Feed description.

rss_url

str. Address of the HTTP endpoint providing data.

http_auth_type

Union[NoAuth, BasicAuth, CertificateAuth]. An instance that contains the authentication information for the feed instance.

http_headers

Dict[str, str]. A Name-Value dictionary that contains HTTP headers for connecting to the RSS feed.

Optional Argument

Description

data_format

Union[RssFormat, GeoRssFormat]. An instance that contains the data format configuration for this feed. Configure only allowed formats. If this is not set right during initialization, a format will be auto-detected and set from a sample of the incoming data. This sample will be fetched from the configuration provided so far in the init.

track_id_field

str. Name of the field from the incoming data that should be set as track ID.

geometry

Union[XYZGeometry, SingleFieldGeometry]. An instance of geometry configuration that will be used to create geometry objects from the incoming data.

time

Union[TimeInstant, TimeInterval]. An instance of time configuration that will be used to create time information from the incoming data.

run_interval

RunInterval. An instance of the scheduler configuration. The default is: RunInterval(cron_expression=”0 * * ? * * *”, timezone=”America/Los_Angeles”)

Returns

A data class with RSS feed configuration.

# Usage Example

from arcgis.realtime.velocity.feeds import RSS
from arcgis.realtime.velocity.http_authentication_type import (
    NoAuth,
    BasicAuth,
    CertificateAuth,
)

from arcgis.realtime.velocity.input.format import GeoRssFormat
from arcgis.realtime.velocity.feeds.geometry import XYZGeometry, SingleFieldGeometry
from arcgis.realtime.velocity.feeds.time import TimeInterval, TimeInstant
from arcgis.realtime.velocity.feeds.run_interval import RunInterval

name = "rss feed name"
description = "rss feed description"
url = "rss feed url"
http_auth = NoAuth()
# http_auth = BasicAuth(username="username", password="password")
# http_auth = CertificateAuth(pfx_file_http_location="https://link", password="password")

http_headers = {
    "Content-Type": "application/json"
}

# all properties can also be defined in the constructor as follows

# Set data format
data_format = GeoRssFormat()

# Set geometry field
geometry = XYZGeometry(
    x_field="category_longitude",
    y_field="category_latitude",
    wkid=4326,
    z_field="category_altitude",
    z_unit="Meters"
)

# Set time field
time = TimeInterval(
    interval_start_field="start_field",
    interval_end_field="end_field"
)

# Set recurrence
run_interval = RunInterval(
    cron_expression="0 * * ? * * *",
    timezone="America/Los_Angeles"
)

# Configure the RSS Feed
rss = RSS(
    label="feed_name",
    description="feed_description",
    rss_url=url,
    http_auth_type=http_auth,
    http_headers=http_headers,
    track_id_field="track_id",
    data_format=data_format,
    geometry=geometry,
    time=time,
    run_interval=run_interval
)

# use velocity object to get the FeedsManager instance
feeds = velocity.feeds

# use the FeedsManager object to create a feed from this feed configuration
RSS_feed = feeds.create(rss)
RSS_feed.start()
feeds.items
data_format = None
geometry = None
http_auth_type
http_headers
rss_url
run_interval = RunInterval(cron_expression='0 * * ? * * *', timezone='America/Los_Angeles')
time = None
track_id_field = None

HttpPoller

class arcgis.realtime.velocity.feeds.HttpPoller(label, description, url, http_method, http_auth_type, url_params=<factory>, http_headers=<factory>, enable_long_polling=False, data_format=None, track_id_field=None, geometry=None, time=None, run_interval=RunInterval(cron_expression='0 * * ? * * *', timezone='America/Los_Angeles'))

Poll an HTTP endpoint for event data. This data class can be used to define the feed configuration and to create the feed.

Argument

Description

label

str. Unique label for this feed instance.

description

str. Feed description.

url

str. URL of the HTTP endpoint providing data.

http_http_method

str. HTTP method. Options: GET or POST.

http_auth_type

Union[NoAuth, BasicAuth, CertificateAuth, OAuth]. An instance that contains the authentication information for this feed instance.

url_params

Dict[str, str]. A dictionary of URL param/value pairs that contains HTTP params used to access the HTTP resource.

http_headers

Dict[str, str]. A Name-Value dictionary that contains HTTP headers for connecting to the HTTP resource.

enable_long_polling

bool. The default is: False.

Optional Argument

Description

data_format

Union[EsriJsonFormat, GeoJsonFormat, JsonFormat, DelimitedFormat, XMLFormat]. An instance that contains the data format configuration for this feed. Configure only allowed formats. If this is not set right during initialization, a format will be auto-detected and set from a sample of the incoming data. This sample will be fetched from the configuration provided so far in the init.

track_id_field

str. Name of the field from the incoming data that should be set as track ID.

geometry

Union[XYZGeometry, SingleFieldGeometry]. An instance of geometry configuration that will be used to create geometry objects from the incoming data.

time

Union[TimeInstant, TimeInterval]. An instance of time configuration that will be used to create time information from the incoming data.

run_interval

RunInterval. An instance of the scheduler configuration. The default is: RunInterval(cron_expression=”0 * * ? * * *”, timezone=”America/Los_Angeles”)

Returns

A dataclass with Http poller feed configuration.

# Usage Example

from arcgis.realtime.velocity.feeds import HttpPoller
from arcgis.realtime.velocity.http_authentication_type import (
    NoAuth,
    BasicAuth,
    CertificateAuth,
)
arcgis.realtime.velocity.input.format import DelimitedFormat
from arcgis.realtime.velocity.feeds.geometry import XYZGeometry, SingleFieldGeometry
from arcgis.realtime.velocity.feeds.time import TimeInterval, TimeInstant
from arcgis.realtime.velocity.feeds.run_interval import RunInterval

name = "http_poller_feed_name"
description = "http_poller_description_feed"
url = "http_poller_url"
http_auth = NoAuth()
# http_auth = BasicAuth(username="username", password="password")
# http_auth = CertificateAuth(pfx_file_http_location="http_auth_link", password="password")

http_headers = {"Content-Type": "application/json"}
url_params = {"f": "json"}

http_poller = HttpPoller(
    label=name,
    description=description,
    url=url,
    http_method="GET",
    http_auth_type=http_auth,
    url_params=url_params,
    http_headers=http_headers,
    enable_long_polling=False,
    data_format=None
)

# Set track id field
http_poller.set_track_id("track_id")

# Set time field
time = TimeInstant(time_field="time_field")
http_poller.set_time_config(time=time)

# Set geometry field
geometry = XYZGeometry(
    x_field="x",
    y_field="y",
    wkid=4326
)
http_poller.set_geometry_config(geometry=geometry)

# Set recurrence
http_poller.run_interval = RunInterval(
    cron_expression="0 * * ? * * *", timezone="America/Los_Angeles"
)

# use velocity object to get the FeedsManager instance
feeds = velocity.feeds

# use the FeedsManager object to create a feed from this feed configuration
http_poller_feed = feeds.create(http_poller)
http_poller_feed.start()
feeds.items
data_format = None
enable_long_polling = False
geometry = None
http_auth_type
http_headers
http_method
run_interval = RunInterval(cron_expression='0 * * ? * * *', timezone='America/Los_Angeles')
time = None
track_id_field = None
url
url_params

HttpReceiver

class arcgis.realtime.velocity.feeds.HttpReceiver(label, description, authentication_type, sample_message, data_format=None, track_id_field=None, geometry=None, time=None)

Receive events via a dedicated HTTP endpoint. This data class can be used to define the feed configuration and to create the feed.

Argument

Description

label

str. Unique label for this feed instance.

description

str. Feed description.

authentication_type

str. Authentication type. Options: none or arcgis.

sample_message

str. The sample content to auto-detect the data format. For example: “name,agensam,23”

Optional Argument

Description

data_format

Union[EsriJsonFormat, GeoJsonFormat, JsonFormat, DelimitedFormat, XMLFormat]. An instance that contains the data format configuration for this feed. Configure only allowed formats. If this is not set right during initialization, a format will be auto-detected and set from a sample of the incoming data. This sample will be fetched from the configuration provided so far in the init.

track_id_field

str. Name of the field from the incoming data that should be set as track ID.

geometry

Union[XYZGeometry, SingleFieldGeometry]. An instance of geometry configuration that will be used to create geometry objects from the incoming data.

time

Union[TimeInstant, TimeInterval]. An instance of time configuration that will be used to create time information from the incoming data.

Returns

A data class with Http receiver feed configuration.

# Usage Example

from arcgis.realtime.velocity.feeds import HttpReceiver
from arcgis.realtime.velocity.http_authentication_type import (
    NoAuth,
    BasicAuth,
    CertificateAuth,
)

sample_message="name,age

dan,23"

http_receiver = HttpReceiver(
    label="feed_name",
    description="feed_description",
    authentication_type="none",
    sample_message=sample_message,
    data_format=None
)

# use velocity object to get the FeedsManager instance
feeds = velocity.feeds

# use the FeedsManager object to create a feed from this feed configuration
http_receiver_feed = feeds.create(http_receiver)
http_receiver_feed.start()
feeds.items
authentication_type
data_format = None
geometry = None
sample_message
time = None
track_id_field = None

HttpSimulator

class arcgis.realtime.velocity.feeds.HttpSimulator(label, description, url, field_separator=',', features_per_execution=1, interval_for_sending_events=1000, repeat_simulation=True, time_field_index=0, convert_to_current_time=True, data_format=None, track_id_field=None, geometry=None, time=None)

Simulate events from a text file. This data class can be used to define the feed configuration and to create the feed.

Argument

Description

label

str. Unique label for this feed instance.

description

str. Feed description.

url

str. The full URL to the externally accessible simulation file.

field_separator

str. The character, or delimiter, which separates field values in the simulation file. The default is: ,.

features_per_execution

int. The number of records (features) to simulate at a time. The default is: 1.

interval_for_sending_events

int. The interval between sending the number of features per execution. The default is: 1000.

repeat_simulation

boolean. Whether to automatically restart from the beginning when the end of the file is reached. The default is: True.

time_field_index

int. The numerical index of the date field in the dataset, where the index starts at 0. The default is: 0.

convert_to_current_time

boolean. Whether to convert the time values in the dataset to current time as the data is simulated. The default is: True.

Optional Argument

Description

data_format

Union[DelimitedFormat]. An instance that contains the data format configuration for this feed. Configure only allowed formats. If this is not set right during initialization, a format will be auto-detected and set from a sample of the incoming data. This sample will be fetched from the configuration provided so far in the init.

track_id_field

str. Name of the field from the incoming data that should be set as track ID.

geometry

Union[XYZGeometry, SingleFieldGeometry]. An instance of geometry configuration that will be used to create geometry objects from the incoming data.

time

Union[TimeInstant, TimeInterval]. An instance of time configuration that will be used to create time information from the incoming data.

Returns

A data class with Http simulator feed configuration.

# Usage Example

from arcgis.realtime.velocity.feeds import HttpSimulator
from arcgis.realtime.velocity.input.format import DelimitedFormat
from arcgis.realtime.velocity.feeds.geometry import XYZGeometry, SingleFieldGeometry
from arcgis.realtime.velocity.feeds.time import TimeInterval, TimeInstant

http_simulator = HttpSimulator(
    label="feed_name",
    description="feed_description",
    url="http_simulator_url",
    data_format=None
)

# use velocity object to get the FeedsManager instance
feeds = velocity.feeds

# use the FeedsManager object to create a feed from this feed configuration
http_simulator_feed = feeds.create(http_simulator)
http_simulator_feed.start()
feeds.items
convert_to_current_time = True
data_format = None
features_per_execution = 1
field_separator = ','
geometry = None
interval_for_sending_events = 1000
repeat_simulation = True
time = None
time_field_index = 0
track_id_field = None
url

AWSIoT

class arcgis.realtime.velocity.feeds.AWSIoT(label, description, endpoint, topic, qos_level=0, access_key_id=None, secret_access_key=None, session_token=None, data_format=None, track_id_field=None, geometry=None, time=None)

Receive events from an AWS IoT broker. This data class can be used to define the feed configuration and to create the feed.

Argument

Description

label

str. Unique label for the feed instance.

description

str. Feed description.

endpoint

str. Endpoint for the AWS IoT broker.

topic

str. Topic over which event messages stream.

qos_level

int. The Quality of Service (QoS) level defines the guarantee of delivery for a specific message. A QoS of 0 means a message is delivered zero or more times. It offers better performance, but no guaranteed delivery. A QoS of 1 means a message is delivered at least once, thereby offering guaranteed delivery. With both levels, messages may be delivered multiple times. The default is: 0.

Optional Argument

Description

access_key_id

str. Access key ID for the AWS IoT credentials.

secret_access_key

str. Secret access key for the AWS IoT credentials.

session_token

str. Session token for the AWS IoT broker.

data_format

Union[DelimitedFormat, EsriJsonFormat, GeoJsonFormat, JsonFormat, XMLFormat]. An instance that contains the data format configuration for this feed. Configure only allowed formats. If this is not set right during initialization, a format will be auto-detected and set from a sample of the incoming data. This sample will be fetched from the configuration provided so far in the init.

track_id_field

str. Name of the field from the incoming data that should be set as the track ID.

geometry

Union[XYZGeometry, SingleFieldGeometry]. An instance of geometry configuration that will be used to create geometry objects from the incoming data.

time

Union[TimeInstant, TimeInterval]. An instance of time configuration that will be used to create time information from the incoming data.

Returns

A data class with AWS Iot feed configuration.

# Usage Example

from arcgis.realtime.velocity.feeds import AWSIoT
from arcgis.realtime.velocity.feeds.geometry import XYZGeometry, SingleFieldGeometry
from arcgis.realtime.velocity.feeds.time import TimeInterval, TimeInstant

aws_config = AWSIoT(
    label="feed_name",
    description="feed_description",
    endpoint="aws_iot feed endpoint",
    topic="aws_iot_topic",
    qos_level=0,
    access_key_id="aws_iot_access_key_id",
    secret_access_key="aws_iot_secret_access_key",
    data_format=None
)

# use velocity object to get the FeedsManager instance
feeds = velocity.feeds

# use the FeedsManager object to create a feed from this feed configuration
aws_feed = feeds.create(aws_config)
aws_feed.start()
feeds.items
access_key_id = None
data_format = None
endpoint
geometry = None
qos_level = 0
secret_access_key = None
session_token = None
time = None
topic
track_id_field = None

AzureEventHub

class arcgis.realtime.velocity.feeds.AzureEventHub(label, description, shared_access_key_name, shared_access_key, event_hub_endpoint, event_hub_entity_path, consumer_group=None, data_format=None, track_id_field=None, geometry=None, time=None)

Receive events from an Azure Event Hub. This data class can be used to define the feed configuration and to create the feed.

Argument

Description

label

str. Unique label for this feed instance.

description

str. Feed description.

shared_access_key_name

str. Shared access key name for Azure Event Hub credentials.

shared_access_key

str. Shared access key name for Azure Event Hub credentials.

event_hub_endpoint

str. Endpoint of the Azure Event Hub.

event_hub_entity_path

str. Entity path of the Azure Event Hub.

Optional Argument

Description

consumer_group

str. Consumer group for the Azure Event Hub.

data_format

Union[DelimitedFormat, EsriJsonFormat, GeoJsonFormat, JsonFormat, XMLFormat]. An instance that contains the data format configuration for this feed. Configure only allowed formats. If this is not set right during initialization, a format will be auto-detected and set from a sample of the incoming data. This sample will be fetched from the configuration provided so far in the init.

track_id_field

str. Name of the field from the incoming data that should be set as track ID.

geometry

Union[XYZGeometry, SingleFieldGeometry]. An instance of geometry configuration that will be used to create geometry objects from the incoming data.

time

Union[TimeInstant, TimeInterval]. An instance of time configuration that will be used to create time information from the incoming data.

Returns

A data class with azure event hub feed configuration.

# Usage Example

from arcgis.realtime.velocity.feeds import AzureEventHub
from arcgis.realtime.velocity.feeds.geometry import XYZGeometry, SingleFieldGeometry
from arcgis.realtime.velocity.feeds.time import TimeInterval, TimeInstant

azure_event_hub_config = AzureEventHub(
    label="feed_name",
    description="feed_description",
    shared_access_key_name="azure_event_hub_shared_key_name",
    shared_access_key="azure_event_hub_shared_key",
    event_hub_endpoint="azure_event_hub_endpoint",
    event_hub_entity_path="azure_event_hub_entity_path",
    consumer_group="azure_consumer_group",
    data_format=None
)

# use velocity object to get the FeedsManager instance
feeds = velocity.feeds

# use the FeedsManager object to create a feed from this feed configuration
azure_event_hub_feed = feeds.create(azure_event_hub_config)
azure_event_hub_feed.start()
feeds.items
consumer_group = None
data_format = None
event_hub_endpoint
event_hub_entity_path
geometry = None
shared_access_key
shared_access_key_name
time = None
track_id_field = None

AzureServiceBus

class arcgis.realtime.velocity.feeds.AzureServiceBus(label, description, topic_name, subscription_name, shared_access_key_name, shared_access_key, endpoint, data_format=None, track_id_field=None, geometry=None, time=None)

Receive events from an Azure Service Bus. This data class can be used to define the feed configuration and to create the feed.

Argument

Description

label

str. Unique label for this feed instance.

description

str. Feed description.

topic_name

str. Topic name for the Azure Service Bus.

subscription_name

str. Topic name for the Azure Service Bus.

shared_access_key_name

str. Shared access key name for the Azure Service Bus.

shared_access_key

str. Shared access key for the Azure Service Bus.

endpoint

str. Endpoint of the Azure Service Bus.

Optional Argument

Description

data_format

Union[DelimitedFormat, EsriJsonFormat, GeoJsonFormat, JsonFormat, XMLFormat]. An instance that contains the data format configuration for this feed. Configure only allowed formats. If this is not set right during initialization, a format will be auto-detected and set from a sample of the incoming data. This sample will be fetched from the configuration provided so far in the init.

track_id_field

str. Name of the field from the incoming data that should be set as track ID.

geometry

Union[XYZGeometry, SingleFieldGeometry]. An instance of geometry configuration that will be used to create geometry objects from the incoming data.

time

Union[TimeInstant, TimeInterval]. An instance of time configuration that will be used to create time information from the incoming data.

Returns

A data class with azure service bus feed configuration.

# Usage Example

from arcgis.realtime.velocity.feeds import AzureServiceBus
from arcgis.realtime.velocity.feeds.geometry import XYZGeometry, SingleFieldGeometry
from arcgis.realtime.velocity.feeds.time import TimeInterval, TimeInstant

azure_service_bus_config = AzureServiceBus(
    label="feed_name",
    description="feed_description",
    topic_name="azure_service_bus_topic_name",
    subscription_name="azure_service_bus_subscription_name",
    shared_access_key_name="azure_service_bus_shared_access_key_name",
    shared_access_key="azure_service_bus_shared_access_key",
    endpoint="azure_service_bus_endpoint",
    data_format=None
)

# use velocity object to get the FeedsManager instance
feeds = velocity.feeds

# use the FeedsManager object to create a feed from this feed configuration
azure_service_bus_feed = feeds.create(azure_service_bus_config)
azure_service_bus_feed.start()
feeds.items
data_format = None
endpoint
geometry = None
shared_access_key
shared_access_key_name
subscription_name
time = None
topic_name
track_id_field = None

CiscoEdgeIntelligence

class arcgis.realtime.velocity.feeds.CiscoEdgeIntelligence(label, description, host, port, topic, qos_level=0, username=None, password=None, client_id=None, data_format=None, track_id_field=None, geometry=None, time=None)

Receive events from a Cisco Edge Intelligence broker. This data class can be used to define the feed configuration and to create the feed.

Argument

Description

label

str. Unique label for this feed instance.

description

str. Feed description.

host

str. Hostname of the Cisco Edge Intelligence broker prefixed with “tcp://” for non-SSL or “ssl://” for SSL connections.

port

str. Port on which the Cisco Edge Intelligence broker is accessible.

topic

str. Topic over which event messages stream.

qos_level

int. Quality of Service (QoS) level defines the guarantee of delivery for a specific message. In MQTT 3.1.1, a QoS of 0 means a message is delivered at most once, a QoS of 1 at least once, and a QoS of 2 exactly once. The default is: 0.

Optional Argument

Description

username

Username for basic authentication.

password

Password for basic authentication.

client_id

The client ID ArcGIS Velocity will use to connect to the Cisco Edge Intelligence broker.

data_format

Union[DelimitedFormat, EsriJsonFormat, GeoJsonFormat, JsonFormat, XMLFormat]. An instance that contains the data format configuration for this feed. Configure only allowed formats. If this is not set right during initialization, a format will be auto-detected and set from a sample of the incoming data. This sample will be fetched from the configuration provided so far in the init.

track_id_field

str. Name of the field from the incoming data that should be set as track ID.

geometry

Union[XYZGeometry, SingleFieldGeometry]. An instance of geometry configuration that will be used to create geometry objects from the incoming data.

time

Union[TimeInstant, TimeInterval]. An instance of time configuration that will be used to create time information from the incoming data.

Returns

A data class with cisco edge intelligence feed configuration.

# Usage Example

from arcgis.realtime.velocity.feeds import CiscoEdgeIntelligence
from arcgis.realtime.velocity.feeds.geometry import XYZGeometry, SingleFieldGeometry
from arcgis.realtime.velocity.feeds.time import TimeInterval, TimeInstant

cisco_edge_config = CiscoEdgeIntelligence(
    label="feed_name",
    description="feed_description",
    host="cisco_host",
    port="cisco_port",
    topic="cisco_topic",
    qos_level=0,
    username="cisco_username",
    password="cisco_password",
    client_id="cisco_client_id",
    data_format=None
)

# use velocity object to get the FeedsManager instance
feeds = velocity.feeds

# use the FeedsManager object to create a feed from this feed configuration
cisco_edge_feed = feeds.create(cisco_edge_config)
cisco_edge_feed.start()
feeds.items

FeatureLayer

class arcgis.realtime.velocity.feeds.FeatureLayer(label, description, query='1=1', fields='*', outSR=4326, url=None, portal_item_id=None, extent=None, time_stamp_field=None, track_id_field=None, time=None, run_interval=RunInterval(cron_expression='0 * * ? * * *', timezone='America/Los_Angeles'))

Poll a feature layer for features at a fixed schedule. This data class can be used to define the feed configuration and to create the feed.

The data format is a feature layer. ArcGIS Velocity will automatically handle the location for you.

Argument

Description

label

str. Unique label for this feed instance.

description

str. Feed description.

query

str. Feature layer query parameters. The default is: 1=1.

fields

str. Requested feature layer output fields. For example: “field1,field2” The default is: *.

outSR

int. Requested output spatial reference. The default is: 4326. .. note:

To learm more about projected and geographic coordinate systems, refer to
`Using spatial references <https://developers.arcgis.com/rest/services-reference/enterprise/using-spatial-references.htm>`.

Optional Argument

Description

portal_item_id

str. The Portal item ID of the feature layer. .. note:

Either the portal_item_id or url is required.

extent

Dict[str, Any]. A Geometry object that defines the spatial extent for the feature layer.

# Sample Value
{
    "spatialReference": {
        "latestWkid": 3857,
        "wkid": 102100
    },
    "xmin": -14784278.027601289,
    "ymin": 2604610.848073723,
    "xmax": -11451317.846255329,
    "ymax": 6852675.132049575
}

time_stamp_field

str. An optional date field for latest features. Optionally, specify a date field to be used to retrieve only the latest features from the feature layer.

If a timestamp field is not specified, ArcGIS Velocity will load all features that meet the criteria of the WHERE clause when it polls the feature layer.

If a timestamp field is specified, the first time ArcGIS Velocity polls the feature layer it will load all features with a timestamp field datetime within the past minute and less than the first feed poll time that also meets the criteria of the WHERE clause. With each subsequent poll, only features with a timestamp field value between the last polling time and the current polling time that also meet the criteria of the WHERE clause will be loaded.

track_id_field

str. Name of the field from the incoming data that should be set as track ID.

time

Union[TimeInstant, TimeInterval]. An instance of time configuration that will be used to create time information from the incoming data.

run_interval

RunInterval. An instance of the scheduler configuration. The default is: RunInterval(cron_expression=”0 * * ? * * *”, timezone=”America/Los_Angeles”)

Returns

A data class with feature layer feed configuration.

# Usage Example

from arcgis.realtime.velocity.feeds import FeatureLayer
from arcgis.realtime.velocity.http_authentication_type import (
    NoAuth,
    BasicAuth,
    CertificateAuth,
)

from arcgis.realtime.velocity.input.format import DelimitedFormat
from arcgis.realtime.velocity.feeds.geometry import XYZGeometry, SingleFieldGeometry
from arcgis.realtime.velocity.feeds.time import TimeInterval, TimeInstant
from arcgis.realtime.velocity.feeds.run_interval import RunInterval

extent = {
    "spatialReference": {
        "latestWkid": 3857,
        "wkid": 102100
    },
    "xmin": "xmin",
    "ymin": "ymin",
    "xmax": "xmax",
    "ymax": "ymax"
}

# Feature Layer Properties

feature_layer_config = FeatureLayer(
    label="feed_name",
    description="feed_description",
    query="1=1",
    fields="*",
    outSR=4326,
    url="feed_sample_server_link",
    extent=extent,
    time_stamp_field="date_field"
)

feature_layer_config

# Set recurrence
feature_layer_config.run_interval = RunInterval(
    cron_expression="0 * * ? * * *", timezone="America/Los_Angeles"
)

# use velocity object to get the FeedsManager instance
feeds = velocity.feeds

# use the FeedsManager object to create a feed from this feed configuration
feature_layer_feed = feeds.create(feature_layer_config)
feature_layer_feed.start()
feeds.items
data_format = None
extent = None
fields = '*'
outSR = 4326
portal_item_id = None
query = '1=1'
run_interval = RunInterval(cron_expression='0 * * ? * * *', timezone='America/Los_Angeles')
time = None
time_stamp_field = None
track_id_field = None
url = None

StreamLayer

class arcgis.realtime.velocity.feeds.StreamLayer(label, description, portal_item_id, query='1=1', fields='*', outSR=4326, extent=None, track_id_field=None, time=None)

Receive features from a stream layer. This data class can be used to define the feed configuration and to create the feed.

Data format is Esri stream layer. ArcGIS Velocity will automatically handle the location for you.

Argument

Description

label

str. Unique label for the feed instance.

description

str. Feed description.

portal_item_id

str. Portal item ID of the stream layer.

query

str. Stream layer query parameters. The default is: “1=1”

fields

str. Requested stream layer output fields. For example: “field1,field2” The default is: “*”.

outSR

int. Requested output spatial reference. The default is: 4326.

Note

To learm more about projected and geographic coordinate systems, refer to Using spatial references <https://developers.arcgis.com/rest/services-reference/enterprise/using-spatial-references.htm>.

data_format

str. Specifies the overall format of the incoming data.

Optional Argument

Description

WHERE clause

str. Query to retrieve a subset of features.

Out fields

str. Comma-separated list of fields to use for processing.

Output spatial reference

str. Spatial reference in which queried features should return.

extent

Dict[str, Any]. JSON representing an envelope as defined by the ArcGIS REST API’s JSON geometry schema.

# Sample Value
{
    "spatialReference": {
        "latestWkid": 3857,
        "wkid": 102100
    },
    "xmin": -14784278.027601289,
    "ymin": 2604610.848073723,
    "xmax": -11451317.846255329,
    "ymax": 6852675.132049575
}

track_id_field

str. Name of the field from the incoming data that should be set as track ID.

time

Union[TimeInstant, TimeInterval]. An instance of time configuration that will be used to create time information from the incoming data.

Returns

A data class with stream layer feed configuration.

# Usage Example

from arcgis.realtime.velocity.feeds import StreamLayer
from arcgis.realtime.velocity.feeds.time import TimeInterval, TimeInstant

extent = {
    "spatialReference": {
        "latestWkid": 3857,
        "wkid": 102100
    },
    "xmin": "xmin",
    "ymin": "ymin",
    "xmax": "xmax",
    "ymax": "ymax"
}

stream_layer_config = StreamLayer(
    label="feed_name",
    description="feed_description",
    portal_item_id="portal_id",
    query="1=1",
    fields="*",
    outSR=4326,
    extent=extent
)

# use velocity object to get the FeedsManager instance
feeds = velocity.feeds

# use the FeedsManager object to create a feed from this feed configuration
stream_layer_feed = feeds.create(stream_layer_config)
stream_layer_feed.start()
feeds.items
data_format = None
extent = None
fields = '*'
outSR = 4326
portal_item_id
query = '1=1'
time = None
track_id_field = None

Geotab

class arcgis.realtime.velocity.feeds.Geotab(label, description, url, database, username, password, groups=None, diagnostics_ids=None, data_format=None, track_id_field=None, geometry=None, time=None, run_interval=RunInterval(cron_expression='0 * * ? * * *', timezone='America/Los_Angeles'))

Poll Geotab for event data. This data class can be used to define the feed configuration and to create the feed.

Argument

Description

label

str. Unique label for this feed instance.

description

str. Feed description.

url

str. The URL to authenticate Geotab.

database

str. The name of the Geotab database providing data.

username

str. Specify the username to authenticate Geotab.

password

str. Specify the password to authenticate Geotab.

Optional Argument

Description

groups

str. List of groups to include in the feature schema. Separate multiple values with a semi-colon (;).

diagnostics_ids

str. List of diagnostic IDs to include in the feature schema. Separate multiple values with a semi-colon (;).

data_format

JsonFormat. An instance that contains the data format configuration for this feed. Configure only allowed formats. If this is not set right during initialization, a format will be auto-detected and set from a sample of the incoming data. This sample will be fetched from the configuration provided so far in the init.

track_id_field

str. Name of the field from the incoming data that should be set as track ID.

geometry

Union[XYZGeometry, SingleFieldGeometry]. An instance of geometry configuration that will be used to create geometry objects from the incoming data.

time

Union[TimeInstant, TimeInterval]. An instance of time configuration that will be used to create time information from the incoming data.

run_interval

RunInterval. An instance of the scheduler configuration. The default is: RunInterval(cron_expression=”0 * * ? * * *”, timezone=”America/Los_Angeles”)

Returns

A data class with Geotab feed configuration.

# Usage Example

from arcgis.realtime.velocity.feeds import Geotab
from arcgis.realtime.velocity.feeds.geometry import XYZGeometry, SingleFieldGeometry
from arcgis.realtime.velocity.feeds.time import TimeInterval, TimeInstant

geotab = Geotab(
    label="feed_name",
    description="feed_description",
    url="Geotab_url",
    database="Geotab_database",
    username="Geotab_user_name",
    password="Geotab_password",
    data_format=None
)

# use velocity object to get the FeedsManager instance
feeds = velocity.feeds

# use the FeedsManager object to create a feed from this feed configuration
geotab_feed = feeds.create(geotab)
geotab_feed.start()
feeds.items
data_format = None
database
diagnostics_ids = None
geometry = None
groups = None
password
run_interval = RunInterval(cron_expression='0 * * ? * * *', timezone='America/Los_Angeles')
time = None
track_id_field = None
url
username

Kafka

class arcgis.realtime.velocity.feeds.Kafka(label, description, brokers, topics, authentication, consumer_group_id=None, data_format=None, track_id_field=None, geometry=None, time=None)

Receive event data from a Kafka broker. This data class can be used to define the feed configuration and to create the feed.

Argument

Description

label

str. Unique label for this feed instance.

description

str. Feed description.

brokers

str. Comma-separated list of Kafka brokers, including the port, such as host1.domain.com:9092,host2.domain.com:9092.

For example: kafkaServer1.hostname.com:9092,kafkaServer2.hostname.com:9092

topics

str. Topic to which the output will send messages.

authentication

Union[NoAuth, SASLPlain]. Kafka authentication type.

Optional Argument

Description

consumer_group_id

str. A unique string that identifies the consumer group this feed belongs to as a consumer.

data_format

Union[DelimitedFormat, EsriJsonFormat, GeoJsonFormat, JsonFormat, XMLFormat]. An instance that contains the data format configuration for this feed. Configure only allowed formats. If this is not set right during initialization, a format will be auto-detected and set from a sample of the incoming data. This sample will be fetched from the configuration provided so far in the init.

track_id_field

str. name of the field from the incoming data that should be set as track ID.

geometry

Union[XYZGeometry, SingleFieldGeometry]. An instance of geometry configuration that will be used to create geometry objects from the incoming data.

time

Union[TimeInstant, TimeInterval]. An instance of time configuration that will be used to create time information from the incoming data.

Returns

A data class with Kafka feed configuration.

# Usage Example

from arcgis.realtime.velocity.feeds import Kafka
from arcgis.realtime.velocity.feeds.kafka_authentication_type import NoAuth, SASLPlain
from arcgis.realtime.velocity.feeds.geometry import XYZGeometry, SingleFieldGeometry
from arcgis.realtime.velocity.feeds.time import TimeInterval, TimeInstant

kafka_config = Kafka(
    label="feed_name",
    description="feed_description",
    brokers="kafka.a4iot.com:9092",
    topics="topicName",
    authentication=NoAuth(),
    data_format=None
)

# use velocity object to get the FeedsManager instance
feeds = velocity.feeds

# use the FeedsManager object to create a feed from this feed configuration
kafka_feed = feeds.create(kafka_config)
kafka_feed.start()
feeds.items
authentication
brokers
consumer_group_id = None
data_format = None
geometry = None
time = None
topics
track_id_field = None

MQTT

class arcgis.realtime.velocity.feeds.MQTT(label, description, host, port, topic, qos_level=0, username=None, password=None, client_id=None, data_format=None, track_id_field=None, geometry=None, time=None)

Receive events from an MQTT broker. This data class can be used to define the feed configuration and to create the feed.

Argument

Description

label

str. Unique label for this feed instance.

description

str. Feed description.

host

str. Hostname of the of the broker prefixed with “tcp://” for non-SSL or “ssl://” for SSL connections.

port

int. Port on which the MQTT broker is accessible.

topic

str. Topic over which event messages stream.

qos_level

int. Quality of Service (QoS) level defines the guarantee of delivery for a specific message. In MQTT 3.1.1, a QoS of 0 means a message is delivered at most once, a QoS of 1 at least once, and a QoS of 2 exactly once. The default is: 0.

Optional Argument

Description

username

str. Username for basic authentication.

password

str. Password for basic authentication.

client_id

str. Client ID ArcGIS Velocity will use to connect to the MQTT broker.

data_format

Union[DelimitedFormat, EsriJsonFormat, GeoJsonFormat, JsonFormat, XMLFormat]. An instance that contains the data format configuration for this feed. Configure only allowed formats. If this is not set right during initialization, a format will be auto-detected and set from a sample of the incoming data. This sample will be fetched from the configuration provided so far in the init.

track_id_field

str. name of the field from the incoming data that should be set as track ID.

geometry

Union[XYZGeometry, SingleFieldGeometry]. An instance of geometry configuration that will be used to create geometry objects from the incoming data.

time

Union[TimeInstant, TimeInterval]. An instance of time configuration that will be used to create time information from the incoming data.

Returns

A data class with MQTT feed configuration.

# Usage Example

from arcgis.realtime.velocity.feeds import MQTT
from arcgis.realtime.velocity.feeds.geometry import XYZGeometry, SingleFieldGeometry
from arcgis.realtime.velocity.feeds.time import TimeInterval, TimeInstant

mqtt_config = MQTT(
    label="feed_name",
    description="feed_description",
    host="Mqtt host",
    port=8883,
    topic="Mqtt topic",
    qos_level=0,
    username="Mqtt_username",
    password="Mqtt_password",
    client_id="Mqtt_client_id",
    data_format=None
)

# use velocity object to get the FeedsManager instance
feeds = velocity.feeds

# use the FeedsManager object to create a feed from this feed configuration
mqtt_feed = feeds.create(mqtt_config)
mqtt_feed.start()
feeds.items
client_id = None
data_format = None
geometry = None
host
password = None
port
qos_level = 0
time = None
topic
track_id_field = None
username = None

RabbitMQ

class arcgis.realtime.velocity.feeds.RabbitMQ(label, description, host, port=5672, use_ssl=False, prefetch_count=0, virtual_host=None, username=None, password=None, queue_name=None, data_format=None, track_id_field=None, geometry=None, time=None)

Receive events from a RabbitMQ broker. This data class can be used to define the feed configuration and to create the feed.

Argument

Description

label

str. Unique label for the feed instance.

description

str. Feed description.

host

str. Host address of the RabbitMQ Server.

For example: rabbitmqbroker.centralus.cloudapp.azure.com

port

int. Port on which the RabbitMQ Server is accessible. The default is: 5672.

use_ssl

bool. Whether or not to use SSL in the connection. The default is: False.

prefetch_count

int. Prefetch count is used to specify the number of messages RabbitMQ sends. This limits how many messages are received before acknowledging a message. The default is: 0.

Optional Argument

Description

virtual_host

str. Virtual host of the RabbitMQ Server. For example: virtualhost1

username

str. Username for server authentication.

password

str. Password for server authentication.

queue_name

str. Name of the queue over which messages will be received.

data_format

Union[DelimitedFormat, EsriJsonFormat, GeoJsonFormat, JsonFormat, XMLFormat]. An instance that contains the data format configuration for this feed. Configure only allowed formats. If this is not set right during initialization, a format will be auto-detected and set from a sample of the incoming data. This sample will be fetched from the configuration provided so far in the init.

track_id_field

str. name of the field from the incoming data that should be set as track ID.

geometry

Union[XYZGeometry, SingleFieldGeometry]. An instance of geometry configuration that will be used to create geometry objects from the incoming data.

time

Union[TimeInstant, TimeInterval]. An instance of time configuration that will be used to create time information from the incoming data.

Returns

A data class with RabbitMQ feed configuration.

# Usage Example

from arcgis.realtime.velocity.feeds import RabbitMQ
from arcgis.realtime.velocity.feeds.geometry import XYZGeometry, SingleFieldGeometry
from arcgis.realtime.velocity.feeds.time import TimeInterval, TimeInstant

rabbitmq_config = RabbitMQ(
    label="feed_name",
    description="feed_description",
    host="RabbitMQ host",
    username="RabbitMQ_username",
    password="RabbitMQ password",
    prefetch_count=0,
    queue_name="RabbitMQ_queue_name",
    data_format=None
)

# use velocity object to get the FeedsManager instance
feeds = velocity.feeds

# use the FeedsManager object to create a feed from this feed configuration
rabbitmq_feed = feeds.create(rabbitmq_config)
rabbitmq_feed.start()
feeds.items
data_format = None
geometry = None
host
password = None
port = 5672
prefetch_count = 0
queue_name = None
time = None
track_id_field = None
use_ssl = False
username = None
virtual_host = None

VerizonConnectReveal

class arcgis.realtime.velocity.feeds.VerizonConnectReveal(label, description, username, password, data_format=None, track_id_field=None, geometry=None, time=None)

Receive messages from Verizon Connect Reveal via a dedicated HTTP endpoint. This data class can be used to define the feed configuration and to create the feed.

Argument

Description

label

str. Unique label for the feed instance.

description

str. Feed description.

username

str. Specify a new username.

password

str. Specify a new password.

Optional Argument

Description

data_format

Union[JsonFormat]. An instance that contains the data format configuration for this feed. Configure only allowed formats. If this is not set right during initialization, a format will be auto-detected and set from a sample of the incoming data. This sample will be fetched from the configuration provided so far in the init.

track_id_field

str. Name of the field from the incoming data that should be set as track ID.

geometry

Union[XYZGeometry, SingleFieldGeometry]. An instance of geometry configuration that will be used to create geometry objects from the incoming data.

time

Union[TimeInstant, TimeInterval]. An instance of time configuration that will be used to create time information from the incoming data.

Returns

A data class with Verizon connection reveal feed configuration.

# Usage Example

from arcgis.realtime.velocity.feeds import VerizonConnectReveal
from arcgis.realtime.velocity.input.format import DelimitedFormat
from arcgis.realtime.velocity.feeds.geometry import XYZGeometry, SingleFieldGeometry
from arcgis.realtime.velocity.feeds.time import TimeInterval, TimeInstant

verizon_connect_reveal = VerizonConnectReveal(
    label="feed_name",
    description="feed_description",
    username = "username",
    password = "password",
    data_format=None
)

# user can't change the schema

verizon_connect_reveal.set_track_id("SequenceId")

# create verizon connect reveal feed

# use velocity object to get the FeedsManager instance
feeds = velocity.feeds

# use the FeedsManager object to create a feed from this feed configuration
verizon_connect_reveal_feed = feeds.create(verizon_connect_reveal)
verizon_connect_reveal_feed.start()
feeds.items
data_format = None
geometry = None
password
time = None
track_id_field = None
username

WebSocket

class arcgis.realtime.velocity.feeds.WebSocket(label, description, url, data_format=None, track_id_field=None, geometry=None, time=None)

Receives events from a web socket. This data class can be used to define the feed configuration and use it to create the feed.

Argument

Description

label

str. Unique label for the feed instance.

description

str. Feed description.

url

str. WebSocket URL over which messages are received.

Optional Argument

Description

data_format

Union[DelimitedFormat, EsriJsonFormat, GeoJsonFormat, JsonFormat, XMLFormat]. An instance that contains the data format configuration for this feed. Configure only allowed formats. If this is not set right during initialization, a format will be auto-detected and set from a sample of the incoming data. This sample will be fetched from the configuration provided so far in the init.

track_id_field

str. Name of the field from the incoming data that should be set as track ID.

geometry

Union[XYZGeometry, SingleFieldGeometry]. An instance of geometry configuration that will be used to create geometry objects from the incoming data.

time

Union[TimeInstant, TimeInterval]. An instance of time configuration that will be used to create time information from the incoming data.

Returns

A data class with Web Socket feed configuration configuration.

# Usage Example

from arcgis.realtime.velocity.feeds import WebSocket
from arcgis.realtime.velocity.input.format import DelimitedFormat
from arcgis.realtime.velocity.feeds.geometry import XYZGeometry, SingleFieldGeometry
from arcgis.realtime.velocity.feeds.time import TimeInterval, TimeInstant

web_socket = WebSocket(
    label="feed_name",
    description="feed_description",
    url = "http://feed_url.com"
)

# create web socket feed

# use velocity object to get the FeedsManager instance
feeds = velocity.feeds

# use the FeedsManager object to create a feed from this feed configuration
web_socket_feed = feeds.create(web_socket)
web_socket_feed.start()
feeds.items
data_format = None
geometry = None
time = None
track_id_field = None
url

NoAuth

class arcgis.realtime.velocity.feeds.NoAuth

This dataclass is used to specify that no authentication is needed to connect to a Kafka broker.

SASLPlain

class arcgis.realtime.velocity.feeds.SASLPlain(username, password)

This dataclass is used to specify a SASL/Plain Authentication scenario using username and password for connecting to a Kafka broker.

Argument

Description

username

str. Username for basic authentication.

password

str. Password for basic authentication.

password
username

XYZGeometry

class arcgis.realtime.velocity.feeds.XYZGeometry(x_field, y_field, wkid, z_field=None, z_unit=None)

Dataclass that holds the XYZ Geometry configuration.

Argument

Description

x_field

str. Longitude field name.

y_field

str. Latitude field name.

wkid

int. WKID of the geometry.

Optional Argument

Description

z_field

str. Z field name.

z_unit

str. Z units. Options: Kilometers, Meters, Centimeters, Millimeters, Fathoms, Miles, NauticalMiles, Yards, Feet, Inches.

Returns

True if the operation is a success

# Usage Example

geometry = XYZGeometry(
    x_field = "x",
    y_field = "y",
    wkid = 4326
)
wkid
x_field
y_field
z_field = None
z_unit = None

SingleFieldGeometry

class arcgis.realtime.velocity.feeds.SingleFieldGeometry(geometry_field, geometry_type, geometry_format, wkid)

Dataclass that holds the Single Field Geometry configuration.

Argument

Description

geometry_field

str. Geometry field name. Options: esriGeometryPoint, esriGeometryPolyline, esriGeometryPolygon, esriGeometryMulti.

geometry_type

str. Geometry type. Options: esriGeometryPoint, esriGeometryPolyline, esriGeometryPolygon, esriGeometryMulti.

geometry_format

str. Geometry format. Options: coordinates, esrijson, geojson, or wkt.

wkid

int. WKID of the geometry.

Returns

True if the operation is a success

# Usage Example

geometry = SingleFieldFeometry(
    geometry_field="geometry_field"
    geometry_type="esriGeometryPoint",
    geometry_format="esrijson",
    wkid=4326
)
geometry_field
geometry_format
geometry_type
wkid

TimeInstant

class arcgis.realtime.velocity.feeds.TimeInstant(time_field, date_format=None)

Data class that holds the Instant Time configuration

Argument

Description

time_field

str. Time field name.

Optional Argument

Description

date_format

str. If the field does not contain epoch values, a date format can be defined for the time field.

Returns

boolean True if the operation is a success

# Usage Example

time = TimeInstant(time_field="time_field")
date_format = None
time_field

TimeInterval

class arcgis.realtime.velocity.feeds.TimeInterval(interval_start_field, interval_end_field, date_format=None)

Data class that holds the Interval Time configuration

Argument

Description

interval_start_field

str. Start-time field name for the time interval.

interval_end_field

str. End-time field name for the time interval.

Optional Argument

Description

date_format

str. If the field does not contain epoch values, a date format can be defined for the time field.

Returns

boolean True if the operation is a success

# Usage Example

time = TimeInterval(
    interval_start_field="start_field",
    interval_end_field="end_field"
)
date_format = None
interval_end_field
interval_start_field

RunInterval

class arcgis.realtime.velocity.feeds.RunInterval(cron_expression, timezone='America/Los_Angeles')

Set the run interval for the feed.

Argument

Description

cron_expression

str. Cron expression that specifies the run interval. You can use the cron generator at the following link to generate a cron expression: Cron Expression Generator & Explainer <https://www.freeformatter.com/cron-expression-generator-quartz.html>. The default is every one minute, represented by the following expression: “0 * * ? * * *

timezone

str. Run interval timezone to use. The default is: “America/Los_Angeles” .. note:

To learn more about time zones, see
`List of tz database time zones <https://en.wikipedia.org/wiki/List_of_tz_database_time_zones>` page on Wikipedia.
Returns

True if the operation is a success

# Usage Example

feed.run_interval = RunInterval(
    cron_expression="0 * * ? * * *", timezone="America/Los_Angeles",
)

# Seconds value must be between 10 and 59
# Minutes value must be between 1 and 59
# Hours value must be between 1 and 23
cron_expression
timezone = 'America/Los_Angeles'