+ All Categories
Home > Documents > GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ......

GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ......

Date post: 19-Jul-2020
Category:
Upload: others
View: 11 times
Download: 0 times
Share this document with a friend
44
GeoEvent Extension for ArcGIS for Server: A Developer's Guide Mark Bramer Esri Professional Services Vienna, VA DevSummit DC February 26, 2016 | Washington, DC
Transcript
Page 1: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

GeoEvent Extension for ArcGIS for Server: A Developer's Guide

Mark BramerEsri Professional Services

Vienna, VA

DevSummit DCFebruary 26, 2016 | Washington, DC

Page 2: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Agenda

• Connectors- Inbound- Outbound

• GeoEvent SDK• Transports and Adapters• Processors• Maven• Scripting “upstream”

Page 3: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Real-Time GISIntegration and exploitation of streaming data

• Integrates real-time streaming data into ArcGIS

• Performs continuous processing and real-time analytics

• Sends updates and alerts to those who need it where they need it

ArcGIS Server

GeoEvent Extension

DesktopWeb Device

Page 4: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Connectors

Page 5: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

ConnectorsWhat is a connector?

• Connectors are made up of two customizable components - Transport- Adapter

• Types of transports and adapters:- Inbound transport – connects to and gets raw bytestream- Inbound adapter – converts raw bytestream into a GeoEvent- Outbound adapter – converts GeoEvent into a byte array, formatted to an output type- Outbound transport – accepts arrays of bytes from the adapter and transmits them

Page 6: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Receiving Real-Time DataEasily integrate real-time streaming data into ArcGIS using an Input Connector

You can createyour own

connectors.

GeoEvent Extension

Inpu

ts

Out

puts

GeoEvent Services

Poll an ArcGIS Server for Features

Poll an external website for GeoJSON, JSON, or XML

Receive Features, GeoJSON, JSON, or XML on a REST endpoint

Receive RSS

Receive GeoJSON or JSON on a WebSocket

Receive Text from a TCP or UDP Socket

Subscribe to an external WebSocket for GeoJSON or JSON

Watch a Folder for new CSV, GeoJSON, or JSON Files

Out

of t

he B

ox REST

.csv

WS

WS

HTTP

Esri

Gal

lery

ActiveMQ

CAP

Instagram

Exploitation Support Data

Cursor-on-Target

RabbitMQ

NMEA 0183

MQTT

Sierra Wireless (RAP)

KML

Kafka *

Trimble (TAIP)

Twitter

Part

ner G

alle

ry

CompassLDE

enviroCar

GNIP

FAA (ASDI)

exactEarth AIS

Zonar

Valarm

Networkfleet

OSIsoft ***

*

*

Page 7: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Receiving Real-Time DataInput Connector = Transport + Adapter

GeoEvent Extension

Inpu

ts

Out

puts

GeoEvent Services

WebSocket JSON

Connectors Transport Adapter

HTTP GeoJSON

Feature Service

Transports

File

HTTP

HTTP+BasicAuth

HTTP+OAuth

TCP

UDP

WebSocket

Receive JSON on a WebSocket

Receive GeoJSON on a REST endpoint

WS

REST

CAP

Cursor-on-Target

GeoMessage

Instagram

NMEA

Sierra Wireless (RAP)

Trimble (TAIP)

Twitter

VMF

Esri

Gal

leryActiveMQ

IRC

Kafka

RabbitMQ

TwitterEsri

Gal

lery

*

Feature-JSON

Adapters

GeoJSON

JSON

RSS

Text

XML

Page 8: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

You can createyour own

connectors.

Sending Real-Time DataEasily disseminate notifications, alerts, and updates using an Output Connector

GeoEvent Extension

Inpu

ts

Out

puts

GeoEvent Services

Out

of t

he B

oxAdd or Update a feature

Publish Text to a UDP Socket

Send a Text Message

Send an Email

Push Text to an external TCP Socket

Push GeoJSON or JSON to an external WebSocket

Push GeoJSON or JSON to an external Website

Send an Instant Message

Send Features to a Stream Service

Write to a CSV or JSON File .csv

WS

im

HTTP

ActiveMQ

Esri

Gal

lery Cursor-on-Target

Hadoop

Kafka

MongoDB

RabbitMQ

*

Twitter

CESIUM

Part

ner

*

Page 9: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Sending Real-Time DataOutput Connector = Adapter + Transport

GeoEvent Extension

Inpu

ts

Out

puts

GeoEvent Services

Message Formatter SMTP

Connectors TransportAdapter

Feature-JSON Stream Service

