office of the under secretary of defense for intelligence defense intelligence information...
TRANSCRIPT
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
Common Map Widget API
DCGS Teams’ WeekApril, 2014
UNCLASSIFIED
UNCLASSIFIED
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
Agenda
• Background
• The API
• Current Status
• Sample of Who’s Using It
• JC2CUI Example
• How to Engage
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
Background
• What is it?– Specification for interwidget communication– Enables Map widgets and data widgets from different programs to
interoperate• Where did it come from?
– GCCS-I3, JC2CUI, DCGS-IC widget interoperability problem at CENTCOM– Expanded to many programs since
• How does it evolve?– Bi-weekly TC meeting– 175 member mailing list– Coordination with OWF
• How is it governed– Operating as Open Source project shepherded by DI2E Framework
Common Map Widget API (CMAPI)
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
Background: Why Do I Care?
• Cross-vendor interoperability– Widgets from different vendors can interoperate with any
map widget “out of the box”• Specialization
– Only a few vendors specialize on map widgets– Every one else specialize on data widgets
• Competition– Can replace one vendor’s map widget with a different one
from another vendor• Agility
– Widgets built for one use can be quickly incorporated into new workflows “on the fly”
– Compose-able capabilities 4
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
The API: Basic Approach
• Identify basic map operations• Abstract operations away from any physical map • Define channels and messages, and associate with
basic map operations (i.e., the API)• Any widget can subscribe to map channels and react
appropriately– not just a map
• Don’t tie API to any particular implementation or map renderer– e.g. Google Earth, OpenLayers
5
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
The API: Architecture View
6
GCCS-I3 Map Widget
OpenLayers Library
Map Library-Unique APIs (e.g., OpenLayers, GoogleMaps, Proprietary, etc)
Common Map Widget API – enables widgets from different programs to interoperate with map widgets from different programs
JavaScript Translation Code
Search Widget(from DCGS-IC)
Analysis Widget
(from Army)
SA Widget(from JC2CUI)
JC2CUI Map Widget
Google Earth Library JavaScript Translation Code
Army Map Widget
Google Map Library JavaScript Translation Code
Intel Widget(from GCCS-I3)
All of these widgets can interoperate with any (or all) of the map widgets on the left, due to all implementing a common API (the CMAPI)
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
– Overlays• map.overlay.create• map.overlay.remove• map.overlay.hide• map.overlay.show• map.overlay.update
– Features• map.feature.plot• map.feature.plot.url• map.feature.unplot• map.feature.hide• map.feature.show• map.feature.selected• map.feature.update
– Drag And Drop
The API: Summary
7Will expand these in next few slides
– View• map.view.zoom• map.view.center.overlay• map.view.center.feature• map.view.center.location• map.view.center.bounds• map.view.clicked
– Status• map.status.request• map.status.view• map.status.format• map.status.about
– Errors• map.error
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
The API: Actual Text
8
Plot URL Purpose: Have the map plot feature data from a Uniform Resource Locator (URL).
Channel: map.feature.plot.url
Payload: {overlayId: (optional), featureId: (required), featureName: (optional), format: (optional), url: (required), zoom: (optional)}
overlayId: The id of the overlay this feature should be loaded into. If overlay with this id already exists, new feature is merged into existing overlay; otherwise, new overlay will be created. If no overlayId is included, default overlay with id equal to sending widget's id is used. If overlay exists, it will retain its status (whether visible or hidden). If overlay is created, it will be made visible.
featureId: Unique identifier for the given feature data. Note that feature ids must be unique within a given overlay. Reusing a feature id will be considered a reload, with the original feature data being removed and replaced by the new feature data.
featureName: Name for the given feature data. Note that feature names do not have to be unique and are intended for display purposes only.
format: Data format of the given feature. If no format is specified, the format defaults to “kml.”
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
The API: Actual Text
9
Center on Location Purpose: Center the map on a particular location. The map may also be zoomed as close as
possible to the location or to a given range.
Channel: map.view.center.location
Payload: {location: {lat: (required), lon: (required)} (required), zoom: (optional)}
location: Location to be centered in map.
lat: The latitude value of the point.
lon: The longitude value of the point.
zoom: If “auto,” map will adjust to zoom in to the given location as close as possible in the user's viewable area. If a number, map will zoom to specified range in meters. If no zoom attribute is included, no zoom is performed.
Example: {"location": {"lat": 40.2205, "lon": -74.3579}, "zoom": 70250}
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
– Load kml feature data onto map
widgetEventingController.publish('map.feature.plot.url', '{ "featureId": “SAGE_PUBLIC", "url": "https://sageearth.northcom.mil/arcgisserver/public/SAGE_link.kml" }');
– Center Map on Location (pan)
widgetEventingController.publish('map.view.center.location', '{"location": {"lat": 40.2205, "lon": -74.3579}
}');
The API: in code
10
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
Current Status
• V1.2.0 available (www.cmapi.org)• V1.2.1 in process
– Expect completion mid-Summer– Focusing on user manipulation extensions
• Exploring handing off governance to Open Geospatial Consortium
• Working with GMU for non-OWF widgets (e.g., HTML5)– GMU will be at Plugfest
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
– Joint Command and Control Common User Interface (JC2CUI)– Global Command and Control System – Integrated Imagery and Intelligence (GCCS-
I3)– Distributed Common Ground System
• Army (DCGS-A)• Intelligence Community (DCGS-IC)
– Defense Intelligence Information Enterprise (DI2E) Framework– Army Tactical Mission Command – NSA (Red Bridge)– NGA (Integrated Analytic Environment (IAE), Geospatial Visualization Services
(GVS), others)– CIA (Geospatial Tools Program)– Navy C2RPC (PEO-C4I/PMW-150)– AOC-WS– US Coast Guard
12Adopted by OWF GOSS as OWF related project
Sample of Who’s Using It
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
JC2 CUI Example
13
Publish map.feature.plot
message
Receive message. Plot tracks on map
Receive message. Plot tracks on map
Receive message. Plot tracks on map
Receive message. Show tracks in grid
Publish map.feature.selected
message
Receive message. Center on selected
track
Receive message. Center on selected
track
Receive message. Center on selected
track
Publish map.feature.selected
message
Receive message. Center on selected
track
Receive message. Center on selected
track
Receive message. Scroll to selected
track
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
How To Engage
• Implement the API in your widgets– www.cmapi.org– Where widgets need to display on a map, or if you have a map widget
• Join the group – [email protected]
• Re-use existing products– Map widgets:
• Extensible Mapping Platform (EMP) • JC2CUI • Others
– CMAPI JavaScript library– CMAPI test widgets– Go to https://storefront.di2e.net/marketplace to access
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
Backups
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
16
• A Common Pattern– Widgets query for or manipulate data– Map widget displays results
• The Vision– Mix and match query widgets and map widgets from different
programs – E.g., plug and play widgets from DCGS-IC, GCCS-I3, JC2CUI at
CENTCOM
• The Problem– Map widgets are tightly coupled to query widgets– Interwidget comms (channels) unique to each program
• The Solution– Common Map Widget API
How It Came About
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
Benefits of CMAPI
• Cross-vendor interoperability– Widgets from different vendors can interoperate with any
map widget “out of the box”• Specialization
– Only a few vendors specialize on map widgets– Every one else specialize on data widgets
• Competition– Can replace one vendor’s map widget with a different one
from another vendor• Agility
– Widgets built for one use can be quickly incorporated into new workflows “on the fly”
– Compose-able capabilities 17
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
Problem Statement
• Widget-based applications often require a map widget– Interwidget APIs used to “connect” data widgets to map widget are
proprietary– Abstractions for map renderer APIs (e.g., mapstraction) are for use within a
widget, and not across widgets
• Need a vendor-agnostic API to enable interwidget communications – between any vendor’s data widget …– and any other vendor’s map widget
18
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
Browser
iFrame
iFrame
iFrame iFrameSearch &
Select sources
Map
MapInfoInter-Graph
ESRI Catalog
WFS WMSCSW
OpenMap
KMLAuto-Desk
KML
Disease distribution
Resource allocations
Doctor Reports
Select water
sources
Analyze and combine
= Not OGC
= CMAPI
= OGC
CMAPI Use Case
19
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
Background: OWF
• Widgets: web pages or apps contained in an iframe, often used to provide views of dynamic content
• Ozone: combination layout manager and messaging mechanism for hosting widgets within a Web browser. – Resembles iGoogle, – Uses Shindig - open source Google gadget (widget) container.
• Because browsers don't permit communication between iframes from different domains, Ozone also provides cross-domain-compatible pub-sub mechanism. – Enables development of Web apps composed of multiple
intercommunicating widgets.
• OWF = Ozone Widget Framework: in wide use across DoD/IC programs
20
O F F I C E O F T H E U N D E R S E C R E T A R Y O F D E F E N S E F O R I N T E L L I G E N C E
D E F E N S E I N T E L L I G E N C E I N F O R M A T I O N E N T E R P R I S E
Benefits
• Cross-program interoperability– Widgets from different programs can interoperate
with any map widget “out of the box”• Specialization
– Only a few programs build map widgets– Every one else focuses on data widgets
• Competition– Can replace a map widget with a better one