Skip to content

v0.2.47..v0.2.48 changeset HootenannyWebArchitecture_Intro.asciidoc

Garret Voltz edited this page Sep 27, 2019 · 1 revision
diff --git a/docs/developer/HootenannyWebArchitecture_Intro.asciidoc b/docs/developer/HootenannyWebArchitecture_Intro.asciidoc
index e20c5e9..2c4a927 100644
--- a/docs/developer/HootenannyWebArchitecture_Intro.asciidoc
+++ b/docs/developer/HootenannyWebArchitecture_Intro.asciidoc
@@ -1,9 +1,9 @@
 
 == Hootenanny Web Architecture
 
-=== Identification 
+=== Identification
 
-This document describes the _current*_ web service structure and architecture for Hootenanny.  It provides an overview of the principal software components and web services included in the software.  This document is not intended as an API guide to support integration but rather as a general reference for better understanding the web enabled environment that Hootenanny is deployed in. 
+This document describes the _current*_ web service structure and architecture for Hootenanny.  It provides an overview of the principal software components and web services included in the software.  This document is not intended as an API guide to support integration but rather as a general reference for better understanding the web enabled environment that Hootenanny is deployed in.
 
 NOTE: The document is based on the 0.2.18 release of Hootenanny from 8/21/2015.
 
@@ -13,80 +13,66 @@ Hootenanny is a suite of emerging non-proprietary tools to support fully-automat
 
 Key Hootenanny Features:
 