Send an Email

Send Features to a Stream Service

Feature Service

Transports

File

HTTP

HTTP+BasicAuth

HTTP+OAuth

SMS

SMTP

Stream Service

TCP

UDP

WebSocket

XMPP

Cursor-on-Target

Esri

Gal

lery

CESIUM

Part

ner

*

Cache

Adapters

Feature-JSON

GeoJSON

JSON

Message Formatter

RSS

Text

*

ActiveMQ

Hadoop

IRC

Kafka

MongoDB

RabbitMQ

Esri

Gal

lery

TCP-Squirt

Twitter

Page 10: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Creating InputsConfigured using Connectors

GeoEvent Extension

National Weather Service

US Geological Survey

Live Traffic Services

Out

puts

GeoEvent ServicesStorms

Earthquakes

Traffic

Receive Text via TCP

Connectors

Inputshttp://

RSS Connector

Cre

ate

Inpu

t

JSON over REST

Cre

ate

Inpu

t

Page 11: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

ConnectorHow Does it Help

• By choosing a Connector, the user implicitly selects components from the

GeoEvent Processor that know: HOW to move data (Transport)

WHAT the data looks like (Adapter)

Example Input

TCP Transport Text Adapter

Input (Receive text from a TCP Socket)

StartStop

Byte [ ]GeoEvent

GeoEvent Services

Page 12: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

GeoEvent SDK

Page 13: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

• You can create your own custom transports, adapters and processors using the GeoEvent Software Development Kit (SDK).

Extending GeoEventSoftware Development Kit (SDK)

Your processors

Yourconnectors

Your connectors

GeoEvent Extension

Inpu

ts

Out

puts

GeoEvent Services

• A note on semantics: the SDK is used to build transports, adapters and processors. Input and output connectors are built by pairing a transport and adapter in GeoEvent Manager.

Page 14: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

- api: JavaDoc content associated with GeoEvent Processor SDK- repository: Local maven repository- samples: Sample processors (and connectors)

- GeoEvent Processor Developer Guide

Extending GeoEvent ProcessorSoftware Development Kit (SDK)

Page 15: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Transports

Page 16: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

TransportWhat makes up a Transport?

Transport Definition • Defines transport metadata and properties

Transport • Implements transport application logic

Transport Service • Provides a Transport Definition• Instantiates new Transports

Page 17: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

• Transports are given- Properties that define behavior- A “ByteListener” where bytes should be sent

• Transport is started by the server and it sends bytes to the receiver• Transport is stopped by the server and it stops sending bytes

Transport BehaviorTransports

Page 18: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Transport LifecycleTransports

Transports have a lifecycle that determines if they are producing data.

STOPPED

STOPPING

STARTED

STARTING

ERROR

STOPPED

Server calls start() Transport reads properties and starts

Server calls stop()Transport closes resources

Internal error occurs

STARTED

Page 19: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

• Outbound Transports accept arrays of bytes from the Adapter and transmit them.• Occasionally the destination for the bytes depends on content in the GeoEvent.

- The Transport has the option of “looking back” at the GeoEvent that generated the bytes, and using it to route the data.

Outbound TransportsTransports

Page 20: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Adapters

Page 21: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

AdapterWhat makes up an Adapter

Adapter • Implements adapter application logic

Adapter Definition • Defines adapter metadata and properties

Adapter Service • Provides an Adapter Definition• Instantiates new Adapters

Page 22: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

• Adapters are given- Properties that define behavior - A “GeoEventListener” where the GeoEvents should be sent

• Adapters are DATA DRIVEN- No start/stop calls- The adapter is handed a byte array and pushes any generated GeoEvents to the Listener

Adapter BehaviorAdapters

Page 23: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Custom Connectors

Page 24: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

- Use SDK to build transports or adapters- Custom connector made by pairing transport with an adapter - Both transport and adapter can be custom, or custom transport only or custom

adapter only

Custom Connectors With DevelopmentTransport + Adapter

Page 25: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

- Familiarize yourself with all out-of-box transports and adapters- Out of box connectors do not cover all unique permutations of adapter and

transport pairings- You may already have all building blocks to make your “custom” connector

Custom Connectors Without DevelopmentTransport + Adapter

Page 26: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

DEMOCustom Adapter: regexText-adapter…developed using SDK

Page 27: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

DEMOCustom Connector: XML over TCP …no development required

Page 28: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Processors

Page 29: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

ProcessorsWhat is a processor?

• Processors perform some action on each GeoEvent passed to it• Processors can be used to:

