Jumat, 18 Februari 2011

Developers Corner: Support for TIME in GeoServer WMS

Dear All,
at GeoSolutions lately we are working on improving support for the TIME dimension in GeoServer.

While the work is still ongoing we wanted to share with you a preview of what we are doing, therefore we created the video below.



Like this feature? Interested in funding this development? Drop us a line!

The GeoSolutions team

Senin, 14 Februari 2011

A new year with GeoSolutions Enterprise Services

GeoSolutions is proud to offer four levels of enterprise support services centered on the GeoServer platform to help organizations building enterprise-class Spatial Data Infrastructure (SDI), integrating and tuning best-of-breed Open Source geospatial frameworks into what we call the OpenSDI suite.



Thanks to its extensive experience in building and supporting enterprise class geospatial infrastructures, GeoSolutions will provide your organization with an outstanding level of support through the full project lifecycle for a successful and stress-free deployment.

If your organization was refraining from adopting Open Source software in the enterprise due to lack of professional support, we are here to help. Therefore it is now time to invest on features and support rather than on software licenses.

Our Support, Your Success!


More information can be found here. You can contact us here.


The GeoSolutions team

Un nuovo anno con i Servizi di Supporto Enterprise di GeoSolutions

GeoSolutions è orgogliosa di offrire anche per il 2011 quattro piani di servizi enterprise incentrati sulla piattaforma GeoServer per aiutare i propri clienti a costruire una SDI (Spatial Data Infrastructure) di classe enterprise, attraverso l'integrazione e l'armonizzazione dei migliori framework geospaziali offerti dal mondo Open Source, la OpenSDI suite.


GeoSolutions grazie alla sua vasta esperienza nella costruzione e nel supporto di infrastrutture geospaziali di classe enterprise, fornirà alla vostra azienda uno straordinario livello di supporto durante tutto il ciclo di vita del progetto per ottenere con facilità un deployment ben riuscito!

Se la tua organizzazione era restia ad adottare soluzioni Open Source software per via della mancanza di supporto professionale, noi siamo qui per aiutarvi. E' arrivato il momento di investire in supporto e feature piuttosto che in licenze software.

Our support, Your Success!



Maggiori informazioni possono essere reperite qui. Ci potete contattare qui.

The GeoSolutions team

Kamis, 10 Februari 2011

Presentazione su GeoServer al meeting italiano degli utenti GRASS e GFOSS

GeoSolutions sarà presente domani al  XII Italian GRASS and GFOSS users meeting con una presentazione su GeoServer. Ecco di seguito l'abstract:

GeoServer è un server GeoSpaziale Open Source scritto in Java, seguendo le comuni pratiche Java 2 Enterprise, per la gestione, disseminazione e analisi di dati geospaziali. GeoServer permette di distribuire, manipolare e analizzare i dati usando i più diffusi standard OGC (WMS, WFS, WCS, WPS), senza però dimenticare estensioni specifiche per una interazione trasparente con client come Google Earth e software commerciale in genere, ne gli ormai diffusi approcci basati su protocolli REST e GeoJSON per la distribuzione semplificata di semplici dati vettoriali.Obiettivo della presentazione è fornire allo spettatore una un’esaustiva panoramica dellefunzionalità offerte da GeoServer per la creazione di Spatial Data Infrastructure interoperabili, con particolare attenzione alle nuove funzionalità introdotte in GeoServer 2.1 e all’analisi di dati spaziali con il protocollo WPS 1.0.In chiusura verrano forniti esempi d’uso in casi reali di recente implementazione con analisi statistiche su dati raster e vettoriali con considerazioni relative a scalabilità e prestazioni delle stesse.

