Kamis, 29 Desember 2011

Robust Clustering Solution for GeoServer

Dear All,
in this post we'd like to introduce some work that we have performed in order to provide robust support support for clustered GeoServer deployments with an emphasis on publishing new layers in real-time.

As you might know there are various approaches with GeoServer that can be used to implement a clustered deployment, based on different mixes of data directory sharing plus configuration reload. However, these techniques have intrinsic limitations therefore we decided to create a specific GeoServer Clustering Extension in order to overcome them. It is worth to point out that what we are going to describe is designed to work with GeoServer 2.1 stable series.

In the picture below our approach is shown. We propose a robust Master/Slave approach which leverages on a Message Oriented Middleware (MOM) where:
  1. The Masters (yes, we can have more than one, read on...) receive changes to the internal configuration, persiste them on their own data directory but also forward them to the Slaves via the MOM
  2. The Slaves do not accept changes to their configuration from eithe REST or the User Interface, but are configured to inject configuration changes disseminated by the Master(s) via the MOM
  3. The MOM is used to make the Master and the Slave exhange messages in a durable fashion
  4. Each Slave has its own data directory which it is responsible for keeping it aligned with the Master's one. In case a Slave goes down when it goes up again he might receive a bunch of messages to align its configuration to the Master's one.
  5. A Node can be both Master and Slave at the same time, this means that we don't have a single poinf of failure, the Master itself



Improved Clustering in Action

In the following we provide a few additional technical details on our solution, describing a deployment which we use for our tests (as such, it is designed to show every possible combination as opposed to be a best practice for deploy). We will refer to the following picture.






This deployment is composed by:
  • A pure Master GeoServer(s), this instance can only send events to the topic.It cannot act as a slave
  • A set of Geoserver which can work as both Master and Slave. These instances can send and receive messages to/from the topic. They can work as Masters (sending message to other subscribers) as well as Slaves (these instances are also subscribers of the topic).
  • A set of pure Slaves GeoServer instances whic can only receive messages from the topic.
  • A set of MOM brokers so that each GeoServerinstance is configured with a set of available brokers (failover). Each broker use the shared DB as persistence. Doing so if a broker fails for some reason, messages can still be written and read from the shared database.
We are now going to illustrate, step by step, how to publish a layer from a GeoTiff file using the GeoServer User Interface of the Pure Master instance. The resulting layer will be published on all the active GeoServers.

Manually create the GeoTiff store using the User Interface:




Publish the layer





Click save and check results on the clients




Now check the result using the LayerPreview:



As expected using the pure Master to publish the GeoTiff file, the resulting layer will be published automatically on the salve instances with no intervention. There is one thing to notice, we are not moving data around but only their configuration (styles included) since we are assuming that all instances sees the same resources with the same absolute paths, which is common in distributed and cluestered set ups where resources are shared among multiple servers, like for example network storage.


Conclusions
If you are responsible for administering a a series of GeoServer instances and/or you are publishing lots of data in real-time then this extension is a perfect fit for your organization.

In case you are interested in test-driving this extension in your own set-up, you might want to know that we are going to provide this extension free of charge to clients who will subscribe to our  GeoServer Professional Services for the 2012 as well as to our partners. Contact us if you are interested!

Regards,
the GeoSolutions Team.


Senin, 05 Desember 2011

Job offer @ GeoSolutions



GeoSolutions is looking for talented software engineers to fill a couple of positions which would mainly involve designing and implementing web-based geospatial applications. Qualifications are as follows:
  • Working knowledge of web 2.0 UI  frameworks like GWT, Ext-GWT, JQuery,  Ext-JS
  • Working knowledge of Java (JEE and JSE)
  • Working knowledge of GeoServer  and OpenLayers is a plus
  • Knowledge of web development with Python is a plus
  • At least 1 year of experience 
  • Being fluent in English, both written and spoken
We offer a variety of contracts but, please, notice that our intention is to establish a long term relationship, therefore this is not a position for freelance consultants.

Working remotely is an option, although we will give priority to candidate closer to our office.

Please send a detailed resume together with a letter of presentation at jobs_at_geo-solutions.it.

The GeoSolutions team,

Minggu, 04 Desember 2011

GeoSolutions porta il GeoServer a Valenzia

Si è svolto con successo il workshop su GeoServer organizzato da GeoSolutions durante le settime giornate internazionali gvSIG a Valenzia. Sono stati molti i partecipanti alle giornate che hanno deciso di dedicare 2 ore alla scoperta di GeoServer.


