Hootenanny:
- A gathering at which folksingers entertain often with the audience joining in
Conflation:
- Fancy word for merge
Hootenanny is an open source conflation tool developed with machine learning techniques to facilitate automated and semi-automated conflation of critical Foundation GEOINT features in the topographic domain. In short, it merges multiple maps into a single seamless map.
Hootenanny conflation occurs at the dataset level, where the user’s workflow determines the best reference dataset, source content, geometry, and attributes to transfer to the output map. Hootenanny's internal processing leverages the key value pair structure of OpenStreetMap (OSM) for improved utility and applicability to broader user groups. Normalized attributes can be used to aid in feature matching, and OSM’s free tagging system allows the map to include an unlimited number of attributes describing each feature.
Hootenanny is developed under the open source General Public License (GPL) and maintained on the National Geospatial-Intelligence Agency’s (NGA) GitHub site.
- Automatically combine geospatial features for decision making
- Allow for reviewing and manually resolving features which cannot be automatically matched with sufficient certainty
- Maintain geometry and attribute provenance for combined features
- Create up-to-date routable transportation networks from multiple sources
Types of Conflation
- Attribute Conflation - Conflate map A with B where only tags are transferred from B to A and few or no changes are made to A's geometry.
- Differential Conflation - Conflate map A with B where the only data added to the output from B is in areas that don't overlap with A. Optionally, you can configure to overwrite tags in A from B even when there is overlap or to output the unmodified map A data as well.
- Horizontal Conflation (aka Cookie Cutter Conflation) - Define a specific region in map A that should not be modified and stitch in data from map B around it.
- Reference Conflation (default) - Conflate the best geometry and tag parts of map B into map A, favoring map A's data.
There are a wide range of configuration options available to customize the conflation workflows.
- Area polygons
- Building polygons
- Points of Interest (POIs)
- Transportation polylines (roads and railways)
- Utility polylines (power lines)
- Waterway polylines
Additional feature types can be made conflatable via custom script by using Hootenanny's Generic Conflation capability.
- Area (Detail) - Area Conflation uses a machine learning based approach implemented with Generic Line Conflation.
- Building (Detail) - Building Conflation uses a machine learning based approach.
- POI (Detail) - POI Conflation uses a machine learning based approach implemented with Generic Point Conflation.
- POI to Polygon (Detail) - POI to Polygon Conflation uses a rules based approach.
- Power Line (Detail) - Power Line Conflation uses a machine learning based approach implemented with Generic Line Conflation.
- Railway - Railway Conflation uses a machine learning based approach implemented with Generic Line Conflation.
- Road
- 2nd Generation (aka Unifying) - This algorithm uses machine learning techniques based on manually matched training data to match roads.
- Network - This algorithm uses a graph theory based approach to match roads.
- Waterway (Detail) - Waterway Conflation uses a machine learning based approach implemented with Generic Line Conflation.
Hootenanny leverages the OSM key value pair tag concept to support translation between various data schemas and supports automated schema conversion between:
- Topographic Data Store (TDS) v6.1/v4.0
- Multi-National Geospatial Co-Production Program (MGCP)
- Geonames
- OSM
- others
Users are also able to define their own custom translations.
In addition to conflating maps together, Hootenanny can also:
- Add missing type tags to features
- Align two maps with each other
- Apply data transformation operations to a map
- Calculate the geospatial extent of a map
- Clean map data
- Compare maps with each other
- Compute bounding tiles based on node density
- Convert maps between different geodata formats
- Crop a map to a geospatial extent
- Derive large changesets between maps and apply the changesets to external OSM data stores with automatic conflict resolution
- Detect spoken languages in a map's tag data
- Explore tag data
- Filter features based on tag content and schema relationships
- Filter features by bounding box
- Gather statistics from a map
- Identify road intersections in a map
- Locate phone numbers geographically
- Perturb map data for testing purposes
- Plot node density
- Snap unconnected roads to neighboring roads
- Sort map data
- Translate feature tags using standardized or user defined schemas
- Translate feature tags to English
Hootenanny's web user interface is built upon the open source Mapbox iD Editor, which provides an intuitive and user-friendly conflation experience.
Access to Hootenanny core capabilities are exposed through a web services API for those wishing to develop their own conflation clients.
The web services use OAuth authentication.
Command line access is available and exposes additional functionalities not available from the web user interface.
Hootenanny has nodejs bindings available which expose core conflation capabilities for creating custom workflows.
- Included as a PDF with each release
- Online:
- When running the Hootenanny VM look for the PDF documentation included in 'hoot/docs'
- Instructions to launch a virtual machine
- Instructions for an RPM based installation
- FAQ
- If you have any support questions, please create an issue in this repository.
Hootenanny was developed at the National Geospatial-Intelligence Agency (NGA) in collaboration with DigitalGlobe. The government has "unlimited rights" and is releasing this software to increase the impact of government instruments by providing developers with the opportunity to take things in new directions. The software use, modification, and distribution rights are stipulated within the GNU General Public License. The GPL license is available in LICENSE.txt
All pull requests contributions to this project will be released under the GNU General Public License 3.0. Software source code previously released under an open source license and then modified by NGA staff is considered a "joint work" (see 17 USC 101); it is partially copyrighted, partially public domain, and as a whole is protected by the copyrights of the non-government authors and must be released according to the terms of the original open source license.
Licensed under the GNU General Public License v3.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.gnu.org/copyleft/gpl.html.
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Imagery provided by permission from DigitalGlobe. Users are responsible for complying with terms of use for data and imagery they use in conjunction with Hootenanny. Specifically, the must properly protect and comply with all legal, copyright, and licensing terms.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.