La presentazione sara' tenuta da Andrea Aime, lead developer del GeoServer.

    Nel caso voleste seguire la presentazione in streaming video, trovate il link sulla home della conferenza. Attenzione, la presentazione si terrà alle ore 9:00.

    The GeoSolutions team.

    Jumat, 04 Februari 2011

    Developer corner: cross layer filtering coming down to GeoServer

    Ever needed to find the answer to a question involving the spatial relationship between two layers? Something like "get me all the coffe shops withing 100 meters of the subway M exits?" Or "show me all the industrial buildings in counties X, Y and Z"?

    Both of those queries require finding features in one layer, possibly with an attribute filter, and then locate all the locate all the features in another layer that have some kind of spatial relationship with the first result set.
    This is known as a spatial join and it's used to find object that do relate with each other by proximity.

    Now, GeoServer does not natively support layer joining. Up to today doing a WFS request like the above would have entailed:
    • make a first WFS GetFeature request to get the locations of subway M
    • parse the result, build a MultiPoint geometry
    • use it in a second WFS GetFeature against the commercial activities layer using a DWithin filter against the above constructed geometries

    If you are playing with a web based client that is troublesome, first there are two round trips to the server, second the web based client cannot normally deal with many points meaning it may well start consuming too much memory for practically dealing with requests that pull up large geometries (state boundaries, rivers and the like).

    Having to do the same with WMS comes with the aggravation that the filtering is likely done with CQL, but a large geometry won't simply fit within the maximum length allowed for GET requests (can be worked around with dynamic SLD o POST requests, but that adds other complications).

    Enter the new "querylayer" GeoServer module.
    The module provides filter functions that query and summarize GeoServer layers data so that the whole process can be done in a WFS single request or a single, compact CQL filter.

    Let's make a simple example using the GeoServer sample data: we want to find all bugsites inside the restricted area whose "cat" attribute values 3.
    The wfs request would be:


    Whilst a WMS request doing the same would use a CQL filter as simple as:

    INTERSECTS(the_geom, querySingle('restricted', 'the_geom','cat = 3'))

    The following map shows the result with some context:

    Want to find all the bug sites within 200 meters from any road. Here we go:


    and the CQL equivalent would be:


    DWITHIN(the_geom, collectGeometries(queryCollection('roads','the_geom','INCLUDE')), 200, meters)

    which results in the following map:



    Pretty cool eh? Naturally all roses have their thorns and this is no exception:
    • The requests, while valid, are going to work only with GeoServer, they are not portable towards other servers
    • The machinery is not actually able to do an in database join, it just loads the data in memory first and replaces the function call with the result so that intersects/dwithin can hit the database directly. It means the intermediate data is memory bound, and we actually have some admin configurable limits to make sure the requests are not loading in memory too much data (when the threshold is crossed an exception will the thrown)
    The "querylayers" module is now a GeoServer community module that can be downloaded as part of the trunk nightly builds (starting tomorrow). It is available for both GeoServer trunk and GeoServer 2.1.x, though in the latter case you'll want to add the -Dorg.geotools.filter.function.simplify=true JVM option to get the best performance out of the module (it enables a specific querying optimization that is available by default on trunk).

    We'd like to thank GeoSmart for sponsoring the development of this module, it's a pretty useful addition to the GeoServer data access arsenal.

    As said, joining support could be improved even further. Interested? Let us know!

    The GeoSolutions team


    Developers Corner: Improvements to the rendering engine on upcoming GeoServer 2.1/GeoTools 2.7

    In this installment we are going to look into the rendering speed improvements featured in the the upcoming GeoServer 2.1/GeoTools 2.7.0 release.

    We recently talked about a very significant one already: raster reprojection performance has skyrocketed, providing an overall speedup factor of four to six on the overall reprojected WMS request chain (if you want to know about the pure GeoTools reprojection operation speedup, it's more alike a hundred times faster).

    What you might not know is that the above is coupled by another speedup that we made for the WMS shootout 2010: the "direct rendering path", which makes GeoServer into a proper image server.
    What's the difference between a generic WMS server and a image server you might wonder? Well, a generic image server takes all the data sources and paints them on top of a rendering surface, applying styling as it goes. The rendering surface is commonly a blank RBG(A) image in memory on which features and rasters and combined.
    Now, the thing is, if you are starting with a raster, you already have an image: there is no need to go through the generic rendering machinery, JAI can do all the required transformations directly and more efficiently than Java2D.
    GeoServer 2.1 calls the above the "direct rendering path", and it's activated every time a WMS request contains a single raster layer: this gives another four-fold speedup at high load, and 20/50% speedup at the single user level.

    The goodies embedded in GeoServer 2.1 do not stop here, significant improvements have been done in vector data rendering as well:
    • The renderer fetches vector data and renders it in two separate threads, allowing to distribute the request load among two cores
    • Large polygons are isolines are now clipped to the rendering area before being passed down to the Java2D rasterizer, greatly improving the performance on larger isoline layers and avoiding issues with one of the oldest unresolved java2D bugs which might bring a server to his knees when a large isoline or polygon is painted with a dash array and the user starts zooming in a lot (so that only a small part of the geometry is in the viewing area)
    • A special map is setup to track of very small geometries, this helps when rendering a very large amount of small objects at a low zoom level as it avoids painting over and over in the same pixel (this trick was available on 2.0.x as well, but only on shapefiles)
    • Shapefile indexing of very large data sets has improved significantly, making for smaller, but at the same time more selective, spatial index files. If you are upgrading from 2.0.x you should remove all your .qix files and let GeoServer rebuild them to take advantage of the improvements
    We hope to setup a benchmarking session allowing us to get fresh comparisons between 2.0.2 and 2.1.0 once the release is done, possibly using the WMS 2010 shootout workload: stay tuned for more details on this one.

    Of course there is still a lot that can be done to improve rendering performance. Do you have a specific case that you want to be improved? Interested? Let us know!


    The GeoSolutions team

    Rabu, 02 Februari 2011

    GeoSolutions YouTube channel



    Hi all,
    at GeoSolutions we decided to create a YouTube channel in order to have common repository for the videos that we make sometimes to demonstrate and/or explain new functionalities for the software we develop.

    You can reach the channel here.

    Enjoy!
    The GeoSolutions team.

    Selasa, 01 Februari 2011

    Developers Corner: Improving GeoServer WMS Cascading Support

    Hi all,
    The ability to server WMS layers from a remote WMS server through a Geoserver installation (a.k.a. Cascading WMS) has been one of the latest improvements in Geoserver world in last couple of months. You can read about it more in one of our previous blog, where the basics have been explained already.

    GeoSolutions team has since been improving the existing state and introduced some new features. A few patches have been created to fix some important issues:
    • Enabling cascading layer to be included in layer groups (GEOS-4273)
    • Make GetFeatureInfo requests work again on cascading servers (GEOS-4301)
    • Make GetFeatureInfo requests work on older version of geoservers (GEOT-3383)
    • Include "image/png; mode=24bit" to the tentative transparent formats used in WMSLayer (Mapserver transparent png support - GEOT-3393)
    • Other smaller bug fixes (GEOT-3361, GEOS-4295, GEOS-4286).
    Batch import
    The main improvement GeoSolutions has been working on, it's been the possibility to perform batch import of layers from a remote WMS (GEOS-4296) through the user interface. This development allow users to try and publish all layer, or only a certain subset, all at once. After the WMS store has been configured, new link providing batch import is shown.

    Selecting batch import takes us to a new page where multiple layers can be selected and configured with a single mouse click.

    Clicking on “Import selected” button imports selected layers and prints out simple status report on imported layer. Notice that the Published Icon is update accordingly.



    We have made a video showing how to use the batch import of WMS servers into Geoserver. You can download it from here.

    Do not hesitate to try it out and stay tuned for more WMS Cascading improvements!

    The GeoSolutions team.