Il workshop si è svolto in inglese durante una manifestazione spagnola dove la maggior parte degli interventi avveniva nella lingua nazionale, ma questo non ha fatto desistere i partecipanti che hanno mostrato al contrario un grande interesse.  


Un ringraziamento alla gvSIG association per il sostegno al software open source manifestato attraverso l'organizzazione di un evento con lo scopo di condividere esperienze a livello internazionale e per il supporto dato a GeoSolutions nell'organizzazione del workshop.

The GeoSolutions team.

Rabu, 30 November 2011

GeoServer and GeoSolutions @ gvSIG Days 2011

GeoSolutions will attend the 5th edition of the gvSIG Conference, organized by the Regional Ministry of Infrastructure and Transport (CIT) from December 2nd until December 4th at the Feria Valencia Convention and Exhibition Center.  


Ing. Simone Giannecchini will provide an introductive workshop on GeoServer, therefore make sure you take note of the exact time on the conference program and you make room in your schedule for attending the event.
Check this link for more details.

See you in Valencia!

The GeoSolutions team.


Senin, 28 November 2011

Serving Meteo data with GeoServer, GeoBatch and GeoNetwork: the LaMMA use case


Dear All,
in this post I'd like to talk about the work we have done for the LaMMA consortium.

The Problem
The purpose of this project is to build a complete Spatial Data Infrastructure (SDI) to provide a spatio-temporal raster data processing, publishing, and interactive visualisation facility. This platform is candidate to substitute the current one which was already built leveraging on Open Source software but which was rather static and contained no OGC services.

The data that will be ingested into the system is generated by an existing processing infrastructure which produces a set of different MetOc models. Our goal is to manage the geophysical parameter (or variables) produced by the following models:
  • ARW ECM
    • 3 Km resolution
    • 9 Km resolution
  • GFS
    • 50 Km resolution
The ingestion is started every day at noon and midnight, hence there are 2 run-times a day for each model at a certain resolution and the produced data contains different forecast times.
- ARW ECM (3 days with interval of 1h)
- GFS (8 days with interval of 6h)
 The data is produced in GriB format (version 1).

Our Solution
Leveraging on the OpenSDI suite and specifically on the following components:
as well as some other well known Open Source project such as (Apache Tomcat, Apache Http server, Postgres) we provided an extensible and standard based platform to automatically ingest and publish data.

The infrastructure we have put together is depicted in the deployment diagram below.
Deploy diagram
This infrastructure has been designed from the beginning with the goal of being scalable in terms of supporting large number of external users since it is based on a GeoServer Master/Slave infrastructure where multiple slaves can be installed for higher throughput. Caching will be tackled in a successive phase.

As you can see we provided three access level for different type of users:
  • Admin can locally access to the entire infrastructure and add instances of GeoServer to the cluster to improve performances
  • Poweruser can remotely add files to ingestion and administer GeoBatch via Basic Autentication
  • User can look at ingested data accessing one of the GeoServer slave machines via Apache httpd proxy server. The load of these accesses is distributed between all available slaves.
As mentioned above, the main building blocks are as follows:
  • GeoServer for providing WMS, WCS and WFS services with support for the TIME and Elevation dimensions
  • GeoNetwork, for publishing metadata for all data with specific customizations for managing the TIME dimensions in the dataset 
  • GeoBatch, to perform preprocessing and ingestion in near real time of data and related metadata with minimal human intervention

Using GeoBatch for ingestion and data preprocessing
In the LaMMA project the GeoBatch framework is used to preprocess and ingest the incoming GriB files as well as to handle data removal based on a sliding temporal window (currently set to 7 days) since it was a design decision to keep around for live serving on the last 7 days of forecasts.

Below you can find a diagram depicting one of the automatic ingestion flow we created for the LaMMA project using the GeoBatch framework.

GeoBatch ingestion flow example

The various building blocks comprising this flow are explained here below:
  1. NetCDF2GeotiffAction reads the incoming GRIB file and produces a proper set of Geotiff perfoming on-the- fly tiling, pyramiding and unit conversions.Each GeoTiff represent a 2D slice out of one of the original 4D cubes contained in the source GriB file
  2. ImageMosaicAction uses the GeoServer Manager library to create the ImageMosaic store and layer  in the GeoServer Master. The created ImageMosaic contains proper configuration to parse Time and Elevation dimensions' values from the GeoTiff in order to create 4D layers in GeoServer.
  3. XstreamAction takes an XML file and deserializes it to a Java object this is passed to the next action.
  4. FreeMarkerAction produces a proper xml metadata file for publishing in GeoNetwork, using a pre-cooked template and the passed data model.
  5. GeoNetworkAction published the metadata on the target GeoNetwork 
  6. ReloadAction forces a reload on all the GeoServer slaves in order to pick up the changes done by the master instance
