We use proprietary and third party's cookies to improve your experience and our services, identifying your Internet Browsing preferences on our website; develop analytic activities and display advertising based on your preferences. If you keep browsing, you accept its use. You can get more information on our Cookie Policy
Cookies Policy
FIWARE.OpenSpecification.WebUI.GISDataProvider R5 - FIWARE Forge Wiki

FIWARE.OpenSpecification.WebUI.GISDataProvider R5

From FIWARE Forge Wiki

Jump to: navigation, search
Name FIWARE.OpenSpecification.WebUi.GISDataProvider
Chapter Advanced Web-based User Interfaces,
Catalogue-Link to Implementation GIS data provider



Within this document you find a self-contained open specification of a FIWARE generic enabler, please consult as well the FIWARE Product Vision, the website on http://www.fiware.org and similar pages in order to understand the complete context of the FIWARE platform.


Legal Notice

Please check the following Legal Notice to understand the rights to use these specifications.


"GIS (Geographic Information System) Data Provider" is a GE, which is able to serve both outdoor and indoor 3D data. The data shall be served roughly speaking in two fashions:

  1. For single user apps, which can make queries to GIS GE, to download specific a single object or a set of geolocated 3D objects (i.e. building and terrain model of a named city centre)
  2. For multi-user apps, which communicate via collaborative client platform (e.g. with Synchronization GE) and in which case this component/GE/Enabler/platform takes care of providing the 3D models for the client application.

The GIS DP GE itself is a server, which is able to process geolocated queries, an extension to it which is able to manage web-optimized 3D data and a backend database where all geolocated data is saved. Because the GIS GE needs to serve both single user client apps (browsers) and multi-user enabled virtual spaces, an API will be defined to serve fluently both of the cases. In this API is a RESTful one, and allows both the browser app as well as other platforms to use it for downloading geolocated data.

The components used in this GE are:

  • Data storage
  • GIS Data Provider
  • 3D renderer

Data storage

Central data storage is used for storing GIS related data. It need to be able to serve geolocated data filtered with spatial filters for example bounding box.

GIS Data Provider

GIS Data Provider implements following Open Geospatial Consortium (OGC) standards: Web Feature Service (WFS), Web Coverage Service (WCS) and Web Map Service (WMS). Also implementation of W3DS (Web 3D Service) is needed and its functionality is defined in "OpenGIS® Web 3D Service Interface Standard 0.4.0" -document.

3D renderer

3D renderer need to able to render 3D objects in a web browser.

The project outputs

  • Documentation how to set up GIS DP GE environment
    • Guidance how to import 3D GIS data to PostGIS
    • How to properly configure GeoServer
    • How client application connects to GeoServer and can acquire 3D geospatial data
  • Modified GeoServer W3DS module with XML3D and octet-stream output formats
  • Implementation of the example web client which acquires 3D geospatial data

Target audience

Target audience is entities who want to present their own 3D geospatial data in web browser. Entities can be companies or individual persons. This GE presents whole visual pipeline how this can be achieved. Guides are provided how 3D geospatial data can be created & stored to database and how visual pipeline is configured so that individual services run properly.

Example Scenarios

The following single-user scenario describes a workflow where 3D GIS data is shown in the web browser.

  • The client (web browser) sends a RESTful query to the 3D GIS Data provider to get 3D GIS data to be shown in the web browser. Needed parameters are sent, e.g. bounding box is defined to specify what geocoordinates the data client wants to display.
  • The 3D GIS Data provider handles the client query and fetches 3D objects from the database (data storage) based on the bounding box area. There is 2 options to get a 3D object:
    • 3D object vertex definitions can be stored directly in the database or
    • The database contains external references to where the actual 3D model is stored.
  • Either the 3D object definition or the reference to the definition file is returned to the 3D GIS Data provider.
  • When the database query is done, the 3D GIS Data provider will create an XML3D scene or a single 3D object based on the information it got from data storage.

In the multi-user scenario multiple users can be located in the same virtual world via avatars. A users's avatar location is sent to the front-end server (Synchronization GE), where it is synchronized to other clients. Following an example workflow of such a multi-user scenario:

  • A user opens the virtual-world client (3D UI GE), which then connects to the GIS database to get 3D models.
    • The virtual-world client (3D UI GE) gets the end users location in the 3D world.
    • The users location is send to the front-end server (Synchronization GE), which is responsible to keep all persons locations in sync in their clients.
  • The virtual world server creates a 3D virtual world with data received from the GIS database.
  • When the user moves in the virtual world, the users avatar location is updated in the front-end server, which then passes changed location to the other users clients.

