real-time gis: creating processors using the geoevent sdk · real-time gis: creating processors...

28
ArcGIS GeoEvent Extension for Server: Creating Processors with the SDK Ming Zhao Software Developer GeoEvent Extension [email protected] Patrick Hill Software Developer Defense Solutions p [email protected]

Upload: others

Post on 17-Oct-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

ArcGIS GeoEvent Extension for Server:Creating Processors with the SDK

Ming ZhaoSoftware DeveloperGeoEvent Extension

[email protected]

Patrick HillSoftware DeveloperDefense Solutions

[email protected]

Page 2: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

Real-Time GISIntegration & exploitation of streaming data

DesktopWeb Device

ArcGIS Server SpatiotemporalBig Data Store

• Can ingest real-time high velocity data into ArcGIS and can store it.

• Can visualize high velocity and volume data

- as an aggregation,- as discrete features,- live & historically.

• Send updates & alerts to those who need it, where they need it.

GeoEvent

Page 3: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

How do I get my real-time data into ArcGIS?Easily integrate real-time streaming data into ArcGIS using an Input Connector

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

You can createyour own

connectors.

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

enviroCar

GNIP

FAA (ASDI)

exactEarth AIS

Zonar

Valarm

Networkfleet

OSIsoft ***

*

*

CompassLDE

Page 4: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

How do I update and alert those who need it where they need it?Easily disseminate notifications, alerts, and updates using an Output Connector

You can createyour own

connectors.

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, GeoJSON, or JSON File .csv

WS

im

HTTP

ActiveMQ

Esri

Gal

lery

Cursor-on-Target

Hadoop

Kafka

MongoDB

MQTT

*

RabbitMQ

Twitter

Add a Feature to a Spatiotemporal Big Data Store

Update a feature in a Spatiotemporal Big Data Store

Page 5: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

Real-Time GISArcGIS GeoEvent Extension for Server: continuous analytics on GeoEvents as they are received

You can createyour own

processors.

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

ox

Add 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 6: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

Extending GeoEventSoftware Development Kit (SDK)

• You can create your own custom connectors and processors using the GeoEventSoftware Development Kit (SDK)

Your processors

Yourconnectors

Your connectors

GeoEvent Extension

Inpu

ts

Out

puts

GeoEvent Services

Page 7: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

Creating Processors

Page 8: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

Simple ProcessorExtract Point from Polygon Processor

Demo 1

Page 9: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

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

- GeoEvent Extension Developer Guide

Extending GeoEvent ProcessorSoftware Development Kit (SDK)

Page 10: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

Java Geometry API

• Includes Java Projection Engine

• Exposes Geometry Objects• Geometry Engine

Page 11: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

ProcessorLifecycle Review

GeoEvent Extension

GeoEvent Service

Processor

Validation

Shutdown Initialization

Creation

Processing…

Page 12: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

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 13: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

Processor Service

• Creates processor definition• Creates processor instance

• Create new Java class• Extend GeoEventProcessorServiceBase class

Page 14: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

Processor DefinitionProperties and GeoEvent Definition(s) in Code

Page 15: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

Identification1. Name2. Domain3. Version

Processor DefinitionMetadata

Page 16: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

Processor DefinitionMetadata

Description4. Label5. Description6. Contact

Information

Page 17: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

1. Creation

ProcessorLifecycle

2. Initialization3. Validation

Page 18: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

1. Creation

ProcessorLifecycle

2. Initialization3. Validation

Page 19: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

1. Creation

ProcessorLifecycle

2. Initialization3. Validation

Page 20: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

4. Processing

ProcessorLifecycle

5. Shutdown6. Service Start / Stop

Page 21: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

4. Processing

ProcessorLifecycle

5. Shutdown6. Service Start / Stop

Page 22: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

4. Processing

ProcessorLifecycle

5. Shutdown6. Service Start / Stop

Page 23: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

Processor ServiceConfiguration

• Declare processor service as a service implementing GeoEventProcessorService interface from GeoEvent Processor SDK

Page 24: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

ProcessorLifecycle

Page 25: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

Put It All TogetherExtended Track Idle Processor

Demo 2

https://https://github.com/Esri/solutions-geoevent-java/tree/master/solutions-geoevent/processors/trackidle-processor

Page 26: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

GeoEvent Extension: Creating Processors with the SDKSummary

• GeoEvent allows you to develop and deploy custom processors

• Not limitted to out-of-the-box functionality

• Can take advantage of Esri Java Geometry libraries

• Extended trackIdle Processor available on GitHub: https://https://github.com/Esri/solutions-geoevent-java/tree/master/solutions-geoevent/processors/trackidle-processor

Page 27: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

Where to learn more?Resources• To learn more, visit the ‘Get Started’ area of the GeoEvent Extension product page:

- http://links.esri.com/geoevent- Introduction- Notifications- Stream Services- RSS, HTTP, Files- REST Admin API- Clustering

• Ask questions on the GeoEvent Forum:- http://links.esri.com/geoevent-forum

Page 28: Real-Time GIS: Creating Processors using the GeoEvent SDK · Real-Time GIS: Creating Processors using the GeoEvent SDK, 2016 Esri Developer Summit--Presentation, 2016 Esri Developer

Ming ZhaoSoftware DeveloperGeoEvent Extension

[email protected]

Questions / Feedback?http://links.esri.com/geoevent

http://links.esri.com/geoevent-forum

To learn more:

Patrick HillSoftware DeveloperDefense Solutions

[email protected]