This type of flow, (with a slight different set up) is used to convert and publish the 3 different incoming models.

The other type of flow is the remove flow which is a composed by the following building blocks:
  1. ScriptingAction executes a remove.groovy script which will:
    • calculate the oldest time to retain
    • select older files to be removes
    • search and remove matching metadata from the GeoNetwork
    • remove collected layers and stores  from the GeoServer Master catalog
    • delete permanently succesfully removed files
  2. ReloadAction forces a reload on all the GeoServer Slave.

Using GeoNetwork for metadata management
We have customized the metadata indexing (thanks Lucene!) in GeoNetwork in order to be able to index meteorological model execution in terms of their run time as well as in term of their forecast times.
Generally speaking the data we are dealing with is driven by a meterological model which produces daily a certain number of geophysical parameters with temporal validity that spans for certain number of time instants (forecast times) in the future. In GeoNetwork we are currently creating a new metadata object for each geophysical parameter (e.g. Temperature) of a new model run; this metadata object contains multiple links to WMS requests for each forecast time, leveraging the TIME dimension in GeoServer (see picture below). Moreover the forecast times themselves are indexed so that advanced searches can be done on them.



If you have questions about the work described in this post or if you want to know more about our services could help your organization to reach its goals, do not hesitate to contact us.


The GeoSolutions team,

Selasa, 22 November 2011

GeoServer e GeoSolutions al GFOSS Day 2011

GeoSolutions sarà presente alla conferenza GFOSS DAY 2011 che si terrà a Foggia il 24 e 25 Novembre presso la Università degli Studi.



Oltre ad essere sponsor Silver della manifestazione, GeoSolutions sarà presente con un workshop gratuito introduttivo ed una presentazione su GeoServer che si terranno entrambi nella giornata del 25 (si veda per dettagli il programma della manifestazione).

Quindi, se volete essere aggiornati sugli sviluppi del GeoServer o se volete essere introdotti al suo utilizzo da uno dei suoi creatori non vi resta che farci visita a Foggia!

The GeoSolutions team.


Kamis, 10 November 2011

Animate your maps with GeoServer Animator Tool

In this blog post we'd like to introduce you to a new GeoServer feature, the WMS animator.
The animator follows in the footsteps of the WMS reflector, allowing a client to build an animated map with a relatively compact syntax.

An animation is built as a set of frames, and each frame is a separate WMS GetMap call, similar to the others in the set, but with a different value in one of the parameters.
The animator allows you to specify the parameter that will vary and its value via the aparam and avalues request parameter.

For example, let's say we have a dataset with time support enabled, in particular a small set of blumarble images for the different months in the year. A call to get a continuously animated progression would look like:


The aparam in this request is the WMS time parameter, while the avalues list a number of possible times, in particular a few months of the year. Also notice the output format, asking for an animated GIF that loops continously. The result is as follows:


Time and elevation are obviously prime candidates to drive an animation, but in fact every WMS request parameter can be used to drive the animation.
For example, we could change the bounding box and have the map move:




The actual reason the animator was developed was to allow building animation of tuna catches by ocean area over different types of aggregation factors, that are passed down to a parametrized SQL view building all the little squares you see in the map.
Here is an example showing the evolution of catches of a particular tuna spieces over the years:

http://localhost:8080/geoserver/wms/animate?layers=UN_CONTINENT,GRID_G5,TUNA_YEARLY_CATCHES,FAO_MAJOR,UN_CONTINENT&
format=image/gif;subtype=animated&aparam=viewparams:YR_TA&avalues=1990,1991,1992,1993,1994,1995&
width=512&format_options=layout:message;gif_loop_continuosly:true&viewparams=CD_GEAR:801\,802\,803;FIC_ITEM:2496\,3296\,3305\,2498;QTR_TA:1\,2\,3\,4;OP:sum




As you can see some of the maps include the indication of the year in the lower left. This is a recent addition to the animator framework, it uses a text WMS decoration to embed in the image the current avalue. See the animator documentation for details on how this can be achieved.