Connections to Results of Other MiWi Projects

  • FIWARE.OpenSpecification.MiWi.POIDataProvider
    • POI data provider is capable to store 3D object reference information. GIS client can utilize this information to acquire externally stored 3D models and attach them to correct location in 3D GIS presentation. Also other relevant metadata can be read from POI and inserted to 3D GIS presentation.
  • FIWARE.OpenSpecification.MiWi.3D-UI
    • 3D-UI is used in the reference web client for rendering received 3D geospatial data from GIS DP GE to visual presentation of the terrain.
  • FIWARE.OpenSpecification.MiWi.Synchronization
    • Synchronization GE enables possibility to affect in real-time 3D object state/content. This can be used in example for moving 3D object in the virtual world.

Basic Concepts

  • 3D object rendering to web browser with XML3D engine.
  • Injection of XML3D object to existing web page.
  • Storing 3D data definition to PostGIS and linking it with spatial information. This data can be included to 3D presentation with correct spatial information.
  • Using references to external locations to get 3D model definition file and using it.
  • Acquiring 3D GIS data only need basis in order to save network bandwidth. When GIS data is queried from database bounding box is given as one parameter. This defines area where stored GIS objects searching is narrowed.

Generic Architecture

Figure GDP-1 presents generic architecture for GIS Data Provider GE. Architecture modules are replaced with proposal for the used components. Main interactions between components are displayed in the picture. Front-end server is not part of the GIS GE delivery.

Figure GDP-1: Generic architecture of GIS Data provider GE

Main Interactions

Modules and Interfaces

Figure GDP-2 presents basic flow how client queries 3D GIS data and displays it in the browser. Communication entities are:

  • GIS client
  • 3D-UI-XML3D (3D Renderer)
  • GeoServer (GIS Data provider)
  • W3DS module (GIS Data provider module)
  • PostgreSQL (Data storage)

GIS client is responsible to create html web page which contains XML3D content. Flow starts from the client (end user) web browser, which sends query for displaying 3D GIS data inside defined bounding box. GeoServer receives query and responds with GeoServer W3DS capabilities. GIS client parses W3DS capability information and creates GetScene query based on the information. GetScene query is sent to GeoServer. Query is handled by W3DS module, which fetches 3D GIS data from PostgreSQL database and creates XML3D content based on the fetched data. End result is generated XML3D scene which is sent back to the GIS client where XML3D engine handles rendering of the XML3D content.

Figure GDP-2 - Sequence diagram for XML3D data fetching

Basic Design Principles

Basic design principle is to keep existing components untouched as much it is possible. Existing basic functionality in GeoServer and PostgreSQL is in the state that it can be used as basis for development. Target is to leave these components functionality as it currently is.

Output formats

GIS Data Provider GE supports 3 output formats for the terrain data: XML3D model, XML3D in xml file and octet-stream -formats.


When XML3D models output format is used, 3D objects are returned as single objects and can be directly be added to DOM tree.


When data is requested in XML format returned file contains 3D models defined as assets and those models can be referenced outside of DOM tree. This is more efficient way to use 3D models.


Alternative format to request 3D geospatial data from the GeoServer is octet-stream. Data in the octet-stream is stored to the byte array, only elevation data is included to the well defined grid form. This means that 3D visual presentations needs to be separately created in a client when octet-stream response format is used.

Detailed Specifications

GIS Data Provider API is documented with Apiary tool and documentation with mock up server is available at: http://docs.gisdataprovider.apiary.io/

Re-utilised Technologies/Specifications

  1. W3DS specification draft The draft candidate specification for OpenGIS® Web 3D Service
  2. WMS specification The OGC Web Map Service (WMS) specification defines an HTTP interface for requesting georeferenced map images from a server.
  3. PostgreSQL PostgreSQL is an open source object-relational database system.
  4. PostGIS Spatial and Geographic objects for PostgreSQL.
  5. GeoServer GeoServer is an open source software server written in Java that allows users to share and edit geospatial data.
  6. GeoTools GeoTools is an open source Java library that provides tools for geospatial data.

