<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GeoServer Blog</title>
	<atom:link href="http://blog.geoserver.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.geoserver.org</link>
	<description>Everything GeoServer, and a little more</description>
	<lastBuildDate>Fri, 13 Aug 2010 18:23:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Blueprint for Creating an Open Source Web Map</title>
		<link>http://blog.geoserver.org/2010/07/23/blueprint-for-creating-an-open-source-web-map/</link>
		<comments>http://blog.geoserver.org/2010/07/23/blueprint-for-creating-an-open-source-web-map/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 17:29:49 +0000</pubDate>
		<dc:creator>Mike Pumphrey</dc:creator>
				<category><![CDATA[User perspectives]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[web mapping]]></category>

		<guid isPermaLink="false">http://blog.geoserver.org/?p=701</guid>
		<description><![CDATA[Community member Michelle Ballinger has put together a short tutorial on creating an open source web map using GeoServer.
This tutorial is designed for a beginner and is easy to follow.  The steps she uses are:

Creating and editing data with QGIS
Designing SLDs with uDig
Serving maps with GeoServer
Creating a custom OpenLayers application
Posting to the web

The introduction [...]]]></description>
			<content:encoded><![CDATA[<p>Community member Michelle Ballinger has put together a short tutorial on <a href="  http://mballingercapstone.web.officelive.com/default.aspx" target="_blank">creating an open source web map</a> using GeoServer.</p>
<p>This tutorial is designed for a beginner and is easy to follow.  The steps she uses are:</p>
<ol>
<li>Creating and editing data with QGIS</li>
<li>Designing SLDs with uDig</li>
<li>Serving maps with GeoServer</li>
<li>Creating a custom OpenLayers application</li>
<li>Posting to the web</li>
</ol>
<p>The introduction mentions the benefits of using open source and also, interestingly, discusses the pros and cons of making a &#8220;mash-up&#8221; versus serving one&#8217;s own data.</p>
<p>Once again, we see Penn State as a proponent of open source GIS.  Have you looked at their <a href="https://gis.e-education.psu.edu/mgis" target="_blank">Master of Geographic Information Systems</a> program lately?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.geoserver.org/2010/07/23/blueprint-for-creating-an-open-source-web-map/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GeoServer 2.0.2 release</title>
		<link>http://blog.geoserver.org/2010/05/25/geoserver-2-0-2-release/</link>
		<comments>http://blog.geoserver.org/2010/05/25/geoserver-2-0-2-release/#comments</comments>
		<pubDate>Tue, 25 May 2010 16:00:06 +0000</pubDate>
		<dc:creator>victortey</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[GeoServer]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://blog.geoserver.org/?p=687</guid>
		<description><![CDATA[To meet the growing demand for a geospatial server that meets the open standards set by the Open Geospatial Consortium, the GeoServer community has worked hard to release the new GeoServer 2.0.2.  This release includes almost 100 bugfixes and new features.
As previously mentioned, GeoServer now provides support for Oracle Georaster, custom database layouts for [...]]]></description>
			<content:encoded><![CDATA[<p>To meet the growing demand for a geospatial server that meets the open standards set by the Open Geospatial Consortium, the GeoServer community has worked hard to release the new <a href="http://geoserver.org/display/GEOS/GeoServer+2.0.2" target="_blank">GeoServer 2.0.2</a>.  This release includes <a href="http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=10311&amp;version=16040" target="_blank">almost 100 bugfixes and new features</a>.</p>
<p>As <a href="http://blog.geoserver.org/2010/05/17/oracle-georaster-custom-jdbc-access" target="_blank">previously mentioned</a>, GeoServer now provides support for Oracle Georaster, custom database layouts for image data and <a href="http://blog.geoserver.org/2010/05/25/polymorphism-in-application-schema/" target="_blank">polymorphism</a>.</p>
<p>Have you ever wondered what geographical area an EPSG code covers? A new feature has been added to showcase the different projections visually, by showing a map of the projection&#8217;s area of validity in the same CRS.  Here are three examples of this: <a href="http://demo.opengeo.org/geoserver/web/?wicket:bookmarkablePage=:org.geoserver.web.demo.SRSDescriptionPage&amp;code=EPSG:2964" target="_blank">EPSG:2964</a>, <a href="http://demo.opengeo.org/geoserver/web/?wicket:bookmarkablePage=:org.geoserver.web.demo.SRSDescriptionPage&amp;code=EPSG:3032" target="_blank">EPSG:3032</a>, <a href="http://demo.opengeo.org/geoserver/web/?wicket:bookmarkablePage=:org.geoserver.web.demo.SRSDescriptionPage&amp;code=EPSG:22184" target="_blank">EPSG:22184</a>.</p>
<p>To add to this, we have also added a default style preview in the layer publishing configuration.</p>
<p>The rendering subsystem has been improved to include <a href="http://docs.geoserver.org/stable/en/user/styling/sld-extensions/substitution.html" target="_blank">parameter substitution</a>, meaning you can pass parameters down from a GetMap request into your SLD for dynamic styling purposes.</p>
<p>The ability to do geometry transformations, included in GeoServer 2.0.1 without much fanfare, now has been <a href="http://docs.geoserver.org/stable/en/user/styling/sld-extensions/geometry-transformations.html" target="_blank">completely documented</a>.</p>
<p>Building image pyramids just got easier: gone are the times where you had to manually build each level mosaic and configure the main property file by hand.  The current pyramid extension can do this for you provided it is given a suitably configured directory set. See the <a href="http://docs.geoserver.org/stable/en/user/tutorials/imagepyramid/imagepyramid.html" target="_blank">pyramid tutorial</a> for more details.</p>
<p>Finally, this release of GeoServer implements the GetStyles optional WMS method allowing a user to retrieve the definition of all styles attached to a specific WMS layer, see the following link for an example:<br />
<a href="http://demo.opengeo.org/geoserver/wms?request=GetStyles&amp;layers=topp:states&amp;service=wms&amp;version=1.1.0" target="_blank">http://demo.opengeo.org/geoserver/wms?request=GetStyles&amp;layers=topp:states&amp;service=wms&amp;version=1.1.0</a></p>
<p>Thanks to everyone who have worked hard over the past few months adding features and fixing bugs, in order to make this release happen.  As usual, we encourage you to <a href="http://geoserver.org/display/GEOS/GeoServer 2.0.2" target="_blank">download</a>, try it out, and provide feedback on the <a href="https://lists.sourceforge.net/lists/listinfo/geoserver-users" target="_blank">users mailing list</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.geoserver.org/2010/05/25/geoserver-2-0-2-release/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Polymorphism in application-schema</title>
		<link>http://blog.geoserver.org/2010/05/25/polymorphism-in-application-schema/</link>
		<comments>http://blog.geoserver.org/2010/05/25/polymorphism-in-application-schema/#comments</comments>
		<pubDate>Tue, 25 May 2010 08:30:20 +0000</pubDate>
		<dc:creator>rangreani</dc:creator>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://blog.geoserver.org/?p=660</guid>
		<description><![CDATA[Support for  polymorphism is included in Geoserver  2.0.2. Why do we need  polymorphism support in  app-schema? Some complex  attributes are  polymorphic by nature,  which means they can have different types for   different features.

Before polymorphism was supported, attribute types had to be specified in the  mapping file, [...]]]></description>
			<content:encoded><![CDATA[<p>Support for  polymorphism is included in Geoserver  2.0.2. Why do we need  polymorphism support in  app-schema? Some complex  attributes are  polymorphic by nature,  which means they can have different types for   different features.</p>
<div>
<p>Before polymorphism was supported, attribute types had to be specified in the  mapping file, so could not vary across features. With polymorphism support, filter functions can now be used to specify conditions when  determining the encoded type.</p>
<p><span><span lang="EN-AU"><span style="text-decoration: underline">For example: </span></span></span></p>
<p>If MaterialCode is  &#8220;rock&#8221;, er:material should be encoded as gsml:RockMaterial, otherwise it should  be encoded as  gsml:Mineral.</p>
<p>This can be expressed  in the mapping file like this:</p>
<pre>&lt;AttributeMapping&gt;
    &lt;targetAttribute&gt;er:material&lt;/targetAttribute&gt;
    &lt;sourceExpression&gt;
        &lt;linkElement&gt;
            if_then_else(equalTo(MaterialCode, 'rock'), 'gsml:RockMaterial', 'gsml:Mineral')
        &lt;/linkElement&gt;
    &lt;/sourceExpression&gt;
&lt;/AttributeMapping&gt;</pre>
</div>
<p>Another common example is  replacing null values with an xlink:href  to a URI representing missing  values:</p>
<pre>&lt;AttributeMapping&gt;
    &lt;targetAttribute&gt;er:startDate&lt;/targetAttribute&gt;
    &lt;sourceExpression&gt;
        &lt;linkElement&gt;if_then_else(isNull(START_DATE), toXlinkHref('urn:ogc:def:nil:OGC::missing'),
                         'gml:TimeInstantPropertyType')
        &lt;/linkElement&gt;
    &lt;/sourceExpression&gt;
&lt;/AttributeMapping&gt;</pre>
<p>Read more about  app-schema polymorphism support: <a href="http://docs.geoserver.org/stable/en/user/data/app-schema/polymorphism.html">polymorphism</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.geoserver.org/2010/05/25/polymorphism-in-application-schema/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle GeoRaster &amp; Custom JDBC Access</title>
		<link>http://blog.geoserver.org/2010/05/17/oracle-georaster-custom-jdbc-access/</link>
		<comments>http://blog.geoserver.org/2010/05/17/oracle-georaster-custom-jdbc-access/#comments</comments>
		<pubDate>Mon, 17 May 2010 14:18:51 +0000</pubDate>
		<dc:creator>Christian Müller</dc:creator>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[images]]></category>
		<category><![CDATA[jdbc]]></category>
		<category><![CDATA[Mosaic]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[raster]]></category>

		<guid isPermaLink="false">http://blog.geoserver.org/?p=630</guid>
		<description><![CDATA[With the soon-to-be-released GeoServer 2.0.2, there are some exciting new features, two of which I would like to mention here.
GeoServer will soon be able to handle raster/image data in customized JDBC database layouts. This is useful for special use cases or existing image databases, offering the freedom of choosing individual table layouts, provided the needed [...]]]></description>
			<content:encoded><![CDATA[<p>With the soon-to-be-released GeoServer 2.0.2, there are some exciting new features, two of which I would like to mention here.</p>
<p>GeoServer will soon be able to handle <a href="http://docs.geoserver.org/stable/en/user/data/customjdbcaccess.html" target="_blank">raster/image data in customized JDBC database layouts</a>. This is useful for special use cases or existing image databases, offering the freedom of choosing individual table layouts, provided the needed data and image meta information is available.</p>
<p>Because of this new feature, GeoServer will be able to serve <a href="http://docs.geoserver.org/stable/en/user/data/oraclegeoraster.html" target="_blank">Oracle GeoRaster</a> files.  This new functionality is due to improvements to underlying GeoTools imagemosaic-jdbc module.</p>
<p>For those who aren&#8217;t familiar, the imagemosaic-jdbc extension enables storing tiles and pyramids into a JDBC database. This is useful for building and storing an image SQL database from scratch, following a predefined table layout.  See the <a href="http://docs.geoserver.org/stable/en/user/tutorials/imagemosaic-jdbc/imagemosaic-jdbc_tutorial.html" target="_blank">image mosaic tutorial</a> for more information on how this works.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.geoserver.org/2010/05/17/oracle-georaster-custom-jdbc-access/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Increasing GeoServer performance and stability with flow control</title>
		<link>http://blog.geoserver.org/2010/04/19/increasing-geoserver-performance-and-stability-with-flow-control/</link>
		<comments>http://blog.geoserver.org/2010/04/19/increasing-geoserver-performance-and-stability-with-flow-control/#comments</comments>
		<pubDate>Mon, 19 Apr 2010 07:35:25 +0000</pubDate>
		<dc:creator>Andrea Aime</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.geoserver.org/?p=625</guid>
		<description><![CDATA[Putting a public OGC server in production can be a daunting task.  Dynamic web GIS requests (be they WMS or WFS) consume significantly more resources than a regular web site, making the service quite demanding in terms of memory, CPU, and bandwith consumption. When a service becomes popular, requests start fighting for limited resources and [...]]]></description>
			<content:encoded><![CDATA[<p>Putting a public OGC server in production can be a daunting task.  Dynamic web GIS requests (be they WMS or WFS) consume significantly more resources than a regular web site, making the service quite demanding in terms of memory, CPU, and bandwith consumption. When a service becomes popular, requests start fighting for limited resources and put the hardware under considerable strain, possibly leading to failure due to lack of available memory.</p>
<p>The default GeoServer configuration already provides some help in this regard: it is already possible to limit the resources used by a single request by setting the maximum amount of features returned in a WFS request and by setting the <a href="http://docs.geoserver.org/2.0.x/en/user/services/wms/configuration.html#request-limits">maximum time and memory</a> allowed for a WMS request. That is not enough, however, as it is still possible for the service to be bogged down by a large number of requests.</p>
<p>The<a href="http://docs.geoserver.org/2.0.x/en/user/community/controlflow/index.html"> control flow</a> community module was developed to enable an administrator to impose limits on the total amount of work GeoServer may execute in parallel. With control flow, it is possible to limit the number of GetMap requests that will ever be served concurrently or to limit the number of requests that a single user may run in parallel. This simultaneously improves resource consumption, fairness, and performance.</p>
<p>Because it is a community module, you&#8217;ll only be able to find control flow in <a href="http://gridlock.openplans.org/geoserver/2.0.x/">nightly builds</a>. I recommend everyone running a public GeoServer instance look into the <a href="http://docs.geoserver.org/2.0.x/en/user/community/controlflow/index.html">documentation</a>, install it, and reap the benefits of increased resource control. I&#8217;ve actually been running it for over two months without issue on a relatively busy server (up to 60 thousand requests per day), resulting in greater up-times and fewer failed requests. Let us know how it works for you—if the module becomes popular we plan to turn it into an official extension that will be available in official releases.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.geoserver.org/2010/04/19/increasing-geoserver-performance-and-stability-with-flow-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GeoServer helps you get a job</title>
		<link>http://blog.geoserver.org/2010/04/15/geoserver-helps-you-get-a-job/</link>
		<comments>http://blog.geoserver.org/2010/04/15/geoserver-helps-you-get-a-job/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 22:54:37 +0000</pubDate>
		<dc:creator>Chris Holmes</dc:creator>
				<category><![CDATA[Announcements]]></category>

		<guid isPermaLink="false">http://blog.geoserver.org/?p=616</guid>
		<description><![CDATA[The opportunities available to those with experience in GeoServer seem to be growing all the time.  As more organizations rely on GeoServer for their applications they seek people who already have experience working with the software.  The best kind of experience is being able to point to actual involvement in the project, so I encourage [...]]]></description>
			<content:encoded><![CDATA[<p>The opportunities available to those with experience in GeoServer seem to be growing all the time.  As more organizations rely on GeoServer for their applications they seek people who already have experience working with the software.  The best kind of experience is being able to point to actual involvement in the project, so I encourage everyone to contribute—code, documentation and just helping answer questions on the list are all appreciated by the core developers and can indeed help you get a job.</p>
<p>In the last couple weeks I&#8217;ve seen a few different opportunities, so thought I&#8217;d post them here:</p>
<p>• The Global Biodiversity Information Facility (GBIF) is <a href="http://www.gbif.org/communications/news-and-events/showsingle/article/job-opening-gbif-software-developer-gis-services/">looking for</a> a consultant to provide &#8220;the development of geospatial services for species related data&#8221; which will be &#8220;offered as OGC web services provided by GeoServer&#8221;.  There is also a <a href="http://www.gbif.org/communications/news-and-events/showsingle/article/job-opening-gbif-software-developer-1/">listing</a> for a client-side developer who would consume GeoServer services in an <a href="http://openlayers.org">OpenLayers</a>, <a href="http://geoext.org">GeoExt</a>, or Flash–based client.</p>
<p>• On Twitter, I came across a company <a href="http://www.jobup.ch/en/job/453662/senior-geoserver-developer-31">searching</a> for a &#8220;Senior GeoServer Developer&#8221; who has at least a year of experience  with GeoServer and is a &#8220;proven contributor and committer&#8221; on the  project.<br />
<strong></strong></p>
<p>• The World Bank put up a <a href="http://www.ecapra.org/capra_wiki/es_wiki/index.php?title=Job_Posting">job post</a> seeking a developer to help them with core programming and deployment for &#8220;Haiti Data Dissemination Web Portals&#8221; to be built on the <a href="http://geonode.org">GeoNode</a> project, which is based on GeoServer, <a href="http://www.djangoproject.com/ ">Django</a>, and GeoExt.</p>
<p>• With a bit of searching on Monster.com, I found a <a href="http://jobview.monster.com/Sr-Software-Engineer-I-GIS-Developer-Job-Omaha-NE-US-87082630.aspx">post</a> for a developer with Java and GeoServer experience to help on a &#8220;Weather Data Analysis  Capability&#8221; project.</p>
<p>If anyone else is looking for people with GeoServer expertise please email and I can add them here or do a job post in the future—or just add other listings in the comments. I&#8217;m also pretty sure a number of the core contributing companies behind GeoServer are on the lookout for new hires.  Though they don&#8217;t yet have a &#8216;jobs&#8217; section on the site, I wanted to give a shout out to GeoSolutions and their great-looking <a href="http://www.geo-solutions.it/">redesigned website</a>, as I know they&#8217;ve been growing and on the lookout for great people.</p>
<p>UPDATE: I also meant to mention that my organization is looking for a <a href="http://opengeo.org/about/careers/salesexec/">Salesperson</a> and a <a href="http://opengeo.org/about/careers/marketingdirector/">Director of Marketing</a> to help sell the <a href="http://opengeo.org/products/suite/">OpenGeo Suite</a>, which has GeoServer at its core and funds all our time on the project.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.geoserver.org/2010/04/15/geoserver-helps-you-get-a-job/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SLD Cookbook</title>
		<link>http://blog.geoserver.org/2010/04/09/sld-cookbook/</link>
		<comments>http://blog.geoserver.org/2010/04/09/sld-cookbook/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 14:49:18 +0000</pubDate>
		<dc:creator>Mike Pumphrey</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[cookbook]]></category>
		<category><![CDATA[reference]]></category>
		<category><![CDATA[SLD]]></category>
		<category><![CDATA[style]]></category>
		<category><![CDATA[styling]]></category>

		<guid isPermaLink="false">http://blog.geoserver.org/?p=576</guid>
		<description><![CDATA[Styling map layers in GeoServer can be challenging.  While there are some ways to craft map layers without ever needing to look at Styled Layer Descriptor (SLD) code, there are some who don&#8217;t want an intermediary and want to code with SLD directly.  For those, there are few options:
1. Read the OGC SLD [...]]]></description>
			<content:encoded><![CDATA[<p>Styling map layers in GeoServer can be challenging.  While there are <a href="http://blog.geoserver.org/2010/04/05/styling-geoserver-layers-with-css/" target="_blank">some</a> <a href="http://blog.opengeo.org/2009/05/05/styler/" target="_blank">ways</a> to craft map layers without ever needing to look at Styled Layer Descriptor (SLD) code, there are some who don&#8217;t want an intermediary and want to code with SLD directly.  For those, there are few options:</p>
<p>1. Read the <a href="http://www.opengeospatial.org/standards/sld" target="_blank">OGC SLD 1.0 specification</a>.  At 100+ pages, it can be a bit dense.<br />
2. Read the <a href="http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd" target="_blank">SLD schema</a>.  Because, really, who doesn&#8217;t love interpreting schemas?</p>
<p>Failing those, the would-be map stylist is usually out of luck, needing to eke out an understanding of styling by asking on <a href="https://lists.sourceforge.net/lists/listinfo/geoserver-users" target="_blank">mailing lists</a> and doing web searches.</p>
<p>When I was learning SLD, I wanted simple examples that I could understand and edit.  I wanted screenshots.  I wanted to know which line of code did what.  I wanted to look up styles as if they were in a recipe book.  But this type of reference didn&#8217;t exist at the time.</p>
<p>The <a href="http://docs.geoserver.org/stable/en/user/styling/sld-cookbook/index.html" target="_blank">SLD Cookbook</a> is that reference.  It is a &#8220;practical reference&#8221; to show how map styling works.  It is not designed to be exhaustive, and it won&#8217;t tell you about every possible edge case.  But it also has no SLDs that are hundreds of lines long, a strong hurdle to comprehension.</p>
<p>Want to know how to style a simple point?  <a href="http://docs.geoserver.org/stable/en/user/styling/sld-cookbook/points.html#simple-point" target="_blank">Look at the example</a>, <a href="http://docs.geoserver.org/stable/en/user/_downloads/point_simplepoint.sld" target="_blank">download the SLD</a> (and the <a href="http://docs.geoserver.org/stable/en/user/_downloads/sld_cookbook_point.zip" target="_blank">shapefile</a> that generated the screenshot too, if you&#8217;d like), and <a href="http://docs.geoserver.org/stable/en/user/styling/sld-cookbook/points.html#details" target="_blank">read the details</a>.  See which line of code accomplishes what, so if you want to make the points blue instead of red, you&#8217;ll know what line to change (line 8 in this case).  Want to see how to make a style where lines are styled differently by <a href="http://docs.geoserver.org/stable/en/user/styling/sld-cookbook/lines.html#attribute-based-line" target="_blank">data attributes</a>? Or by <a href="http://docs.geoserver.org/stable/en/user/styling/sld-cookbook/lines.html#zoom-based-line" target="_blank">zoom level</a>?  Refer as necessary.  Even those experienced with SLD may find the examples useful.</p>
<p>There are a few examples mixed in that leverage extensions to GeoServer/GeoTools (<a href="http://docs.geoserver.org/stable/en/user/styling/sld-cookbook/polygons.html#hatching-fill" target="_blank">polygon fill hatching</a>, <a href="http://docs.geoserver.org/stable/en/user/styling/sld-cookbook/lines.html#label-following-line" target="_blank">labels that follow lines</a>) but for the most part, the examples are perfectly valid according to the SLD 1.0 specification.</p>
<p>I&#8217;m sure that more examples can and will be added in time.  I&#8217;ve already received some very good feedback from others, and some styles will likely be optimized.  But every example, every screenshot, and every SLD was tested in the <a href="http://geoserver.org/display/GEOS/Stable" target="_blank">most recent version of GeoServer</a>.</p>
<p>So <a href="http://docs.geoserver.org/stable/en/user/styling/sld-cookbook/index.html" target="_blank">take a look</a>, and get styling!  I hope you enjoy.  Special thanks goes out to <a href="http://www.geonovum.nl/" target="_blank">Geonovum</a>, who funded this project.  I personally appreciate it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.geoserver.org/2010/04/09/sld-cookbook/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Styling GeoServer Layers with CSS</title>
		<link>http://blog.geoserver.org/2010/04/05/styling-geoserver-layers-with-css/</link>
		<comments>http://blog.geoserver.org/2010/04/05/styling-geoserver-layers-with-css/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 15:09:42 +0000</pubDate>
		<dc:creator>David Winslow</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Features]]></category>

		<guid isPermaLink="false">http://blog.geoserver.org/?p=549</guid>
		<description><![CDATA[GeoServer users have a lot to wrap their heads around.  We need to optimize our servlet containers, determine projections for all those broken shapefiles, and remember to fill out layer metadata.  One issue in particular that comes up again and again is difficulty with creating SLD files to style maps.  It is [...]]]></description>
			<content:encoded><![CDATA[<p>GeoServer users have a lot to wrap their heads around.  We need to optimize our servlet containers, determine projections for all those broken shapefiles, and remember to fill out layer metadata.  One issue in particular that comes up again and again is difficulty with creating <a href="http://docs.geoserver.org/stable/en/user/styling/index.html" target="_blank">SLD files</a> to style maps.  It is hardly surprising that map designers fail to take advantage of some of the <a href="http://blog.geoserver.org/2009/06/01/geoserver-chart-extension/" target="_blank">niftier</a> <a href="http://blog.geoserver.org/2010/03/17/extending-your-map-styling-with-geometry-transformations/" target="_blank">rendering</a> <a href="http://blog.geoserver.org/2008/12/08/dynamic-symbolizers-part-1/" target="_blank">tricks</a> that Andrea cooks up.  <a href="http://blog.opengeo.org/2009/05/05/styler/" target="_blank">Styler</a>, a graphical SLD editing application that OpenGeo has been developing, is one approach to making SLD creation more palatable.  But just as experienced web designers often feel limited by WYSIWYG environments, advanced users will always have a use for manual, text-based editing.  Unfortunately, the highly structured, verbose nature of XML can make this strenuous.</p>
<p>With this in mind, I&#8217;ve been working on an extension to GeoServer allowing styling of map layers with a CSS-type syntax.  This work follows in the footsteps of tools like <a href="http://cartagen.org/" target="_blank">Cartagen</a> and <a href="http://code.google.com/p/mapnik-utils/wiki/Cascadenik" target="_blank">Cascadenik</a> which both apply a CSS framework to map styling.</p>
<p>To see how a CSS map style would look, compare the &#8220;simpleRoads&#8221; SLD from the data directory that ships with GeoServer:</p>
<pre>
<pre id="line1">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;StyledLayerDescriptor version="1.0.0"
  xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
  xmlns="http://www.opengis.net/sld"
  xmlns:ogc="http://www.opengis.net/ogc"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
  &lt;NamedLayer&gt;
    &lt;Name&gt;Simple Roads&lt;/Name&gt;
    &lt;UserStyle&gt;
      &lt;Title&gt;Default Styler for simple road segments&lt;/Title&gt;
      &lt;Abstract&gt;Light red line, 2px wide&lt;/Abstract&gt;
      &lt;FeatureTypeStyle&gt;
        &lt;Rule&gt;
          &lt;Title&gt;Roads&lt;/Title&gt;
          &lt;LineSymbolizer&gt;
            &lt;Stroke&gt;
              &lt;CssParameter name="stroke"&gt;
                &lt;ogc:Literal&gt;#AA3333&lt;/ogc:Literal&gt;
              &lt;/CssParameter&gt;
              &lt;CssParameter name="stroke-width"&gt;
                &lt;ogc:Literal&gt;2&lt;/ogc:Literal&gt;
              &lt;/CssParameter&gt;
            &lt;/Stroke&gt;
          &lt;/LineSymbolizer&gt;
        &lt;/Rule&gt;
      &lt;/FeatureTypeStyle&gt;
    &lt;/UserStyle&gt;
  &lt;/NamedLayer&gt;
&lt;/StyledLayerDescriptor&gt;</pre>
</pre>
<p>with the equivalent CSS style:</p>
<pre>
<pre>/* @title Default styler for simple road segments
 * @abstract Light red line, 2px wide
 */
* {
  stroke: #AA3333;
  stroke-width: 2px;
}</pre>
</pre>
<p>CSS styles are fully converted to SLD before GeoServer uses them for rendering, so the resulting SLDs can be migrated directly to other GeoServer instances, even if they don&#8217;t have the CSS extension installed.   Filter functions, zoom-based styling rules, and geometry transformations are also available.</p>
<p>You can <a href="http://gridlock.openplans.org/geoserver/2.0.x/community-latest/" target="_blank">download the CSS extension</a> from the nightly build server and add it to your existing GeoServer instance (2.0.0 and later only).  Installation instructions are available in the <a href="http://docs.geoserver.org/2.0.x/en/user/community/css/tutorial.html" target="_blank">CSS tutorial</a>.  All the features of the CSS extension are documented in the <a href="http://docs.geoserver.org/2.0.x/en/user/community/css/index.html" target="_blank">CSS section</a> of the User Manual.  I encourage everyone to check it out!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.geoserver.org/2010/04/05/styling-geoserver-layers-with-css/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Extending your map styling with geometry transformations</title>
		<link>http://blog.geoserver.org/2010/03/17/extending-your-map-styling-with-geometry-transformations/</link>
		<comments>http://blog.geoserver.org/2010/03/17/extending-your-map-styling-with-geometry-transformations/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 18:55:33 +0000</pubDate>
		<dc:creator>Andrea Aime</dc:creator>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[geometry]]></category>
		<category><![CDATA[SLD]]></category>
		<category><![CDATA[style]]></category>
		<category><![CDATA[styling]]></category>
		<category><![CDATA[transformation]]></category>

		<guid isPermaLink="false">http://blog.geoserver.org/?p=505</guid>
		<description><![CDATA[When designing a map, sometimes you want to render something that is related to the geometries you have at hand, but which is not specifically the geometries themselves. Maybe you want to highlight the end of a line, create a drop shadow effect, or make the vertices that make up a geometry more evident to [...]]]></description>
			<content:encoded><![CDATA[<p>When designing a map, sometimes you want to render something that is related to the geometries you have at hand, but which is not specifically the geometries themselves. Maybe you want to highlight the end of a line, create a drop shadow effect, or make the vertices that make up a geometry more evident to the user.  Unfortunately the <a href="http://www.opengeospatial.org/standards/sld" target="_blank">SLD specification</a> that GeoServer uses for its rendering does not allow you to dynamically extract such information.  If you need to achieve those effects, you will usually need to generate a new layer by preprocessing your data offline (for example, using <a href="http://postgis.org/" target="_blank">PostGIS&#8217;s</a> excellent spatial analysis functions).</p>
<p>Today I&#8217;m going to show you how to achieve those effects dynamically using what we call <strong>geometry transformations</strong>. Geometry transformations are yet another extension to SLD in order to make it more powerful.  (Another example of SLD an extension that GeoServer has implemented is <a href="http://blog.geoserver.org/2008/12/08/dynamic-symbolizers-part-1/" target="_blank">dynamic</a> <a href="http://blog.geoserver.org/2008/12/16/dynamic-symbolizers-part-2/" target="_blank">symbolizers</a>.)  Standard SLD allows the user to specify a <code>&lt;Geometry&gt;</code> element in each symbolizer, but its contents can only be a <code>&lt;PropertyName&gt;</code>; this allows a user to choose a different geometry should a spatial table contain more than one.  With geometry transformations, GeoServer allows you to specify a filter function as well, which can transform the geometry.  (You may want to refer to my previous post on <a href="http://blog.geoserver.org/2010/02/08/geoserver-hidden-treasures-filter-functions/" target="_blank">filter functions</a>.)</p>
<p>Let&#8217;s look at an example. Say we have a building layer, rendered with a plain gray fill:</p>
<p style="text-align: center;"><img class="size-full wp-image-537 aligncenter" title="plain" src="http://blog.geoserver.org/wp-content/uploads/plain.png" alt="plain" width="512" height="434" /></p>
<p>We can add a twist to this plain map by adding a drop shadow beneath the buildings layer. To achieve this we will offset the buildings a bit, fill them dark gray, and then paint the standard buildings layer on top of it. The style looks like:</p>
<pre>
<pre>      &lt;FeatureTypeStyle&gt;
        &lt;Rule&gt;
          &lt;Title&gt;Shadow&lt;/Title&gt;
          &lt;PolygonSymbolizer&gt;
            &lt;Geometry&gt;
               &lt;ogc:Function name="offset"&gt;
                  &lt;ogc:PropertyName&gt;the_geom&lt;/ogc:PropertyName&gt;
                  &lt;ogc:Literal&gt;0.00004&lt;/ogc:Literal&gt;
                  &lt;ogc:Literal&gt;-0.00004&lt;/ogc:Literal&gt;
               &lt;/ogc:Function&gt;
            &lt;/Geometry&gt;
            &lt;Fill&gt;
              &lt;CssParameter name="fill"&gt;#555555&lt;/CssParameter&gt;
            &lt;/Fill&gt;
          &lt;/PolygonSymbolizer&gt;
        &lt;/Rule&gt;
      &lt;/FeatureTypeStyle&gt;
      &lt;FeatureTypeStyle&gt;
        &lt;Rule&gt;
          &lt;Title&gt;Polygon&lt;/Title&gt;
          &lt;PolygonSymbolizer&gt;
            &lt;Fill&gt;
              &lt;CssParameter name="fill"&gt;#CCCCCC&lt;/CssParameter&gt;
            &lt;/Fill&gt;
            &lt;Stroke&gt;
              &lt;CssParameter name="stroke"&gt;#000000&lt;/CssParameter&gt;
              &lt;CssParameter name="stroke-width"&gt;0.5&lt;/CssParameter&gt;
            &lt;/Stroke&gt;
          &lt;/PolygonSymbolizer&gt;
        &lt;/Rule&gt;
      &lt;/FeatureTypeStyle&gt;</pre>
</pre>
<p>And the result is:</p>
<p style="text-align: center;"><img class="size-full wp-image-538 aligncenter" title="shadow" src="http://blog.geoserver.org/wp-content/uploads/shadow1.png" alt="shadow" width="512" height="434" /></p>
<p>The filter function takes the geometries and offsets them by (0.00004, -0.00004).  Geometry transformations occur against the original geometry, which in this particular case is in EPSG:4326, so the values of the offset are also in units of lon/lat.</p>
<p>You can find more examples about this functionality in the <a href="http://docs.geoserver.org/stable/en/user/styling/sld-extensions/geometry-transformations.html" target="_blank">geometry transformations</a> section of the <a href="http://docs.geoserver.org/stable/en/user/" target="_blank">User Manual</a>.  You can also get creative by looking at the currently available set of <a href="http://docs.geoserver.org/stable/en/user/filter/function_reference.html" target="_blank">filter functions</a>. Also remember, if you want a function that&#8217;s not there, it is possible to add new ones; drop by on the <a href="https://lists.sourceforge.net/lists/listinfo/geoserver-devel" target="_blank">developer mailing list</a> and we&#8217;ll provide you with directions.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.geoserver.org/2010/03/17/extending-your-map-styling-with-geometry-transformations/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>GeoServer continuous map wrapping!</title>
		<link>http://blog.geoserver.org/2010/02/23/geoserver-map-wrapping/</link>
		<comments>http://blog.geoserver.org/2010/02/23/geoserver-map-wrapping/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 22:31:53 +0000</pubDate>
		<dc:creator>Simone Giannecchini</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[date line]]></category>
		<category><![CDATA[dateline]]></category>
		<category><![CDATA[GeoSolutions]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[wraparound]]></category>
		<category><![CDATA[wrapping]]></category>

		<guid isPermaLink="false">http://blog.geoserver.org/?p=482</guid>
		<description><![CDATA[GeoServer is now able to output maps that look like continuous wrapped maps from Google!
Let&#8217;s have a look at an example. Below is a map drawn by GeoServer that is reprojected to a projection that happens to sit across the dateline, the usual &#8220;edge&#8221; of the map.  As you can see the reprojection is [...]]]></description>
			<content:encoded><![CDATA[<p>GeoServer is now able to output maps that look like continuous wrapped maps from <a href="http://maps.google.com/?ie=UTF8&amp;ll=25.799891,150.117188&amp;spn=155.12213,360&amp;z=2" target=_blank>Google</a>!</p>
<p>Let&#8217;s have a look at an example. Below is a map drawn by GeoServer that is reprojected to a projection that happens to sit across the dateline, the usual &#8220;edge&#8221; of the map.  As you can see the reprojection is not doing a good job where the dateline is crossed:</p>
<div id="attachment_487" class="wp-caption aligncenter" style="width: 276px"><img class="size-medium wp-image-487 " src="http://blog.geoserver.org/wp-content/uploads/geoserver-266x300.png" alt="Poor output where polygons cross the dateline" width="266" height="300" /><p class="wp-caption-text">Polygons crossing dateline change before improving the renderer</p></div>
<p>However, GeoServer now has what is called <strong>advanced projection handling</strong>.  With this enabled, the dateline wrapping is properly handled and, in addition, the map repeats in a continuous fashion:</p>
<div id="attachment_488" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-488" src="http://blog.geoserver.org/wp-content/uploads/continents_900913-300x175.png" alt="Polygons crossing dateline change after improving the renderer" width="300" height="175" /><p class="wp-caption-text">Polygons crossing the dateline with advanced projection handling</p></div>
<p>For more information, including how to turn on this (optional) feature, please see this <a href="http://geo-solutions.blogspot.com/2010/02/geoserver-continuous-map-wrapping.html" target=_blank>post from GeoSolutions</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.geoserver.org/2010/02/23/geoserver-map-wrapping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
