tag:blogger.com,1999:blog-51769008810579736932024-03-14T14:38:40.837+01:00GeoSolutions' BlogYour one-stop-shop for geospatial open source softwareafabianihttp://www.blogger.com/profile/14092074304386635527noreply@blogger.comBlogger194125tag:blogger.com,1999:blog-5176900881057973693.post-54202963691601820402014-02-11T16:14:00.000+01:002014-02-11T16:14:31.361+01:00GeoSolutions Enterprise Services 2014: Here comes the GeoServer Supporter Package<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcjcFoXHR71nWUOkIBQOyf6j3g2mkeUOslXVKur1apC4cboigx4fGXSCpzJc9zlfXuQjP88y2dlVER8rxcOe7LjA7M6y8E7EH6X-njW2CgYBcuCbPnF4yLPvtlxsfMijgdn81a2SfsP0uB/s1600/ok_cmyk.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcjcFoXHR71nWUOkIBQOyf6j3g2mkeUOslXVKur1apC4cboigx4fGXSCpzJc9zlfXuQjP88y2dlVER8rxcOe7LjA7M6y8E7EH6X-njW2CgYBcuCbPnF4yLPvtlxsfMijgdn81a2SfsP0uB/s640/ok_cmyk.jpg" height="640" width="449" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
<div style="text-align: justify;">
The <b><a href="http://www.geo-solutions.it/">GeoSolutions</a> Enterprises Support Services</b> offer the possibility for creating an <b>Enterprise SDI</b> based on the best <b>Open Source</b> frameworks as <a href="http://geoserver.org/display/GEOS/Welcome">GeoServer</a>, <a href="http://geonetwork-opensource.org/">GeoNetwork</a> and <a href="http://demo1.geo-solutions.it/MapStore">MapStore</a>. Our support services are available in different sizes because we care about who has small needs as well as about who has to manage complex infrastructures and needs highly specialized support.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Thanks to <a href="http://www.geo-solutions.it/">GeoSolutions</a> it is easy to meet the <b>Open Source</b> world, forget about licenses and decide the budget for the features you are looking for with the <b>support from the develope</b>rs of the software you are using!</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
We are also proud to announce a new package called <b>GeoServer Supporter Plan</b> which is very suitable for organizations looking only for priority bug fixing over <a href="http://geoserver.org/display/GEOS/Welcome">GeoServer</a>, <a href="http://geowebcache.org/">GeoWebCache</a> and the related libraries.It comes with support for the most important DBMS as well as raster formats to give your organization the possibility to prioritize bugs that are... bugging you!</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Visit the <a href="http://opensdi.geo-solutions.it/">web site </a>for more information and <a href="https://docs.google.com/spreadsheet/viewform?formkey=dFhrU1RLNXpJd3NtemVSbEJtcncxOFE6MQ">ask us to contact you</a>, we will discuss about how many users we can support with your computing resources rather than about how many licenses you should buy!</div>
<div>
<br />
The <a href="http://www.geo-solutions.it/"><b>GeoSolutions</b></a> team,<br />
<div>
<a href="http://www.geo-solutions.it/"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXpN0zERBnV5Bd3UY2dCxA5q01LyqxxND9XJthHLeRhyphenhyphenHV3SHLgfV8s-wocQMemkmKazH-2ebxl4EwZycGjfisfD6oMWFRYttd0WAaL_ZZDi5lxEQCxsnQlQ7DaKo3seuAwTaeUvraqHp/s320/800x250_eng.png" height="100" width="320" /></a></div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/01956667100896875559noreply@blogger.com1Viareggio LU, Italia43.878067478270751 10.2767232066253243.876628978270752 10.27419120662532 43.87950597827075 10.27925520662532tag:blogger.com,1999:blog-5176900881057973693.post-72032879991254808832014-02-10T10:26:00.000+01:002014-02-10T10:26:59.233+01:00Vogliamo anche l'Italia nel registro INSPIRE<div align="center">
<img src="http://aborruso.github.io/it4insp/imgs/italy_in_inspire_registry.png" /><br />
<br />
<b>Hashtag: <a href="https://tagboard.com/italy4INSPIRE" target="_blank">#italy4INSPIRE</a></b></div>
<h1>
Premessa</h1>
<b>INSPIRE </b>prevede che ogni Stato Membro fornisca almeno un endpoint nazionale per il <i>discovery </i>di metadati.<br />
<br />
Ad oggi, la maggior parte degli Stati Membri (23 su 28) ha soddisfatto questo requisito registrando il proprio riferimento nazionale nel geoportale INSPIRE: <a href="http://inspire-geoportal.ec.europa.eu/INSPIRERegistry/">http://inspire-geoportal.ec.europa.eu/INSPIRERegistry/</a><br />
<br />
In particolare, come si può vedere, alcuni paesi hanno registrato più di un <i>endpoint</i>, come l'Austria, il Belgio e la Lettonia: è infatti possibile registrarne anche più di uno per paese<br />
<br />
A differenza di ciò, l'<b>Italia non ha ancora alcun <i>endpoint </i>registrato per il servizio di <i>discovery</i></b>.<br />
<br />
Per questa registrazione è necessaria una semplice comunicazione (email) del National Contact Point INSPIRE (o di qualcuno delegato dal NCP) indirizzata a EC/EEA INSPIRE Team (<a href="mailto:env-inspire@ec.europa.eu">env-inspire@ec.europa.eu</a>) ed per conoscenza JRC (<a href="mailto:michael.lutz@jrc.ec.europa.eu">michael.lutz@jrc.ec.europa.eu</a>). <br />
<h1>
Domanda</h1>
Perché il servizio CSW realizzato da RNDT non è ancora stato registrato come <i>endpoint</i> italiano?<br />
<br />
<br />
<br />
Dal punto di vista normativo, sia il recepimento della Direttiva INSPIRE (Dlgs. 32/2010) che il Codice dell'Amministrazione Digitale riportano che <b>RNDT è il riferimento nazionale </b>in questo contesto: <i>"Il repertorio nazionale dei dati territoriali, [...] costituisce il catalogo nazionale dei metadati relativi ai set di dati territoriali" (Dlgs. 32/2010, art.5)</i> <a href="https://www.blogger.com/blogger.g?blogID=5176900881057973693#notai4i">[1]</a>.<br />
<br />
Dal punto di vista tecnico-operativo i test effettuati nel luglio 2013 e gennaio 2014 dal Joint Research Centre della Commissione Europea (su richiesta dell'Agenzia per l'Italia Digitale) hanno dimostrato che il servizio CSW del RNDT e <b>la quasi totalità dei metadati raccolti sono perfettamente conformi</b> a quanto previsto dai Regolamenti <a href="http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2008:326:0012:0030:IT:PDF" target="_blank">1205/2008</a> (metadati) e <a href="http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2009:274:0009:0018:IT:PDF" target="_blank">976/2009</a> (servizi di rete) della Commissione Europea, nonché alle relative <i>Technical Guidelines</i> (<a href="http://inspire.jrc.ec.europa.eu/documents/Metadata/INSPIRE_MD_IR_and_ISO_v1_2_20100616.pdf" target="_blank">1.2 del 2010</a> per i metadati, e <a href="http://inspire.jrc.ec.europa.eu/documents/Network_Services/TechnicalGuidance_DiscoveryServices_v3.1.pdf" target="_blank">3.1 del 2011</a> per i servizi di discovery).<br />
<br />
In particolare il test effettuato a gennaio 2014 ha riportato 4412 metadati "<i>passed</i>" e 412 "<i>passed with warnings</i>" su un totale di 5540 metadati sottoposti ad <i>harvesting</i> (nel RNDT i metadati disponibili sono 6143).<br />
<br />
Il livello di conformità rispetto a INSPIRE è quasi totale per i metadati di dataset e serie (4415 su 4462).<br />
Questo è un risultato importante ed è da notare che risulta essere migliore rispetto ai risultati ottenuti da altri Stati Membri.<br />
<br />
Il report completo è disponibile a questo indirizzo: <a href="http://inspire-geoportal.ec.europa.eu/resources/sandbox/INSPIRE-dc160d85-7f54-11e3-9486-d8d3855bd8fc_20140117-095358/services/1/PullResults/">http://inspire-geoportal.ec.europa.eu/resources/sandbox/INSPIRE-dc160d85-7f54-11e3-9486-d8d3855bd8fc_20140117-095358/services/1/PullResults/</a><br />
<br />
<br />
Sottolineiamo che è importante che la registrazione del servizio sia fatta al più presto perché:<br />
<ol>
<li>la disponibilità dei metadati italiani nel catalogo europeo serve a dare <b>visibilità alle informazioni territoriali esistenti in Italia</b>, il tutto proiettato a<br />
<ol>
<li>supportare le politiche ambientali nazionali e comunitarie</li>
<li>favorire la conoscenza e la promozione del nostro territorio;</li>
</ol>
</li>
<li>l'iniziale disponibilità di metadati potrà <b>innescare un processo virtuoso</b> spingendo gli enti pubblici di ogni livello a conferire i metadati all'RNDT per far conoscere le attività dell'amministrazione su scala internazionale;</li>
<li>per <b>incentivare la realizzazione di servizi innovativi</b> da parte di professionisti, consulenti e PMI locali da offrire agli enti locali sulla base della disponibilità di dati;</li>
<li>per <b>istanziare il ruolo del "nodo" Italia</b> all'interno della rete;</li>
<li>per dare <b>riconoscimento </b>e <b>visibilità </b>alle persone che, su scala diversa, hanno attivamente operato per la realizzazione dell'infrastruttura e dei servizi.</li>
</ol>
<h1>
Conclusioni</h1>
Alla luce di queste considerazioni, esortiamo il NCP INSPIRE italiano a comunicare al più presto al JRC l'indirizzo del servizio CSW di RNDT affinché questo venga registrato come primo endpoint italiano in INSPIRE.<br />
<br />
<hr />
<br />
<b>Firmatari (in ordine alfabetico)</b><br />
<ul>
<li>Giovanni Allegri</li>
<li>Andrea Antonello</li>
<li>Andrea Borruso</li>
<li>Associazione italiana per l'informazione geografica libera - GFOSS.it</li>
<li>Stefano Campus</li>
<li>Giovanni Ciardi</li>
<li>Piergiorgio Cipriano</li>
<li>Bruno Conte, Social4Social</li>
<li>Simone Cortesi</li>
<li>Laura Criscuolo</li>
<li>Antonio D'Argenio, Nadir</li>
<li>Margherita di Leo, Joint Research Centre</li>
<li>Alessio Di Lorenzo</li>
<li>Gianfranco Di Pietro, Geofunction</li>
<li>Antonio Falciano</li>
<li>Sergio Farruggia, Stati Generali dell'Innovazione, AMFM GIS Italia</li>
<li>Daniela Ferrari</li>
<li>Maurizio Foderà, Kartoblog</li>
<li>Antonio Fregoli, MNDAssociation</li>
<li>Pietro Blu Giandonato</li>
<li>Cesare Gerbino</li>
<li>Simone Giannecchini</li>
<li>Nicola Guarino, ISTC-CNR</li>
<li>Simone Lella</li>
<li>Walter Lorenzetti, gis3w</li>
<li>Jody Marca</li>
<li>Flavia Marzano, Stati Generali dell'Innovazione e Rete WISTER</li>
<li>Giacomo Martirano, Epsilon Italia, coordinatore progetto smeSpire</li>
<li>Stefania Morrone, Epsilon Italia</li>
<li>Alessandro Oggioni</li>
<li>Mariella Pappalepore, Planetek Italia</li>
<li>Lorenzo Perone</li>
<li>Emma Pietrafesa, Stati generali innovazione (Rete WISTER)</li>
<li>Renzo Provedel, Stati Generali dell’Innovazione, SOSLOG</li>
<li>Angelo Quaglia</li>
<li>Monica Sebillo, AMFM GIS Italia</li>
<li>Gian Bartolomeo Siletto</li>
<li>Claudia Spinnato, Consorzio TICONZERO</li>
<li>Franco Vico, AMFM GIS Italia</li>
<li>Fabio Vinci, Epsilon Italia</li>
<li>Massimo Zotti</li>
</ul>
<div style="-moz-border-radius: 5px 5px; -webkit-border-radius: 5px 5px; background-color: #f9ee7a; border-radius: 5px 5px; border: 1px solid #999999; font-family: Verdana,Arial,Helvetica,sans-serif; margin: 5px 0px 5px 0px; padding: 8px 8px 8px 8px;">
Se volete essere aggiunti in questa lista, inserite il vostro nome e/o la vostra affiliazione come commento.</div>
<hr />
<a href="https://www.blogger.com/null" id="notai4i" style="color: #767676;"></a><br />
[1] Inoltre, il Decreto 10 novembre 2011 relativo alle regole tecniche del RNDT, emanato dal Ministro per la Pubblica Amministrazione e l'Innovazione e dal Ministero per l’Ambiente e la Tutela del Territorio e del Mare, dispone che il RNDT, parte integrante dell'infrastruttura nazionale, eroghi i servizi di ricerca (art. 2) e prevede la pubblicazione dei metadati nel RNDT, assicurando il rispetto degli adempimenti di cui al Regolamento (CE) n. 1205/2008 e al D. Lgs. n. 32/2010 (DM art. 4)Anonymoushttp://www.blogger.com/profile/01956667100896875559noreply@blogger.com0tag:blogger.com,1999:blog-5176900881057973693.post-83151312336746592872014-02-03T18:48:00.000+01:002014-02-03T18:59:59.628+01:00Developers's Corner: Achieving Extreme GeoServer Scalability with the new Marlin vector rasterizer<div style="text-align: justify;">
As you probably know, <b><a href="http://www.geo-solutions.it/technologies/geoserver/" target="_blank">GeoServer</a> </b>is a Java based software, so its performance is heavily dependent on what the Java Virtual Machine and the Java standard library can offer.</div>
<div style="text-align: justify;">
Over the years the <b><a href="http://www.geo-solutions.it/technologies/geoserver/" target="_blank">GeoServer</a></b> developers have been pushing the boundaries of what can be done by replacing portions of the Java standard libraries by adopting faster replacements, for example, the <a href="http://geo-solutions.blogspot.it/2013/03/libjpeg-turbo.html">turbo jpeg encoder</a>, the native PNG encoder available in ImageIO native extensions, or the recent adoption of the pure java, high performance <a href="http://geo-solutions.blogspot.it/2013/10/pure-java-png.html">PNGJ library</a>.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
One of the Achilles' heel that so far we failed to replace is the anti-aliased rasterizer contained in the JDK, that is, the portion of software that turns all vector data into its raster representation while painting maps. But... things are about to change: sit back and get some popcorn!</div>
<br />
<b>The choice in Java rasterizers</b><br />
<br />
So far we were left with two choices, depending on the JDK adopted:<br />
<br />
<ul>
<li><div style="text-align: justify;">
The Oracle JDK comes with the <b>Ductus</b> rasterizer, a closed source, native antialiased rasterizer that has serious scalability issues, since it allows only a single shape at a time to be rasterized. Quoting a Oracle engineer: "One of (Ductus) drawbacks is that it had been designed to take advantage of some AA-accelerating hardware that never came to be. With the accelerator it would have been insanely fast, but hardware went in a different direction. The problem was that this early design goal caused the entire library to be built around an abstraction layer that allowed for a single "tile producer" internally (because there would be only one - insanely fast - hardware chip available) and the software version of the abstraction layer thus had a lot of native static data structures (there's only one of me, right?) that prevented MT access. "</div>
<div style="text-align: justify;">
Long story short, while it provides good performance for the single threaded cases, it's not really thought out for server side usage</div>
</li>
<li style="text-align: justify;">The OpenJDK comes with the <b>Pisces </b>rasterizer, a open source, pure java rasterizer that has no scalability issues, but that unfortunately is quite a bit slower than Ductus, it takes at least 4 concurrent requests for it to become faster than Ductus. Another issue is that OpenJDK is only available for Linux, so if you're running a Windows server, you're out of luck.</li>
</ul>
<div>
<b><br />
</b> <b>A new kid on the block</b></div>
<div>
<br /></div>
<div>
<div style="text-align: justify;">
One not well known detail about the rasterizers is that Oracle, in order to be able to have different implementations depending on the JDK binary build, made the rasterizer pluggable, so it is possible to build your own and use it, in both OpenJDK and Oracle JDK, by setting some startup variables.</div>
</div>
<div>
<div style="text-align: justify;">
<br /></div>
</div>
<div style="text-align: justify;">
But, of course, given that OpenJDK is open source, and open to contributions, it is also possible to provide improvements to it. Back in March 2013 Laurent Bourges contacted the Java "2d-dev" list to inquire about Pisces performance, and shortly after, he followed up with a set of patches to improve Pisces performance. <a href="http://www.linkedin.com/in/andreaaime" target="_blank">Andrea Aime</a> followed with interest, and provided a compact way to replicate <b><a href="http://www.geo-solutions.it/technologies/geoserver/" target="_blank">GeoServer</a></b> performance issues by serializing the set of java2d commands used to paint the maps in our benchmarks, creating the "MapBench" tool, a system to save the list of commands on disk from a <b><a href="http://www.geo-solutions.it/technologies/geoserver/" target="_blank">GeoServer</a></b>, and then play them back as a synthetic benchmark that only deals with map rendering (without protocol handling, data reading, final png/jpeg encoding).</div>
<div style="text-align: justify;">
Laurent took the benchmark and started working against it to further improve Pisces (and MapBench itself, in the process).</div>
<div style="text-align: justify;">
While the various patches spurred some interested in Oracle employees, it became soon clear that getting them accepted in OpenJDK would have proven difficult, partly due to the OpenJDK 8 getting close to the feature freeze for its final release in 2014. </div>
<div style="text-align: justify;">
After a few months of hiatus we decided to move on with the development outside of the OpenJDK community, leveraging the ability to plug other implementation of sun.java2d.pipe.RenderingEngine, and setting up a true open source project to host the evolution of these Pisces patches: the <a href="https://github.com/bourgesl/marlin-renderer">Marlin-renderer</a> was thus born, and it's now being developed on GitHub for the benefit of all Java users, along with <a href="https://github.com/bourgesl/mapbench">MapBench</a>.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Laurent provided set of single and multi-threaded benchmarks based on MapBench and some map sets, a few easy on the renderer, others quite a bit more demanding. While the <a href="http://htmlpreview.github.io/?https://github.com/bourgesl/mapbench/blob/master/results/report/compare/compareResults.htm">detailed results are available</a>, let me just echo Laurent summary:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<i>Marlin 0.3 is the winner:</i></div>
<div style="text-align: justify;">
<i>- 60% faster than pisces for small workload; 300-400% faster for high workload</i></div>
<div style="text-align: justify;">
<i>- 1 thread: 1% slower than ductus for small workload; 90% faster for high workload</i></div>
<div style="text-align: justify;">
<i>- 4 thread: 90% faster than ductus for small workload; 400% faster for high workload</i></div>
<div>
<div style="text-align: justify;">
<br /></div>
</div>
<div>
<div style="text-align: justify;">
Some impressive speedups for sure, but how do they translate into speedup for a whole WMS GetMap request? Well, it depends a lot on how much time we actually spend rendering, instead of reading data, and encoding images out in some binary format (e.g. PNG, JPEG).</div>
</div>
<div>
<div style="text-align: justify;">
Here are a couple of examples.</div>
</div>
<div>
<br /></div>
<div>
<b>The WMS 2010 performance shootout</b></div>
<div>
<b><br />
</b></div>
<div>
<div style="text-align: justify;">
The last FOSS4G WMS shootout took place in 2010, in Barcelona. Back at the time we were thinking <b><a href="http://www.geo-solutions.it/technologies/geoserver/" target="_blank">GeoServer</a></b> performance was badly affected by Ductus scalability issues, and back then, OpenJDK 6 graphic subsystem was definitely slower than what we have today in OpenJDK 7.</div>
</div>
<div>
<div style="text-align: justify;">
<br /></div>
</div>
<div>
<div style="text-align: justify;">
Now, we recently managed to get a <a href="http://geo-solutions.blogspot.it/2013/10/pure-java-png.html">rather significant speedup</a> by using OpenJDK7 (so, Pisces) plus the new PNGJ based encoder. How much is Marlin adding to it?</div>
</div>
<div>
<div style="text-align: justify;">
<br /></div>
</div>
<div>
<div style="text-align: justify;">
While we were here, we prepared a fuller set of comparisons, comparing what we had back at the time, and what we have now:</div>
</div>
<div>
<ul>
<li style="text-align: justify;">We run again the benchmark with <b><a href="http://www.geo-solutions.it/technologies/geoserver/" target="_blank">GeoServer</a></b> 2.2-beta2 (what we used back in Barcelona) with the native ImageIO PNG encoder and JDK 6 (ok, a more recent version of JDK 6 than what we had back at the time, but we don't expect it to be significantly faster than what was used back then)</li>
<li style="text-align: justify;">Then we used <b><a href="http://www.geo-solutions.it/technologies/geoserver/" target="_blank">GeoServer</a></b> 2.5-beta (whose PNG encoder defaults to PNGJ now), with an Oracle JDK 7, with a OpenJDK7, and finally, OpenJDK 7 plus the Marlin 0.3 binary release.</li>
</ul>
<div>
<div style="text-align: justify;">
Here are the detailed result, in requests per second, at the various load levels (from 1 to 64 concurrent clients):</div>
</div>
</div>
<div>
<br /></div>
<div>
<table cellpadding="0" cellspacing="0" dir="ltr" style="font-family: arial,sans,sans-serif; font-size: 13px; table-layout: fixed;"><colgroup><col width="97"></col><col width="97"></col><col width="97"></col><col width="97"></col><col width="97"></col><col width="97"></col><col width="97"></col></colgroup><tbody>
<tr style="height: 17px;"><td style="border: 1px solid rgb(0, 0, 0); direction: ltr; font-weight: bold; padding: 0px 3px; vertical-align: bottom;">Threads</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px; direction: ltr; font-weight: bold; padding: 0px 3px; vertical-align: bottom;">GS 2.2-beta2 + Oracle JDK 6</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px; direction: ltr; font-weight: bold; padding: 0px 3px; vertical-align: bottom;">GS 2.5-beta + Oracle JDK 7</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px; direction: ltr; font-weight: bold; padding: 0px 3px; vertical-align: bottom;">GS 2.5-beta + OpenJDK 7</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px; direction: ltr; font-weight: bold; padding: 0px 3px; vertical-align: bottom;">GS 2.5-beta + OpenJDK 7 + Marlin 0.3</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px; direction: ltr; font-weight: bold; padding: 0px 3px; vertical-align: bottom;">Speedup over 2.2-beta2</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px; direction: ltr; font-weight: bold; padding: 0px 3px; vertical-align: bottom;">Speedup over 2.5-beta + OpenJDK 7</td></tr>
<tr style="height: 17px;"><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; font-weight: bold; padding: 0px 3px; text-align: right; vertical-align: bottom;">1</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">15,27</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">21,51</td><td style="border-bottom: 1px solid #000000; border-right: 1px solid #000000; direction: null; padding: 0px 3px 0px 3px; text-align: right; vertical-align: bottom;">21,16</td><td style="border-bottom: 1px solid #000000; border-right: 1px solid #000000; direction: null; padding: 0px 3px 0px 3px; text-align: right; vertical-align: bottom;">21,10</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">38%</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">0%</td></tr>
<tr style="height: 17px;"><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; font-weight: bold; padding: 0px 3px; text-align: right; vertical-align: bottom;">2</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">23,47</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">31,98</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">30,64</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">32,37</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">38%</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">6%</td></tr>
<tr style="height: 17px;"><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; font-weight: bold; padding: 0px 3px; text-align: right; vertical-align: bottom;">4</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">36,08</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">49,74</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">52,58</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">58,17</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">61%</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">11%</td></tr>
<tr style="height: 17px;"><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; font-weight: bold; padding: 0px 3px; text-align: right; vertical-align: bottom;">8</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">39,62</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">55,19</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">59,99</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">65,55</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">65%</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">9%</td></tr>
<tr style="height: 17px;"><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; font-weight: bold; padding: 0px 3px; text-align: right; vertical-align: bottom;">16</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">41,61</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">57,22</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">69,57</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">76,18</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">83%</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">10%</td></tr>
<tr style="height: 17px;"><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; font-weight: bold; padding: 0px 3px; text-align: right; vertical-align: bottom;">32</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">41,89</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">54,86</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">63,77</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">73,00</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">74%</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">14%</td></tr>
<tr style="height: 17px;"><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; font-weight: bold; padding: 0px 3px; text-align: right; vertical-align: bottom;">64</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">37,61</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">50,41</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">61,34</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">67,86</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">80%</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">11%</td></tr>
</tbody></table>
</div>
<div>
<br /></div>
<div>
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCcQX7RZ53XtQlpqJsvnjUh90ZCT4Y7wPCsuER2jQ9BHLTA2JYyTscwIOxH2A609TcJRTeivNFp4uSaJ8pRJ2I3NVPOZQfP8robUhuJ9OXnWKJ-SO8D3PJPfnXYK_kZZrvcGw_fzbdyMLd/s1600/wms2010-shootout.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCcQX7RZ53XtQlpqJsvnjUh90ZCT4Y7wPCsuER2jQ9BHLTA2JYyTscwIOxH2A609TcJRTeivNFp4uSaJ8pRJ2I3NVPOZQfP8robUhuJ9OXnWKJ-SO8D3PJPfnXYK_kZZrvcGw_fzbdyMLd/s1600/wms2010-shootout.png" height="231" width="400" /></a></div>
<br />
<div>
<div style="text-align: justify;">
In summary:</div>
<ul>
<li style="text-align: justify;">For this particular benchmark, not very dependent on the raw rendering speed, the PNG encoder change occurred in <b><a href="http://www.geo-solutions.it/technologies/geoserver/" target="_blank">GeoServer</a></b> 2.5-beta provided a great benefit, as well as switching to OpenJDK to leverage the much improved Pisces scalability</li>
<li style="text-align: justify;">Marlin still manages to speed up the results up to 14% compared to Pisces</li>
<li style="text-align: justify;">Between the various changes in <b><a href="http://www.geo-solutions.it/technologies/geoserver/" target="_blank">GeoServer</a></b> and Marlin we improved a lot our performance compared to the 2010 results</li>
</ul>
<div>
<b>A rendering heavy benchmark</b></div>
<div>
<div style="text-align: justify;">
While the above results are interesting, they don't really do justice to Laurent excellent work. Luckily, during the Christmas break Jonathan Moules hit the <b><a href="http://www.geo-solutions.it/technologies/geoserver/" target="_blank">GeoServer</a></b> devel mailing list with a more interesting case.</div>
</div>
<div>
<div style="text-align: justify;">
<br /></div>
</div>
<div>
<div style="text-align: justify;">
The benchmark in question uses a real world map based on Ordinance Survey <a href="http://www.ordnancesurvey.co.uk/business-and-government/products/strategi.html">Strategi data</a> and a set of SLDs that make for maps with lots of details... and when I say lots, I mean that some maps contain, even if they are hard to see, a few tens of thousands of little polygons (one might say, why don't we use scale dependencies and avoid that? Well... because people often setup this kinds of maps). </div>
<div style="text-align: justify;">
As a further aggravation, the output images are quite a bit bigger than what was used in the WMS shootout, in particular, we are talking about 1200x1200 pixels, compare to the average size of the WMS shootout ones were on average 800x600, that is, 3 times smaller.</div>
</div>
<div>
<div style="text-align: justify;">
<br /></div>
</div>
<div>
<div style="text-align: justify;">
Jonathan setup is also different, in that it's not a scalability benchmark, all runs use 10 concurrent clients, but show how the performance changes as we change the zoom level of the map instead, thus hitting different combinations of layers, information density and symbology used.</div>
</div>
<div>
<div style="text-align: justify;">
<br /></div>
</div>
<div>
<div style="text-align: justify;">
We have run that same benchmark in different combinations, using in all cases a single GeoServer 2.5 beta instance, but with different rasterizers:</div>
</div>
<div>
<ul>
<li style="text-align: justify;">Oracle 7 JDK with Ductus</li>
<li style="text-align: justify;">OpenJDK with Pisces</li>
<li style="text-align: justify;">OpenJDK with Marlin 0.3</li>
</ul>
</div>
<div>
<br /></div>
<div>
</div>
<br />
<table cellpadding="0" cellspacing="0" dir="ltr" style="font-family: arial,sans,sans-serif; font-size: 13px; table-layout: fixed;"><colgroup><col width="90"></col><col width="90"></col><col width="90"></col><col width="90"></col><col width="90"></col><col width="90"></col></colgroup><tbody>
<tr style="height: 17px;"><td style="border: 1px solid rgb(0, 0, 0); direction: ltr; font-weight: bold; padding: 0px 3px; vertical-align: bottom;">Scale denominator</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px; direction: ltr; font-weight: bold; padding: 0px 3px; vertical-align: bottom;">Oracle JDK (Ductus)</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px; direction: ltr; font-weight: bold; padding: 0px 3px; vertical-align: bottom;">OpenJDK (PIsces)</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px; direction: ltr; font-weight: bold; padding: 0px 3px; vertical-align: bottom;">OpenJDK + Marlin 0.3</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px; direction: ltr; font-weight: bold; padding: 0px 3px; vertical-align: bottom;">Speedup over Ductus</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 1px; direction: ltr; font-weight: bold; padding: 0px 3px; vertical-align: bottom;">Speedup over Pisces</td></tr>
<tr style="height: 17px;"><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; vertical-align: bottom;">10.000.000</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">11,92</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">10,83</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">13,14</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; font-weight: bold; padding: 0px 3px; text-align: right; vertical-align: bottom;">10%</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">21%</td></tr>
<tr style="height: 17px;"><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; vertical-align: bottom;">5.000.000</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">9,66</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">8,16</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">11,47</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; font-weight: bold; padding: 0px 3px; text-align: right; vertical-align: bottom;">19%</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">41%</td></tr>
<tr style="height: 17px;"><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; vertical-align: bottom;">2.500.000</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">8,21</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">6,71</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">11,53</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; font-weight: bold; padding: 0px 3px; text-align: right; vertical-align: bottom;">40%</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">72%</td></tr>
<tr style="height: 17px;"><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; vertical-align: bottom;">1.250.000</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">4,59</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">4,06</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">8,99</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; font-weight: bold; padding: 0px 3px; text-align: right; vertical-align: bottom;">96%</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">121%</td></tr>
<tr style="height: 17px;"><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; vertical-align: bottom;">625.000</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">2,96</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">3,06</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">7,21</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; font-weight: bold; padding: 0px 3px; text-align: right; vertical-align: bottom;">144%</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">136%</td></tr>
<tr style="height: 17px;"><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; vertical-align: bottom;">300.000</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">4,09</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">4,77</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">9,99</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; font-weight: bold; padding: 0px 3px; text-align: right; vertical-align: bottom;">144%</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">110%</td></tr>
<tr style="height: 17px;"><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; vertical-align: bottom;">150.000</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">6,63</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">8,25</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">13,05</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; font-weight: bold; padding: 0px 3px; text-align: right; vertical-align: bottom;">97%</td><td style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 1px; padding: 0px 3px; text-align: right; vertical-align: bottom;">58%</td></tr>
</tbody></table>
<br />
<div>
</div>
</div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPGLyG68AOeiy59aa3Xw8x0psafOA5DkaJjJvq_RYhkE_1ce9j4qknVxvFpyXDjQ4EsyFe_Do7EP8glxCS7wEQUIbhTcQoUy4By7A-0W44RIgHCWts5jBE2gwmBraxMU0l4BM0LWpko9zd/s1600/wws.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPGLyG68AOeiy59aa3Xw8x0psafOA5DkaJjJvq_RYhkE_1ce9j4qknVxvFpyXDjQ4EsyFe_Do7EP8glxCS7wEQUIbhTcQoUy4By7A-0W44RIgHCWts5jBE2gwmBraxMU0l4BM0LWpko9zd/s1600/wws.png" height="227" width="400" /></a></div>
<div>
<br /></div>
<div>
<div style="text-align: justify;">
In summary:</div>
</div>
<div>
<ul>
<li style="text-align: justify;">Marlin based tests are always the fastest ones</li>
<li style="text-align: justify;">The harder to draw the map, the more information we have to render, the greater the benefit in using Marlin</li>
</ul>
<div>
<div style="text-align: justify;">
Now, the loyal reader of this blog might ask, ok, but what if I setup multiple copies of <b><a href="http://www.geo-solutions.it/technologies/geoserver/" target="_blank">GeoServer</a></b> with Oracle JDK 7, each running in its own JVM, and load balance them, to mitigate the Ductus scalability issues? Well, the answer is that you'll get a more complex setup, but one that is still 30% slower than what Marlin provides.</div>
</div>
<div>
<div style="text-align: justify;">
<br /></div>
</div>
<div>
<div style="text-align: justify;">
<b>Moving forward</b></div>
</div>
</div>
<div>
<div style="text-align: justify;">
So, are you still sitting there? Please go to the Marlin GitHub pages, <a href="https://github.com/bourgesl/marlin-renderer/releases">download</a> its release, <a href="https://github.com/bourgesl/marlin-renderer/wiki/How-to-use">learn how to plug it into the JVM</a>, and give it a kick with your own maps, and let us know how that works via the dedicated <a href="https://groups.google.com/forum/#!forum/marlin-renderer">mailing list</a>.</div>
</div>
<div>
<div style="text-align: justify;">
<br /></div>
</div>
<div>
<div style="text-align: justify;">
Remember Marlin is pretty new, so there might be issues using it, and of course we hope to improve its performance further. But even in its current early state, we're pretty excited about it.</div>
</div>
<div>
<br />
If you are interested in learning about how we can help you achieving your goals with our Open Source products and <a href="http://opensdi.geo-solutions.it/">professional services</a>, do not hesitate to <a href="http://www.geo-solutions.it/contact/" target="_blank">contact us</a>!<br />
<br />
The <b><a href="http://www.geo-solutions.it/">GeoSolutions</a> </b>team,<br />
<div>
<a href="http://www.geo-solutions.it/technologies/geoserver/"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXpN0zERBnV5Bd3UY2dCxA5q01LyqxxND9XJthHLeRhyphenhyphenHV3SHLgfV8s-wocQMemkmKazH-2ebxl4EwZycGjfisfD6oMWFRYttd0WAaL_ZZDi5lxEQCxsnQlQ7DaKo3seuAwTaeUvraqHp/s320/800x250_eng.png" height="100" width="320" /></a></div>
</div>
Andrea Aimehttp://www.blogger.com/profile/04056107353824320977noreply@blogger.com0Viareggio LU, Italia43.878560017422288 10.27676645593601343.878200517422286 10.276133455936012 43.87891951742229 10.277399455936013tag:blogger.com,1999:blog-5176900881057973693.post-7432332234282285872014-01-27T16:17:00.001+01:002014-01-27T16:17:57.315+01:00Developer's Corner: DXF output format promoted to official extension for GeoServerDear all,<br />
as you may already know, <a href="http://www.geoserver.org/">GeoServer </a>supports a wide variety of formats as an output of the <b>WFS</b> OGC service, to represent vector feature data. Such formats include the OGC standard GML XML based format (in its various versions), but also more "user friendly" ones such as the <b>shapefile</b> format, <b>GeoJSON</b>, <b>CSV</b> and so on.<br />
<br />
Some formats that are not supported by default, but that are used by some people working in the GIS field, are <b>CAD</b> formats. Among them, the most used in absolute (thinking of open formats) is <a href="http://en.wikipedia.org/wiki/AutoCAD_DXF">DXF</a>, the standard AutoCad file interchange format.<br />
<br />
Many GIS tools, for example <b>GDAL</b> and <b>QGIS</b> already support this format and a weak support has existed in <a href="http://www.geoserver.org/">GeoServer</a> for some time, mostly unknown.<br />
<br />
In the <a href="http://www.geotools.org/">Geotools</a>/<a href="http://www.geoserver.org/">GeoServer</a> land this is the current DXF support status:<br />
<ul>
<li><a href="http://www.geotools.org/">GeoTools</a> includes an unsupported module for DXF file reading and a DXF DataStore</li>
<li><a href="http://www.geoserver.org/">GeoServer</a> included for a long time a not much supported community module for dxf writing and a WFS output format using it</li>
</ul>
<div>
In a short time this is going to evolve, because the DXF community module has come to a new life, through a review and some improvements that have recently landed on master and the 2.4.x branch.</div>
<div>
<br /></div>
<div>
First of all, the module has been promoted to an official extension, so soon it would be easier for people to download and use it.</div>
<div>
<br /></div>
<div>
Then a <b>PPIO</b> for the <b>WPS</b> protocol has been added, so that DXF can be used as an output also for WPS processes whose output is a Feature.</div>
<div>
<br /></div>
<div>
If you want to give it a try, it is already available as an extension of the 2.5 beta release, available <a href="http://geoserver.org/display/GEOS/GeoServer+2.5-beta">here</a>.</div>
<div>
</div>
<div>
It is also available in the latest 2.4.x nightly <a href="http://ares.boundlessgeo.com/geoserver/2.4.x/">here</a>.</div>
<div>
<br /></div>
<div>
If you instead want to wait for a stable version, look for the 2.4.5 release in a month or so.</div>
<div>
<br /></div>
<div>
To install it just unzip the extension content in the WEB-IN/lib folder of GeoServer, paying attention to remove the dxf-wps jar if you don't have the WPS extension installed, and restart GeoServer.</div>
<div>
<br /></div>
<div>
To check its usage, this is an example WFS call outputting the usual topp:states GeoServer demo layer to a dxf:</div>
<blockquote class="tr_bq">
<pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-width: 1px; border-style: solid none; border-top-color: rgb(170, 204, 153); border-top-width: 1px; color: #333333; font-family: 'andale mono', 'lucida console', monospace; font-size: 14px; line-height: 21.599998474121094px; margin-bottom: 1.5em; margin-top: 1.5em; padding: 5px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;">http://localhost:8080/geoserver/wfs?request=GetFeature&typeName=topp:states&
outputFormat=dxf</pre>
</blockquote>
<br />
You can also save bandwidth asking for a zipped dxf file, using the following url:<br />
<br />
<blockquote class="tr_bq">
<pre style="background-color: #eeffcc; border-bottom-color: rgb(170, 204, 153); border-bottom-width: 1px; border-style: solid none; border-top-color: rgb(170, 204, 153); border-top-width: 1px; color: #333333; font-family: 'andale mono', 'lucida console', monospace; font-size: 14px; line-height: 21.599998474121094px; margin-bottom: 1.5em; margin-top: 1.5em; padding: 5px; vertical-align: baseline; white-space: pre-wrap; word-wrap: break-word;">http://localhost:8080/geoserver/wfs?request=GetFeature&typeName=topp:states&
outputFormat=dxf-zip</pre>
</blockquote>
<br />
Some format options are supported to customize the final dxf details:<br />
<br />
<ul>
<li><b>version</b>: (number) creates a DXF in the specified version format (only 14 is currently supported); to support other versions developers can implement the <i>DXFWriter</i> interface or extend <i>AbstractDXFWriter</i></li>
<li><b>asblock</b>: (true/false) if true, all geometries are written as blocks and then inserted as entities. If false, simple geometries are directly written as entities.</li>
<li><b>colors</b>: (comma delimited list of numbers): colors to be used for the DXF layers, in sequence. If layers are more than the specified colors, they will be reused many times. A set of default colors is used if the option is not used. Colors are AutoCad color numbers (7=white, etc.).</li>
<li><b>ltypes</b>: (comma delimited list of line type descriptors): line types to be used for the DXF layers, in sequence. </li>
<ul>
<li>If layers are more than the specified line types, they will be reused many times.</li>
<li>If not specified, all layers will be given a solid, continuous line type. </li>
<li>A descriptor has the following format: <name>!<repeatable pattern>[!<base length>], where</li>
<ul>
<li><name> is the name assigned to the line type</li>
<li><base length> (optional) is a real number that tells how long is each part of the line pattern (defaults to 0.125)</li>
<li><repeatable pattern> is a visual description of the repeatable part of the line pattern, as a sequence of - (solid line),* (dot) and _ (empty space). For example a dash-dot pattern would be expressed as –_*_.</li>
</ul>
</ul>
<li><b>layers</b>: (comma delimited list of strings) names to be assigned to the DXF layers. If specified, must contain a name for each requested layer. By default a standard name will be assigned to layers.</li>
<li><b>withattributes</b>: (true/false) enables writing an extra layer with attributes from each feature, the layer has a punctual geometry, with a point in the centroid of the original feature</li>
</ul>
<br />
If you also want to check the WPS PPIO, just use the GeoServer <b>WPS Request builder</b> you can find in the <b>Demos</b> section of the <a href="http://www.geoserver.org/">GeoServer</a> Web Admin UI, choose a process that has a feature as an output (for example the gs:Centroid process) and choose application/dxf as the result format.<br />
<br />
<div>
We are going to continue improving the DXF support in Geoserver if needed, so stay in touch with <a href="http://www.geo-solutions.it/contact/" target="_blank">us</a>!</div>
<div>
<br /></div>
If you are interested in learning about how we can help you achieving your goals with our Open Source products and <a href="http://opensdi.geo-solutions.it/">professional services</a>, do not hesitate to <a href="http://www.geo-solutions.it/contact/" target="_blank">contact us</a>!<br />
<br />
The <b><a href="http://www.geo-solutions.it/">GeoSolutions</a> </b>team,<br />
<div>
<a href="http://geoserver.geo-solutions.it/"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXpN0zERBnV5Bd3UY2dCxA5q01LyqxxND9XJthHLeRhyphenhyphenHV3SHLgfV8s-wocQMemkmKazH-2ebxl4EwZycGjfisfD6oMWFRYttd0WAaL_ZZDi5lxEQCxsnQlQ7DaKo3seuAwTaeUvraqHp/s320/800x250_eng.png" height="100" width="320" /></a></div>
Anonymoushttp://www.blogger.com/profile/03298010434450849794noreply@blogger.com0tag:blogger.com,1999:blog-5176900881057973693.post-78699889336789719772014-01-20T12:30:00.000+01:002014-01-21T08:46:14.998+01:00Developer's Corner: Active Directory based security in GeoServer through LDAPDear all,<br />
as you may already know, the <a href="http://www.geoserver.org/">GeoServer </a>security subsystem, based on the <a href="http://projects.spring.io/spring-security/">Spring Security framework</a>, is quite flexible and configurable to allow you to integrate <a href="http://www.geoserver.org/">GeoServer</a> into your existing security infrastructure.<br />
For example, by default, it allows usage of the most known authentication mechanisms and sources, such as HTTP Basic Authentication, X509 certificates, J2EE container controlled security, form based security and so on.<br />
<br />
For more information on the GeoServer security subsystem you can take a look at the related documentation, <a href="http://docs.geoserver.org/stable/en/developer/programming-guide/security/index.html">here</a> and <a href="http://docs.geoserver.org/stable/en/user/security/index.html">here</a>.<br />
<br />
Among the available authentication sources, the LDAP choice is one of the most important, because many enterprise authentication services are based on an LDAP repository to store users and all the information related to them, also for security purposes, such as the username and password, group membership and so on.<br />
<br />
The LDAP Authentication provider allows to authenticate users through "<a href="http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol#Bind_.28authenticate.29">binding</a>" to the LDAP repository using the user credentials (usually composed of the user <a href="http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol#Directory_structure">Distinguished name</a> and its password).<br />
To transform the username to a complete <a href="http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol#Directory_structure">Distinguished name</a> the <b><i>User lookup pattern</i></b> option is used. This is a pattern with a placeholder, where {0} stays for the entered username (e.g uid={0},ou=People).<br />
<br />
Moreover, it also allows to get authorities for the user (essentially the roles the user has) mapping them to LDAP groups and user group membership (this is optional, authorities/roles can also be filled using a given UserGroupService). The authorities retrieval from the LDAP service can be enabled using the <b><i>Use LDAP groups for authorization</i></b> flag.<br />
<br />
Talking of security infrastructures, can you think of a more widespread one than Windows domains, the default in all the Windows based networks worldwide?<br />
Well, the good news is that a Windows domain uses an LDAP repository for this purpose, the ActiveDirectory service. The bad news is that the standard <a href="http://www.geoserver.org/">GeoServer</a> LDAP Authentication provider (that is the module able to use LDAP as an authentication source) was not able to correctly connect to an ActiveDirectory service and extracts the information needed for a couple of reasons:<br />
<ul>
<li>ActiveDirectory allows searching only when the user is authenticated, while the Geoserver module was doing searches anonymously</li>
<li>Distinguished names of users cannot be easily built from the username, but a filter search is needed to get user objects, while Geoserver could only extract user data from its distinguished name</li>
</ul>
<div>
For these reasons <a href="http://www.geo-solutions.it/contact/" target="_blank">we</a> recently added some new options to the <a href="http://www.geoserver.org/">GeoServer</a> LDAP Authentication provider, allowing usage of an ActiveDirectory server as the authentication source.</div>
<div>
This improvement is available since the version 2.3.5 of <a href="http://www.geoserver.org/">GeoServer</a>.<br />
<br />
To enable searching with the user authenticate, we added this new option:<br />
<ul>
<li><b>Bind user before searching for groups: </b>flag used to enable authenticated searching, needs to be checked when using ActiveDirectory, that doesn't allow anonymous searches.</li>
</ul>
To enable authentication without having a distinguished name, the thing was a little bit more complex.<br />
First of all, if you are not familiar with Windows domains and ActiveDirectory, we should explain a couple of things. In a Windows domain, users can authenticate themselves using two different usernames, tha main one is the <i><b>User Principal Name</b>, </i>that is an email-like username in the form <i>username@domain.local, </i>the other one is the <i style="font-weight: bold;">SAM Account Name, </i>that is the old username used before Windows 2000 (but still valid in modern Windows versions). Unfortunately none of them are part of the distinguished name.<br />
So, we added these two options:</div>
<div>
<ul>
<li><b>Filter used to lookup user: </b>to be used instead of <i>User lookup pattern </i>as a username to user details filter. This can be:</li>
<ul>
<li> <i>(userPrincipalName={0})</i>, if you want to use email-like usernames (e.g user@domain.local); in this case you could also use the following <i><b>Format used for user login name</b></i> option, to automatically append the @domain.local part. The {0} placeholder stays for the username with the format applied.</li>
<li><i>(sAMAccountName={1})</i> if you want to use older SAM-Accounts (e.g. user). , The {1} placeholder is the username as given by the login procedure, without format applied.</li>
<li>(|(userPrincipalName={0})(sAMAccountName={1})) if you want to accept both.</li>
</ul>
<li><b>Format used for user login name: </b>this could be compiled when using email-like usernames (e.g user@domain.local) to automatically append domain info (e.g. <i>{0}@domain.local</i> )</li>
</ul>
<div>
Moreover, we added a couple of options to map LDAP groups to GeoServer administrative roles:</div>
<ul>
<li><b>Group to use as ADMIN: </b>LDAP group that should be equivalent to GeoServer ADMIN role.</li>
<li><b>Group to use as GROUP_ADMIN: </b>LDAP group that should be equivalent to GeoServer GROUP_ADMIN role.</li>
</ul>
<div>
Here an example of configuration for a generic ActiveDirectory service, with roles binding enabled:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikraYE4iSUl2a78LHIdxsE8j0JmxscDdxuTrIA7RQSvijpUUFbCN-bwkQqCOdTjSZg3Cn7YQN9b20hLcoQN02MHw-UCJ9559nGUD3BcEkGuBzKqJTmcVm7WiuWFsPPNypzU5KjWdZFSGwg/s1600/ldap1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikraYE4iSUl2a78LHIdxsE8j0JmxscDdxuTrIA7RQSvijpUUFbCN-bwkQqCOdTjSZg3Cn7YQN9b20hLcoQN02MHw-UCJ9559nGUD3BcEkGuBzKqJTmcVm7WiuWFsPPNypzU5KjWdZFSGwg/s1600/ldap1.jpg" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
You can find a complete tutorial on how the LDAP AuthenticationProvider can be configured to connect to an ActiveDirectory server <a href="http://docs.geoserver.org/stable/en/user/security/tutorials/activedirectory/index.html">here</a>.</div>
<div>
<br /></div>
<div>
These improvements left one annoying task to be done manually: the task of adding new roles manually to the GeoServer RoleService, so that access permissions could be assigned to groups of users.<br />
It is true that roles could be assigned to users retrieving them from the LDAP repository, but there was no possibility to get a list of all the available roles, to be used for permission assignments, so each used role needed to be added manually to the default RoleService.<br />
What was missing to get a complete implementation was a new <i style="font-weight: bold;">LDAP RoleService </i>able to get roles list directly from the LDAP repository used for authentication purposes.</div>
<div>
<br /></div>
<div>
This is not true anymore, since the new <i style="font-weight: bold;">LDAP RoleService </i>has finally landed on <a href="http://www.geoserver.org/">GeoServer</a> master some days ago. This is going to complete the circle to have a complete LDAP support and it is (obviously) ActiveDirectory compatible.</div>
<div>
Here a simple example of an ActiveDirectory configuration for the service.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP31FNc-fJw5aLfpQFanY0TlQTGJDwrxxlbNphBuQvYnJTCyxMeBin_khSHJfowZr7l748ZrSINhXXzrtDson-x71Qxv2sRewgLvgoiMdCpJMNEBfFjXruz-WNdW6lLt4hAK2qjvL70XSl/s1600/ldap14.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP31FNc-fJw5aLfpQFanY0TlQTGJDwrxxlbNphBuQvYnJTCyxMeBin_khSHJfowZr7l748ZrSINhXXzrtDson-x71Qxv2sRewgLvgoiMdCpJMNEBfFjXruz-WNdW6lLt4hAK2qjvL70XSl/s1600/ldap14.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
As you can see the configuration options are very similar to those of the LDAP AuthenticationProvider, just a few notes on some of them:</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<ul>
<li><b>Group user membership search filter: </b>this is a filter that matches user to groups membership info and allows to bind users to their group. {1} stays for user complete distinguished name ({0} instead is the entered username).</li>
<li><b>Filter used to lookup user: </b>filter used to get the user object (and the related distinguished name) from the simple username (e.g. from GISUSER to cn=CompleteGisUserName,cn=Users); in this example the SAM Account is used for filtering, userPrincipalName can also be used for the same purpose.</li>
<li><b>Authentication: </b>since ActiveDirectory avoids anonymous searches we need to give the RoleService a set of credentials to authenticate with before doing any search on the ActiveDirectory service.</li>
</ul>
<br />
<div>
We are going to backport the new <i style="font-weight: bold;">LDAP RoleService</i> on 2.4.x as soon as it proves to be stable on master, so maybe we will have it on stable series for Christmas or at most the new year (isn't it a good gift for your business?).</div>
</div>
<div>
<br /></div>
<div>
We are also going to continue improving the LDAP support in Geoserver if needed, so stay in touch with <a href="http://www.geo-solutions.it/contact/" target="_blank">us</a>!</div>
<div>
<br /></div>
If you are interested in learning about how we can help you achieving your goals with our Open Source products and <a href="http://opensdi.geo-solutions.it/">professional services</a>, do not hesitate to <a href="http://www.geo-solutions.it/contact/" target="_blank">contact us</a>!<br />
<br />
The <b><a href="http://www.geo-solutions.it/">GeoSolutions</a> </b>team,<br />
<div>
<a href="http://geoserver.geo-solutions.it/"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXpN0zERBnV5Bd3UY2dCxA5q01LyqxxND9XJthHLeRhyphenhyphenHV3SHLgfV8s-wocQMemkmKazH-2ebxl4EwZycGjfisfD6oMWFRYttd0WAaL_ZZDi5lxEQCxsnQlQ7DaKo3seuAwTaeUvraqHp/s320/800x250_eng.png" height="100" width="320" /></a></div>
Anonymoushttp://www.blogger.com/profile/03298010434450849794noreply@blogger.com0tag:blogger.com,1999:blog-5176900881057973693.post-50369443493264695472014-01-13T18:00:00.001+01:002014-01-13T18:00:31.075+01:00Developer's Corner: Improving Printing for GeoServer - Part 2Dear all,<br />
recently <a href="http://www.geo-solutions.it/">we</a> worked on the <a href="https://github.com/mapfish/mapfish-print">MapFish print module</a> used by the <a href="http://docs.geoserver.org/latest/en/user/community/printing/index.html">Geoserver Printing Module</a> to improve it in several ways, in particular for what concerns legends printing, but not limited to that.<br />
<br />
In this post we would like to share the improvements we made, so that they can be useful to other <a href="http://docs.geoserver.org/latest/en/user/community/printing/index.html">Geoserver printing module</a> users.<br />
<br />
<h4>
<span style="font-size: large;">Mapfish print module 2.0</span></h4>
First of all, we did all our improvements on a 2.0.x version of the <a href="https://github.com/mapfish/mapfish-print">MapFish print module</a>, while the official <a href="http://docs.geoserver.org/latest/en/user/community/printing/index.html">Geoserver Printing Module</a> is still stuck on the 1.2 version.<br />
The good news is that the 2.0-SNAPSHOT version seems to work perfectly with the current stable release of <a href="http://www.geoserver.org/">Geoserver</a>, and only one jar needs to be updated (together with the inclusion of a Spring application context xml). It's good news because, of course, the 2.0 version has some new features that can be useful to Geoserver users.<br />
<div>
For this reason we are going to push for the inclusion of the new version for the 2.5 series of <a href="http://www.geoserver.org/">Geoserver</a>.</div>
<br />
<h4>
<span style="font-size: large;">Legends improvements</span></h4>
Some new options have been added to the legends block definition in config.yaml.<br />
Some of them are basic ones:<br />
<blockquote class="tr_bq">
<i><b>failOnBrokenUrl: false</b> (defaults to true)</i></blockquote>
This one is a legends specific version of the <b>brokenUrlPlaceholder</b> flag that avoids errors when GeoServer returns an empty image for a legend (it can happen if the item is not visible at the requested scale).<br />
<br />
<h4>
Legends flow: multicolumn and multipage</h4>
Another set of options permit to control how legend items flow in the PDF document. First we should mention that the <a href="https://github.com/mapfish/mapfish-print">MapFish print module</a> 2.0 itself added support for multicolumn legends. We pushed that further by allowing multipage legends (on a single or multiple columns).<br />
<blockquote class="tr_bq">
<i><b>maxHeight: <column height> </b>(defaults to 0, meaning no limit)</i></blockquote>
This option enables multicolumn layout, fixing a max height of a single column.<br />
<blockquote class="tr_bq">
<i><b>maxColumns: <# of columns> </b>(defaults to 0, meaning no limit)</i></blockquote>
This option makes the max number of columns fixed (for a single page if multipage is enabled, or in total). The legends maxWidth space will be equally distributed for the number of columns used.<br />
<blockquote class="tr_bq">
<i><b>overflow: true </b>(defaults to false)</i></blockquote>
This option enables multipage layout. When using it, <b>maxHeight </b>and <b>maxColumns </b>options are <i><b>mandatory</b></i>. Please note that the overflowing legend items will be drawn on one or more pages following the one where the legends block is defined. The overflowing pages will have the same format (size, margins and so on) of the first one, but only legend items will be put on them, no other element present in the original page will be copied.<br />
<blockquote class="tr_bq">
<i><b>dontBreakItems: true</b> (defaults to false)</i></blockquote>
This option avoids that a title and its related legend icons could be drawn on different columns / pages.<br />
<blockquote class="tr_bq">
<i><b>reorderColumns: true</b> (defaults to false)</i></blockquote>
This option allows the reordering of legend items to better fit columns space.<br />
<blockquote class="tr_bq">
<i><b>maxIconHeight: <max icons height></b> (defaults to 0, meaning unlimited)</i></blockquote>
This option allows the resizing of icons taller than the column max height value.<br />
<br />
<h4>
Legends flow: fixed space usage</h4>
<blockquote class="tr_bq">
<i><b>fitWidth: <desired width></b></i><i><b> </b></i><i> (defaults to 0)</i></blockquote>
<blockquote class="tr_bq">
<i><b>fitHeight: <desired height> </b></i><i> (defaults to 0)</i></blockquote>
This couple of options allow having an automatically resized legend to fit a given space (width, height, or both). When only one option is given, the aspect ratio is preserved.<br />
<br />
<h4>
Some examples</h4>
<div>
Here some sample configurations of multicolumn / multipage layouts for your legends.</div>
<div>
<br /></div>
<div>
<b><i>A4 portrait 1 column x page</i></b></div>
<pre style="background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(221, 221, 221); color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 13px; line-height: 19px; margin-bottom: 15px; margin-top: 15px; overflow: auto; padding: 6px 10px; word-wrap: normal;"><span class="o" style="font-weight: bold;">-</span> <span class="o" style="font-weight: bold;">!</span><span class="n">legends</span>
<span class="n">failOnBrokenUrl</span><span class="o" style="font-weight: bold;">:</span> <span class="nb" style="color: #0086b3;">false</span>
<span class="nl">horizontalAlignment:</span> <span class="n">left</span>
<span class="nl">iconMaxWidth:</span> <span class="mi" style="color: #009999;">0</span>
<span class="nl">iconMaxHeight:</span> <span class="mi" style="color: #009999;">700</span>
<span class="nl">maxHeight:</span> <span class="mi" style="color: #009999;">750</span>
<span class="nl">maxColumns:</span> <span class="mi" style="color: #009999;">1</span>
<span class="nl">maxWidth:</span> <span class="mi" style="color: #009999;">800</span>
<span class="nl">layerSpace:</span> <span class="mi" style="color: #009999;">5</span>
<span class="nl">layerFontSize:</span> <span class="mi" style="color: #009999;">12</span>
<span class="nl">classIndentation:</span> <span class="mi" style="color: #009999;">5</span>
<span class="nl">classFontSize:</span> <span class="mi" style="color: #009999;">8</span>
<span class="nl">classSpace:</span> <span class="mi" style="color: #009999;">4</span>
<span class="nl">backgroundColor:</span> <span class="err" style="background-color: #e3d2d2; color: #a61717;">#</span><span class="n">ffffff</span>
<span class="n">reorderColumns</span><span class="o" style="font-weight: bold;">:</span> <span class="nb" style="color: #0086b3;">true</span>
<span class="n">dontBreakItems</span><span class="o" style="font-weight: bold;">:</span> <span class="nb" style="color: #0086b3;">true</span>
<span class="n">overflow</span><span class="o" style="font-weight: bold;">:</span> <span class="nb" style="color: #0086b3;">true</span></pre>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiV9zeevbGQbmbBbI29KCNNoV_746A6vDaK_8zmw7k5HUTdEg51pueoWE9pfhH7B9xoDC-aFHf0_wMrelbQacWd11fmHTNOza955KHLJXepbsRwgs_Ob8J3RemaT1ELvzz9O2V0eTrMoRG/s1600/A4-portrait.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="137" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiV9zeevbGQbmbBbI29KCNNoV_746A6vDaK_8zmw7k5HUTdEg51pueoWE9pfhH7B9xoDC-aFHf0_wMrelbQacWd11fmHTNOza955KHLJXepbsRwgs_Ob8J3RemaT1ELvzz9O2V0eTrMoRG/s400/A4-portrait.png" width="400" /></a></div>
<h4>
<div style="font-weight: normal;">
<b><i>A4 landscape 2 column x page</i></b></div>
<pre style="background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(221, 221, 221); color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 13px; font-weight: normal; line-height: 19px; margin-bottom: 15px; margin-top: 15px; overflow: auto; padding: 6px 10px; word-wrap: normal;"><span class="o" style="font-weight: bold;">-</span> <span class="o" style="font-weight: bold;">!</span><span class="n">legends</span>
<span class="n">failOnBrokenUrl</span><span class="o" style="font-weight: bold;">:</span> <span class="nb" style="color: #0086b3;">false</span>
<span class="nl">horizontalAlignment:</span> <span class="n">left</span>
<span class="nl">iconMaxWidth:</span> <span class="mi" style="color: #009999;">0</span>
<span class="nl">iconMaxHeight:</span> <span class="mi" style="color: #009999;">500</span>
<span class="nl">maxHeight:</span> <span class="mi" style="color: #009999;">535</span>
<span class="nl">maxColumns:</span> <span class="mi" style="color: #009999;">2</span>
<span class="nl">maxWidth:</span> <span class="mi" style="color: #009999;">780</span>
<span class="nl">layerSpace:</span> <span class="mi" style="color: #009999;">5</span>
<span class="nl">layerFontSize:</span> <span class="mi" style="color: #009999;">12</span>
<span class="nl">classIndentation:</span> <span class="mi" style="color: #009999;">5</span>
<span class="nl">classFontSize:</span> <span class="mi" style="color: #009999;">8</span>
<span class="nl">classSpace:</span> <span class="mi" style="color: #009999;">4</span>
<span class="nl">backgroundColor:</span> <span class="err" style="background-color: #e3d2d2; color: #a61717;">#</span><span class="n">ffffff</span>
<span class="n">reorderColumns</span><span class="o" style="font-weight: bold;">:</span> <span class="nb" style="color: #0086b3;">true</span>
<span class="n">dontBreakItems</span><span class="o" style="font-weight: bold;">:</span> <span class="nb" style="color: #0086b3;">true</span>
<span class="n">overflow</span><span class="o" style="font-weight: bold;">:</span> <span class="nb" style="color: #0086b3;">true</span></pre>
</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5IVyvyExTt2DgU8Z5OxkfHpe82BuvdtBJXVQpYy3cxa7UZKtIKAVHNiFKCrBufIywgv4e88vtaP65y8pfC2HQ0eA-Q5VSvVambRstBEmVBOK4UWrtw-wq1dM_nnBKP5LMNJsTBEXzyG1x/s1600/A4-landscape.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="135" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj5IVyvyExTt2DgU8Z5OxkfHpe82BuvdtBJXVQpYy3cxa7UZKtIKAVHNiFKCrBufIywgv4e88vtaP65y8pfC2HQ0eA-Q5VSvVambRstBEmVBOK4UWrtw-wq1dM_nnBKP5LMNJsTBEXzyG1x/s400/A4-landscape.png" width="400" /></a></div>
<h4>
<span style="font-size: large;">Client-side rendered images</span></h4>
</div>
<div>
We added support for client-side generated images (only svg format at the moment) in the printing.<br />
This can be accomplished in two steps:</div>
<div>
<ul>
<li>include an image block in the config.yaml layout, with a name and no content defined</li>
<li>include a named block in the print spec with the svg content to match the yaml one</li>
</ul>
<div>
Obviously you can configure as many images as you like, just give them a different name.<br />
For example:<br />
<br /></div>
<div>
<b><i>Config.yaml</i></b></div>
<blockquote class="tr_bq">
<pre style="background-color: #f8f8f8; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(221, 221, 221); color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 13px; line-height: 19px; margin-bottom: 15px; margin-top: 15px; overflow: auto; padding: 6px 10px; word-wrap: normal;">- !columns
width: 580
height: 271
absoluteX:70
absoluteY:400
items:
- !image
name: chart1
maxWidth: 580
maxHeight: 271
rotation: '<span class="cp" style="color: #999999; font-weight: bold;">${</span><span class="n">rotation</span><span class="cp" style="color: #999999; font-weight: bold;">}</span>' </pre>
</blockquote>
<div>
<b><i>create.json</i></b><br />
<blockquote class="tr_bq">
<pre style="border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(221, 221, 221); color: #333333; font-family: Consolas, 'Liberation Mono', Courier, monospace; font-size: 13px; line-height: 19px; margin-bottom: 15px; margin-top: 15px; overflow: auto; padding: 6px 10px; word-wrap: normal;"><span class="p">{</span>
<span class="nx">...</span>
<span class="nx">chart1</span><span class="p">:{</span>
<span class="nb" style="color: #0086b3;">content</span><span class="p">:</span> <span class="s1" style="color: #dd1144;">'<svg>SVG content</svg>'</span>
<span class="p">},</span>
<span class="nx">...</span>
<span class="p">}</span></pre>
</blockquote>
</div>
So, that's it for the moment. If you wish to test our improvements, just clone our fork of the <a href="https://github.com/mapfish/mapfish-print">MapFish print module</a> on Github, you can find the latest code at <a href="https://github.com/geosolutions-it/mapfish-print">https://github.com/geosolutions-it/mapfish-print</a>.<br />
<br />
You can also find some more documentation on these improvements on the related <a href="https://github.com/geosolutions-it/mapfish-print/wiki">wiki pages</a> and on the original <a href="http://www.mapfish.org/doc/print/configuration.html">MapFish print module documentation page</a>.<br />
<br />
We are going to continue improving the printing support in Geoserver in the following months, so stay in touch with <a href="http://www.geo-solutions.it/contact/" target="_blank">us</a>!</div>
<div>
<br /></div>
If you are interested in learning about how we can help you achieving your goals with our Open Source products and <a href="http://opensdi.geo-solutions.it/">professional services</a>, do not hesitate to <a href="http://www.geo-solutions.it/contact/" target="_blank">contact us</a>!<br />
<br />
The <b><a href="http://www.geo-solutions.it/">GeoSolutions</a> </b>team,<br />
<div>
<a href="http://geoserver.geo-solutions.it/"><img height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXpN0zERBnV5Bd3UY2dCxA5q01LyqxxND9XJthHLeRhyphenhyphenHV3SHLgfV8s-wocQMemkmKazH-2ebxl4EwZycGjfisfD6oMWFRYttd0WAaL_ZZDi5lxEQCxsnQlQ7DaKo3seuAwTaeUvraqHp/s320/800x250_eng.png" width="320" /></a></div>
Anonymoushttp://www.blogger.com/profile/01956667100896875559noreply@blogger.com0tag:blogger.com,1999:blog-5176900881057973693.post-55811807688721960742014-01-07T13:15:00.000+01:002014-01-07T13:16:56.257+01:00Developer's Corner: Bridging CSS and SLD unit of measure treatment in GeoServerHi,<br />
in this blog we are introducing some work with did to bridge the unit of measure treatment in SLD and CSS. The beginning of the blog is a bit technical, so if you want to just get the news, skip towards the map screenshots.<br />
<br />
Unit of measure treatment in CSS is rather straightforward, every size is in pixel, unless otherwise specified by appending a unit of measure to it. In GeoServer geospatial CSS design there are three unit of measure, meter (m), feet (ft) and pixels (px), for example, say we want to have a circular mark, whose size is 2 meters, but whose outline is always 1 pixel, regardless of the zoom:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">* {</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> mark: symbol("circle");</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> mark-size: 2m;</span><br />
<span style="font-family: Courier New, Courier, monospace;">}</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">:mark {</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> stroke: black;</span><br />
<span style="font-family: Courier New, Courier, monospace;"> stroke-width: 1px;</span><br />
<span style="font-family: Courier New, Courier, monospace;"> fill: red;</span><br />
<span style="font-family: Courier New, Courier, monospace;">}</span><br />
<br />
Generally speaking, every property is free to have a different unit of measure. That's nice, too bad it does not work in the current CSS support, more on this later.<br />
<br />
How does this compare with the SLD unit of measure model? Well, in SLD 1.0 there is no official support for unit of measure (although GeoServer support the same syntax as SLD 1.1 as an extension).<br />
In SLD 1.1 the unit of measure can be specified only at the whole symbolizer level, with a twist: if one property inside that symbolizer needs to be expressed in pixels, then it's valid to append the px suffix to it.<br />
So the above CSS style could be roughly translated to:<br />
<br />
<span style="font-family: 'Courier New', Courier, monospace;"><PointSymbolizer xmlns="http://www.opengis.net/se"</span><br />
<span style="font-family: Courier New, Courier, monospace;"> uom="http://www.opengeospatial.org/se/units/metre"></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <Name>MyPointSymbolizer</Name></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <Graphic></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <Mark></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <WellKnownName>circle</WellKnownName></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <Fill></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <SvgParameter name="fill">#FF0000</SvgParameter></span><br />
<span style="font-family: Courier New, Courier, monospace;"> </Fill></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <Stroke></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <SvgParameter name="stroke">#000000</SvgParameter></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <SvgParameter name="stroke-width">1px</SvgParameter></span><br />
<span style="font-family: Courier New, Courier, monospace;"> </Stroke></span><br />
<span style="font-family: Courier New, Courier, monospace;"> </Mark></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <Size>2</Size></span><br />
<span style="font-family: Courier New, Courier, monospace;"> </Graphic></span><br />
<span style="font-family: Courier New, Courier, monospace;"></PointSymbolizer></span><br />
<div>
<br /></div>
<div>
Now, why can't we do that? Because the pixel unit of measure override is not really supported in the current GeoTools/GeoServer code.</div>
<div>
So we could have added it, and in case we had three properties to be expressed in meters, feet and pixels, theoretically the translation from CSS could turn feet into meters, set the global unit to meters, and keep the pixels one with the px suffix.</div>
<div>
<br /></div>
<div>
However, we decided not to go that way for a few reasons:</div>
<div>
<ul>
<li>It makes the CSS translation un-necessarily complex</li>
<li>Being able to overload the current unit of measure requires a some code to make it just for pixels, and just a little more to make it available also for meters and feets</li>
</ul>
<div>
What we did instead, was to add support for m, ft and px in SLD/SE, so that every property can have its own local unit of measure just like in CSS: the global amount of effort is reduced, and the result is nicer and more symmetric than standard SE/SLD 1.1 (and also more readable, if only local unit of measure are used).</div>
</div>
<div>
<br /></div>
<div>
So, the CSS now translates to:</div>
<div>
<br /></div>
<div>
<span style="font-family: 'Courier New', Courier, monospace;"><PointSymbolizer xmlns="http://www.opengis.net/se"</span><span style="font-family: 'Courier New', Courier, monospace;">></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <Name>MyPointSymbolizer</Name></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <Graphic></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <Mark></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <WellKnownName>circle</WellKnownName></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <Fill></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <SvgParameter name="fill">#FF0000</SvgParameter></span><br />
<span style="font-family: Courier New, Courier, monospace;"> </Fill></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <Stroke></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <SvgParameter name="stroke">#000000</SvgParameter></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <SvgParameter name="stroke-width">1px</SvgParameter></span><br />
<span style="font-family: Courier New, Courier, monospace;"> </Stroke></span><br />
<span style="font-family: Courier New, Courier, monospace;"> </Mark></span><br />
<span style="font-family: Courier New, Courier, monospace;"> <Size>2m</Size></span><br />
<span style="font-family: Courier New, Courier, monospace;"> </Graphic></span><br />
<span style="font-family: Courier New, Courier, monospace;"></PointSymbolizer></span></div>
<div>
<br /></div>
<span style="font-family: inherit;">Here are some example outputs using the usual bugsites demo layer:</span><br />
<span style="font-family: inherit;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqAGsci6C_okMcwEmMT-GLEuyeRLvVfHdklVvq0Gb9tF4gwBvynOgvBdefopBR4I8CA4DBwor0monqSjwvI8rcoUMlH0LYVF6Pwfhae7nih9KZXwTyOsur7DT3HYol69a-CUTB66VIP_Zx/s1600/Selezione_015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqAGsci6C_okMcwEmMT-GLEuyeRLvVfHdklVvq0Gb9tF4gwBvynOgvBdefopBR4I8CA4DBwor0monqSjwvI8rcoUMlH0LYVF6Pwfhae7nih9KZXwTyOsur7DT3HYol69a-CUTB66VIP_Zx/s1600/Selezione_015.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<b>First map</b></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdmpw8R8bgNIzvwfDpySyCvlMW3x4CxWoEohlPgKn0UFc_wiJoUS-f7hKnOKkJha2JHMUPzQRGmPL41mK1CumPYGjKKp7ZNKpKf0nU7Fxe3wjYqsHiBxjMuz6WODqoBXvcW1_W8tSoqV94/s1600/Selezione_013.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdmpw8R8bgNIzvwfDpySyCvlMW3x4CxWoEohlPgKn0UFc_wiJoUS-f7hKnOKkJha2JHMUPzQRGmPL41mK1CumPYGjKKp7ZNKpKf0nU7Fxe3wjYqsHiBxjMuz6WODqoBXvcW1_W8tSoqV94/s1600/Selezione_013.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<b>Zooming in</b></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjarDuhEC1aYwp8zJsqle3nJcCKhXXdO49MW9FUaWd_2ofyQEU3g2sUHscoaysUBFwteMc7BEIeLAgXriK4I7ephG9lXxEZUSifbHSMdkGXgEB_JAoWQg283YtAKHIGdVjXgPBaVIAvszsQ/s1600/Selezione_014.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjarDuhEC1aYwp8zJsqle3nJcCKhXXdO49MW9FUaWd_2ofyQEU3g2sUHscoaysUBFwteMc7BEIeLAgXriK4I7ephG9lXxEZUSifbHSMdkGXgEB_JAoWQg283YtAKHIGdVjXgPBaVIAvszsQ/s1600/Selezione_014.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<b>And zooming in more!</b></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<span style="font-family: inherit;">Ok, so, long story short: it's now possible to specify per property unit of measure in both CSS and SLD by adding the "m", "ft" and "px" suffixes!</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">This new feature is now available in the <a href="http://ares.boundlessgeo.com/geoserver/master/">development series nightly builds</a>.</span><br />
<span style="font-family: inherit;"><br /></span>
If you'd like to know more about what you could achieve with <span style="color: #0000ee;"><b><u>us</u></b></span>, do not hesitate and <b><a href="http://opensdi.geo-solutions.it/">get in touch with us</a>. </b>If you need professional services to get started with Open Source software make sure to have a look at our <b><a href="http://opensdi.geo-solutions.it/">GeoSolutions Enterprise Services</a>.</b><br />
<br />
<span style="font-family: inherit;"><br /></span>
The <a href="http://www.geo-solutions.it/"><b>GeoSolutions</b></a> team,<br />
<div>
<a href="http://www.geo-solutions.it/"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXpN0zERBnV5Bd3UY2dCxA5q01LyqxxND9XJthHLeRhyphenhyphenHV3SHLgfV8s-wocQMemkmKazH-2ebxl4EwZycGjfisfD6oMWFRYttd0WAaL_ZZDi5lxEQCxsnQlQ7DaKo3seuAwTaeUvraqHp/s320/800x250_eng.png" height="100" width="320" /></a></div>
Anonymoushttp://www.blogger.com/profile/01956667100896875559noreply@blogger.com0Massarosa LU, Italia43.878072627935488 10.27672509468993743.877353627935491 10.275459094689937 43.878791627935485 10.277991094689936tag:blogger.com,1999:blog-5176900881057973693.post-90992472147045799792013-12-24T16:00:00.000+01:002013-12-24T16:00:04.733+01:00Season's Greetings from GeoSolutions<br />
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWxO9Kt3SrRNp5i-Kz6xdjk_qWnSB90SyYYmKBsrEM7CiqebLmWmRBO9P-VdkEV-dChC-VX2ynGnOjIjFTU7C3aCatk37Z04-49uodbBUV_MhWiwo32MOVcPhK9hLalJoTJTZTgOHCAQS3/s1600/auguri_2013+(2).jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="254" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWxO9Kt3SrRNp5i-Kz6xdjk_qWnSB90SyYYmKBsrEM7CiqebLmWmRBO9P-VdkEV-dChC-VX2ynGnOjIjFTU7C3aCatk37Z04-49uodbBUV_MhWiwo32MOVcPhK9hLalJoTJTZTgOHCAQS3/s400/auguri_2013+(2).jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
The <a href="http://www.geo-solutions.it/"><b>GeoSolutions</b></a> team,<br />
<div>
<a href="http://www.geo-solutions.it/"><img border="0" height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXpN0zERBnV5Bd3UY2dCxA5q01LyqxxND9XJthHLeRhyphenhyphenHV3SHLgfV8s-wocQMemkmKazH-2ebxl4EwZycGjfisfD6oMWFRYttd0WAaL_ZZDi5lxEQCxsnQlQ7DaKo3seuAwTaeUvraqHp/s320/800x250_eng.png" width="320" /></a></div>
Anonymoushttp://www.blogger.com/profile/01956667100896875559noreply@blogger.com0tag:blogger.com,1999:blog-5176900881057973693.post-86810641198664160082013-12-21T12:21:00.000+01:002014-01-17T11:46:17.176+01:00We are hiring!<div style="text-align: center;">
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvkIkUc5fE01iaOXqpfCGIHNF760cZEAIHLN3toorSZ717Efj-zUvY6GTdiPA4JFsvxENHowqjKVgTy_Nnppn50fzTcMilXxd070bD7iOMEfHLqpWZ2b1_XIdYKwkWZSn9Fr5NcpOj8pzE/s1600/Now-Hiring.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvkIkUc5fE01iaOXqpfCGIHNF760cZEAIHLN3toorSZ717Efj-zUvY6GTdiPA4JFsvxENHowqjKVgTy_Nnppn50fzTcMilXxd070bD7iOMEfHLqpWZ2b1_XIdYKwkWZSn9Fr5NcpOj8pzE/s320/Now-Hiring.jpg" height="236" width="320" /></a></div>
<br />
<div style="text-align: left;">
<b><a href="http://www.geo-solutions.it/">GeoSolutions</a></b> is looking for talented people to fill a couple of positions which would mainly involve designing, implementing testing geospatial applications as well as providing support for the Open Source projects we are involved in.<br />
<br />
Here below some additional details:<br />
<br />
<b><span style="font-size: large;">GeoSpatial Mobile Developer Android/iOS</span></b><br />
This position would mainly involve designing and implementing native mobile geospatial applications.<br />
Qualifications are as follows:<br />
<ul>
<li>Working knowledge of Android Development</li>
<li>Working knowledge of iOS Development</li>
<li>Working knowledge of OpenGL is a plus</li>
<li>Working knowledge of Spatialite is a plus</li>
<li>Working knowledge of Geospatial libraries like GDAL, OGR, PROJ4, GEOS is a plus</li>
<li>Knowledge of web development with Python is a plus</li>
<li>Knowledge of Java (JEE and JSE) is desirable </li>
<li>At least 1 year of experience is desirable</li>
<li>Being fluent in English, both written and spoken</li>
</ul>
<div>
<br /></div>
<div>
<div style="text-align: center;">
<div style="text-align: left;">
<b><span style="font-size: large;">GeoTools/GeoServer Developer</span></b><br />
This position would mainly involve:<br />
<ul>
<li>design and implementation of new GeoServer/GeoTools features</li>
<li>performance of day-by-day bug fixing</li>
<li>mantainance of existing GeoServer installations. </li>
</ul>
Qualifications are as follows:<br />
<ul>
<li>Working knowledge of Java (JEE and JSE)</li>
<li>Working knowledge of <b>GeoServer</b> and GeoTools</li>
<li>Good Knowledge of most important OGC specifications and concepts (WMS, WFS, WCS, coverage, etc...)</li>
<li>Working knowledge of JAI and ImageIO is a plus</li>
<li>Working knowledge of OpenLayers is a plus</li>
<li>At least 1 year of experience </li>
<li>Being fluent in English, both written and spoken</li>
</ul>
<br /></div>
</div>
</div>
<b><span style="font-size: large;">Support Engineer</span></b><br />
This position will mainly focus on having <a href="http://www.geo-solutions.it/">our</a> clients receive the support they need in time and with the quality level they expect from us. The ability to work and communicate clearly in a fast-paced environment is essential since the Support Engineer will be the main point of contact between clients and developers and as such he will be responsible for mediating and coordinating clients' needs. Customers' satisfaction is going to be your mission!<br />
<br />
Main Responsibilities are as follows:<br />
<ul>
<li>Create documentation and trainings</li>
<li>Play the Q&A Engineer role when needed</li>
<li>Monitor quality and SLA levels for support accounts. Manage and improve support procedures as needed</li>
<li>Coordinate with development team to get updates on ongoing as well as planned planned enhancements for the products</li>
<li>Interface with development and support teams from <b><a href="http://www.geo-solutions.it/">GeoSolutions</a></b> as well as customers to ensure resolution of all customer calls</li>
<li>Periodically report status and strategic recommendations from clients to <b><a href="http://www.geo-solutions.it/">GeoSolutions</a></b> leadership</li>
</ul>
<br />
Qualifications are as follows:<br />
<ul>
<li> 1 year in technical support management, including personnel management</li>
<li> Familiarity with CRM or issue management systems </li>
<li>Working knowledge of GeoServer</li>
<li>Good Knowledge of most important OGC specifications and concepts (WMS, WFS, WCS, coverage, etc...)</li>
<li>Working knowledge of OpenLayers is a plus</li>
<li>Working knowledge of GeoNetwork is a plus</li>
</ul>
<ul>
</ul>
<div>
<b><span style="font-size: large;">What we offer</span></b></div>
<div>
We offer a variety of contracts but, please, notice that our intention is to establish a long term relationship, although as a temporary solution we do accept freelance consultants.<br />
<br />
<b><span style="font-size: large;">Location</span></b></div>
</div>
</div>
Working remotely is an option we envisage, although we will give priority to candidate closer to our office (check <a href="http://www.geo-solutions.it/about/" target="_blank">this page</a>).<br />
<br />
Please send a detailed resume together with a letter of presentation at <b><a href="mailto:jobs@geo-solutions.it">jobs@geo-solutions.it</a></b>.<br />
<br />
The <a href="http://www.geo-solutions.it/"><b>GeoSolutions</b></a> team,<br />
<div>
<a href="http://www.geo-solutions.it/"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8FG5K1RyVyY2YfD6gwPwY2BwSvz05TI1ua5uf3k8-QiMGcsByU2WL71YOzye7yRluSgy6MBHjK4Etvx87ZdREeDPQW_6mrKd-EWPof8R7L2hsjJhvO34aXQQYAMp7MjotIO72niUrlgJb/s320/1600x500_ita.png" height="52" width="320" /></a></div>
Anonymoushttp://www.blogger.com/profile/01956667100896875559noreply@blogger.com0Via Poggio alle Viti, 1187, Montramito LU, Italia43.8744082 10.27925600000003243.874363699999996 10.279177000000033 43.8744527 10.279335000000032tag:blogger.com,1999:blog-5176900881057973693.post-12147465579129730092013-12-09T14:34:00.000+01:002013-12-13T09:55:11.850+01:00OpenDataNetwork.it: CKAN and GeoNetwork for an integrated Open Data Portal<div class="separator" style="clear: both; text-align: center;">
</div>
Dear All,<br />
<a href="http://www.geo-solutions.it/">we</a> wanted to talk briefly about the <b>OpenDataNetwork Project </b>which is a joint project promoted by a few Public Administration located in the Italian Region of Tuscany, namely:<br />
<ul>
<li><b>County of Florence</b></li>
<li><b>County of Prato</b></li>
<li><b>County of Pistoia</b></li>
<li><b>Arno River Basin Authority</b></li>
</ul>
<div>
which have decided to create a federated infrastructure for the publication of their data (geospatial as well as alphanumeric) as <b>OpenData</b>. <br />
<br />
The Project has drawn its essence from the experience accumulated during the C.E.R.C.O. project which aimed at creating a federated <b>Spatial Data Infrastructure (SDI)</b> for the dissemination of geospatial data as Open Data for a number of Public Administrations in the region of Tuscany. The goals and aims have been so far expanded to provide a single entry point for the dissemination and exploitation of Open Data both geospatial and alphanumeric. The project was co-funded by the Region of Tuscany.<br />
<br />
<a href="http://www.geo-solutions.it/">GeoSolutions</a> has provided technical support for the implementation and deployment of the infrastructure as well as for the training of the partners for the management and evolutions of the platform in use. The current version of the system can be found at the link below:<br />
<br />
<div style="text-align: center;">
<b><a href="http://www.opendatanetwork.it/">http://www.opendatanetwork.it/</a></b></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
and here below you can find a screenshot of the user interface.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnsi5WzIlcbEXnnv4HSEBejJe11b5tmMmuYfMeCqAWuz901ex85Exc_-hdDRWsrD7iI5Ita3VEpZzIlfQH9GQuRSKS9Blb4Wty2CPY-EdWF1td8UD9ZQEsv_jBd4ztvPsPXmGquOCoBiir/s1600/opendatnetwork.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnsi5WzIlcbEXnnv4HSEBejJe11b5tmMmuYfMeCqAWuz901ex85Exc_-hdDRWsrD7iI5Ita3VEpZzIlfQH9GQuRSKS9Blb4Wty2CPY-EdWF1td8UD9ZQEsv_jBd4ztvPsPXmGquOCoBiir/s320/opendatnetwork.jpg" width="314" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
In terms of infrastructure and components, the overall infrastructure is depicted below, while the architecture for each single node is provided at the end of the post.<br />
The goal of the federation is to allow each partner to deploy the components he would need to have a complete and ready-to-use infrastructure for the publication of data as Open Data relying on Open Source products and accounting for the possibility to reuse existing components (e.g. proprietary geospatial servers) in order to minimize the impact. The Central Hub would then harvest the information from each Partner's Deployment (with particular care on avoiding cyclic graph in the harvesting set up) in order to act as the single entry point for the entire network. The possibility to have multiple hierarchical level is foreseen and actually possible to implement with no further development (e.g. a new County could join acting also as an Hub for its own cities which would not be harvested by the Central Hub).<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4gS3F96ECiM25ESAOd9KjdWXUzN4hd6dMZ1JRbSLukpDckJ30DXNbmILEZERkMhvR4vgnBvd90rMW4Kwvu0oTUu8NzTjLu8Bg636NuWVPPSj0VRbuv1VVq-V4_O6AUPnAwNgXGmWA6SAO/s1600/CERCO-Infrastruttura-Overall.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="191" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4gS3F96ECiM25ESAOd9KjdWXUzN4hd6dMZ1JRbSLukpDckJ30DXNbmILEZERkMhvR4vgnBvd90rMW4Kwvu0oTUu8NzTjLu8Bg636NuWVPPSj0VRbuv1VVq-V4_O6AUPnAwNgXGmWA6SAO/s400/CERCO-Infrastruttura-Overall.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Open Data Network overall infrastructure</td></tr>
</tbody></table>
</div>
<br />
<div>
The node Architecture puts together all the building blocks that a Partner could need to ingest and disseminate geospatial and alphanumeric data with particular emphasis on geospatial data. We also tried to use as much as possible existing standards for the interconnections in order to account for the possibility to swap some components with other similar ones. E.g. it would be possible to swap the catalog implementation from GeoNetwork to a different catalog providing it implemented the OGC CSW protocol.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiatM9NmqXpKgc27drRjQpXnj0uEFTORaCCw7f_84Wi317gxhtLiGiS2zzAl53jpYe0u-OIWlfcabVofjAMCWca1AyYiGlmoAPXcal6QtbsVy3LkA1WPQpMkafnNw1888-Yakw3j3GJgETO/s1600/CERCO-+architettura+nodo+-+dettagli.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="247" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiatM9NmqXpKgc27drRjQpXnj0uEFTORaCCw7f_84Wi317gxhtLiGiS2zzAl53jpYe0u-OIWlfcabVofjAMCWca1AyYiGlmoAPXcal6QtbsVy3LkA1WPQpMkafnNw1888-Yakw3j3GJgETO/s320/CERCO-+architettura+nodo+-+dettagli.png" width="320" /></a></div>
<br />
<br />
If you'd like to know more about what you could achieve with <span style="color: #0000ee;"><b><u>us</u></b></span>, do not hesitate and <b><a href="http://opensdi.geo-solutions.it/">get in touch with us</a>. </b>If you need professional services to get started with Open Source software make sure to have a look at our <b><a href="http://opensdi.geo-solutions.it/">GeoSolutions Enterprise Services</a>.</b><br />
<br />
The <b><a href="http://www.geo-solutions.it/">GeoSolutions</a> </b>team,<br />
<div>
<a href="http://geoserver.geo-solutions.it/"><img height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXpN0zERBnV5Bd3UY2dCxA5q01LyqxxND9XJthHLeRhyphenhyphenHV3SHLgfV8s-wocQMemkmKazH-2ebxl4EwZycGjfisfD6oMWFRYttd0WAaL_ZZDi5lxEQCxsnQlQ7DaKo3seuAwTaeUvraqHp/s320/800x250_eng.png" width="320" /></a></div>
Anonymoushttp://www.blogger.com/profile/01956667100896875559noreply@blogger.com7Via Poggio alle Viti, 1187, Montramito LU, Italia43.8744919 10.27925709999999543.8744469 10.279178099999996 43.8745369 10.279336099999995tag:blogger.com,1999:blog-5176900881057973693.post-60964145083039604322013-12-04T13:39:00.000+01:002013-12-07T11:39:57.916+01:00GeoSolutions presenting GeoServer for serving Meteorological Data at ECMWFDear All,<br />
a couple of weeks ago <a href="http://www.geo-solutions.it/">we</a> have been invited to <b><a href="http://www.ecmwf.int/">ECMFW</a> </b>for the <a href="http://www.ecmwf.int/newsevents/meetings/workshops/2013/MOS14/"><b>MOS14 Workshop</b></a><b> </b>to give a presentation on the current and future capabilities of <b><a href="http://geoserver.geo-solutions.it/">GeoServer</a> </b>for serving Metereological and Oceanographic data.<br />
<br />
<br />
Here below you can find the presentation that was given by Simone Giannecchini. In addition to an in-depth discussion about <b><a href="http://geoserver.geo-solutions.it/">GeoServer</a> </b>capabilities a few real-world use cases area also presented.<br />
<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="356" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/27175217" style="border-width: 1px 1px 0; border: 1px solid #CCC; margin-bottom: 5px;" width="427"> </iframe> <br />
<div style="margin-bottom: 5px;">
<strong> <a href="https://www.slideshare.net/geosolutions/geoserver-for-spatiotemporal-data-handling-with-examples-for-metoc-and-remote-sensing" target="_blank" title="Using GeoServer for spatio-temporal data management with examples for MetOc and remote sensing">Using GeoServer for spatio-temporal data management with examples for MetOc and remote sensing</a> </strong> from <strong><a href="http://www.slideshare.net/geosolutions" target="_blank">GeoSolutions</a></strong> </div>
<br />
<br />
If you'd like to know more about what you could achieve with <b><a href="http://geoserver.geo-solutions.it/" target="_blank">GeoServer</a></b>, do not hesitate and <b><a href="http://opensdi.geo-solutions.it/">get in touch with us</a>. </b>If you need professional services to get started with Open Source software make sure to have a look at our <b><a href="http://opensdi.geo-solutions.it/">GeoSolutions Enterprise Services</a>.</b><br />
<br />
The <b><a href="http://www.geo-solutions.it/">GeoSolutions</a> </b>team,<br />
<div>
<a href="http://geoserver.geo-solutions.it/"><img height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXpN0zERBnV5Bd3UY2dCxA5q01LyqxxND9XJthHLeRhyphenhyphenHV3SHLgfV8s-wocQMemkmKazH-2ebxl4EwZycGjfisfD6oMWFRYttd0WAaL_ZZDi5lxEQCxsnQlQ7DaKo3seuAwTaeUvraqHp/s320/800x250_eng.png" width="320" /></a></div>
Anonymoushttp://www.blogger.com/profile/01956667100896875559noreply@blogger.com0tag:blogger.com,1999:blog-5176900881057973693.post-11578603290678666382013-12-02T14:28:00.000+01:002013-12-02T14:28:02.252+01:00Developer's Corner: Dynamic ColorMaps support for ImageMosaicDear all,<br />
recently <a href="http://www.geo-solutions.it/">at <b>GeoSolutions</b></a><b> </b>we worked on developing the ability to set up <b>RenderingTransformations </b>for raster data which leverage the statistics contained within persistent auxiliary metadata files (<b>PAM</b>) generated by <b>GDAL </b>in order to render coverages by using well known or custm colormaps adapting them to the statistics of the underlying raster. <br />
<br />
In the short term these enhancements will be available only for the ImageMosaic plugin, but we plan to port them quickly to other raster plugins.<br />
<br />
In this post we would like to share some insights on the improvements we made, in order to be useful to users which may want to do some custom rendering of datasets like remsens/metoc/physical params without the need of "manually" set up a list of values/ranges for each of them.<br />
<h2>
ImageMosaic Enhancements </h2>
A new configuration parameter has been introduced yo the imageMosaic <b>indexer mechanism </b>(as new entry in the indexer.properties file or as new parameter in the parameters section within the indexer.xml) when configuring a new mosaic:<br />
<br />
<b><span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">CheckAuxiliaryMetadata=True|Fakse</span></span> </b><br />
<br />
(It is worth to notice that you may add that entry to the mosaic property in case the mosaic has been already configured; just make sure to reload the mosaic).<br />
<br />
This parameter suggests to the ImageMosaic machinery to look for <b>.aux.xml</b> file alongside the granules on disk. This parameter needs to be explicitly specified if you want that feature being enabled, in order to avoid small potential loss of performances for the classic cases where you don't want to support it. (Suppose you have a 1000 granules mosaic then looking on disk for 1000 .aux.xml files should be avoided if you don't need that feature).<br />
<br />
If you want to play with this feature, you need to run <span style="font-size: x-small;"><a href="http://www.gdal.org/gdalinfo.html"><span style="font-family: "Courier New",Courier,monospace;"><i>gdalinfo -stats</i></span></a></span> for each granule in order to generate the PAM auxiliary file for it. This will be serialized into a PAM Dataset object to be used for future statistics retrieval.<br />
<br />
<h2>
GeoServer DynamicColorMap Rendering Transformation</h2>
A new <b>DynamicColorMap WPS Process </b>( and RenderingTransformation) has been implemented.<br />
It basically takes an input coverage and a <a href="http://docs.geotools.org/latest/javadocs/org/geotools/styling/ColorMap.html">ColorMap</a> reference (more on this later on...) to be applied to the input coverage for rendering.<br />
<br />
An SLD Style that defines such a rendering transformation could be like this:<br />
<br />
<i><?xml version="1.0" encoding="ISO-8859-1"?></i><br />
<i><StyledLayerDescriptor version="1.0.0"</i><br />
<i>xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"</i><br />
<i>xmlns="http://www.opengis.net/sld"</i><br />
<i>xmlns:ogc="http://www.opengis.net/ogc"</i><br />
<i>xmlns:xlink="http://www.w3.org/1999/xlink"</i><br />
<i>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></i><br />
<i><NamedLayer></i><br />
<i><Name>DynamicColorMap</Name></i><br />
<i><UserStyle></i><br />
<i><Title>DynamicColorMap</Title></i><br />
<i><Abstract>A DynamicColorMap</Abstract></i><br />
<i><FeatureTypeStyle></i><br />
<i><Transformation></i><br />
<i><ogc:Function name="gs:DynamicColorMap"></i><br />
<i><ogc:Function name="parameter"></i><br />
<i><ogc:Literal>data</ogc:Literal></i><br />
<i></ogc:Function></i><br />
<i><ogc:Function name="parameter"></i><br />
<i><ogc:Literal>colorRamp</ogc:Literal></i><br />
<i><ogc:Function name="colormap"></i><br />
<i><ogc:Literal>_VALUE_</ogc:Literal></i><br />
<i><ogc:Function name="gridCoverageStats"><ogc:Literal>minimum</ogc:Literal></ogc:Function></i><br />
<i><ogc:Function name="gridCoverageStats"><ogc:Literal>maximum</ogc:Literal></ogc:Function></i><br />
<i></ogc:Function></i><br />
<i></ogc:Function></i><br />
<i></ogc:Function></i><br />
<i></Transformation></i><br />
<i><Rule></i><br />
<i><Name>rule1</Name></i><br />
<i><RasterSymbolizer></i><br />
<i><Opacity>1.0</Opacity></i><br />
<i></RasterSymbolizer></i><br />
<i></Rule></i><br />
<i></FeatureTypeStyle></i><br />
<i></UserStyle></i><br />
<i></NamedLayer></i><br />
<i></StyledLayerDescriptor></i><br />
<br />
<br />
Notice the <i>colorRamp</i> function representing a <a href="http://docs.geoserver.org/latest/en/user/filter/function_reference.html">filterFunction</a> which allows to setup a <a href="http://docs.geotools.org/latest/javadocs/org/geotools/styling/ColorMap.html">ColorMap</a> on top of the specified parameters:<br />
<ul>
<li>a literal _<b>VALUE</b>_ that defines how colors are mapped (see below)</li>
<li><b>minimum </b>and <b>maximum </b>values </li>
<ul>
<li>Note the minimum and maximum values are automatically computed by a <i>gridCoverageStats </i>filterfunction which takes these stats from the underlying coverage which have been previously setup by the ImageMosaic plugin though the PAM metadata.</li>
</ul>
</ul>
<br />
<h3>
How to specify colors</h3>
The literal _VALUE_ can be specified in three ways:<br />
<ol>
<li>A semi-colon separated list of RGB colors in this format:<br />
rgb(0,0,255);rgb(0,255,0);rgb(255,0,0); ...</li>
<li>A semi-colon separated list of HEX colors in this format:<br />
#0000FF;#00FF00;#FF0000; ...</li>
<li>A reference to a SVG file. See the next section.</li>
</ol>
Colors defined with method 1) and 2) will be <u>equally distributed</u> across the <b>min </b>- <b>max </b>statistics range <br />
<br />
Therefore, a _VALUE_ like <b>#0000FF</b>;<b>#00FF00</b>;<b>#FF0000</b> may result into this rendering<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj28JjAw46WFqc4I07aWgHZHtxc2vt035aqYAGtLBrFteTZQmLgo9oXouOAPXVLxtnhwj6tXxIAbgWRKTQMdwO_BCeVtbwVh5YkDKkvu65TwBP-qFPvKdwiGvJ3T8Ih6-5IfKsnK2P1dESA/s1600/bgr.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj28JjAw46WFqc4I07aWgHZHtxc2vt035aqYAGtLBrFteTZQmLgo9oXouOAPXVLxtnhwj6tXxIAbgWRKTQMdwO_BCeVtbwVh5YkDKkvu65TwBP-qFPvKdwiGvJ3T8Ih6-5IfKsnK2P1dESA/s400/bgr.png" width="400" /></a></div>
<br />
<h3>
SVG colormaps </h3>
We have imported SVG files from <b>QuantumGIS</b>, by copying the QuantumGIS SVG resources folder from <i><b>apps/qgis/resources/cpt-city-qgis-min</b></i> to the <i><b>GEOSERVER_DATA_DIR</b></i> as a <i><b>styles/ramps</b> </i>subfolder.<br />
<br />
These SVG files contain a <i>LinearGradient </i>element which will be used to setup a ColorMap. An example of SVG content is this:<br />
<br />
<linearGradient id="GMT_panoply" gradientUnits="objectBoundingBox" spreadMethod="pad" x1="0%" x2="100%" y1="0%" y2="0%"><br />
<stop offset="0.00%" stop-color="rgb(4,14,216)" stop-opacity="1.0000"/><br />
<stop offset="6.25%" stop-color="rgb(4,14,216)" stop-opacity="1.0000"/><br />
<stop offset="6.25%" stop-color="rgb(32,80,255)" stop-opacity="1.0000"/><br />
<stop offset="12.50%" stop-color="rgb(32,80,255)" stop-opacity="1.0000"/><br />
<stop offset="12.50%" stop-color="rgb(65,150,255)" stop-opacity="1.0000"/><br />
<stop offset="18.75%" stop-color="rgb(65,150,255)" stop-opacity="1.0000"/><br />
<stop offset="18.75%" stop-color="rgb(109,193,255)" stop-opacity="1.0000"/><br />
<stop offset="25.00%" stop-color="rgb(109,193,255)" stop-opacity="1.0000"/><br />
<stop offset="25.00%" stop-color="rgb(134,217,255)" stop-opacity="1.0000"/><br />
<stop offset="31.25%" stop-color="rgb(134,217,255)" stop-opacity="1.0000"/><br />
<stop offset="31.25%" stop-color="rgb(156,238,255)" stop-opacity="1.0000"/><br />
<stop offset="37.50%" stop-color="rgb(156,238,255)" stop-opacity="1.0000"/><br />
<stop offset="37.50%" stop-color="rgb(175,245,255)" stop-opacity="1.0000"/><br />
<stop offset="43.75%" stop-color="rgb(175,245,255)" stop-opacity="1.0000"/><br />
<stop offset="43.75%" stop-color="rgb(206,255,255)" stop-opacity="1.0000"/><br />
<stop offset="50.00%" stop-color="rgb(206,255,255)" stop-opacity="1.0000"/><br />
<stop offset="50.00%" stop-color="rgb(255,254,71)" stop-opacity="1.0000"/><br />
<stop offset="56.25%" stop-color="rgb(255,254,71)" stop-opacity="1.0000"/><br />
<stop offset="56.25%" stop-color="rgb(255,235,0)" stop-opacity="1.0000"/><br />
<stop offset="62.50%" stop-color="rgb(255,235,0)" stop-opacity="1.0000"/><br />
<stop offset="62.50%" stop-color="rgb(255,196,0)" stop-opacity="1.0000"/><br />
<stop offset="68.75%" stop-color="rgb(255,196,0)" stop-opacity="1.0000"/><br />
<stop offset="68.75%" stop-color="rgb(255,144,0)" stop-opacity="1.0000"/><br />
<stop offset="75.00%" stop-color="rgb(255,144,0)" stop-opacity="1.0000"/><br />
<stop offset="75.00%" stop-color="rgb(255,72,0)" stop-opacity="1.0000"/><br />
<stop offset="81.25%" stop-color="rgb(255,72,0)" stop-opacity="1.0000"/><br />
<stop offset="81.25%" stop-color="rgb(255,0,0)" stop-opacity="1.0000"/><br />
<stop offset="87.50%" stop-color="rgb(255,0,0)" stop-opacity="1.0000"/><br />
<stop offset="87.50%" stop-color="rgb(213,0,0)" stop-opacity="1.0000"/><br />
<stop offset="93.75%" stop-color="rgb(213,0,0)" stop-opacity="1.0000"/><br />
<stop offset="93.75%" stop-color="rgb(158,0,0)" stop-opacity="1.0000"/><br />
<stop offset="100.00%" stop-color="rgb(158,0,0)" stop-opacity="1.0000"/><br />
</linearGradient><br />
<br />
Which represents this color gradient:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZXTMXcIA0Iwbn_o-bzJ3w6F-CMvS61HjjriBbSttUiq-oIK4Udcic4JzC-T2I5sJNhITKv9UmWcNHyLu72akoTrMMBV8lrpuGtDaJQRwWkSWYPAuQp3ta7tixftjPvjfmSpsr-C4CZzYK/s1600/intervals.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZXTMXcIA0Iwbn_o-bzJ3w6F-CMvS61HjjriBbSttUiq-oIK4Udcic4JzC-T2I5sJNhITKv9UmWcNHyLu72akoTrMMBV8lrpuGtDaJQRwWkSWYPAuQp3ta7tixftjPvjfmSpsr-C4CZzYK/s1600/intervals.png" /></a></div>
<br />
We can use it within the previously defined style by setting the literal _VALUE_ like this: <br />
<i><br /></i>
<i><?xml version="1.0" encoding="ISO-8859-1"?></i><br />
<i><StyledLayerDescriptor version="1.0.0"</i><br />
<i>xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"</i><br />
<i>xmlns="http://www.opengis.net/sld"</i><br />
<i>xmlns:ogc="http://www.opengis.net/ogc"</i><br />
<i>xmlns:xlink="http://www.w3.org/1999/xlink"</i><br />
<i>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></i><br />
<i><NamedLayer></i><br />
<i><Name>DynamicColorMap</Name></i><br />
<i><UserStyle></i><br />
<i><Title>DynamicColorMap</Title></i><br />
<i><Abstract>A DynamicColorMap</Abstract></i><br />
<i><FeatureTypeStyle></i><br />
<i><Transformation></i><br />
<i><ogc:Function name="gs:DynamicColorMap"></i><br />
<i><ogc:Function name="parameter"></i><br />
<i><ogc:Literal>data</ogc:Literal></i><br />
<i></ogc:Function></i><br />
<i><ogc:Function name="parameter"></i><br />
<i><ogc:Literal>colorRamp</ogc:Literal></i><br />
<i><ogc:Function name="colormap"></i><br />
<i><ogc:Literal>gmt\GMT_panoply</ogc:Literal></i><br />
<i><ogc:Function name="gridCoverageStats"><ogc:Literal>minimum</ogc:Literal></ogc:Function></i><br />
<i><ogc:Function name="gridCoverageStats"><ogc:Literal>maximum</ogc:Literal></ogc:Function></i><br />
<i></ogc:Function></i><br />
<i></ogc:Function></i><br />
<i></ogc:Function></i><br />
<i></Transformation></i><br />
<i><Rule></i><br />
<i><Name>rule1</Name></i><br />
<i><RasterSymbolizer></i><br />
<i><Opacity>1.0</Opacity></i><br />
<i></RasterSymbolizer></i><br />
<i></Rule></i><br />
<i></FeatureTypeStyle></i><br />
<i></UserStyle></i><br />
<i></NamedLayer></i><br />
<i></StyledLayerDescriptor></i><br />
<br />
<pre><span style="background-color: white;"><span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><span class="nt"></span></span></span></span></pre>
<br />
Where we have defined the path and the name of the required SVG. Using such ColorMap will result into this rendering:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihgpRTKMELDBzf9syXK0D8_1lsJg1h1EX1s3m6e1DM0Z9aW2Pjw6ShzMGRTyhYUWhY5txPUJK2qxzRXvdcva2KBSaGmPl5JOKe5xdqq6sxmW4ZB_0eChK2vPtb_L5ICYKWtO0PVMcilwPj/s1600/panoply.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="175" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihgpRTKMELDBzf9syXK0D8_1lsJg1h1EX1s3m6e1DM0Z9aW2Pjw6ShzMGRTyhYUWhY5txPUJK2qxzRXvdcva2KBSaGmPl5JOKe5xdqq6sxmW4ZB_0eChK2vPtb_L5ICYKWtO0PVMcilwPj/s400/panoply.png" width="400" /></a></div>
<br />
<h2>
Current Status of the code</h2>
The code is currently available in the following fork/branches:<br />
GeoTools ImageMosaic update: <a href="https://github.com/geosolutions-it/geotools/tree/pamsupport" target="_blank">https://github.com/<wbr></wbr>geosolutions-it/geotools/tree/<wbr></wbr>pamsupport</a><br />
GeoServer wps update: <a href="https://github.com/geosolutions-it/geoserver/tree/dynamiccolormap">https://github.com/geosolutions-it/geoserver/tree/dynamiccolormap</a><br />
<br />
It would be part of master branch for both <a href="http://geoserver.geo-solutions.it/">GeoServer</a> and GeoTools in a few days after release of ImageIO-Ext 1.1.8, hence they will be available at least for GeoServer 2.5.<br />
<br />
<br />
Last but not least, we believe it is worth to mention that this work was performed via our <b><a href="http://opensdi.geo-solutions.it/">GeoSolutions Enterprise Services</a> </b>frame contract.<br />
If you'd like to know more about what you could achieve with <b><a href="http://geoserver.geo-solutions.it/" target="_blank">GeoServer</a></b>, do not hesitate and <b><a href="http://opensdi.geo-solutions.it/">get in touch with us</a>. </b>If you need professional services to get started with Open Source software make sure to have a look at our <b><a href="http://opensdi.geo-solutions.it/">GeoSolutions Enterprise Services</a>.</b><br />
<br />
The <b><a href="http://www.geo-solutions.it/">GeoSolutions</a> </b>team,<br />
<div>
<a href="http://geoserver.geo-solutions.it/"><img height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXpN0zERBnV5Bd3UY2dCxA5q01LyqxxND9XJthHLeRhyphenhyphenHV3SHLgfV8s-wocQMemkmKazH-2ebxl4EwZycGjfisfD6oMWFRYttd0WAaL_ZZDi5lxEQCxsnQlQ7DaKo3seuAwTaeUvraqHp/s320/800x250_eng.png" width="320" /></a></div>
Daniele Romagnolihttp://www.blogger.com/profile/02482652185618374893noreply@blogger.com0Massarosa LU, Italia43.878283612918914 10.27660496416501743.877924112918912 10.275971964165016 43.878643112918915 10.277237964165018tag:blogger.com,1999:blog-5176900881057973693.post-79062668856119065692013-11-25T17:41:00.000+01:002013-11-28T10:36:58.377+01:00Developer's Corner: MapStore 1.4.0 released!<div>
<div style="text-align: center;">
<a href="http://goo.gl/cmpWO"><img border="0" src="http://opensdi.geo-solutions.it/images/box_slide_mapstore.png" /></a></div>
<br /></div>
<a href="http://www.geo-solutions.it/">We</a> are proud to announce the <b><a href="https://github.com/geosolutions-it/mapstore">MapStore</a></b> 1.4.0 release.<br />
<br />
This is the latest official release of <b><a href="https://github.com/geosolutions-it/mapstore">MapStore</a></b>, the simple and intuitive way to create, save and share maps.<br />
<b><a href="https://github.com/geosolutions-it/mapstore">MapStore</a> </b>is based on the <a href="https://github.com/opengeo/GeoExplorer">GeoExplorer Open Source</a> framework and is licensed under the GPL license.<br />
<br />
You can get MapStore as:<br />
<ul>
<li><a href="http://goo.gl/cmpWO">generic binary</a></li>
<li><a href="http://goo.gl/Swefa">geonetwork integrated binary</a></li>
<li><a href="http://goo.gl/BE02J">windows installer</a></li>
<li><a href="http://goo.gl/UY3oB">geonetwork integrated windows installer</a></li>
</ul>
Here is a list of the most important improvements included in this release:<br />
<br />
<ul>
<li>#<a href="https://github.com/geosolutions-it/mapstore/issues/243">243</a> Graticule tab in print preview</li>
<li><a href="https://github.com/geosolutions-it/mapstore/issues/246">#246</a> Add support to authentication in WMSGetFeatureInfo</li>
<li><a href="https://github.com/geosolutions-it/mapstore/issues/245">#245</a> Add support to authentication in WPSClient</li>
<li><a href="https://github.com/geosolutions-it/mapstore/issues/226">#226</a> Externalize the AdvancedScaleOverlay configuration mode</li>
<li><a href="https://github.com/geosolutions-it/mapstore/issues/255">#255</a> Review of OpenLayers CSS</li>
<li><a href="https://github.com/geosolutions-it/mapstore/issues/223">#223</a> MapStore Training documentation</li>
<li><a href="https://github.com/geosolutions-it/mapstore/issues/221">#221</a> Print Shanpshot Widget</li>
<li><a href="https://github.com/geosolutions-it/mapstore/issues/218">#218</a> Print Widget Upgrade</li>
<li><a href="https://github.com/geosolutions-it/mapstore/pull/">#222</a> Configuration updates</li>
<li><a href="https://github.com/geosolutions-it/mapstore/pull/219">#219</a> ScaleBar and MousePosition Improvements </li>
</ul>
<ul></ul>
If you need further info look at the <a href="https://github.com/geosolutions-it/mapstore/issues?milestone=5&page=1&state=closed">complete list of included issues</a> and the <a href="https://github.com/geosolutions-it/mapstore/wiki/1.4-Release-Notes">MapStore 1.4 Release Notes</a>.<br />
<br />
With <b><a href="https://github.com/geosolutions-it/mapstore">MapStore</a> </b>you can mashup contents from Google Maps, OpenStreetMap, MapQuest, Bing or specific WMS services provided by you or third party content providers.<br />
<b><a href="https://github.com/geosolutions-it/mapstore">MapStore</a> </b>uses internally <a href="https://github.com/geosolutions-it/geostore"><b>GeoStore</b></a>, (the <b><a href="http://www.geo-solutions.it/">GeoSolutions</a> </b>Open Source engine for resource storing and retrieving) for managing users as well as maps definitions. Moreover <b><a href="https://mapstore.geo-solutions.it/">MapStore</a> </b>uses <a href="https://github.com/geosolutions-it/http-proxy"><b>Http-proxy</b></a> to communicate with remote servers, such as the third party WMS services used in your maps.<br />
<br />
Visit our <a href="http://mapstore.geo-solutions.it/">online demo</a> or download the <b><a href="https://mapstore.geo-solutions.it/">MapStore</a> </b><a href="http://goo.gl/cmpWO">binary</a>, read the <a href="https://github.com/geosolutions-it/mapstore/wiki/Quick-Start-Guide">Quick Start guide</a> and start to create and share your own maps. If you need more info, please check to the complete <a href="https://github.com/geosolutions-it/mapstore/wiki">documentation</a> wiki.<br />
<br />
<div>
If you have questions or if you just want to talk to us about using our tools in your project, please, subscribe to the mailing list <a href="https://groups.google.com/group/mapstore-users">here</a>. In any case, do not hesitate to <a href="http://www.geo-solutions.it/">contact us</a>.<br />
<br />
<div style="text-align: center;">
<b><span style="font-size: large;">Happy mapping to everybody!</span></b></div>
</div>
<br />
<div>
<div>
The <a href="http://www.geo-solutions.it/"><b>GeoSolutions</b></a> team,</div>
<div>
<a href="http://www.geo-solutions.it/"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib3_f6Uitl4hETf98AP3jlTMEWcwDtaloV15fsulx9h9uPn95ZJgXmBRN1aihr6rAMejL0O0WoW-kJOd01bNdhUYW9aYOm8doDp8WDaBl-LbLqqRJmcba_M_UM4vLFurHMT7PEXPVpZGx_/s1600/geosolutions-logo.gif" /></a></div>
</div>
Tobia Di Pisahttp://www.blogger.com/profile/04933768372850934905noreply@blogger.com0Via Poggio alle Viti, 1187, Montramito LU, Italia43.8744919 10.27925709999999543.8744469 10.279178099999996 43.8745369 10.279336099999995tag:blogger.com,1999:blog-5176900881057973693.post-15265814019772452352013-10-28T16:48:00.000+01:002013-10-29T00:39:24.004+01:00Developer's Corner: Fast, Pure Java, Open Source PNG Encoder for GeoServerDear All,<br />
lately Andrea Aime from <a href="http://www.geo-solutions.it/" target="_blank">GeoSolutions</a> has been working hard in order to create a pure Java PNG encoder that was good enough to replace the native one we have been using so far. You might wonder why we were doing this, well a few reasons:<br />
<br />
<br />
<ol>
<li>the standard PNG encoder shipped with the Oracle JDK is very poor in terms or encoding speed which has a bad impact on WMS performance overall</li>
<li>There is no native PNG encoder for Windows 64 bits platforms</li>
<li>Using the native PNG encoder requires an extra installation step as the user needs to install the native libraries</li>
</ol>
<div>
Well, I guess this is enough to start off a new writer/encoder. Here below you can find some excerpts from an email we sent to the GeoServer developers' mailing list describing the status of the work.</div>
<div>
<br /></div>
<div>
The faster PNG encoder module in community is ready for people to try out: I've tested it with a number of demo layers, seems to be working, so I though it was time to try out its performance (get the popcorn and have a seat).</div>
<div>
<br /></div>
<div>
The comparisons involve 3 PNG encoders:</div>
<div>
* The JDK one, which it not tunable (it actually ignores our quality/compression indications) and compresses everything to the fullest, delivering consistently the smallest PNG in exchange for a very slow performance. </div>
<div>
* The native ImageIO one, which you can get only if you have properly installed ImageIO, which honors the compression settings by altering the level of effort involved in encoding a PNG image, delivering larger images but also providing better performance. This is the encoder you cannot have on Windows 64 and OSX, since there is no native ImageIO for those platforms</div>
<div>
* The new encoder, based on PNGJ, a open source, java based, low level PNG encoder, coupled with high performance scanline extractors from yours truly, that efficiently feed the image bytes into PNGJ</div>
<div>
<br /></div>
<div>
First I did a very silly test against topp:states, usual style, map size 780x330, using ab (apache bench) with 1 and 4 threads, comparing the throughput and output size for a compression level of 25 (the default one in the WMS panel).</div>
<div>
Results:</div>
<div>
<br /></div>
<div>
<div>
Threads JDK Native ImageIO PNGJ based</div>
<div>
1 11.7 25.4 36.9</div>
<div>
4 <span style="font-family: 'courier new', monospace;">38.9 75.11 94.5</span></div>
<div>
Size 39KB 55KB 45KB</div>
<div>
<br /></div>
<div>
Well, as you can see the improvement over JDK is _very_ significant, but the one over NativeIO is not to throw away either.</div>
<div>
The output size is good news too, the new encoder manages to be faster than the CLib one and yet provides a output size closer to the JDK one (which, as said, uses every possible effort to have the smallest possible output).</div>
<div>
<br /></div>
<div>
Yet, this use case is a toy, the map is small, the vectors are simple.</div>
<div>
<br /></div>
<div>
So I've decided to try something bigger, the FOSS4G 2010 benchmark, the vector map of the whole spain with roads, buildings, contour lines, labels.<br />
I've collected the full results in this Google Spreadsheet:</div>
<div>
<a href="https://docs.google.com/spreadsheet/ccc?key=0Aq3GF1EnUyHEdHVodEpjNHM0MVhEMlhPcmJHTTFCTWc&usp=sharing" style="color: #1155cc;" target="_blank">https://docs.google.com/<wbr></wbr>spreadsheet/ccc?key=<wbr></wbr>0Aq3GF1EnUyHEdHVodEpjNHM0MVhEM<wbr></wbr>lhPcmJHTTFCTWc&usp=sharing</a></div>
<div>
<br /></div>
<div>
Here is just the comparison chart (click to enlarge):</div>
<div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqy4XVXQmipnMl1jcP8IXxAL25hCZ0GS2c6PUJOcCNuMeBRpWNd1uKzgdfGBYLdvMm9KCoXTJUyzCV6jgxvAfZGl3XhqkQLET-1VpMeQboWJPl0I8iZjXVc0VafzobF0J8MNBu7LKSuCmW/s1600/foss4g.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="255" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqy4XVXQmipnMl1jcP8IXxAL25hCZ0GS2c6PUJOcCNuMeBRpWNd1uKzgdfGBYLdvMm9KCoXTJUyzCV6jgxvAfZGl3XhqkQLET-1VpMeQboWJPl0I8iZjXVc0VafzobF0J8MNBu7LKSuCmW/s400/foss4g.png" width="400" /></a></div>
<br /></div>
<div>
Well, I'd say the speedup is again rather good compared to the plain JDK encoder, and not to throw away compared to the ImageIO native encoder.</div>
<div>
Again, I've reached for one of the output maps of the benchmark and compared sizes (this is a 904x764 image with a dense set of countour lines, road network, some labels, some polygons):</div>
<div>
* JDK -> 338KB</div>
<div>
* Native ImageIO -> 509KB</div>
<div>
* PNGJ based -> 367KB</div>
<div>
<br /></div>
<div>
Again, close to the JDK size, yet faster than the native ImageIO encoder in speed.</div>
<div>
<br /></div>
<div>
Not too bad, if I may say! (Windows Server users, likely using 64 bits JVMs, should pop the champagne :-p )</div>
<div>
<br /></div>
<div>
I've added the module to the nightly build on the master branch, and if you are a developer, you can load it by using the -Ppng profile with your maven commands. If you are a user you can download it from <a href="http://ares.boundlessgeo.com/geoserver/master/community-latest/geoserver-2.5-SNAPSHOT-png-plugin.zip" style="color: #222222;" target="_blank">here</a>. As mentioned above the plugin is available only for the master build, but it _should_ still be compatible with 2.4.0.</div>
<div>
<br /></div>
<div>
I'd like to get some feedback from the early testers, and then push this module for extension status in the 2.4.x series to have a larger user base test it.</div>
<div>
<br /></div>
<div>
Important remark for users that might be reading this: before you run downloading the new module, remember that the speedup is solely in the PNG encoding phase.<br />
If your map takes 1 second or more to draw, you probably have troubles in data setup, don't waste your time trying a difference PNG encoder, optimize your data or styles instead.</div>
<div>
If instead your current maps already get returned in less than, say, 0.3 seconds then yes, give the new PNG encoder a try.</div>
<div>
<br />
<div>
Moving on I've run the same benchmarks (last WMS shootout) to see how the new PNG encoder performs under OpenJDK 7 (1.7.0_45), which is known to have a slower rasterizer but better scalability.</div>
<div>
<br /></div>
<div>
Well... have a look, this is the comparison between JDK own PNG encoder, ImageIO native one, and the new pure java PNGJ based encoder (click to enlarge):</div>
<div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHYQC0uB6lp1aD24waHT6WaNrCA9l0ckXcJcf810IX93ijUMDLLEp7Ybb1dn2UvIiIw4X58r18FAhT3sFdrzwGgGPUouCSMHya0ag8ZbKLY7aAgJM3c9YwOWieRZ5bIoiyC_UeIscXBeti/s1600/openjdk.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="255" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHYQC0uB6lp1aD24waHT6WaNrCA9l0ckXcJcf810IX93ijUMDLLEp7Ybb1dn2UvIiIw4X58r18FAhT3sFdrzwGgGPUouCSMHya0ag8ZbKLY7aAgJM3c9YwOWieRZ5bIoiyC_UeIscXBeti/s400/openjdk.png" width="400" /></a></div>
<br /></div>
<div>
<br /></div>
<div>
See anything? No? Well, let me try to show the comparison between last week JDK 7 results and this week OpenJDK 7 on just the PNGJ based encoder (click to enlarge):</div>
<div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje0k3gYR5g2jp4h1Yu97nAHamSKFFDFm930Sm27IzzPQytaQ_GffDl0E0GrHS8ytxz3273GDidivG62-mIuh51xP2I_FHaH4A7y0XnR2GFQwuw_YWdwQ5x252MK8ZfbP-r29Qekoz1z8dA/s1600/openjdk_vs_oracle.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="255" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEje0k3gYR5g2jp4h1Yu97nAHamSKFFDFm930Sm27IzzPQytaQ_GffDl0E0GrHS8ytxz3273GDidivG62-mIuh51xP2I_FHaH4A7y0XnR2GFQwuw_YWdwQ5x252MK8ZfbP-r29Qekoz1z8dA/s400/openjdk_vs_oracle.png" width="400" /></a></div>
<br /></div>
<div>
<br /></div>
<div>
Got the message now? :-)</div>
<div>
<br /></div>
<div>
Full details here: </div>
<div>
<a href="https://docs.google.com/spreadsheet/ccc?key=0Aq3GF1EnUyHEdHVodEpjNHM0MVhEMlhPcmJHTTFCTWc&usp=drive_web#gid=2" style="color: #1155cc;" target="_blank">https://docs.google.com/<wbr></wbr>spreadsheet/ccc?key=<wbr></wbr>0Aq3GF1EnUyHEdHVodEpjNHM0MVhEM<wbr></wbr>lhPcmJHTTFCTWc&usp=drive_web#<wbr></wbr>gid=2</a></div>
<div>
<br /></div>
<div>
Long story short, at 1 thread OpenJDK 7 is slower, but it matches Oracle JDK already at 2 and gets better quickly as we go up with the number of threads*.</div>
<div>
<br /></div>
<div>
And while even the ImageIO native encoder gets a benefit from using OpenJDK 7 (10-15% faster than with Oracle JDK), the PNGJ based encoder really shines with it... while my previous mail was really good news for Windows 64 bit users, I'm picturing very large smiles on Linux user faces today** ;-)</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
*: This does not mean OpenJDK will be better for any kind of map, the denser the map, the slower OpenJDK 7, since it's really slower at rasterizing. The maps in the last WMS shootout were not really that dense (the typical OSM map has more elements in it)</div>
<div>
**: OpenJDK binary builds are not officially available for Windows, however, for those that dare to try, there are unofficial builds here:</div>
<div>
<a href="https://github.com/alexkasko/openjdk-unofficial-builds" style="color: #1155cc;" target="_blank">https://github.com/alexkasko/<wbr></wbr>openjdk-unofficial-builds</a></div>
<div>
Would be nice to hear from Windows users how these perform (and how stable they are)</div>
<br />
<div>
So, if you're eager to try out the new PNG encoder, download it from the <a href="http://ares.boundlessgeo.com/geoserver/master/community-latest/geoserver-2.5-SNAPSHOT-png-plugin.zip">nightly builds</a> and drop its contents in geoserver/WEB-INF/lib, restart, and enjoy raster PNG encoding. While the module has been built inside the 2.5.x series, it is also compatible with 2.4.x and 2.3.x.<br />
<br />
If you'd like to know more about what you could achieve with <b><a href="http://geoserver.geo-solutions.it/" target="_blank">GeoServer</a></b>, do not hesitate and <b><a href="http://opensdi.geo-solutions.it/">get in touch with us</a>. </b>If you need professional services to get started with Open Source software make sure to have a look at our <b><a href="http://opensdi.geo-solutions.it/">GeoSolutions Enterprise Services</a>.</b></div>
<div style="color: black; font-family: 'Times New Roman'; font-size: medium;">
<br /></div>
<div>
The <a href="http://www.geo-solutions.it/">GeoSolutions</a> team.</div>
<div style="color: black; font-family: 'Times New Roman'; font-size: medium;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6ajRwBb7qRh39gnG8xc7ymt6RXh4fG623XL8Z6vCkkcnjFSuIh3om3QO608g3Jyhscthc5jy5OR1vHCHGmaU1JSPrXFXXNYtJj_QVB2S3thWVAzxSF3ReJXX5V5gDFzKWcuaXgi3_Favw/s1600/geosolutions-logo.gif" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6ajRwBb7qRh39gnG8xc7ymt6RXh4fG623XL8Z6vCkkcnjFSuIh3om3QO608g3Jyhscthc5jy5OR1vHCHGmaU1JSPrXFXXNYtJj_QVB2S3thWVAzxSF3ReJXX5V5gDFzKWcuaXgi3_Favw/s1600/geosolutions-logo.gif" /></a></div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/01956667100896875559noreply@blogger.com0Massarosa LU, Italia43.878451569273004 10.27693967141112843.872729069273007 10.266854671411128 43.884174069273 10.287024671411128tag:blogger.com,1999:blog-5176900881057973693.post-1700869395631333232013-10-21T11:29:00.002+02:002013-10-21T11:29:41.779+02:00GeoSolutions Presentations @ FOSS4G 2013Dear All,<br />
we are publishing here most of the presentation <a href="http://www.geo-solutions.it/" style="font-weight: bold;">GeoSolutions</a> gave at the <b>Free and Open Source Software for Geospatial (<a href="http://2013.foss4g.org/">FOSS4G</a>)</b> 2013 conference.<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="356" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/27174599" style="border-width: 1px 1px 0; border: 1px solid #CCC; margin-bottom: 5px;" width="427"> </iframe> <br />
<div style="margin-bottom: 5px;">
<strong> <a href="https://www.slideshare.net/geosolutions/gs-steroids-sgiannecfoss4g20130103" target="_blank" title="GeoServer on steroids">GeoServer on steroids</a> </strong> from <strong><a href="http://www.slideshare.net/geosolutions" target="_blank">GeoSolutions</a></strong> <br />
<br /></div>
<br />
<div>
<iframe allowfullscreen="" frameborder="0" height="356" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/27174430" style="border-width: 1px 1px 0; border: 1px solid #CCC; margin-bottom: 5px;" width="427"> </iframe> <br />
<div style="margin-bottom: 5px;">
<strong> <a href="https://www.slideshare.net/geosolutions/geoserver-an-introduction-for-beginners" target="_blank" title="GeoServer an introduction for beginners">GeoServer an introduction for beginners</a> </strong> from <strong><a href="http://www.slideshare.net/geosolutions" target="_blank">GeoSolutions</a></strong> <br />
<br /></div>
</div>
<div>
<iframe allowfullscreen="" frameborder="0" height="356" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/27175502" style="border-width: 1px 1px 0; border: 1px solid #CCC; margin-bottom: 5px;" width="427"> </iframe> <br />
<div style="margin-bottom: 5px;">
<strong> <a href="https://www.slideshare.net/geosolutions/advanced-geoserver-security-with-geofence" target="_blank" title="Advanced GeoServer Security with GeoFence">Advanced GeoServer Security with GeoFence</a> </strong> from <strong><a href="http://www.slideshare.net/geosolutions" target="_blank">GeoSolutions</a></strong> <br />
<br /></div>
</div>
<br />
<div>
<iframe allowfullscreen="" frameborder="0" height="356" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/27175325" style="border-width: 1px 1px 0; border: 1px solid #CCC; margin-bottom: 5px;" width="427"> </iframe> <br />
<div style="margin-bottom: 5px;">
<strong> <a href="https://www.slideshare.net/geosolutions/raster-data-in-geoserver-and-geotools-achievements-issues-and-future-developments-27175325" target="_blank" title="Raster Data In GeoServer And GeoTools: Achievements, Issues And Future Developments">Raster Data In GeoServer And GeoTools: Achievements, Issues And Future Developments</a> </strong> from <strong><a href="http://www.slideshare.net/geosolutions" target="_blank">GeoSolutions</a></strong> </div>
</div>
<br />
<iframe allowfullscreen="" frameborder="0" height="356" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/27175217" style="border-width: 1px 1px 0; border: 1px solid #CCC; margin-bottom: 5px;" width="427"> </iframe> <br />
<div style="margin-bottom: 5px;">
<strong> <a href="https://www.slideshare.net/geosolutions/geoserver-for-spatiotemporal-data-handling-with-examples-for-metoc-and-remote-sensing" target="_blank" title="GeoServer for Spatio-temporal Data Handling With Examples For MetOc And Remote Sensing">GeoServer for Spatio-temporal Data Handling With Examples For MetOc And Remote Sensing</a> </strong> from <strong><a href="http://www.slideshare.net/geosolutions" target="_blank">GeoSolutions</a></strong> </div>
<br />
<iframe allowfullscreen="" frameborder="0" height="356" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/27175092" style="border-width: 1px 1px 0; border: 1px solid #CCC; margin-bottom: 5px;" width="427"> </iframe> <br />
<div style="margin-bottom: 5px;">
<strong> <a href="https://www.slideshare.net/geosolutions/advanced-cartographic-map-rendering-in-geoserver-27175092" target="_blank" title="Advanced Cartographic Map Rendering In GeoServer">Advanced Cartographic Map Rendering In GeoServer</a> </strong> from <strong><a href="http://www.slideshare.net/geosolutions" target="_blank">GeoSolutions</a></strong> </div>
<br />
If you'd like to know more about what you could achieve with <b><a href="http://geoserver.geo-solutions.it/" target="_blank">o</a>ur support</b>, do not hesitate and <b><a href="http://opensdi.geo-solutions.it/">get in touch with us</a>. </b>If you need professional services to get started with Open Source software make sure to have a look at our <b><a href="http://opensdi.geo-solutions.it/">GeoSolutions Enterprise Services</a>.</b><br />
<br />
The <a href="http://www.geo-solutions.it/">GeoSolutions</a> team.<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6ajRwBb7qRh39gnG8xc7ymt6RXh4fG623XL8Z6vCkkcnjFSuIh3om3QO608g3Jyhscthc5jy5OR1vHCHGmaU1JSPrXFXXNYtJj_QVB2S3thWVAzxSF3ReJXX5V5gDFzKWcuaXgi3_Favw/s1600/geosolutions-logo.gif" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6ajRwBb7qRh39gnG8xc7ymt6RXh4fG623XL8Z6vCkkcnjFSuIh3om3QO608g3Jyhscthc5jy5OR1vHCHGmaU1JSPrXFXXNYtJj_QVB2S3thWVAzxSF3ReJXX5V5gDFzKWcuaXgi3_Favw/s1600/geosolutions-logo.gif" /></a>Anonymoushttp://www.blogger.com/profile/01956667100896875559noreply@blogger.com0tag:blogger.com,1999:blog-5176900881057973693.post-86619329360046657662013-10-19T12:02:00.000+02:002013-10-19T12:02:31.536+02:00GeoServer Enterprise 2.2.6 ReleasedDear All,<br />
we would like to announce the first release of the <a href="http://geoserver.geo-solutions.it/" target="_blank"><b>GeoServer Enterprise</b></a>.<br />
<br />
<div style="text-align: justify;">
<a href="http://geoserver.geo-solutions.it/" target="_blank"><b>GeoServer Enterprise</b></a> has been developed by <b><a href="http://www.geo-solutions.it/">GeoSolutions</a></b> leveraging on the community version of GeoServer 2.2 itself. It contains natively a selected subset of the standard extensions plus some additional ones developed by <b><a href="http://www.geo-solutions.it/">GeoSolutions</a></b>. It is released as Open Source under the GPL v 2.0 license and it is available for <b>free</b>.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
The goal is to provide <b>Long Term Support</b> for the <b><a href="http://geoserver.geo-solutions.it/" target="_blank">GeoServer</a> </b>versions we are going to promote as Enterprise in order to ensure <b>superior stability</b> and <b>maturity </b>for those users not willing to follow closely the Release Early, Release Often mantra but prefer to use a slightly older but more stable version of the software.</div>
<div style="text-align: justify;">
Long story short, the mission of the <a href="http://geoserver.geo-solutions.it/" target="_blank"><b>GeoServer Enterprise</b></a> is <b><u>stability rather than new features</u></b>, only priority bug-fixes and carefully selected new features will be added. </div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
The current release follows the numbering of the originating <a href="http://geoserver.geo-solutions.it/">GeoServer</a> branch, as such it is numbered as <b><a href="http://geoserver.geo-solutions.it/downloads/releases/2.2.x/2.2.6-ENTERPRISE/">2.2.6</a>. </b>Make sure you read <a href="https://github.com/geosolutions-it/geoserver-enterprise/wiki#download-and-use">this page</a> after the download for more information about the provided extensions and the additional steps for making them work properly.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
One last important thing. The package ships with an importer extension allowing the admin to preprocess and mass import data such as:</div>
<br />
<ul>
<li>PostGIS</li>
<li>GeoTiff</li>
<li>Shapefile</li>
<li><i>ArcSDE</i></li>
<li><i>Oracle</i></li>
</ul>
<span style="text-align: justify;">Limited to vector data the importer also helps in styling the data using the Styler front end.</span><br />
<span style="text-align: justify;"><br /></span>
The importer is a fork of the OpenGeo Suite one, already battle tested and further improved for stability by our team.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRn6kFZKUdA1U3-cQ0eQH-zYpWsl8uNVgmU5gjYpKR8Hwoy7eNoMi1CBTkQ5MsJau1DuMyWJ86Mx2bQ94DYGjqIbPfykhvU320wg_mERSHllVYYk-F218Z8ZboCrA9-2-Is_JB0Dm0m2Fg/s1600/gs-ent1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="315" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRn6kFZKUdA1U3-cQ0eQH-zYpWsl8uNVgmU5gjYpKR8Hwoy7eNoMi1CBTkQ5MsJau1DuMyWJ86Mx2bQ94DYGjqIbPfykhvU320wg_mERSHllVYYk-F218Z8ZboCrA9-2-Is_JB0Dm0m2Fg/s320/gs-ent1.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpediJ6HTkWM1OF7oxLykDCf-L3Pf6H57IDdFdP5AgDFs2mUBQvx4q52OZGyG-t_a-AnUaNUxAYea_MmctToEnStVVZa1W5SyZGhLn2jVEZob0mNIDV1cYqrHu9WPPbh7v0Hur13NzyyUc/s1600/gs-ent.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="254" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpediJ6HTkWM1OF7oxLykDCf-L3Pf6H57IDdFdP5AgDFs2mUBQvx4q52OZGyG-t_a-AnUaNUxAYea_MmctToEnStVVZa1W5SyZGhLn2jVEZob0mNIDV1cYqrHu9WPPbh7v0Hur13NzyyUc/s320/gs-ent.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXLUjP9JBp-VKBc0b8dE4wptNjLKNXOeBMiRxMi0mbZeEXtYmRi8yOjtiyXKlMTwrq-D8ZsT11fXWiPbKuX5-EAhTPgpYPg5wjRbZNoiVj7OYogFvUuDrqUlkQhzWhogJfKQYgNWzHm7_W/s1600/gs-ent2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="102" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXLUjP9JBp-VKBc0b8dE4wptNjLKNXOeBMiRxMi0mbZeEXtYmRi8yOjtiyXKlMTwrq-D8ZsT11fXWiPbKuX5-EAhTPgpYPg5wjRbZNoiVj7OYogFvUuDrqUlkQhzWhogJfKQYgNWzHm7_W/s320/gs-ent2.jpg" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWpVMWXt6JlZ7yft83aX1RJrXFNru0T8_ryYT9I3Lp3lFqfng5FWU__UN2MioAQkPoXtbv3VNBVD359ai4O75KCOUMQPXqPnY85MSG-AAOsO_bOW4nmm95lBwAPeBkjnrnDZ6-pnNY7-9v/s1600/gs-ent3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="167" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWpVMWXt6JlZ7yft83aX1RJrXFNru0T8_ryYT9I3Lp3lFqfng5FWU__UN2MioAQkPoXtbv3VNBVD359ai4O75KCOUMQPXqPnY85MSG-AAOsO_bOW4nmm95lBwAPeBkjnrnDZ6-pnNY7-9v/s320/gs-ent3.jpg" width="320" /></a></div>
<br />
Last but not least, we have created a forum in case you'd needed help or you wanted to ask questions. You can find it <a href="https://groups.google.com/d/forum/geoserver-enterprise">here</a>.<br />
<br />
If you'd like to know more about what you could achieve with <b><a href="http://geoserver.geo-solutions.it/" target="_blank">GeoServer</a></b>, do not hesitate and <b><a href="http://opensdi.geo-solutions.it/">get in touch with us</a>. </b>If you need professional services to get started with Open Source software make sure to have a look at our <b><a href="http://opensdi.geo-solutions.it/">GeoSolutions Enterprise Services</a>.</b><br />
<br />
The <b><a href="http://www.geo-solutions.it/">GeoSolutions</a> </b>team.<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6ajRwBb7qRh39gnG8xc7ymt6RXh4fG623XL8Z6vCkkcnjFSuIh3om3QO608g3Jyhscthc5jy5OR1vHCHGmaU1JSPrXFXXNYtJj_QVB2S3thWVAzxSF3ReJXX5V5gDFzKWcuaXgi3_Favw/s1600/geosolutions-logo.gif" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6ajRwBb7qRh39gnG8xc7ymt6RXh4fG623XL8Z6vCkkcnjFSuIh3om3QO608g3Jyhscthc5jy5OR1vHCHGmaU1JSPrXFXXNYtJj_QVB2S3thWVAzxSF3ReJXX5V5gDFzKWcuaXgi3_Favw/s1600/geosolutions-logo.gif" /></a>Anonymoushttp://www.blogger.com/profile/01956667100896875559noreply@blogger.com0Massarosa LU, Italia43.878049427367124 10.27674655236205643.877333927367125 10.275486052362055 43.878764927367122 10.278007052362057tag:blogger.com,1999:blog-5176900881057973693.post-78281274462649481102013-10-11T17:32:00.000+02:002013-10-14T18:18:45.920+02:00GeoSolutions @ LuBeC 2013. CULTURA: password for futureIl 17 e 18 ottobre prossimi, GeoSolutions esporrà a<br />
<br />
<h1 style="background-color: white; border: 0px; color: #ff7900; font-family: Arial, Helvetica, sans-serif; font-size: 22px; margin: 0px; outline: 0px; padding: 0px; text-align: center;">
<a href="http://www.lubec.it/lubec-2013.html"><span style="background-color: transparent; border: 0px; color: #005080; margin: 0px; outline: 0px; padding: 0px;">LuBeC 2013.</span><span style="background-color: transparent; border: 0px; color: #ed8c00; margin: 0px; outline: 0px; padding: 0px;"> CULTURA: </span><span style="background-color: transparent; border: 0px; color: #005080; margin: 0px; outline: 0px; padding: 0px;">password for future</span></a></h1>
<div>
<span style="background-color: transparent; border: 0px; color: #005080; margin: 0px; outline: 0px; padding: 0px;"><br /></span></div>
che si terrà come ogni anno a Lucca, in Toscana.<br />
<br />
L'evento è dedicato a progetti e soluzioni per la valorizzazione di beni culturali, tecnologia e turismo. Enti pubblici e privati si confronteranno sui alcuni dei principali temi oggi fondamentali per lo sviluppo del nostro paese. Da molto tempo Lu.B.eC rappresenta uno degli eventi nazionali di maggior rilievo per il settore dei beni culturali e della filiera ad esso collegato.<br />
In questo contesto <a href="http://www.geo-solutions.it/" target="_blank">GeoSolutions</a> sarà presente con uno stand dove presenterà i progetti fino ad oggi realizzati e come le tecnologie Open Source sviluppate dalla compagnia possano venire applicate a progetti in ambito turistico e culturale.<br />
<br />
Venerdì 18 Ottobre, nel corso della sessione pomeridiana <i>Territorio, Tecnologia, Turismo: le tre T dello sviluppo turistico - culturale</i>, il Professor Mauro Preda dell'Università Cattolica di Milano in collaborazione con la Provincia di Milano presenterà il progetto <span style="background-color: white; border: 0px; line-height: 16px; margin: 0px; outline: 0px; padding: 0px;"><span style="font-family: inherit;"><i>ARTourGallery. L'Open Data Warehouse per le pubbliche amministrazioni</i>, basato sulle tecnologie Open Source sviluppate e / o supportate da <a href="http://www.geo-solutions.it/" target="_blank">GeoSolutions</a>. nello specifico: <a href="http://geoserver.geo-solutions.it/">GeoServer</a>, <a href="http://geonetwork-opensource.org/">GeoNetwork </a>e <a href="http://mapstore.geo-solutions.it/mapstore/">MapStore</a>. </span></span><br />
<span style="background-color: white; border: 0px; line-height: 16px; margin: 0px; outline: 0px; padding: 0px;"><span style="font-family: inherit;"><br /></span></span>
<span style="background-color: white; border: 0px; line-height: 16px; margin: 0px; outline: 0px; padding: 0px;"><span style="font-family: inherit;"><a href="http://www.geo-solutions.it/" target="_blank">GeoSolutions</a> invita tutti gli interessati alla presentazione del progetto ARTourGallery e a visitare lo stand nella bellissima sede del Real Collegio di Lucca</span></span><br />
<strong style="background-color: white; border: 0px; color: navy; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; margin: 0px; outline: 0px; padding: 0px;"><br /></strong>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8EkFiPhtuRdDvGDEmyJkZTCpli822yadpaEJmPK1ul1PAx3TymobXRMk34ulJbcsM32U7NtHtWbpUum10maBVl_ejhoLCJdJBaDZQJV9R6xttW9B_CQ_WrYBlI6Uz0FbmJVM_gQLGglA/s1600/real-collegio1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="92" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8EkFiPhtuRdDvGDEmyJkZTCpli822yadpaEJmPK1ul1PAx3TymobXRMk34ulJbcsM32U7NtHtWbpUum10maBVl_ejhoLCJdJBaDZQJV9R6xttW9B_CQ_WrYBlI6Uz0FbmJVM_gQLGglA/s320/real-collegio1.jpg" width="320" /></a></div>
<strong style="background-color: white; border: 0px; color: navy; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; margin: 0px; outline: 0px; padding: 0px;"><br /></strong>
<br />
The <a href="http://www.geo-solutions.it/">GeoSolutions</a> team.<br />
<strong style="background-color: white; border: 0px; color: navy; font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; margin: 0px; outline: 0px; padding: 0px;"></strong><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6ajRwBb7qRh39gnG8xc7ymt6RXh4fG623XL8Z6vCkkcnjFSuIh3om3QO608g3Jyhscthc5jy5OR1vHCHGmaU1JSPrXFXXNYtJj_QVB2S3thWVAzxSF3ReJXX5V5gDFzKWcuaXgi3_Favw/s1600/geosolutions-logo.gif" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6ajRwBb7qRh39gnG8xc7ymt6RXh4fG623XL8Z6vCkkcnjFSuIh3om3QO608g3Jyhscthc5jy5OR1vHCHGmaU1JSPrXFXXNYtJj_QVB2S3thWVAzxSF3ReJXX5V5gDFzKWcuaXgi3_Favw/s1600/geosolutions-logo.gif" /></a>Eleonorahttp://www.blogger.com/profile/06685135620650891336noreply@blogger.com0Lucca LU, Italia43.8376211 10.49506089999999943.6544041 10.172337399999998 44.0208381 10.817784399999999tag:blogger.com,1999:blog-5176900881057973693.post-4779949722769363512013-10-07T10:42:00.001+02:002013-10-07T11:36:38.862+02:00GeoServer CSS module graduated to official extensionDear All,<br />
if you have been looking at the recent <a href="http://geoserver.geo-solutions.it/" target="_blank">GeoServer</a> releases you might have noticed that the <a href="http://docs.geoserver.org/latest/en/user/extensions/css/index.html">CSS styling module</a> has been graduated to extension status, making it available to a much larger audience as part of the <a href="http://geoserver.org/display/GEOS/Latest">GeoServer releases</a> (before it was available as part of the nighly builds, for those that venture to try out new features).<br />
<br />
For those that are not up to speed, the CSS styling module, originally written and maintained by <a href="https://github.com/dwins/geoscript.scala">David Winslow</a>, allows to build styles using a CSS-like syntax which is at the same time more compact and more expressive than the usual SLD styling provided by <a href="http://geoserver.geo-solutions.it/" target="_blank">GeoServer</a>. <br />
Get a feel of how it works by looking at a few examples extracted from our the <a href="http://docs.geoserver.org/latest/en/user/extensions/css/cookbook.html" target="_blank">CSS cookbook</a> that we wrote recently by porting over the same examples provided in the <a href="http://docs.geoserver.org/stable/en/user/styling/sld-cookbook/index.html">SLD cookbook</a>.<br />
<br />
Render all points with a red circle, apply a bold label on top of it (the label references the "name" attrbute):<br />
<br />
<span style="font-family: "Courier New", Courier, monospace;"><span class="o">*</span> <span class="p">{</span><br /> <span class="n">mark</span><span class="o">:</span> <span class="n">symbol</span><span class="p">(</span><span class="k">circle</span><span class="p">);</span><br /> <span class="n">mark</span><span class="o">-</span><span class="k">size</span><span class="o">:</span> <span class="m">6px</span><span class="p">;</span><br /> <span class="n">label</span><span class="o">:</span> <span class="p">[</span><span class="n">name</span><span class="p">];</span><br /> <span class="k">font</span><span class="o">-</span><span class="n">fill</span><span class="o">:</span> <span class="nb">black</span><span class="p">;</span><br /> <span class="k">font-family</span><span class="o">:</span> <span class="n">Arial</span><span class="p">;</span><br /> <span class="k">font-size</span><span class="o">:</span> <span class="m">12</span><span class="p">;</span><br /> <span class="k">font-weight</span><span class="o">:</span> <span class="k">bold</span><span class="p">;</span><br /> <span class="n">label</span><span class="o">-</span><span class="n">anchor</span><span class="o">:</span> <span class="m">0</span><span class="o">.</span><span class="m">5</span> <span class="m">0</span><span class="p">;</span><br /> <span class="n">label</span><span class="o">-</span><span class="n">offset</span><span class="o">:</span> <span class="m">0</span> <span class="m">5</span><span class="p">;</span><br /> <span class="p">}</span><br /><br /> <span class="nd">:mark</span> <span class="p">{</span><br /> <span class="n">fill</span><span class="o">:</span> <span class="nb">red</span><span class="p">;</span><br /> <span class="p">}</span></span><br />
<img alt="../../_images/point_pointwithstyledlabel.png" src="http://docs.geoserver.org/latest/en/user/_images/point_pointwithstyledlabel.png" /><br />
<br />
Build a highway like effect by painting two lines on top of each other and controlling z-order to make line crossings look good:<br />
<br />
<span style="font-family: "Courier New", Courier, monospace;"><span class="o">*</span> <span class="p">{</span><br /> <span class="n">stroke</span><span class="o">:</span> <span class="m">#333333</span><span class="o">,</span> <span class="m">#6699FF</span><span class="p">;</span><br /> <span class="n">stroke</span><span class="o">-</span><span class="k">width</span><span class="o">:</span> <span class="m">5px</span><span class="o">,</span> <span class="m">3px</span><span class="p">;</span><br /> <span class="n">stroke</span><span class="o">-</span><span class="n">linecap</span><span class="o">:</span> <span class="n">round</span><span class="p">;</span><br /> <span class="k">z-index</span><span class="o">:</span> <span class="m">0</span><span class="o">,</span> <span class="m">1</span><span class="p">;</span><br /> <span class="p">}</span></span><br />
<span style="font-family: "Courier New", Courier, monospace;"><span class="p"></span></span><br />
<span style="font-family: "Courier New", Courier, monospace;"><span class="p"><img alt="../../_images/line_linewithborder.png" src="http://docs.geoserver.org/latest/en/user/_images/line_linewithborder.png" /></span></span><br />
<br />
<br />
Paint polygons of differen shades based on their population (pop attribute), dividing it in three classes (see how the filters are expressed in the CQL language):<br />
<br />
<span style="font-family: "Courier New", Courier, monospace;"><span class="o">[</span><span class="nt">pop</span> <span class="o"><</span> <span class="nt">200000</span><span class="o">]</span> <span class="p">{</span><br /> <span class="n">fill</span><span class="o">:</span> <span class="m">#66FF66</span><span class="p">;</span><br /> <span class="p">}</span><br /><br /> <span class="o">[</span><span class="nt">pop</span> <span class="o">>=</span> <span class="nt">200000</span><span class="o">]</span> <span class="o">[</span><span class="nt">pop</span> <span class="o"><</span> <span class="nt">500000</span><span class="o">]</span> <span class="p">{</span><br /> <span class="n">fill</span><span class="o">:</span> <span class="m">#33CC33</span><span class="p">;</span><br /> <span class="p">}</span><br /><br /> <span class="o">[</span><span class="nt">pop</span> <span class="o">>=</span> <span class="nt">500000</span><span class="o">]</span> <span class="p">{</span><br /> <span class="n">fill</span><span class="o">:</span> <span class="m">#009900</span><span class="p">;</span><br /> <span class="p">}</span></span><br />
<span style="font-family: "Courier New", Courier, monospace;"><span class="p"></span></span><br />
<span style="font-family: "Courier New", Courier, monospace;"><span class="p"><img alt="../../_images/polygon_attributebasedpolygon.png" src="http://docs.geoserver.org/latest/en/user/_images/polygon_attributebasedpolygon.png" /></span></span><br />
<br />
<br />
You can get more examples in the CSS cookbook, and don't forget to have a look at the reference section to learn about all <a href="http://docs.geoserver.org/latest/en/user/extensions/css/properties.html">styling properties</a>.<br />
<br />
Another thing making the use of CSS rather compelling is its editing GUI, which allows to preview the changes to the map in the same enviroment where the editing of the CSS is done:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://docs.geoserver.org/stable/en/user/_images/css_demo_page.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="322" src="http://docs.geoserver.org/stable/en/user/_images/css_demo_page.png" width="400" /></a></div>
<br />
This GUI got recently improved to allow styling of raster layers, some changes went it to make it possible to style large vector layers, as well as showing a preview of the legend graphics that the style will generated, and finally better support for <a href="http://geoserver.geo-solutions.it/" target="_blank">GeoServer</a> GeoTools vendor options, such as the recently introduced support for adding space around graphic fills.<br />
<br />
Work is underway to make further improvements, such as being able to truly use meters and feet in the CSS sizes (right now only pixel measures actually work).<br />
<br />
Another improvement that we'd like to make, time permitting, would be to make CSS a first class styling Language and merge the editing UI with the SLD one, in order to get the same nice instant feedback regardless of the styling Language in use.<br />
<br />
Also, stay on the lookout for more documentation, the CSS cookbook will soon be compounded by a brand new section with more advanced styling examples.<br />
<br />
As a closing remark, we'd like to thank David for accepting to graduate the module from community to official extension, and the New South Wales Geological Survey for sponsoring the creation of the CSS cookbook and associated documentation environment, the new incoming advanced examples, as well as sponsoring all the recent GUI improvements, and finally for giving me some time to learn <a href="http://www.scala-lang.org/">Scala</a> and thus start helping David with some CSS core improvements.<br />
<br />
It is finally worth mentioning that this work was performed for a client of ours under the <b><a href="http://opensdi.geo-solutions.it/">GeoSolutions Enterprise Services</a>.</b><br />
<b><br /></b>
If you'd like to know more about what you could achieve with <b><a href="http://geoserver.geo-solutions.it/" target="_blank">GeoServer</a></b>, do not hesitate and <b><a href="http://opensdi.geo-solutions.it/">get in touch with us</a>. </b>If you need professional services to get started with Open Source software make sure to have a look at our <b><a href="http://opensdi.geo-solutions.it/">GeoSolutions Enterprise Services</a>.</b><br />
<br />
The <a href="http://www.geo-solutions.it/">GeoSolutions</a> team.<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6ajRwBb7qRh39gnG8xc7ymt6RXh4fG623XL8Z6vCkkcnjFSuIh3om3QO608g3Jyhscthc5jy5OR1vHCHGmaU1JSPrXFXXNYtJj_QVB2S3thWVAzxSF3ReJXX5V5gDFzKWcuaXgi3_Favw/s1600/geosolutions-logo.gif" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6ajRwBb7qRh39gnG8xc7ymt6RXh4fG623XL8Z6vCkkcnjFSuIh3om3QO608g3Jyhscthc5jy5OR1vHCHGmaU1JSPrXFXXNYtJj_QVB2S3thWVAzxSF3ReJXX5V5gDFzKWcuaXgi3_Favw/s1600/geosolutions-logo.gif" /></a>Andrea Aimehttp://www.blogger.com/profile/04056107353824320977noreply@blogger.com2LU, Italia43.878041693842334 10.27672509468993743.877326193842336 10.275464594689936 43.878757193842333 10.277985594689937tag:blogger.com,1999:blog-5176900881057973693.post-65247559096025147352013-09-30T09:56:00.000+02:002013-09-30T09:56:47.939+02:00GeoServer presentation during SDI Days 2013<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.eurogeographics.org/sites/default/files/sdi2013.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.eurogeographics.org/sites/default/files/sdi2013.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Dear All,<br />
<b><a href="http://www.geo-solutions.it/">GeoSolutions</a> </b>has been invited last week to the 2013 edition of the <b><a href="http://www.event.nipp.hr/" target="_blank">SDI Days</a></b> which took place on th 26th and 27th of September in Sibenik, Croatia.<br />
<br />
The conference was organized by The State Geodetic Administration Croatia, the Joint Research Centre - Institute for Environment and Sustainability and the Croatian Chamber of Chartered Geodetic Engineers.<br />
The SDI days 2013 focused:<br />
<br />
<br />
<ul>
<li>on 26th September INSPIRE and integrated land & water management scientific workshop</li>
<li>on 27th September 5th NSDI and INSPIRE day.</li>
</ul>
<br />
Simone Giannecchini and Eleonora Fontana were invited to give a talk about current status and future developments in <b><a href="http://geoserver.geo-solutions.it/" target="_blank">GeoServer</a> </b>which is a mature building block for creating SDIs.<br />
We also had a few interesting exchanges on the motivation that pushes us to release our work as Open Source as well as the best approach to embarcing Open Source software for someone who is coming from using proprietary software, we might create a separate blog post to go over these points.<br />
<br />
We'd like to thank the organizers for the quality of the event as well as for inviting us and giving us the opportunity to talk about what GeoServer; moreover we'd like to remark on the quality and diversity of the presentations as we were able to hear real world experiences from Croatia, Serbia, Albania, Austria, Italy and more.<br />
<br />
Here below you can find the slides from the presentation.<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="356" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/26669154" style="border-width: 1px 1px 0; border: 1px solid #CCC; margin-bottom: 5px;" width="427"> </iframe> <br />
<div style="margin-bottom: 5px;">
<strong> <a href="https://www.slideshare.net/geosolutions/sdi-days2013" target="_blank" title="GeoServer intro for SDI Days 2013">GeoServer intro for SDI Days 2013</a> </strong> from <strong><a href="http://www.slideshare.net/geosolutions" target="_blank">GeoSolutions</a></strong> </div>
<br />
If you'd like to know more about what you could achieve with <b><a href="http://geoserver.geo-solutions.it/" target="_blank">GeoServer</a></b>, do not hesitate and <b><a href="http://opensdi.geo-solutions.it/">get in touch with us</a>. </b>If you need professional services to get started with Open Source software make sure to have a look at our <b><a href="http://opensdi.geo-solutions.it/">GeoSolutions Enterprise Services</a>.</b><br />
<br />
The <a href="http://www.geo-solutions.it/">GeoSolutions</a> team.<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6ajRwBb7qRh39gnG8xc7ymt6RXh4fG623XL8Z6vCkkcnjFSuIh3om3QO608g3Jyhscthc5jy5OR1vHCHGmaU1JSPrXFXXNYtJj_QVB2S3thWVAzxSF3ReJXX5V5gDFzKWcuaXgi3_Favw/s1600/geosolutions-logo.gif" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6ajRwBb7qRh39gnG8xc7ymt6RXh4fG623XL8Z6vCkkcnjFSuIh3om3QO608g3Jyhscthc5jy5OR1vHCHGmaU1JSPrXFXXNYtJj_QVB2S3thWVAzxSF3ReJXX5V5gDFzKWcuaXgi3_Favw/s1600/geosolutions-logo.gif" /></a>Anonymoushttp://www.blogger.com/profile/01956667100896875559noreply@blogger.com0Massarosa LU, Italia43.878080361456234 10.27675728119811543.877364861456236 10.275496781198115 43.878795861456233 10.278017781198116tag:blogger.com,1999:blog-5176900881057973693.post-70089778170343755302013-09-18T10:16:00.001+02:002013-09-23T18:18:53.032+02:00Developer's Corner: MapStore 1.3.0 released!<div>
<div style="text-align: center;">
<a href="http://goo.gl/cmpWO"><img border="0" src="http://opensdi.geo-solutions.it/images/box_slide_mapstore.png" /></a></div>
<br /></div>
We are proud to announce the <b><a href="https://github.com/geosolutions-it/mapstore">MapStore</a></b> 1.3.0 release.<br />
<br />
This is the latest official release of <b><a href="https://github.com/geosolutions-it/mapstore">MapStore</a></b>, the simple and intuitive way to create, save and share maps.<br />
<b><a href="https://github.com/geosolutions-it/mapstore">MapStore</a> </b>is based on the <a href="https://github.com/opengeo/GeoExplorer">GeoExplorer Open Source</a> framework and is licensed under the GPL license.<br />
<br />
<br />
You can get MapStore as:<br />
<ul>
<li><a href="http://goo.gl/cmpWO">generic binary</a></li>
<li><a href="http://goo.gl/Swefa">geonetwork integrated binary</a></li>
<li><a href="http://goo.gl/BE02J">windows installer</a></li>
<li><a href="http://goo.gl/UY3oB">geonetwork integrated windows installer</a></li>
</ul>
<br />
Here is a list of the most important improvements included in this release: <br />
<ul>
<li>Update ExtJS and OpenLayers to 3.4.1.1 and 2.13.1 versions </li>
<li>Allow multiple plugin instances, allow overriding of default plugin configuration</li>
<li>GeoLocations Menu</li>
<li>Main Toolbar Improvements </li>
<li>Many additional bugfixes </li>
</ul>
If you need further info look at the <a href="https://github.com/geosolutions-it/mapstore/issues?milestone=4&state=closed">complete list of included issues</a>.<br />
<br />
<br />
With <b><a href="https://github.com/geosolutions-it/mapstore">MapStore</a> </b>you can mashup contents from Google Maps, OpenStreetMap, MapQuest, Bing or specific WMS services provided by you or third party content providers.<br />
<b><a href="https://github.com/geosolutions-it/mapstore">MapStore</a> </b>uses internally <a href="https://github.com/geosolutions-it/geostore"><b>GeoStore</b></a>, (the <b><a href="http://www.geo-solutions.it/">GeoSolutions</a> </b>Open Source engine for resource storing and retrieving) for managing users as well as maps definitions. Moreover <b><a href="https://mapstore.geo-solutions.it/">MapStore</a> </b>uses <a href="https://github.com/geosolutions-it/http-proxy"><b>Http-proxy</b></a> to communicate with remote servers, such as the third party WMS services used in your maps.<br />
<br />
Visit our <a href="http://mapstore.geo-solutions.it/">online demo</a> or download the <b><a href="https://mapstore.geo-solutions.it/">MapStore</a> </b><a href="http://goo.gl/cmpWO">binary</a>, read the <a href="https://github.com/geosolutions-it/mapstore/wiki/Quick-Start-Guide">Quick Start guide</a> and start to create and share your own maps. If you need more info, please check to the complete <a href="https://github.com/geosolutions-it/mapstore/wiki">documentation</a> wiki.<br />
<br />
<div>
If you have questions or if you just want to talk to us about using our tools in your project, please, subscribe to the mailing list <a href="https://groups.google.com/group/mapstore-users">here</a>. In any case, do not hesitate to <a href="http://www.geo-solutions.it/">contact us</a>.<br />
<br />
<div style="text-align: center;">
<b><span style="font-size: large;">Happy mapping to everybody!</span></b></div>
</div>
<br />
<div>
<div>
The <a href="http://www.geo-solutions.it/"><b>GeoSolutions</b></a> team,</div>
<div>
<a href="http://www.geo-solutions.it/"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEib3_f6Uitl4hETf98AP3jlTMEWcwDtaloV15fsulx9h9uPn95ZJgXmBRN1aihr6rAMejL0O0WoW-kJOd01bNdhUYW9aYOm8doDp8WDaBl-LbLqqRJmcba_M_UM4vLFurHMT7PEXPVpZGx_/s1600/geosolutions-logo.gif" /></a></div>
</div>
Tobia Di Pisahttp://www.blogger.com/profile/04933768372850934905noreply@blogger.com0Via Poggio alle Viti, 1137, Montramito LU, Italia43.8744485 10.27925709999999543.874404 10.279178099999996 43.874493 10.279336099999995tag:blogger.com,1999:blog-5176900881057973693.post-71980412447685784092013-09-16T17:24:00.003+02:002013-09-16T17:24:26.968+02:00Meet us at the FOSS4G 2013<div class="separator" style="clear: both; text-align: center;">
<a href="http://2013.foss4g.org/"><br />
<img border="0" src="https://si0.twimg.com/profile_images/3121203929/558070c28a999aa3fd99e9799527f379.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Dear All,<br />
<b><a href="http://www.geo-solutions.it/">GeoSolutions</a> </b>is proud to announce its participation as <a href="http://2013.foss4g.org/sponsors/">silver sponsor</a> to the <b>Free and Open Source Software for Geospatial (<a href="http://2013.foss4g.org/">FOSS4G</a>)</b> 2013 conference, being held September 17th - 21st, 2013, at the East Midlands conference center in Nottingham, UK.<br />
<br />
Here below you can find the detailed schedule of our workshops and presentations during the conference.<br />
<br />
<h2>
Workshops</h2>
<div>
<b>Wednesday, the 18th, 2013</b></div>
<div>
<u style="font-style: italic;">OGC services with GeoServer: from journeyman to master:</u> Trent B16 - 9:30 a.m. to 6 p.m.</div>
<div>
This workshop will provide a introduction to OGC services implementation with GeoServer and GeoWebCache, covering the basics and moving forward to more advanced topics.</div>
<div>
<br /></div>
<div>
<b>Thursday, the 19th, 2013</b></div>
<div>
<i><u>SpatioTemporal data handling with <a href="http://geoserver.geo-solutions.it/">GeoServer</a></u></i><b>: </b>Sir Clive Granger Building: B29 A<b> - </b>2 p.m. to 4 p.m.</div>
<div>
This workshop will provide an introduction with examples for MetOc and Remote Sensing data for WMS and WCS.</div>
<div>
<br /></div>
<div>
<i><u>Introduction to high availability clusters with <a href="http://geoserver.geo-solutions.it/">GeoServer </a>and GeoWebCache</u></i><b>: </b>Sir Clive Granger Building: B29 A<b> - </b>4 p.m. to 6 p.m.</div>
<div>
This workshop will provide an introduction to setting up high availability clusters for OGC services using <a href="http://geoserver.geo-solutions.it/">GeoServer</a> and GeoWebCache.</div>
<div>
<br /></div>
<div>
<h2>
Presentations</h2>
</div>
<div>
<b>Friday, the 20th, 2013</b></div>
<div>
<i><u><a href="http://geoserver.geo-solutions.it/">GeoServer </a></u></i><u style="font-style: italic;">, An Introduction For Beginners:</u> Banqueting Suite, 9:00 a.m., Session 20</div>
<div>
This presentation will provide an introduction to the GeoServer project and its abilities to publish data with a mix of well-known OGC protocols and other popular protocols and data formats.</div>
<div>
<br /></div>
<div>
<div>
<i><u><a href="http://geoserver.geo-solutions.it/">GeoServer </a></u></i><u style="font-style: italic;">, on steroids:</u> Banqueting Suite, 9:30 a.m., Session 20</div>
<div>
Setting up a GeoServer can sometimes be deceptively simple. However, going from proof-of-concept to production requires a number of steps to be taken in order to optimize the server in terms of availability, performance and scalability. The presentation will show how to get from a basic setup to a battle-ready, rock-solid installation.</div>
</div>
<div>
<br /></div>
<div>
<div>
<div>
<u style="font-style: italic;">Advanced </u><i><u><a href="http://geoserver.geo-solutions.it/">GeoServer </a></u></i><u style="font-style: italic;">Security with GeoFence:</u> Banqueting Suite, 12:00 a.m., Session 29</div>
<div>
This presentation will provide an introduction to GeoFence, an open source tool to configure and use complex authorization rules to protect data served by GeoServer OGC services.</div>
</div>
</div>
<div>
<br /></div>
<div>
<div>
<i><u>Processing Data In GeoServer With WPS And SQL Views</u></i><u style="font-style: italic;">:</u> EMCC Room 1, 2:30 p.m., Session 40</div>
<div>
The presentation is a brief <i><u><a href="http://geoserver.geo-solutions.it/">GeoServer </a></u></i> o GeoServer WPS capabilities, showing how to build processing requests based on existing processes, and how to build new processes leveraging scripting languages. It introduces unique GeoServer integration features, showing how processing can seamlessly integrate directly in the GeoServer data sources and complement existing services.</div>
</div>
<div>
<br /></div>
<div>
<div>
<i><u>Advanced Cartographic Map Rendering In </u></i><i><u><a href="http://geoserver.geo-solutions.it/">GeoServer </a></u></i><u style="font-style: italic;">:</u> EMCC Room 1, 3:00 p.m., Session 40</div>
<div>
Various software can style maps and generate a proper SLD document for OGC-compliant WMS. However the styling allowed by the graphical tools is often limited and not adequate for good cartographic output. This presentation will provide hints, examples and enough information to master SLD in order to create beautiful maps with GeoServer.</div>
</div>
<div>
<br /></div>
<div>
<div>
<i><u>GeoServer for Spatio-temporal Data Handling With Examples For MetOc And Remote Sensing</u></i><u style="font-style: italic;">:</u> Sir Clive Granger Building: A39, 2:30 p.m., Session 43</div>
<div>
This presentation will provide detailed information on how to ingest and configure spatio-temporal data in GeoServer, to be served using OGC services, with examples from WMS and WCS services.</div>
</div>
<div>
<b><br />
</b></div>
<div>
<b>Saturday, the 21th, 2013</b></div>
<div>
<div>
<i><u>WCS And EO-WCS Status In Open Source</u></i><u style="font-style: italic;">:</u> Baqueting Suite: A39, 11:30 p.m., Session 56</div>
<div>
This presentation will show the current status of open source implementations of WCS, and particularly EO-WCS, by comparing GeoServer and MapServer/EOxServer.</div>
</div>
<div>
<br /></div>
<div>
<div>
<i><u>Raster Data In </u></i><i><u><a href="http://geoserver.geo-solutions.it/">GeoServer </a></u></i><i><u>And GeoTools: Achievements, Issues And Future Developments</u></i><u style="font-style: italic;">:</u> EMCC Room 1, 12:30 p.m., Session 58</div>
<div>
The purpose of this presentation is to discuss the developments during last years in raster data support in GeoTools and GeoServer, and also to introduce and discuss future development directions.</div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Once you have attended one of our workshops or presentation feel free to meet us at our booth (it is the S3 by the way) for questions, doubts or anything you might be interested into. We will be glad to help you out!</div>
<div>
<br /></div>
<br />
<div style="text-align: center;">
<span style="font-size: large;">See you in Nottingham!</span></div>
<br />
The <a href="http://www.geo-solutions.it/">GeoSolutions</a> team.<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6ajRwBb7qRh39gnG8xc7ymt6RXh4fG623XL8Z6vCkkcnjFSuIh3om3QO608g3Jyhscthc5jy5OR1vHCHGmaU1JSPrXFXXNYtJj_QVB2S3thWVAzxSF3ReJXX5V5gDFzKWcuaXgi3_Favw/s1600/geosolutions-logo.gif" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6ajRwBb7qRh39gnG8xc7ymt6RXh4fG623XL8Z6vCkkcnjFSuIh3om3QO608g3Jyhscthc5jy5OR1vHCHGmaU1JSPrXFXXNYtJj_QVB2S3thWVAzxSF3ReJXX5V5gDFzKWcuaXgi3_Favw/s1600/geosolutions-logo.gif" /></a>Anonymoushttp://www.blogger.com/profile/01956667100896875559noreply@blogger.com0Massarosa LU, Italia43.878056194200511 10.27673850573501143.877698694200511 10.276108005735011 43.878413694200511 10.277369005735011tag:blogger.com,1999:blog-5176900881057973693.post-69153172431248268142013-09-11T12:33:00.001+02:002013-09-11T12:33:36.597+02:00Saving the world one application at a time: FAO Vulnerable Marine Ecosystems Database<br />
<div>
At <a href="http://www.geo-solutions.it/">GeoSolutions</a> we believe that success stories about important organizations and <b>Open Source</b> Software should be openly shared and they can be used as a measure of OSS success in the formal enterprise environment (but you should alreay know this ;)). In this blog post we are going to quickly introduce some work we have done for the Fishery and Aqualture Department of the <b>Food and Agriculture Organization (FAO)</b> of the <b>United Nations (UN)</b>.<br />
<br /></div>
<div>
The <b>FAO Fishery and Aqualture Department</b>, specifically the <b><a href="http://www.fao.org/fishery/figis/en">FIGIS group</a></b>; is involved in many efforts geared towards the conservation of the marine ecosystem and <b><a href="http://www.geo-solutions.it/">GeoSolutions </a></b>is honored to work with them on some of the mapping applications they need in order to create effective querying and visualizations of the data they manage.<br />
<br />
This blog post covers some work we have done to support information dissemination from the <b>Vulnerable Marine Ecosystems Database</b> (VME-DB)<b>. </b><br />
<b><br />
</b> <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz47aYRPjz1cp6MEjGEzMKOcTxRFpE3Wk1lSnbvWoqbgQ_T3755KEKph5eS1Ye4fqYZ4yfxeTxuslbknjHhHjnEd8m9gsMAG1Z5xnO4DEPo-N3r0UomcbKxx_oKz0nBhtWATaxYv59NA/s1600/legenda.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="304" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhz47aYRPjz1cp6MEjGEzMKOcTxRFpE3Wk1lSnbvWoqbgQ_T3755KEKph5eS1Ye4fqYZ4yfxeTxuslbknjHhHjnEd8m9gsMAG1Z5xnO4DEPo-N3r0UomcbKxx_oKz0nBhtWATaxYv59NA/s320/legenda.png" width="320" /></a></div>
<b><br />
</b> <br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<b> </b><br />
The Vulnerable Marine Ecosystems Database gathers information on VME areas stored in harmonized way and disseminated through maps and fact sheets.<br />
<br />
Every area shows the relevant info and can be downloaded as shapefile<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJlESkosgfr2yv14EP_jlWjplwIlaQv6heYd7hND8tfUqfoygKFNQdRIjW_qrw3hy56EhWIIa5kwnqSbcBd1G6NC3bN9SVNOUs01NvYrvXqb7SFi0YkwqkS4ONQMMU9ATKzLCXmXKuew/s1600/popup.png" imageanchor="1"><img border="0" height="304" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJlESkosgfr2yv14EP_jlWjplwIlaQv6heYd7hND8tfUqfoygKFNQdRIjW_qrw3hy56EhWIIa5kwnqSbcBd1G6NC3bN9SVNOUs01NvYrvXqb7SFi0YkwqkS4ONQMMU9ATKzLCXmXKuew/s320/popup.png" width="320" /></a></div>
<div>
<br /></div>
<div>
<div>
More informations are accessible through a detailed factsheet</div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2NCSRzwTKjRBykNHNZLAuQcgpGubu9NqYGnjXc2bUaN9FUBI-I1Gl-t9Z01GH-Yv47TcF1ZUTz_rYf3hnRPQ8b7Q06aWmMJBakHdom7vM1uGREjEs80FAanzfQlGXx7lEoH4sY3I5Rw/s1600/factsheet.png" imageanchor="1"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2NCSRzwTKjRBykNHNZLAuQcgpGubu9NqYGnjXc2bUaN9FUBI-I1Gl-t9Z01GH-Yv47TcF1ZUTz_rYf3hnRPQ8b7Q06aWmMJBakHdom7vM1uGREjEs80FAanzfQlGXx7lEoH4sY3I5Rw/s320/factsheet.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
The map can be viewed in different projections<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiRoDBPeB6jtv6yX7bdSSSYhGAoixfymn-GlfEmXt9lZOBcyJmbWCXN4zoyWszdNM9EjISRyUvj0eRQ9wc73EkWEoQ-aYDF_ZPCTb5lBdWZbjZeUcl6xTp1NY6mhp9tq13vbWficDdzQ/s1600/polar.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="305" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiRoDBPeB6jtv6yX7bdSSSYhGAoixfymn-GlfEmXt9lZOBcyJmbWCXN4zoyWszdNM9EjISRyUvj0eRQ9wc73EkWEoQ-aYDF_ZPCTb5lBdWZbjZeUcl6xTp1NY6mhp9tq13vbWficDdzQ/s320/polar.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">South Polar Projection</td></tr>
</tbody></table>
VME areas can be searched by their specific attributes or by a full search.<br />
All the searches are implemented with <b>REST services</b>.<br />
<div class="separator" style="clear: both; text-align: center;">
<b><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj64NT1y3FldAfFJNFLm9I4sqdo5bMGrpkozb0G2Cx3GRkj7EeCUUfEO0YXbz_CqdIEfq-VT0A8r3-bG1eRs254JRV33LKo2110IJDrI3i7mMi-yIY4Bi1tisLxePrO7Pevq2pINrOOMQ/s1600/search.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="303" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj64NT1y3FldAfFJNFLm9I4sqdo5bMGrpkozb0G2Cx3GRkj7EeCUUfEO0YXbz_CqdIEfq-VT0A8r3-bG1eRs254JRV33LKo2110IJDrI3i7mMi-yIY4Bi1tisLxePrO7Pevq2pINrOOMQ/s320/search.png" width="320" /></a></b></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<b><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUxEj25dN-eoOsCL4HVDus7Sy-j2xcPiebZmMwo9kG5QozBHaDKvhJ5XrUvX_l77ElyQFcH1-wYHfk6yH_KlfToUPA53EMXpAa6EZMXz3vHjYQL64ghZHVBi2e9ouBV1L4fyLYQAWrMA/s1600/search_popup.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUxEj25dN-eoOsCL4HVDus7Sy-j2xcPiebZmMwo9kG5QozBHaDKvhJ5XrUvX_l77ElyQFcH1-wYHfk6yH_KlfToUPA53EMXpAa6EZMXz3vHjYQL64ghZHVBi2e9ouBV1L4fyLYQAWrMA/s320/search_popup.png" width="320" /></a></b></div>
<br />
<br />
Let us now summarise a few points about this project:<br />
<div>
<ul>
<li>background maps are served with <b><a href="http://geoserver.geo-solutions.it/" target="_blank">GeoServer</a></b> and <b>GeoWebCache </b>which are shared with all the others mapping applications in places withing the department. </li>
<li>the appearance of <b>OpenLayers</b> has been heavily customized in order to follow the project's design guidelins.</li>
<li>most of the data is stored inside the corporate instance of <b>Oracle Spatial</b>, demonstrating perfect integration of Open Source with COTS</li>
<li>extensive usage of <b>CQL filters, SQL Parametric Views</b> and <b>REST services</b> has been made to generate dynamic maps and retrieve non-geographic data.</li>
</ul>
<div>
Last but not least, we believe it is worth to mention that this work was performed via our <b><a href="http://opensdi.geo-solutions.it/">GeoSolutions Enterprise Services</a>. </b>Therefore, if you'd like to know more about what we could achieve together, do not hesitate and <b><a href="http://opensdi.geo-solutions.it/">get in touch with us!</a></b></div>
<div>
<br />
The <a href="http://www.geo-solutions.it/"><b>GeoSolutions</b></a> team,<br />
<div>
<a href="http://www.geo-solutions.it/"><img border="0" height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXpN0zERBnV5Bd3UY2dCxA5q01LyqxxND9XJthHLeRhyphenhyphenHV3SHLgfV8s-wocQMemkmKazH-2ebxl4EwZycGjfisfD6oMWFRYttd0WAaL_ZZDi5lxEQCxsnQlQ7DaKo3seuAwTaeUvraqHp/s320/800x250_eng.png" width="320" /></a></div>
</div>
</div>
</div>
Anonymoushttp://www.blogger.com/profile/01956667100896875559noreply@blogger.com0Via Poggio alle Viti, 1187, Montramito LU, Italia43.8744919 10.27925709999999543.8744474 10.279178099999996 43.874536400000004 10.279336099999995tag:blogger.com,1999:blog-5176900881057973693.post-39922953010158922202013-08-19T10:26:00.003+02:002013-08-19T10:26:36.182+02:00Developer's Corner: Advanced usage of Geoserver Print PluginDear all,<br />
recently <a href="http://www.geo-solutions.it/">we</a> used the <a href="http://docs.geoserver.org/latest/en/user/community/printing/index.html">Geoserver Printing Module</a> to implement a pdf printing service for a customer application that had some compelling requirements such as:<br />
<ul>
<li>the map should be printed at the higher resolution possible, also with big paper size formats, in a resonable amount of time</li>
<li>the printing should include both static content (frames, text, logos) and dynamic content (title and other parameters entered by the user or depending on the current application status)</li>
<li>the printing should include a custom legend whose content is driven by the application</li>
</ul>
<div>
What <a href="http://www.geo-solutions.it/">we</a> discovered is that the <a href="http://docs.geoserver.org/latest/en/user/community/printing/index.html">Geoserver printing module</a> (thanks to the underlying <a href="https://github.com/mapfish/mapfish-print">MapFish print module</a>) is a perfect tool to get all these requirements accomplished with little effort.</div>
<div>
<br /></div>
<div>
Now, <a href="http://www.geo-solutions.it/">we</a> would like to share what we did, to show you some techniques you could not be aware of in using the <a href="http://docs.geoserver.org/latest/en/user/community/printing/index.html">Geoserver printing module</a>.</div>
<div>
<br />
<h4>
<span style="font-size: large;">
High resolution printing</span></h4>
</div>
<div>
First of all, the requirement of having the map printed in high resolution was possible due to:</div>
<div>
<ul>
<li>the map was composed only by vector layers</li>
<li><a href="http://www.geoserver.org/">Geoserver</a> supports pdf output directly, and in the case of vector layers it produces a vector map in the pdf, not a raster one</li>
<li>The <a href="https://github.com/mapfish/mapfish-print">MapFish print module</a> can ask <a href="http://www.geoserver.org/">Geoserver</a> for a pdf map and include that in its layout mantaining the map vector format</li>
</ul>
<div>
As you can imagine a map in vector format can be zoomed indefinitely without loosing detail, so it's perfect to be printed on big size paper sheets up to A0.</div>
</div>
<div>
<br /></div>
<div>
If you want to test this yourself you can:</div>
<div>
<ul>
<li>try to generate a PDF for the sample states layer with your locally installed Geoserver invoking the following url</li>
</ul>
<div>
<a href="http://localhost:8080/geoserver/topp/wms?service=WMS&version=1.1.0&request=GetMap&layers=topp:states&styles=&bbox=-124.73142200000001,24.955967,-66.969849,49.371735&width=780&height=330&srs=EPSG:4326&format=application/pdf">http://localhost:8080/geoserver/topp/wms?service=WMS&version=1.1.0&request=GetMap&layers=topp:states&styles=&bbox=-124.73142200000001,24.955967,-66.969849,49.371735&width=780&height=330&srs=EPSG:4326&format=application/pdf</a></div>
</div>
<div>
<br /></div>
<div>
You can try zooming the produced pdf and see that no detail is lost zooming in indefinitely.</div>
<div>
<br /></div>
<div>
<ul>
<li>Download the <a href="http://docs.geoserver.org/latest/en/user/community/printing/index.html">Geoserver printing module</a> for the 2.3.x version <a href="http://gridlock.opengeo.org/geoserver/2.3.x/community-latest/">here</a>, install it using the instructions <a href="http://docs.geoserver.org/latest/en/user/community/printing/index.html">here</a> </li>
<li>use <a href="http://curl.haxx.se/">curl</a> to invoke printing for the states layer through the printing module, here an example:</li>
</ul>
<script src="https://gist.github.com/mbarto/6219558.js"></script> <br />
<div>
<br /></div>
<div>
As before, you can try zooming the produced pdf and see that no detail is lost in the map zooming in indefinitely.</div>
</div>
<div>
<br /></div>
<h4>
<span style="font-size: large;">
Include static content</span></h4>
<div>
For sure, you can include many static content types (text, logos, tables) <a href="http://www.mapfish.org/doc/print/configuration.html">customizing the config.yaml</a> file, but this is not the easiest way, since it is not too much WYSIWYG.</div>
<div>
<br /></div>
<div>
An easier way is to create a pdf with your favourite tool (either a word processor or any other tool able to produce a pdf) containing all the static parts (the only constraint is that the background pdf should have the same dimension and orientation of the layout it will be used in), save it aside the config.yaml file and including it in the layout using the backgroundPdf directive:</div>
<div>
<br /></div>
<blockquote class="tr_bq">
backgroundPdf: '${configDir}/background.pdf'</blockquote>
<br />
<br />
<h4>
<span style="font-size: large;">
Include dynamic content</span></h4>
<div>
We have no choice here, to include contents dynamically we have to:</div>
<div>
<ul>
<li>configure a layout to use variables that we will be replaced automatically when printing (the variables have the form ${variable_name}; variables can be used as a placemark for text, but also for image urls so that we can have a different logo for each requested print; you can also include the current date and time, some examples:</li>
</ul>
<blockquote class="tr_bq">
text: '${projectName}'</blockquote>
<blockquote class="tr_bq">
url: 'http://www.mysite.com/images/${projectLogo}' </blockquote>
<blockquote class="tr_bq">
text: ${now FORMAT}</blockquote>
Many more examples and instructions are available <a href="http://www.mapfish.org/doc/print/configuration.html">here</a>.<br />
<blockquote class="tr_bq">
</blockquote>
<ul>
<li>invoke the print service including all the variables actual values in the call</li>
</ul>
</div>
<h4>
<span style="font-size: large;">
Include customized legend</span></h4>
<div>
The <a href="https://github.com/mapfish/mapfish-print">MapFish print module</a> is quite flexible also for legends inclusion, but for our project a little bit of customization was needed to:</div>
<div>
<ul>
<li>dynamically create simple icons represented by a colored rectangle, without calling an external service</li>
<li>distribute legend items horizontally whether the plugin normally layouts them vertically, allowing multirow when a max number of columns are reached</li>
</ul>
<div>
Since the <a href="https://github.com/mapfish/mapfish-print">MapFish print module</a> code is available on <a href="https://github.com/mapfish/mapfish-print">github</a>, we agreed that the simplest way to get that was to do a fork of the project and customize it for our needs.</div>
</div>
<div>
<br /></div>
<div>
Of course we will be very happy to share the customized code with anyone needing it and give it back to the community if feasible to be included in the official release.</div>
<div>
<br /></div>
<div>
The customization introduces the possibility to specify a simple color (such as #FF0000 for red) instead of an icon in a legend spec. In this case the icon will be automatically rendered by the plugin instead of being loaded from an external url.</div>
<div>
<br /></div>
<div>
To get the horizontal alignment we used a trick: we defined a very small maxHeight (5) in the legends configuration block, to force usage of a new column for each icon. Another customization, the introduction of a maxColumns attribute for the legends block allows us to split icons on different rows when needed.</div>
<div>
<br />
Here an example of output with a maxColumns value of 3:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIg-1QQLpZ9ZoZQ4nq3aMRgpFYHxTbWeke0ecZ-Nnn4D1rB2hlBUPnJOyFbRb6Jw4NGSFRwFYsQH15AKMzrzf6WeOfQLVT-_wEEBRxs5SwZnri8kHTtAQZ5dUDfoYQ79vbhnO-iXBOdoTd/s1600/legend.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="80" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIg-1QQLpZ9ZoZQ4nq3aMRgpFYHxTbWeke0ecZ-Nnn4D1rB2hlBUPnJOyFbRb6Jw4NGSFRwFYsQH15AKMzrzf6WeOfQLVT-_wEEBRxs5SwZnri8kHTtAQZ5dUDfoYQ79vbhnO-iXBOdoTd/s640/legend.png" width="640" /></a></div>
<br /></div>
This is the json used to get the legend:<br />
<br />
<script src="https://gist.github.com/mbarto/6219975.js"></script> <br />
<h4>
<span style="font-size: large;">
Mapfish print module 2.0</span></h4>
<div>
Since we needed to customize the module, we chose to start from a more recent version of the code than the one currently distributed with the <a href="http://docs.geoserver.org/latest/en/user/community/printing/index.html">Geoserver printing module</a> (that is 1.2).</div>
<div>
The good news is that the 2.0-SNAPSHOT version seems to work perfectly with the current stable release of <a href="http://www.geoserver.org/">Geoserver</a>, and only one jar needs to be updated (together with the inclusion of a Spring application context xml). It's good news because, of course, the 2.0 version has some new feature that can be useful to Geoserver users.</div>
<div>
One of those is the disableScaleLocking flag that permits to print maps at any scale, not only those defined in the layout configuration.</div>
<div>
<br /></div>
<div>
For this reason we are going to push for the inclusion of the new version for the 2.4 series of <a href="http://www.geoserver.org/">Geoserver</a>.</div>
<div>
<br /></div>
If you are interested in learning about how we can help you achieving your goals with our Open Source products and <a href="http://opensdi.geo-solutions.it/">professional services</a>, do not hesitate to <a href="http://www.geo-solutions.it/contact/" target="_blank">contact us</a>!<br />
<br />
The <b><a href="http://www.geo-solutions.it/">GeoSolutions</a> </b>team,<br />
<div>
<a href="http://geoserver.geo-solutions.it/"><img height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXpN0zERBnV5Bd3UY2dCxA5q01LyqxxND9XJthHLeRhyphenhyphenHV3SHLgfV8s-wocQMemkmKazH-2ebxl4EwZycGjfisfD6oMWFRYttd0WAaL_ZZDi5lxEQCxsnQlQ7DaKo3seuAwTaeUvraqHp/s320/800x250_eng.png" width="320" /></a></div>
Anonymoushttp://www.blogger.com/profile/03298010434450849794noreply@blogger.com3Via Poggio alle Viti, LU, Italia43.8736396 10.27924550000000243.870778099999995 10.274203000000002 43.8765011 10.284288000000002tag:blogger.com,1999:blog-5176900881057973693.post-48566827316549006582013-07-01T10:22:00.000+02:002013-07-02T16:18:47.704+02:00Introducing GeoServer Enterprise<div class="separator" style="clear: both; text-align: center;">
<a href="http://geoserver.geo-solutions.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://opensdi.geo-solutions.it/images/box_slide_gsenterprise.png" width="150" /></a></div>
<br />
Dear All,<br />
we are happy to announce the creation of the <a href="http://geoserver.geo-solutions.it/"><b>GeoServer Enterprise</b></a> project which has been developed by <a href="http://www.geo-solutions.it/">GeoSolutions</a> leveraging on the Community version of <b><a href="http://geoserver.geo-solutions.it/">GeoServer</a> </b>to provide <b>long term support </b>releases<b>.</b><br />
<b><br />
</b> <b>Superior Stability & Long Term Support Releases</b><b><br />
</b><a href="http://geoserver.geo-solutions.it/" style="font-weight: bold;">GeoServer</a> has recently adopted a <a href="http://geoserver.org/display/GEOS/GSIP+77+-+Time+boxed+release+model">Time Boxed Release</a> model that results in a new major release every six months (and a bug fix release of the current stable series every month).<br />
This is following closely the <i>Release Early, Release Often </i> Open Source Mantra, and it's required to avoid piling up too many new features in major releases (past difficulties to release a new major were due to the accumulation of new features).<br />
While this approach is very good for entities sponsoring new developments and users interested in the major new features, it is not <b>optimal for Enterprise environments</b> where production deployments should only receive bug fixes and minor features but also usually require support for at least 1 year timeline or longer.<br />
<br />
<b>Selected Mature Extensions</b><br />
Community GeoServer has a large number of extensions that can be installed and used for free. Some of them are actively supported, some are supported on case-by-case basis. In <a href="http://geoserver.geo-solutions.it/" style="font-weight: bold;">GeoServer Enterprise</a> we decided to <i>drop </i>the extensions not actively supported in order to privilege stability and maturity over additional features. We also decided to include <i>by default</i> most of the supported extensions in order to reduce the complexity of configuring GeoServer (see <a href="https://github.com/geosolutions-it/geoserver-enterprise/wiki#standard-extensions-included">here</a> for a list of supported extensions).<br />
<br />
<b>An Enterprise Edition for GeoServer</b><br />
In order to cope with this requirements we decided to create the <a href="http://geoserver.geo-solutions.it/" style="font-weight: bold;">GeoServer Enterprise</a> project. The <a href="http://geoserver.geo-solutions.it/" style="font-weight: bold;">GeoServer Enterprise</a> is currently based on GeoServer 2.2.x branch and is going to receive critical bug fixes and minor features until GeoServer 2.4.x branch will reach maturity (as per our plan this means release 2.4.4); at that point the 2.4.x branch will be used for the new release of <a href="http://geoserver.geo-solutions.it/" style="font-weight: bold;">GeoServer Enterprise</a>.<br />
<br />
<b>Free and Open Source</b><br />
<a href="http://geoserver.geo-solutions.it/" style="font-weight: bold;">GeoServer Enterprise</a> is released as Free and Open Source software, under the same license as the standard GeoServer. The code is available on <a href="https://github.com/geosolutions-it/geoserver-enterprise">our github repository</a>, where you can also find basic documentation and pointers to other sources of documentation.<br />
<br />
<b>Support Options</b><br />
Community (free) Support will be initially provided via this <a href="https://groups.google.com/forum/?hl=en#!forum/geoserver-enterprise">google group</a> which is open to all. If you are interested in professional support you can contact <a href="http://www.geo-solutions.it/">GeoSolutions</a> or any other provider of <a href="http://geoserver.org/display/GEOS/Commercial+Support">professional services for GeoServer</a>.<br />
<br />
If you are interested in learning about how we can help you achieving your goals with our Open Source products and <a href="http://opensdi.geo-solutions.it/">professional services</a>, do not hesitate to <a href="http://www.geo-solutions.it/contact/" target="_blank">contact us</a>!<br />
<br />
The <b><a href="http://www.geo-solutions.it/">GeoSolutions</a> </b>team,<br />
<div>
<a href="http://geoserver.geo-solutions.it/"><img height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXpN0zERBnV5Bd3UY2dCxA5q01LyqxxND9XJthHLeRhyphenhyphenHV3SHLgfV8s-wocQMemkmKazH-2ebxl4EwZycGjfisfD6oMWFRYttd0WAaL_ZZDi5lxEQCxsnQlQ7DaKo3seuAwTaeUvraqHp/s320/800x250_eng.png" width="320" /></a></div>
Anonymoushttp://www.blogger.com/profile/01956667100896875559noreply@blogger.com1Via Poggio alle Viti, LU, Italia43.8736396 10.27924550000000243.870778099999995 10.274203000000002 43.8765011 10.284288000000002tag:blogger.com,1999:blog-5176900881057973693.post-68448472158124909522013-06-26T10:27:00.000+02:002013-06-26T10:27:12.369+02:00Meet GeoSolutions at the INSPIRE Conference 2013 in Florence!<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.geo-solutions.it/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://www.qualitytravel.it/newsite/wp-content/uploads/2012/07/logo-INSPIRE-Conference-2013.jpg" width="400" /></a></div>
Dear All,<br />
<a href="http://www.geo-solutions.it/">we</a> are proud to announce that <a href="http://www.geo-solutions.it/">GeoSolutions</a><a href="http://inspire.jrc.ec.europa.eu/events/conferences/inspire_2013/#gallery"> is sponsoring</a> the INSPIRE Conference 2013 which we'll be held in Florence from Sunday 23rd to Thursday 27th June (you can get more information at <a href="http://inspire.jrc.ec.europa.eu/events/conferences/inspire_2013/">this link</a>).<br />
<br />
<a href="http://www.geo-solutions.it/">GeoSolutions</a> will be present with its own booth therefore we'll be happy to talk to you about <a href="http://www.geo-solutions.it/services/">our open source products</a>, like <a href="http://geoserver.geo-solutions.it/">GeoServer</a> and <a href="http://mapstore.geo-solutions.it/">Mapstore</a>, as well as about our<a href="http://opensdi.geo-solutions.it/"> Enterprise Support Services</a>. Moreover, looking at the <a href="http://inspire.jrc.ec.europa.eu/events/conferences/inspire_2013/index.cfm/page/timetable">program</a>, we would like to remind you that we are also giving 2 workshops about our products:<br />
<br />
<br />
<ol>
<li><b><a href="http://inspire.jrc.ec.europa.eu/events/conferences/inspire_2013/index.cfm/page/ws#ppp_1_2_1">Hands - On Introduction To Create Mash - Ups For INSPIRE Services With MapStore</a></b>, Sunday, the 23th at 11:00 A.M. <i>The workshop will provide users with the basic knowledge to install, administer and proficiently use MapStore in order to create and share mashups that fuse contents served by existing services with a particular focus on INSPIRE View and Download services.</i></li>
<li><b><a href="http://inspire.jrc.ec.europa.eu/events/conferences/inspire_2013/index.cfm/page/ws#ppp_2_3_1">Hands-on Introduction to creating INSPIRE services with GeoServer</a></b>, Monday, the 24th at 02:00 P.M. <i>The workshop will provide a hands on introduction to the GeoServer usage and configuration with particular emphasis on INSPIRE compatibility</i></li>
</ol>
<div>
and also 2 presentations where solutions developed by <a href="http://www.geo-solutions.it/">GeoSolutions</a> and its partners will be discussed. Here is the list of presentations with basic information extracted from the program:</div>
<div>
<ol>
<li><b><a href="http://inspire.jrc.ec.europa.eu/events/conferences/inspire_2013/schedule/submissions/196.html">Opendata and INSPIRE With GeoServer , Geonetwork and Mapstore: Lessons Learned From Real - World Use Cases</a></b>, Thursday, the 27th at 02:40 P.M. <i>This presentation will report the first-hand experience of implementing and managing SDIs adhering to the INSPIRE technical guidelines to support the demand for OpenData employing well-known Open Source components like GeoServer, GeoNetwork and MapStore. Eventually, we will provide our perspective on benefits as well as shortcomings of the INSPIRE initiative with respect to creating SDI infrastructures suitable for OpenData dissemination. </i></li>
<li><a href="http://inspire.jrc.ec.europa.eu/events/conferences/inspire_2013/schedule/submissions/148.html" style="font-weight: bold;">Destination, an Integrated Solution to Monitor Hazardous Materials Transport Assuring Human and Environmental Protection</a>, Tuesday, the 25th at 4:40 P.M. <i>DESTINATION (DangErous tranSport To New prevenTive Instruments) is a project developed in the framework of Italy/Switzerland Operational Programme for Trans-frontier Cooperation 2007-2013, in order to contribute to inter-regional road accident prevention, real-time monitoring of Dangerous Goods Transportation (DGT) and more efficient emergency management. Partnership includes Regione Piemonte as project leader, Canton Ticino, Regione Lombardia, Regione Autonoma della Valle d’Aosta and Provincia Autonoma di Bolzano. DESTINATION initiative is focused on implementation of a shared information system including environmental, territorial and technical data relevant to meet local authorities and private stakeholders needs</i></li>
</ol>
<div>
If you are interested in learning about how we can help you achieving your goals with our Open Source products and professionale services, make sure to visit us at our booth </div>
</div>
<div>
<br /></div>
<br />
The <b><a href="http://www.geo-solutions.it/">GeoSolutions</a> </b>team,<br />
<div>
<a href="http://geoserver.geo-solutions.it/"><img height="100" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOXpN0zERBnV5Bd3UY2dCxA5q01LyqxxND9XJthHLeRhyphenhyphenHV3SHLgfV8s-wocQMemkmKazH-2ebxl4EwZycGjfisfD6oMWFRYttd0WAaL_ZZDi5lxEQCxsnQlQ7DaKo3seuAwTaeUvraqHp/s320/800x250_eng.png" width="320" /></a></div>
Anonymoushttp://www.blogger.com/profile/01956667100896875559noreply@blogger.com1Via Poggio alle Viti, 1187, Montramito LU, Italia43.8744082 10.27925600000003243.874363699999996 10.279177000000033 43.8744527 10.279335000000032