-* Feature matching and merging logic for both geometry and attribute information. 
-* Supports the conflation of POIs (any point such as an amenities, locality, landmark, etc…), 
-Building polygons, Transportation polylines (highways, cart tracks, trails, bridges, and tunnels), 
-and experimentally, Waterway polylines (hydrologic features such as rivers, streams, drainage, and 
+* Feature matching and merging logic for both geometry and attribute information.
+* Supports the conflation of POIs (any point such as an amenities, locality, landmark, etc…),
+Building polygons, Transportation polylines (highways, cart tracks, trails, bridges, and tunnels),
+and experimentally, Waterway polylines (hydrologic features such as rivers, streams, drainage, and
 ditches).
 * Conflate large scale data sets (10s of GB in size).
 * Flexible key value schema based on OpenStreetMap/TDS schema.
-* Service oriented architecture (SOA) that leverages OGC WFS, REST and Node.js services.
+* Service oriented architecture (SOA) that leverages REST and Node.js services.
 * Web browser client built on MapBox iD editor.
-* Support various import/export formats (OpenStreetMap, Shapefiles, ESRI FGDB, GEONAMES). 
+* Support various import/export formats (OpenStreetMap, Shapefiles, ESRI FGDB, GEONAMES).
 * Open Source Software available for download at https://github.com/ngageoint/hootenanny
 
 [[n-tier-webarch]]
 .Hootenanny N-Tier Architecture
-image::developer/images/n-tier-arch.png[]
+image::images/n-tier-arch.png[]
 
-<<n-tier-webarch>> diagrams the n-tier architecture that supports the web enabled environment for Hootenanny Conflation. The web client is a customized version of the MapBox iD Editor that has been extended to handle conflation routines using REST service end points specifically tailored to meet the NSG user requirements. It is currently the only UI that can interact with the Hootenanny Web Services and core components. Conflation input data (FGDB, Shapefile, OSM, GEONAMES) can be imported into the system using the Hootenanny ETL and Translation services accessed via the Hootenanny User Interface (UI). Conflated data can be exported in the same file formats as well as streaming via WFS from UI. The Hootenanny web services also contain REST end points but are not required to interact between the Hoot Core libraries and the RDBMS. The Hoot Core represents the algorithms and routines that handle the bulk of conflation operations. Both the Web Services and Hoot core interact with the PostgreSQL RDBMS for invoking SQL queries and updating conflated data. Hootenanny web services call node.js to interact with the Hootenanny core for translation and provide requested information to the Hootenanny UI.  
+<<n-tier-webarch>> diagrams the n-tier architecture that supports the web enabled environment for Hootenanny Conflation. The web client is a customized version of the MapBox iD Editor that has been extended to handle conflation routines using REST service end points specifically tailored to meet the NSG user requirements. It is currently the only UI that can interact with the Hootenanny Web Services and core components. Conflation input data (FGDB, Shapefile, OSM, GEONAMES) can be imported into the system using the Hootenanny ETL and Translation services accessed via the Hootenanny User Interface (UI). Conflated data can be exported in the same file formats. The Hootenanny web services also contain REST end points but are not required to interact between the Hoot Core libraries and the RDBMS. The Hoot Core represents the algorithms and routines that handle the bulk of conflation operations. Both the Web Services and Hoot core interact with the PostgreSQL RDBMS for invoking SQL queries and updating conflated data. Hootenanny web services call node.js to interact with the Hootenanny core for translation and provide requested information to the Hootenanny UI.
 
 === Document Overview
 
 The purpose of this document is two-fold:
 
 * Provide a high level diagram and overview of all software components included in the Hootenanny web enabled environment including iD, Hootenanny Services, the Postgres DB and Hootenanny Core.
-* Describe and document publicly exposed REST, XML, WFS endpoints implemented with Hootenanny.
+* Describe and document publicly exposed REST and XML endpoints implemented with Hootenanny.
 
 == Hootenanny Component Overview
 
-===  Web Enabled Architecture 
+===  Web Enabled Architecture
 
 [[HootWebEnabledArchOverview]]
-.Hootenanny Web-enabled Architecture depicting the interaction between Hoot Core, DB, Web Services and the Web Client. 
-image::developer/images/web-enabled-arch.png[]
+.Hootenanny Web-enabled Architecture depicting the interaction between Hoot Core, DB, Web Services and the Web Client.
+image::images/web-enabled-arch.png[]
 
 ==== Hootenanny Core
 
-Hootenanny is a software platform designed for expert users to perform fully automated and semi-automated conflation of two disparate data sets to create a single conflated output file. To achieve this successfully for a range of source input data types, Hootenanny relies on a core set of algorithms and functions that can be invoked using command line and web service end points. 
+Hootenanny is a software platform designed for expert users to perform fully automated and semi-automated conflation of two disparate data sets to create a single conflated output file. To achieve this successfully for a range of source input data types, Hootenanny relies on a core set of algorithms and functions that can be invoked using command line and web service end points.
 
-In terms of data management and performance, Hootenanny has many built-in mechanisms for dealing with a wide range of data types and complexities. Although system performance is generally bound to the host environment, intelligent tuning/scaling web services can be invoked to evaluate conflation tasks in terms of source data complexity and processing requirements. Additional background on core algorithms and the specifics of user interaction can be found in the Hootenanny Algorithms Guide and User Guide.  
+In terms of data management and performance, Hootenanny has many built-in mechanisms for dealing with a wide range of data types and complexities. Although system performance is generally bound to the host environment, intelligent tuning/scaling web services can be invoked to evaluate conflation tasks in terms of source data complexity and processing requirements. Additional background on core algorithms and the specifics of user interaction can be found in the Hootenanny Algorithms Guide and User Guide.
 
 ==== PostgreSQL Database
 
-Hootenanny leverages a PostgreSQL RDBMS architecture for storing, retrieving, and writing data related to any core conflation routine invoked by a given web service. The database schema used by Hootenanny is modeled on link:$$http://wiki.openstreetmap.org/wiki/API_v0.6$$[OSM APIv0.6] for storing nodes, ways, relations, and tag attribution with added modifications that enable it to be a better performant in data rich environments. Data stored in ESRI file geodatabases, shapefiles, osm, or geonames.org format are loaded into Postgres using ETL processes. Hootenanny web services can read/write directly to/from Postgres and are invoked through Hootenanny web services made by the Hootenanny UI. 
+Hootenanny leverages a PostgreSQL RDBMS architecture for storing, retrieving, and writing data related to any core conflation routine invoked by a given web service. The database schema used by Hootenanny is modeled on link:$$http://wiki.openstreetmap.org/wiki/API_v0.6$$[OSM APIv0.6] for storing nodes, ways, relations, and tag attribution with added modifications that enable it to be a better performant in data rich environments. Data stored in ESRI file geodatabases, shapefiles, osm, or geonames.org format are loaded into Postgres using ETL processes. Hootenanny web services can read/write directly to/from Postgres and are invoked through Hootenanny web services made by the Hootenanny UI.
 
 [[HootenannyDatabaseSchema]]
-.Hootenanny schema depicting as a high level database design diagram grouped into functional categories. 
-image::developer/images/hootdbschema.png[]
+.Hootenanny schema depicting as a high level database design diagram grouped into functional categories.
+image::images/hootdbschema.png[]
 
 === Hootenanny Web Services
 
-Hootenanny core functions and capabilities can be invoked using either REST, Node.js or typically in some combination.  Hootenanny Core Conflation tasks unrelated to the OSM API v0.6 include REST and Node.js services.  Hootenanny OSM Services, which consist of a subset of modified OSM API v0.6 calls contain REST and Node.js services end points.  The purpose of Node.js is to both a) interact with the Hootenanny core for handling processes such as translation and b) to provide information to the Hootenanny UI. 
+Hootenanny core functions and capabilities can be invoked using either REST, Node.js or typically in some combination.  Hootenanny Core Conflation tasks unrelated to the OSM API v0.6 include REST and Node.js services.  Hootenanny OSM Services, which consist of a subset of modified OSM API v0.6 calls contain REST and Node.js services end points.  The purpose of Node.js is to both a) interact with the Hootenanny core for handling processes such as translation and b) to provide information to the Hootenanny UI.
 