Terms and definitions

This section comprises a summary of terms and definitions introduced during the previous sections. It intends to establish a vocabulary that will be help to carry out discussions internally and with third parties (e.g., Use Case projects in the EU FP7 Future Internet PPP). For a summary of terms and definitions managed at overall FI-WARE level, please refer to FIWARE Global Terms and Definitions

Annotations refer to non-functional descriptions that are added to declaration of native types, to IDL interface definition, or through global annotations at deployment time. The can be used to express security requirements (e.g. "this string is a password and should be handled according the security policy defined for password"), QoS parameters (e.g. max. latency), or others.
AR → Augmented Reality
Augmented Reality (AR)
Augmented Reality (AR) refers to the real-time enhancement of images of the real world with additional information. This can reach from the rough placement of 2D labels in the image to the perfectly registered display of virtual objects in a scene that are photo-realistically rendered in the context of the real scene (e.g. with respect to lighting and camera noise).
IDL → Interface Definition Language
Interface Definition Language
Interface Definition Language refers to the specification of interfaces or services. They contain the description of types and function interfaces that use these types for input and output parameters as well as return types. Different types of IDL are being used including CORBA IDL, Thrift IDL, Web Service Description Language (WSDL, for Web Services using SOAP), Web Application Description Language (WADL, for RESTful services), and others.
Middleware is a software library that (ideally) handles all network related functionality for an application. This includes the setup of connection between peers, transformation of user data into a common network format and back, handling of security and QoS requirements.
PoI → Point of Interest
Point of Interest (PoI)
Point of Interest refers to the description of a certain point or 2D/3D region in space. It defines its location, attaches meta data to it, and defines a coordinate system relative to which additional coordinate systems, AR marker, or 3D objects can be placed.
Quality of Service (QoS)
Quality of Service refers to property of a communication channel that are non-functional, such a robustness, guaranteed bandwidth, maximum latency, jitter, and many more.
Real-Virtual Interaction
Real-Virtual Interaction refers to Augmented Reality setup that additionally allow users to interact with real-world objects through virtual proxies in the scene that monitor and visualize the state in the real-world and that can use services to change the state of the real world (e.g. switch lights on an off via a virtual button the the 3D scene).
A Scene refers to a collection of objects, which are be identified by type (e.g. a 3D mesh object, a physics simulation rigid body, or a script object.) These objects contain typed and named data values (composed of basic types such as integers, floating point numbers and strings) which are referred to as attributes. Scene objects can form a hierarchic (parent-child) structure. A HTML DOM document is one way to represent and store a scene.
Security is a property of an IT system that ensures confidentiality, integrity, and availability of data within the system or during communication over networks. In the context of middleware, it refers to the ability of the middleware to guarantee such properties for the communication channel according to suitably expressed requirements needed and guarantees offer by an application.
Security Policy
Security Policy refers to rules that need to be fulfilled before a network connection is established or for data to be transferred. It can for example express statements about the identity of communication partners, properties assigned to them, the confidentiality measures to be applied to data elements of a communication channel, and others.
Synchronization is the act of transmitting over a network protocol the changes in a scene to participants so that they share a common, real-time perception of the scene. This is crucial to implementing multi-user virtual worlds.
Type Description
Type Description in the context of the AMi middleware refers to the internal description of native data types or the interfaces described by an IDL. It contains data such as the name of a variable, its data type, the hierarchical relations between types (e.g. structs and arrays), its memory offset and alignment within another data type, and others. Type Description are used to generate the mapping of native data types to the data that needs to be transmitted by the middleware.
Virtual Character
Virtual Character is a 3D object, typically composed of triangle mesh geometry, that can be moved and animated and can represent a user's presence (avatar) in a virtual world. Typically supported forms of animation include skeletal animation (where a hierarchy of "bones" or "joints" controls the deformation of the triangle mesh object) and vertex morph animation, where the vertices of the triangle mesh are directly manipulated. Virtual character systems may support composing the character from several mesh parts, for example separate upper body, lower body and head parts, to allow better customization possibilities.
WebGL → (Web Graphics Library) is a JavaScript API for rendering 3D and 2D computer graphics in web browser.
Personal tools
Create a book