At the time of writing the only possible output format is animated GIF, but other formats could be written and plugged in, for example AVI or Flash, and transition effects could be added too.
Interested? Let us know!

The GeoSolutions team,

GeoBatch Public Demo Available!

Dear All,
in this post we'd like to show the first very simple demo of the GeoBatch framework. We have set up a demo instance on our demo server side by side with a GeoServer instance so that user can perform:

  1. Upload via FTP, preprocessing and ingestion in GeoServer in real-time of GeoTiff files
  2. Upload via FTP, preprocessing and ingestion in GeoServer in real-time of Shapefiles

Additional details on how to play with the demo can be found in the slides here below:


We are going to update this demo frequently with new features. Just to mention some of them, in next version we will also add automatic metadata indexing in GeoNetwork. So, if you are interested, please check the GeoBatch site regularly and subscribe to the GeoBatch users' mailing list here.

If you have questions about the work described in this post or if you want to know more about our services could help your organization to reach its goals, do not hesitate to contact us.

The GeoSolutions team,

Senin, 07 November 2011

GeoServer e GeoSolutions ad ASITA 2011

GeoSolutions sarà presente alla 15esima conferenza nazionale ASITA 2011 che si terrà alla Reggia di Colorno, Parma nei giorni dal 15 al 18 Novembre 2011.
In particolare il giorno 18 Novembre l'Ing. Simone Giannecchini, uno dei fondatori di GeoSolutions e membro permanente del comitato di controllo di vari progetti Open Source,  discuterà delle potenzialità del prodotto GeoServer durante la Sessione 31, "Cartografia: gestione, aggiornamento, visualizzazione".


Ci vediamo ad ASITA!

The GeoSolutions team.


Jumat, 04 November 2011

GeoSolutions è sponsor della conferenza GFOSS DAY 2011


GeoSolutions è orgogliosa di annunciare il suo supporto come silver sponsor al GFOSS DAY 2011 che si terrà a Foggia nei giorni di 24 e 25 Novembre 2011.


The GeoSolutions team.


Kamis, 03 November 2011

ImageI/O-Ext 1.1.2 Released



Dear all,
GeoSolutions is pleased to announce the ImageI/O-Ext 1.1.2 release. With respect to 1.1.1, it adds a few bug fixes as well as improvements for the Tiff reader as well as on how we manage file memory mapping to provide a nice performance boost on remotely mounted file systems, e.g. NFS.
Release artifacts have been deployed on the GeoSolutions maven repository, as well as on the OSGEO one.

It is worth to notice that we are right now discussing with the GeoServer community for switching the GeoServer 2.1.x branch to this new ImageI/O-Ext release (the unstable trunk version already leverages on this newest ImageI/O-Ext) .

If you have questions about ImageI/O-Ext or if you want to know more about our services could help your organization to reach its goals, do not hesitate to contact us.

Regards,
the GeoSolutions Team

Kamis, 27 Oktober 2011

Time and elevation support in GeoServer


Busy times in GeoSolutions and in GeoServer land! We just finished adding support for WMS time and elevation in GeoServer WMS on trunk, with plans to backport it to the stable 2.1.x series after the 2.1.1 release.

Configuring and using dimensions is performed, as tradition, by means an easy to use GUI. Just take a layer that has time information (or elevation), like this "storm tracks" layer:


Then switch to the new Dimensions tab and configure time support as follows:

Submit and voilà, you have your time enabled layer. Looking at the capabilities you can see GeoServer is automatically extracting the list of values for you (but you could also ask it to return just an interval, for brevity):



If you now ask GeoServer for the WMS layer you'll get only one track, the last one, also known as the current data: 
But then again, you can ask for a month worth of data adding &TIME=2004-08-03/2004-09-03 to your request:
If you really want you also cherry pick the times you want to see, for example with &TIME=2000-08-03T16:00:00.000Z,2000-08-13T16:00:00.000Z,2000-08-17T10:00:00.000Z,2000-08-19T16:00:00.000Z:

For now we're added time and elevation support, but we're getting started with raster data and we should be landing that support soon too.

Interested in multidimensional data management advances? Let us know!

The GeoSolutions team,

Rabu, 12 Oktober 2011

GeoServer News: Hiding layers from the capabilities document

Hi all,
in this blog post we would like to talk about a new functionality that we has just introduced in GeoServer, the layer "advertised" flag.