-All service calls made from the Hootenanny UI to the each of the web services are made using the REST interfaces to mimic the public OSM API. Additional web service clients can be developed using either the REST or Node.js. <<HootWebServiceChain>> provides a high level diagram of the data flow, iD Editor interface and Hootenanny web services for a typical conflation scenario. A description of each service component is provided in the <<WebServiceAppendix,Web Services Appendix>>.  
+All service calls made from the Hootenanny UI to the each of the web services are made using the REST interfaces to mimic the public OSM API. Additional web service clients can be developed using either the REST or Node.js. <<HootWebServiceChain>> provides a high level diagram of the data flow, iD Editor interface and Hootenanny web services for a typical conflation scenario. A description of each service component is provided in the <<WebServiceAppendix,Web Services Appendix>>.
 
 [[HootWebServiceChain]]
 .Hootenanny Web Service Chain
-image::developer/images/hoot-srv-chain.png[]
-
-==== Hootenanny WFS Services
-
-Hootenanny provides the ability to view conflated outputs as a Web Feature Service (WFS) post with read-only capabilities. It is implemented using deegree’s Java SDK and provides a read-only data output. The following core WFS capabilities are supported within Hootenanny.
-
-* WFS version 2.0.0 and earlier
-* Serving from PostgreSQL (8.3, 8.4, 9.0, 9.1, 9.2) with PostGIS extension (1.4, 1.5, 2.0)
-* Connections to remote OGC web services
-* KVP, XML and SOAP requests
-* GML 2/3.0/3.1/3.2 output/input (WFS)
-* GetGmlObject requests and XLinks
-* On-the-fly coordinate transformation
-* ISO 19107-compliant geometry model: Complex geometries (e.g. non-linear curves)
-* Advanced filter expression support based on XPath 1.0
+image::images/hoot-srv-chain.png[]
 
 === iD Editor
 
-Hootenanny deploys with an interactive web-based UI called iD Editor , which is a modified version of the MapBox iD Editor developed for the OpenStreetMap communities’ collaborative OSM data mapping effort . Its primary purpose here is to provide visualization and editing of source data leveraged in the conflation process and for visualization of the final conflated data outputs. It should be noted that the Hootenanny UI represents merely a customized version of the MapBox iD that has been modified to execute conflation operations and request map data via the web services described in this document. 
+Hootenanny deploys with an interactive web-based UI called iD Editor , which is a modified version of the MapBox iD Editor developed for the OpenStreetMap communities’ collaborative OSM data mapping effort . Its primary purpose here is to provide visualization and editing of source data leveraged in the conflation process and for visualization of the final conflated data outputs. It should be noted that the Hootenanny UI represents merely a customized version of the MapBox iD that has been modified to execute conflation operations and request map data via the web services described in this document.
 
 ====  Hootenanny UI Architecture and Core Data Model
 
@@ -96,7 +82,7 @@ The iD editor is developed in JavaScript and can be easily customized for variou
 
 [[HootUIGuidedownload]]
 .Accessing the Hootenanny User Interface Guide
-image::developer/images/hootiD-UI_download.png[]
+image::images/hootiD-UI_download.png[]
 
 [[WebServiceAppendix]]
 == Hootenanny Web Services Documentation
Clone this wiki locally