- Modify existing fields or the geometry- Add new fields- Filter- Create new GeoEvent(s)- Perform GeoFencing

GeoEvent Extension

Inpu

ts

Out

puts

GeoEvent Services

Processors

Page 30: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Applying real-time analyticsGeoEvent Processing

You can createyour own

processors.

• You can perform continuous analytics on GeoEvents as they are received using a processor.

GeoEvent Extension

Inpu

ts

Out

puts

GeoEvent Services

Buffer Creator

Convex Hull Creator

Difference Creator

Envelope Creator

Field Calculator

Field Enricher

Field Mapper

Geotagger

Incident Detector

Intersector

Projector

Simplifier

Symmetric Difference

Track Gap Detector

Field Reducer Union Creator

Out

of t

he B

oxAdd XYZ

Esri

Gal

lery

Bearing

Ellipse

Event Volume Control

Extent Enricher

Field Grouper

GeoNames Lookup

Range Fan

Reverse Geocoder

Service Area Creator

Symbol Lookup

Track Idle Detector

Unit Converter

Visibility

Motion Calculator Query Report

Page 31: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

ProcessorLifecycle Review

GeoEvent Extension

GeoEvent Service

Processor

Validation

Shutdown Initialization

Creation

Processing…

Page 32: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Anatomy of a ProcessorWhat makes up a Processor?

• Implements processor lifecycle

Configuration • Defines processor, it’s dependencies and metadata

Processor Definition • Defines processor metadata, properties and GeoEvent Definition(s)

Processor

Processor Service • Instantiates processor definition, processor and applies configuration

Page 33: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

DEMOCustom Processor: Logger

Page 34: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Maven

Page 35: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

- Maven is an Apache project for automated software building, dependency management, and testing

- Using Maven in secure environments raises some unique and potentially extremely frustrating challenges

- Internet connectivity is at the core of most Maven installations

- All of the GeoEvent SDK samples are Maven projects- Recommended you start with an existing sample

- Using the GeoEvent SDK means using Maven- It is possible set up a GeoEvent project without Maven, but it can be very very

frustrating!

For those of us in closed, secure environments…Maven

Page 36: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

- So with all this caution, why and how would I even do this?- It’s not that bad, just know these things:

• Read the Developer Guide, especially:- “Overview of the Sample Projects” - “Using Eclipse to Edit and Build Custom Components”- “Starting a New Project” - “Building and Deploying the Sample Projects” - At least one sample in “The Sample Projects”

- Continued…

For those of us in closed, secure environments…Maven

Page 37: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

• Build outside your work environment, where you have internet connectivity- Use one of the samples in the SDK to get started – one from the Developer Guide- This downloads dependencies to your local machine

- Burn your entire .m2 folder to CD- Hidden by default- C:\Users\username\.m2 on Widows- /root/.m2 on Linux

- Place .m2 in equivalent location in secure environment- Create .m2/settings.xml file and point to local repository

For those of us in closed, secure environments…Maven

Page 38: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

- Find out if your agency or department has a repository manager- Artifactory- Sonatype- Archiva

- If so, deploy the artifacts to the repository manager- Update your local /.m2/settings.xml to reference the repository manager

For those of us in closed, secure environments…In-house Maven

Page 39: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Scripting “Upstream”

Page 40: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Scripting “upstream”Alternate pattern for ingesting real-time data

• What if I don’t know Java?• What if I don’t have time to learn a new SDK?• What if I don’t want to (maybe) have to re-compile my connector at each new

GeoEvent version?

Page 41: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Scripting “upstream”Alternate pattern for ingesting real-time data

• Possible and easy to write your own app• Runs “upstream” from GeoEvent• Consumes real-time feed• Parses and transforms data• Sends to GeoEvent in easy out-of-box form, like csv

Page 42: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Scripting “upstream”CTfastrak

• GTFS = General Transit Feed Specification- Common format for public transportation schedules

• GTFS-realtime- Trip updates- Alerts- Vehicle positions

• Ctfastrak- Bus Rapid Transit system in central Connecticut- http://www.cttransit.com/about/developers/gtfsdata/

• GTFS is not native to GeoEvent- Customer had no Java developers

Page 43: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

DEMOPython for CT Transit GTFS-rthttps://github.com/Esri/public-transit-tools/tree/master/send-GTFS-rt-to-GeoEvent

Page 44: GeoEvent Extension for ArcGIS for Server: A Developer's Guide...streaming data into ArcGIS ... Kafka. MongoDB. RabbitMQ * Twitter. Partner. CESIUM * Sending Real-Time Data. ... -Maven

Recommended