As you know, ignoring security settings for the moment, all enabled layers configured in GeoServer are made available though all the OGC services for which they make sense: vector layers are published automatically to WMS and WFS, raster layers to WMS and WCS.

This is a fine default behavior, but in some cases one would like that the layer was there, but without making the layer known to the general public. Tipical use cases:
  • you want to expose a set of layers as a layer group, but you don't want to publish the layers separately
  • some application needs to setup a temporary layer, maybe the result of some computation, without having the whole world know about it
  • the administrator wants a layer to be available for testing, but not have the whole world hit it yet (maybe because the layer configuration/styling is not done)
Up until GeoServer 2.1.1 the above was only partially possible by making the layer available only to certain users via the security setup, but in 2.1.2 it got just a lot easier, there is a new publishing flag, "advertised", that you can uncheck to hide the layer:

Once un-ckecked the layer won't appear anymore into the capabilities documents, nor in the layer preview table, but will still be available for all other service requests.

There are other things that could be done to improve layer management, such as attribute renaming, easier association with styles, publishing of a layer only towards certain OGC services and the like. Interested in getting any of that happen today? Let us know!



Regards,
the GeoSolutions Team.

Senin, 26 September 2011

GeoServer Aggregating DataStore: Aggregate and republish from several data sources

When it comes to publishing data with GeoServer the most common case is to publish layers that one owns and that can store and serve fully from the local premises.

There are however cases in which a dataset with a uniform structure is handled by several different entities, each one making it available to others, but with no unified view of the data itself.
This might be due to geographical distribution of the stakeholders, separate ownerships, administrative subdivisions: a typical case is a set of local public administrations, all publishing the same, or similar, data set in a independent way.

For this use case we have developed the aggregating data store, a GeoTools store in which features pertaining to the same layer/feature type are coming from several different other stores: the store unifies all of them in a centralized view that can be accessed as a seamless whole.

The store requires the source types to be very similar, but not necessarily identical:
  • they can have a different layer names
  • may lack some attributes, or have some that are not shared with others
  • may not have a perfect type match (e.g., the same attribute can be an integer in one store and a string in another, a conversion to unify the two will be attempted).
A "default" store is appointed that defines the structure of the whole, and every other feature is remapped onto that structure.
Each data access is performed in parallel in order to minimize data loading time, and the store can be configured to tolerate the occasional disappearance of one of the data sources.

This new store is now made available as a GeoServer community plugin for the trunk series, and can be downloaded from the nightly builds repository along with a GeoServer trunk build that allows to use it.

We are still not managing attribute renaming, though it would be quite a nice feature to add. If you are interested in the topic contact us and let's see how we can work together to improve the store.

Regards,
the GeoSolutions Team.

Senin, 19 September 2011

GWT-OpenLayers release 0.6

A lot of improvements and some initial alignment with OpenLayers 2.11 have been made on the fresh release of GWT-OpenLayers library.

Actually the developers are also evaluating a brand new refactored showcase and a full alignment with OpenLayers 2.11.

The releases are available for the download here:


On release 0.6 the major improvements are:
  • Implementation of OL client Icon
  • The possibility of removing layers from the map and changing the z-level
  • New zoom and pan controls for the map
  • Implementation of OL Dot Per Inch
  • Implementation of OL Styling
  • Implementation of OL Graticule
  • Improvements to OL Controls
  • Some nice Vectorial features stuff, along with measurements and geometric operations
  • Navigation History
  • Snapping
  • GML improvements
  • WMS Operations improvements
  • Markers
  • Google, VirtualEarth, Bing and OSM Layers improvements
  • TileManagerService Layers
  • PopUps improvements
  • Protocols improvements
  • A new showcase and a lot of examples
Alessio Fabiani has taken care of the 0.6 release as an active committer and administrator of the project.

Regards,
the GeoSolutions Team.

Rabu, 14 September 2011

GeoSolutions Talks @ FOSS4G2011: the slides

Dear All, here we go with the slides of our presentations at FOSS4G, for those that could not attend, and for everybody else that wants to get all the details of the presentations as soon as possible on their computer.
GeoServer GeoTools
The slides pack an incredible amount of ready to use information for all GeoServer and GeoTools users, do not miss them :-)

If you liked the styling SLD presentation we also setup a GeoServer publishing the example data set:
Any topic that you want to explore in more details? The presentations wet your appetite and you crave for more content? Let us know!