<?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>OpenGeo</title>
	<atom:link href="http://blog.opengeo.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.opengeo.org</link>
	<description>Building Web-Based Geospatial Technology</description>
	<lastBuildDate>Wed, 16 May 2012 13:09:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>OpenGeo&#8217;s Hiring: If you&#8217;re reading this at work, it may be time to apply yourself</title>
		<link>http://blog.opengeo.org/2012/05/16/opengeos-hiring-if-youre-reading-this-at-work-it-may-be-time-to-apply-yourself/</link>
		<comments>http://blog.opengeo.org/2012/05/16/opengeos-hiring-if-youre-reading-this-at-work-it-may-be-time-to-apply-yourself/#comments</comments>
		<pubDate>Wed, 16 May 2012 13:09:21 +0000</pubDate>
		<dc:creator>camille</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.opengeo.org/?p=2907</guid>
		<description><![CDATA[OpenGeo is looking for talented people to join our team. We offer interesting technical work, competitive salaries, great benefits, and a fantastic working environment. Most importantly we challenge our employees to build the best open source and interoperable tools for spatial data on the web. A few of our openings: UX Developer - Software that&#8217;s a joy [...]]]></description>
			<content:encoded><![CDATA[<p>OpenGeo is looking for talented people to join our team. We offer interesting technical work, competitive salaries, great benefits, and a fantastic working environment. Most importantly we challenge our employees to build the best open source and interoperable tools for spatial data on the web.</p>
<div>
<p>A few of our openings:</p>
<p><strong><a href="http://opengeo.org/about/careers/ux-developer/" target="_blank">UX Developer</a> </strong>- Software that&#8217;s a joy to use gets more use. This is a critical role that will help the world move past the clunky desktop interfaces of the past. We&#8217;re looking for someone who can both design and implement intuitive, responsive interfaces for geospatial applications.</p>
<p><strong><a href="http://opengeo.org/about/careers/software-developer/" target="_blank">Software Developer</a></strong> - OpenGeo&#8217;s solutions and support arm is looking for talented developers to help our clients solve big problems, in fields ranging from disaster risk modeling to demography. You must be curious, communicative, and interested in contributing to our development process.</p>
<p><strong><a href="http://opengeo.org/about/careers/qa-engineer/" target="_blank">QA Engineer</a></strong> - Did you ever test how many licks it takes to get to the center of a Tootsie Roll pop? Do you have a secret collection of &#8220;QC Passed&#8221; stickers? This may be the job for you. With your help, we&#8217;ll make sure that every release of the OpenGeo Suite is up to snuff: documented, tested, polished, and ready for action.</p>
</div>
<p><a href="http://opengeo.org/about/careers/" target="_blank">Here&#8217;s the full list</a>. Please apply and/or spread the word!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.opengeo.org/2012/05/16/opengeos-hiring-if-youre-reading-this-at-work-it-may-be-time-to-apply-yourself/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PostGIS Code Sprint à Paris</title>
		<link>http://blog.opengeo.org/2012/05/15/postgis-code-sprint-a-paris/</link>
		<comments>http://blog.opengeo.org/2012/05/15/postgis-code-sprint-a-paris/#comments</comments>
		<pubDate>Tue, 15 May 2012 07:31:57 +0000</pubDate>
		<dc:creator>Paul Ramsey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[2.1]]></category>
		<category><![CDATA[postgis]]></category>
		<category><![CDATA[sprint]]></category>

		<guid isPermaLink="false">http://blog.opengeo.org/?p=2903</guid>
		<description><![CDATA[For the next two days in Paris, the PostGIS development team (sans Regina Obe, unfortunately) will be meeting to discuss the 2.1 development cycle, squash a few bugs (and release 2.0.1?), and look at future directions for PostGIS.  (Paris? Yes, I said Paris. After jogging a lap around the Champs de Mars and having my [...]]]></description>
			<content:encoded><![CDATA[<p>For the next two days in Paris, the PostGIS development team (<em>sans</em> Regina Obe, unfortunately) will be meeting to discuss the 2.1 development cycle, squash a few bugs (and release 2.0.1?), and look at future directions for PostGIS.  (Paris? Yes, I said Paris. After jogging a lap around the Champs de Mars and having my croissant for breakfast this morning, I feel that this should be an annual event.)</p>
<p>The <a href="http://trac.osgeo.org/postgis/wiki/DevWikiEvent">sprint wiki page</a> lays out some of the topics on the agenda: routing, parallel processing, 3D, point clouds, performance, and of course the ever-present meta-topic, <a href="http://en.wikipedia.org/wiki/Git_(software)">git</a>.  It seems likely that PostGIS will move to git in the near future unless one of the development team is strongly opposed. Being merely ambivalent, I won&#8217;t throw myself into the gears of &#8220;progress&#8221;.</p>
<p>My personal development priorities for 2.1 are performance, performance, performance: I have speed improvements in mind for geometry, geography and raster. The geometry and geography improvements are based on internal indexing, as I described <a href="http://blog.cleverelephant.ca/2009/11/is-good-enough-good-enough.html">almost three years ago</a>! They were too radical to go into 1.5, which was nearing release at the time, and other things (re-writing the core serialization/parsers/emitters) distracted me during 2.0. So 2.1 is it! And for raster, someone might beat me to it, but the ST_Union(raster) function should be relatively easy to speed up with the same memory management approach that the vector aggregate functions use.</p>
<p>This evening the developers will be meeting with a local group of power users for a discussion about roadmap priorities and where <em>they</em> think our development effort would be best spent. I&#8217;m looking forward to hearing some more about how folks are using PostGIS in the wild.</p>
<p><em>À bientôt!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.opengeo.org/2012/05/15/postgis-code-sprint-a-paris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PostGIS 1.5.4 Released</title>
		<link>http://blog.opengeo.org/2012/05/06/postgis-1-5-4-released/</link>
		<comments>http://blog.opengeo.org/2012/05/06/postgis-1-5-4-released/#comments</comments>
		<pubDate>Sun, 06 May 2012 10:44:45 +0000</pubDate>
		<dc:creator>Paul Ramsey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[1.5]]></category>
		<category><![CDATA[postgis]]></category>

		<guid isPermaLink="false">http://blog.opengeo.org/?p=2895</guid>
		<description><![CDATA[The 1.5 series is still receiving maintenance releases, and today marks another one. Here&#8217;s the official news file: This is a bug fix release, addressing issues that have been filed since the 1.5.3 release. - Bug Fixes - #547, ST_Contains memory problems (Sandro Santilli) - #621, Problem finding intersections with geography (Paul Ramsey) - #627, [...]]]></description>
			<content:encoded><![CDATA[<p>The 1.5 series is still receiving maintenance releases, and today marks another one. Here&#8217;s the official news file:</p>
<pre> This is a bug fix release, addressing issues that have been
 filed since the 1.5.3 release.

 - Bug Fixes
   - #547, ST_Contains memory problems (Sandro Santilli)
   - #621, Problem finding intersections with geography (Paul Ramsey)
   - #627, PostGIS/PostgreSQL process die on invalid geometry (Paul Ramsey)
   - #810, Increase accuracy of area calculation (Paul Ramsey)
   - #852, improve spatial predicates robustness (Sandro Santilli, Nicklas Avén)
   - #877, ST_Estimated_Extent returns NULL on empty tables (Sandro Santilli)
   - #1028, ST_AsSVG kills whole postgres server when fails (Paul Ramsey)
   - #1056, Fix boxes of arcs and circle stroking code (Paul Ramsey)
   - #1135, improve testsuite predictability (Andreas 'ads' Scherbaum)
   - #1146, images generator crashes (bronaugh)
   - #1170, North Pole intersection fails (Paul Ramsey)
   - #1179, ST_AsText crash with bad value (kjurka)
   - #1184, honour DESTDIR in documentation Makefile (Bryce L Nordgren)
   - #1227, server crash on invalid GML
   - #1252, SRID appearing in WKT (Paul Ramsey)
   - #1264, st_dwithin(g, g, 0) doesn't work (Paul Ramsey)
   - #1344, allow exporting tables with invalid geometries (Sandro Santilli)
   - #1389, wrong proj4text for SRID 31300 and 31370 (Paul Ramsey)
   - #1406, shp2pgsql crashes when loading into geography (Sandro Santilli)
   - #1595, fixed SRID redundancy in ST_Line_SubString (Sandro Santilli)
   - #1596, check SRID in UpdateGeometrySRID (Mike Toews, Sandro Santilli)
   - #1602, fix ST_Polygonize to retain Z (Sandro Santilli)
   - #1697, fix crash with EMPTY entries in GiST index (Paul Ramsey)
   - #1772, fix ST_Line_Locate_Point with collapsed input (Sandro Santilli)
   - #1799, Protect ST_Segmentize from max_length=0  (Sandro Santilli)
   - Alter parameter order in 900913 (Paul Ramsey)
   - Support builds with "gmake" (Greg Troxel)</pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.opengeo.org/2012/05/06/postgis-1-5-4-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Earth is Not Flat: Volume 2</title>
		<link>http://blog.opengeo.org/2012/04/30/the-earth-is-not-flat-volume-2/</link>
		<comments>http://blog.opengeo.org/2012/04/30/the-earth-is-not-flat-volume-2/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 22:07:38 +0000</pubDate>
		<dc:creator>Paul Ramsey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[geography]]></category>
		<category><![CDATA[postgis]]></category>

		<guid isPermaLink="false">http://blog.opengeo.org/?p=2883</guid>
		<description><![CDATA[I really want the geography support in PostGIS to be good, so when I get tickets on it, I take the time to investigate, particularly when they say there are problems with correctness. This recent ticket took a little while to visualize and confirm, and it&#8217;s worth showing so hopefully other folks can debug their [...]]]></description>
			<content:encoded><![CDATA[<p>I really want the geography support in PostGIS to be good, so when I get tickets on it, I take the time to investigate, particularly when they say there are problems with correctness.</p>
<p><a href="http://trac.osgeo.org/postgis/ticket/621">This recent ticket</a> took a little while to visualize and confirm, and it&#8217;s worth showing so hopefully other folks can debug their issues on their own. The submitter basically said, &#8220;look, I have two squares, and I know the smaller one is contained in the larger, and I know that they both contain a marker, and yet when I run containment tests, they say the marker is only contained by the smaller square, but if the larger square contains the smaller it must logically also contain the marker!&#8221; And, helpfully, he included the SQL for the tests, which included the squares.</p>
<p>You can see where his concern comes from. The smaller square is inside the larger.</p>
<p><a href="http://blog.opengeo.org/wp-content/uploads/2012/04/screenshot_01.jpg"><img class="alignnone size-medium wp-image-2884" title="Everything lines up" src="http://blog.opengeo.org/wp-content/uploads/2012/04/screenshot_01-300x297.jpg" alt="" width="300" height="297" /></a></p>
<p>And the marker is inside both.</p>
<p><a href="http://blog.opengeo.org/wp-content/uploads/2012/04/screenshot_02.jpg"><img class="alignnone size-medium wp-image-2885" title="Marker is contained in both squares" src="http://blog.opengeo.org/wp-content/uploads/2012/04/screenshot_02-300x112.jpg" alt="" width="300" height="112" /></a></p>
<p>However, this is a visualization in mercator. The lines between vertices are being drawn as linear interpolations in planar space. The geography calculations involve great circles between vertices in spherical space. What does that look like?</p>
<p><a href="http://blog.opengeo.org/wp-content/uploads/2012/04/screenshot_04.jpg"><img title="Lower border does not really line up" src="http://blog.opengeo.org/wp-content/uploads/2012/04/screenshot_04-300x270.jpg" alt="" width="300" height="270" /></a></p>
<p>Hm, the lower lines don&#8217;t actually line up.</p>
<p><a href="http://blog.opengeo.org/wp-content/uploads/2012/04/screenshot_03.jpg"><img class="alignnone size-medium wp-image-2886" title="Marker is only contained in one square" src="http://blog.opengeo.org/wp-content/uploads/2012/04/screenshot_03-300x94.jpg" alt="" width="300" height="94" /></a></p>
<p>And the marker is actually between the lower lines. It&#8217;s contained by the smaller square, but not by the larger one. Just like the geography tests said.</p>
<p>The moral of the story is, we aren&#8217;t good at visually reasoning about boundaries on a sphere. Our practice is all cartesian and it causes us to make mistakes.</p>
<p>This is something I learned during the development of geography, when I spent many hours debugging test cases that the code was getting &#8220;wrong&#8221; only to find in the end that the problem was entirely between my ears. (Example, does <code>POINT(0 1)</code> fall on <code>LINESTRING(-1 1, 1 1)</code>? If you said &#8220;yes&#8221;, you too have problems between your ears.)</p>
<p>So, plug your problem into KML LineStrings (not Polygons, <a href="http://blog.opengeo.org/2010/08/10/shape-of-a-polygon/">they aren&#8217;t rendered as great circles</a>!) and have a look before reporting correctness issues in geography, please!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.opengeo.org/2012/04/30/the-earth-is-not-flat-volume-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTTP for PostgreSQL</title>
		<link>http://blog.opengeo.org/2012/04/20/http-for-postgresql/</link>
		<comments>http://blog.opengeo.org/2012/04/20/http-for-postgresql/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 15:19:46 +0000</pubDate>
		<dc:creator>Paul Ramsey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[geocoding]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[postgis]]></category>

		<guid isPermaLink="false">http://blog.opengeo.org/?p=2874</guid>
		<description><![CDATA[I&#8217;m not sure if this falls into the category of &#8220;world changing innovation&#8221; or &#8220;stupid pet tricks&#8221;, probably the latter, but earlier this week I published the first revision of a library that lets you make HTTP requests from inside SQL statements. SELECT status, content_type, content FROM http_get('http://localhost'); status &#124; content_type &#124; content --------+--------------+---------------------------------------------- 200 [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not sure if this falls into the category of &#8220;world changing innovation&#8221; or &#8220;stupid pet tricks&#8221;, probably the latter, but earlier this week I published the <a href="https://github.com/pramsey/pgsql-http">first revision of a library</a> that lets you make HTTP requests from inside SQL statements.</p>
<pre>SELECT status, content_type, content FROM http_get('http://localhost');

 status | content_type |                   content
--------+--------------+----------------------------------------------
    200 | text/html    | &lt;html&gt;&lt;body&gt;&lt;h1&gt;It works!&lt;/h1&gt;&lt;/body&gt;&lt;/html&gt;
(1 row)</pre>
<p>What good is it? Well, the first non-silly use case I came up with was setting up a geocoding hook so that you can call a geocoding web service as new addresses are added to a table, and this morning I thought I would write it up to see what it looked like.</p>
<p>The Google Geocoding API takes in URLs that look like this:</p>
<pre>http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&amp;address=1234+main+st+chicago</pre>
<p>And returns results that look like this:</p>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;GeocodeResponse&gt;
 &lt;status&gt;OK&lt;/status&gt;
 &lt;result&gt;
  &lt;type&gt;street_address&lt;/type&gt;
  &lt;formatted_address&gt;1234 Main St, Evanston, IL 60202, USA&lt;/formatted_address&gt;
  &lt;address_component&gt;
   &lt;long_name&gt;1234&lt;/long_name&gt;
   &lt;short_name&gt;1234&lt;/short_name&gt;
   &lt;type&gt;street_number&lt;/type&gt;
  &lt;/address_component&gt;
  &lt;address_component&gt;
   &lt;long_name&gt;Main St&lt;/long_name&gt;
   &lt;short_name&gt;Main St&lt;/short_name&gt;
   &lt;type&gt;route&lt;/type&gt;
  &lt;/address_component&gt;
  ......
  &lt;geometry&gt;
   &lt;location&gt;
    &lt;lat&gt;41.6372458&lt;/lat&gt;
    &lt;lng&gt;-87.5860067&lt;/lng&gt;
   &lt;/location&gt;
  &lt;/geometry&gt;
  &lt;partial_match&gt;true&lt;/partial_match&gt;
 &lt;/result&gt;
&lt;/GeocodeResponse&gt;</pre>
<p>The HTTP library can get us the content, and we just need to extract the coordinates. There are all sorts of interesting text processing functions in PostgreSQL, including a full <a href="http://www.postgresql.org/docs/9.1/static/functions-matching.html">regular expressions system</a>, but for maximum nerdiness it makes sense to process the XML document with the native PostgreSQL <a href="http://www.postgresql.org/docs/9.1/static/functions-xml.html">XML support</a> (you will need to have your PostgreSQL compiled with XML support for this to work).</p>
<p>Here&#8217;s a function that takes in a street address, calls the geocoder, strips out the coordinates and constructs a PostGIS geometry return value.</p>
<pre>CREATE OR REPLACE FUNCTION address_to_geom(text)
RETURNS geometry
AS
$$
WITH http AS (
  SELECT status, content_type, content::xml
  FROM http_get('https://maps.googleapis.com/maps/api/geocode/xml?sensor=false&amp;address=' || replace($1, ' ', '+'))
),
parts AS (
  SELECT
    status, content_type,
    (xpath('//location/lat/text()',content))[1] AS lat,
    (xpath('//location/lng/text()',content))[1] AS lng
  FROM http
)
SELECT
  ST_SetSRID(ST_MakePoint(lng::text::float8, lat::text::float8),4326) AS geom
FROM parts

$$
LANGUAGE 'SQL';</pre>
<p>I&#8217;m using my new favorite PostgreSQL syntactic sugar, the &#8220;<a href="http://www.postgresql.org/docs/9.1/static/queries-with.html">WITH</a>&#8221; keyword, to order the subqueries from top to bottom so you can read them serially.</p>
<p>First we run the HTTP call, lightly URL-encoding the input address before appending it to the base URL. (Future enhancement, do a real URL encoding.)</p>
<p>Then we extract the coordinates from the XML, using an XPath query! Note that we&#8217;re only extracting the first result, but with XPath we could extract them all into arrays if we wished. (Future enhancement, watch the return status and check for web service error conditions at this step.)</p>
<p>Finally we convert the coordinates into a geometry, casting the coordinates from XML to text to float, and then setting the SRID to 4326, since Google only works in <a>WGS84</a>.</p>
<p>Now that we have the function, writing a trigger is trivial.</p>
<pre>CREATE TABLE addresses (
  id SERIAL PRIMARY KEY,
  address VARCHAR,
  geom GEOMETRY(Point, 4326)
);

CREATE OR REPLACE FUNCTION update_address_geometry()
RETURNS TRIGGER AS
$$
  BEGIN
  NEW.geom = address_to_geom(NEW.address);
  RETURN NEW;
  END;
$$
LANGUAGE plpgsql;

CREATE TRIGGER address_trigger
  BEFORE UPDATE OR INSERT
  ON addresses
  FOR EACH ROW EXECUTE PROCEDURE update_address_geometry();</pre>
<p>Now every time an address is inserted or updated, the associated geometry will be looked up in the geocoding service automagically.  What could possibly go wrong? Well, if the Google web service is slow, each insert and update will take as long as the web service, which would not be good in a high-volume environment, to say the least. And as noted above, this example includes no error handling at all. However, it&#8217;s a cute trick and I&#8217;m sure there will be more to come.</p>
<p>The reason I wrote this little library is to allow PostgreSQL and PostGIS to talk to GeoWebCache directly, so that edits at the database level can inform the caching layer that the cache needs to be updated where the edits have occurred. This is important for any system that uses cached tiles on top of live data. This update will be in the OpenGeo Suite 3.X series, which is coming later this year.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.opengeo.org/2012/04/20/http-for-postgresql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>INSPIRE Harmonized Layer Names in GeoServer</title>
		<link>http://blog.opengeo.org/2012/04/17/inspire-harmonized-layer-names-in-geoserver/</link>
		<comments>http://blog.opengeo.org/2012/04/17/inspire-harmonized-layer-names-in-geoserver/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 10:55:01 +0000</pubDate>
		<dc:creator>bartvde</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[geoserver]]></category>
		<category><![CDATA[harmonized layer name]]></category>
		<category><![CDATA[inspire]]></category>
		<category><![CDATA[view service]]></category>

		<guid isPermaLink="false">http://blog.opengeo.org/?p=2860</guid>
		<description><![CDATA[In 2011 GeoServer made significant steps forward to support INSPIRE View Services based on WMS 1.3.0. For those of you not familiar, INSPIRE is the European Spatial Data Infrastructure. At the end of this effort there was still a missing piece — supporting harmonized layer names. What&#8217;s a harmonized layer name? Simply put it means that [...]]]></description>
			<content:encoded><![CDATA[<p>In 2011 GeoServer made significant steps forward to support INSPIRE View Services based on WMS 1.3.0. For those of you not familiar, <a href="http://inspire.jrc.ec.europa.eu/">INSPIRE</a> is the European Spatial Data Infrastructure. At the end of this effort there was still a missing piece — supporting harmonized layer names.</p>
<p>What&#8217;s a harmonized layer name? Simply put it means that the WMS needs to advertise its layer according to a pre-defined name which is listed  in the INSPIRE data specifications. If you were to look at table 19 of the <a title="INSPIRE data specification for transport networks" href="http://inspire.jrc.ec.europa.eu/documents/Data_Specifications/INSPIRE_DataSpecification_TN_v3.1.pdf">data specification for transport networks</a> you&#8217;d see that there is a layer which should be named &#8220;TN.CommonTransportElements.TransportNode&#8221;. Historically you were never able to achieve a harmonized layer name because GeoServer outputs the namespace prefix in front of the user defined name.</p>
<p>To remedy this OpenGeo utilized work done on GeoServer <a title="GeoServer virtual services" href="http://docs.geoserver.org/latest/en/user/services/virtual-services.html">virtual services</a>. The namespace prefix on a virtual service does not make layer names unique and was dropped. For technical details see  <a title="JIRA issue 5016" href="https://jira.codehaus.org/browse/GEOS-5016">JIRA issue 5016</a> and please note that this work is only available in the GeoServer 2.2 release.</p>
<p>Our thanks to our client <a href="http://www.ordnancesurvey.co.uk/oswebsite/">Ordnance Survey</a> for supporting this enhancement, and to <a href="http://opengeo.org/about/team/juan.marin/">Juan Marin</a> and <a href="http://opengeo.org/about/team/justin.deoliveira/">Justin Deoliveira</a> for the development work.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.opengeo.org/2012/04/17/inspire-harmonized-layer-names-in-geoserver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PostGIS 2.0 Released</title>
		<link>http://blog.opengeo.org/2012/04/03/postgis-2-0-released/</link>
		<comments>http://blog.opengeo.org/2012/04/03/postgis-2-0-released/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 20:55:44 +0000</pubDate>
		<dc:creator>Paul Ramsey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[2.0]]></category>
		<category><![CDATA[postgis]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://blog.opengeo.org/?p=2851</guid>
		<description><![CDATA[Today, after 26 months of development (for comparison, an elephant takes only 22 months to gestate a whole new elephant) PostGIS 2.0 was released! There are a lot of user-visible changes, but it&#8217;s also hard to overstate how much changed under the covers: the storage format, the indexes, the parsers and emitters were all re-written. [...]]]></description>
			<content:encoded><![CDATA[<p>Today, after 26 months of development (for comparison, an elephant takes only 22 months to gestate a whole new elephant) PostGIS 2.0 was released!</p>
<p><center><a href="http://blog.opengeo.org/wp-content/uploads/2012/04/elephant.jpg"><img class="aligncenter size-medium wp-image-2852" title="Elephant" src="http://blog.opengeo.org/wp-content/uploads/2012/04/elephant-300x179.jpg" alt="" width="300" height="179" /></a></center></p>
<p>There are a lot of user-visible changes, but it&#8217;s also hard to overstate how much changed under the covers: the storage format, the indexes, the parsers and emitters were all re-written. That is, all the code that formed the initial release of PostGIS back in 2001 was swapped out. It&#8217;s all fresh and shiny under the hood. Here&#8217;s the official release announcement:</p>
<pre>
The PostGIS development team is super excited,
can hardly believe that they are actually doing this,
aren't maybe even sure that they are ready to make
this kind of commitment, not so young, and not when
we have so much more living to do, but:

PostGIS 2.0.0 is complete and available for download.

http://postgis.org/download/postgis-2.0.0.tar.gz

The development process for 2.0 has been very long,
but has resulted in a release with a number of exciting
new features.

 * Raster data and raster/vector analysis in the database
 * Topological models to handle objects with shared boundaries
 * PostgreSQL typmod integration, for an automagical
   geometry_columns table
 * 3D and 4D indexing
 * Index-based high performance nearest-neighbour searching
 * Many more vector functions including
   * ST_Split
   * ST_Node
   * ST_MakeValid
   * ST_OffsetCurve
   * ST_ConcaveHull
   * ST_AsX3D
   * ST_GeomFromGeoJSON
   * ST_3DDistance
 * Integration with the PostgreSQL 9.1 extension system
 * Improved commandline shapefile loader/dumper
 * Multi-file import support in the shapefile GUI
 * Multi-table export support in the shapefile GUI
 * A geo-coder optimized for free US Census
   TIGER (2010) data

We are greatly indebted to our large community of beta testers
who valiantly tested PostGIS 2.0.0 and reported bugs so we could
squash them before release time.

And also we want to thank our parents for making PostGIS possible.

Yours,

The PostGIS development team
</pre>
<p>In addition to all my colleagues on the PostGIS team, I&#8217;d like to also thank OpenGeo, who have given me the time to work on PostGIS over the past couple years.<br />
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.opengeo.org/2012/04/03/postgis-2-0-released/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>SFMTA upgrades the SFpark.org online parking map using OpenGeo technology</title>
		<link>http://blog.opengeo.org/2012/04/02/sfmta-upgrades-the-sfpark-org-online-parking-map-using-opengeo-technology/</link>
		<comments>http://blog.opengeo.org/2012/04/02/sfmta-upgrades-the-sfpark-org-online-parking-map-using-opengeo-technology/#comments</comments>
		<pubDate>Mon, 02 Apr 2012 04:46:50 +0000</pubDate>
		<dc:creator>David Dubovsky</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[OpenGeo Suite]]></category>
		<category><![CDATA[Products]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.opengeo.org/?p=2843</guid>
		<description><![CDATA[We wanted to thank our friends (and clients!) at the SFMTA for their upgrade announcement to SFpark.org.  SFpark uses geospatial and sensory technology to collect and distribute real-time parking availability information to drivers. It uses this data to regularly update meter and garage pricing to ensure parking availability, providing for safer and clearer streets. This project is [...]]]></description>
			<content:encoded><![CDATA[<p>We wanted to thank our friends (and clients!) at the SFMTA for their upgrade <a href="http://sfpark.org/2012/03/30/sfmta-upgrades-the-sfpark-org-online-parking-map-using-opengeo-technology/">announcement</a> to SFpark.org.  SFpark uses geospatial and sensory technology to collect and distribute real-time parking availability information to drivers. It uses this data to regularly update meter and garage pricing to ensure parking availability, providing for safer and clearer streets. This project is a bold step forward in innovative parking policies and technological integration. The OpenGeo Suite supports SFpark by delivering assets to a robust web mapping application, the primary user interface that we helped build.</p>
<p>This project has gained national attention and put the SFMTA in the spotlight as a forward looking innovator aiming to improve the status quo &#8211; values that OpenGeo respects and shares. The SFMTA has been a great client and we look forward to our continued partnership.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.opengeo.org/2012/04/02/sfmta-upgrades-the-sfpark-org-online-parking-map-using-opengeo-technology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PostGIS 2.0 New Features: ST_MakeValid</title>
		<link>http://blog.opengeo.org/2012/03/23/postgis-2-0-new-features-st_makevalid/</link>
		<comments>http://blog.opengeo.org/2012/03/23/postgis-2-0-new-features-st_makevalid/#comments</comments>
		<pubDate>Fri, 23 Mar 2012 18:41:15 +0000</pubDate>
		<dc:creator>Paul Ramsey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[clean]]></category>
		<category><![CDATA[makevalid]]></category>
		<category><![CDATA[postgis]]></category>
		<category><![CDATA[valid]]></category>

		<guid isPermaLink="false">http://blog.opengeo.org/?p=2836</guid>
		<description><![CDATA[The bane of PostGIS users since time immemorial has been the &#8220;invalid feature&#8221;. An invalid feature is one that disobeys the structural rules of its type. The more complicated the type, the more ways an object can be invalid. Points are never invalid. How can you screw up a point? Linestrings are almost never invalid. [...]]]></description>
			<content:encoded><![CDATA[<p>The bane of PostGIS users since time immemorial has been the &#8220;invalid feature&#8221;. An invalid feature is one that disobeys the structural rules of its type. The more complicated the type, the more ways an object can be invalid.</p>
<ul>
<li>Points are never invalid. How can you screw up a point?</li>
<li>Linestrings are almost never invalid. Only a two-point line where the start and end are the same is invalid.</li>
<li>Polygons have lots of ways to be invalid. Rings have to close. Rings can&#8217;t self-intersect. Rings can only touch other rings once, at a point. Inner rings have to be inside outer rings.</li>
<li>Polyhedralsurfaces&#8230; I don&#8217;t have enough space.  Imagine a face defined as a 3D polygon and you get the picture. All the rules of polygons, plus rules like requiring all points on all rings to be co-planar.</li>
</ul>
<p>My favorite invalid polygon (doesn&#8217;t everyone have a favorite invalid polygon?) is the figure-eight, because it&#8217;s so obviously wrong, and because it demonstrates the importance of validity rules so elegantly.</p>
<pre>POLYGON((-1 -1, -1 0, 1 0, 1 1, 0 1, 0 -1, -1 -1))</pre>
<p><a href="http://blog.opengeo.org/wp-content/uploads/2012/03/screenshot_01.png"><img class="aligncenter size-medium wp-image-2837" title="Figure-eight Polygon" src="http://blog.opengeo.org/wp-content/uploads/2012/03/screenshot_01-300x297.png" alt="" width="300" height="297" /></a></p>
<p>Want to see why validity is important? Run ST_Area() on this polygon. The answer? Zero. The area algorithm expects that rings bound areas using a consistent orientation of edges to the bounded area. But you can see in the figure-eight diagram above, one lobe is bounded by clockwise edges and the other lobe by anti-clockwise edges. So the calculation looks like this:</p>
<p><a href="http://blog.opengeo.org/wp-content/uploads/2012/03/screenshot_03.png"><img class="aligncenter size-medium wp-image-2838" title="Area Calculation" src="http://blog.opengeo.org/wp-content/uploads/2012/03/screenshot_03-300x291.png" alt="" width="300" height="291" /></a></p>
<p>The way to represent this area validly is with a MultiPolygon consisting of two one-unit squares, so, run <a href="http://postgis.org/documentation/manual-svn/ST_MakeValid.html">ST_MakeValid()</a> and see what comes out!</p>
<pre>SELECT ST_AsText(ST_MakeValid('POLYGON((-1 -1, -1 0, 1 0, 1 1, 0 1, 0 -1, -1 -1))'))
MULTIPOLYGON (((-1 -1,-1 0,0 0,0 -1,-1 -1)),((0 0,0 1,1 1,1 0,0 0)))</pre>
<p>ST_MakeValid() will try to create a valid output without dropping vertices, so for some invalidities, the result is not exactly what one might like. For example, many hand digitized polygons have very small versions of the figure-eight case embedded in their edges. Users probably just want those little &#8220;polygon warts&#8221; to go away, but ST_MakeValid() will retain them, as tiny elements of a multipolygon.  ST_MakeClean(), to remove small errors using a tolerance, awaits funding from some enterprising organization! </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.opengeo.org/2012/03/23/postgis-2-0-new-features-st_makevalid/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GeoServer Featured on the Sourceforge Anvil Podcast</title>
		<link>http://blog.opengeo.org/2012/03/20/geoserver-featured-on-the-sourceforge-anvil-podcast/</link>
		<comments>http://blog.opengeo.org/2012/03/20/geoserver-featured-on-the-sourceforge-anvil-podcast/#comments</comments>
		<pubDate>Tue, 20 Mar 2012 15:06:53 +0000</pubDate>
		<dc:creator>camille</dc:creator>
				<category><![CDATA[Media]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[geoserver]]></category>
		<category><![CDATA[justin]]></category>
		<category><![CDATA[team]]></category>

		<guid isPermaLink="false">http://blog.opengeo.org/?p=2777</guid>
		<description><![CDATA[Our Justin Deoliveira recently graced the &#8220;airwaves&#8221; of the internet, speaking to Rich Bowen of the Sourceforge Anvil Podcast about the GeoServer project. GeoServer was one of SourceForge&#8217;s featured projects in February 2012. Check out the podcast and the transcript below or download on our Media Page . Thanks to the host Rich Bowen and [...]]]></description>
			<content:encoded><![CDATA[<p><em>Our Justin Deoliveira recently graced the &#8220;airwaves&#8221; of the internet, speaking to Rich Bowen of the Sourceforge Anvil Podcast about the GeoServer project. GeoServer was one of SourceForge&#8217;s featured projects in February 2012.</em></p>
<p><em>Check out the podcast and the transcript below or <a href="http://opengeo.org/about/media/">download on our Media Page</a> .</em></p>
<p><em>Thanks to the host Rich Bowen and the <a href="http://sourceforge.net/blog/podcast-geoserver/">SourceForge blog</a>!</em></p>
<h2 class="title"><a href="http://sf.net/projects/geoserver"><img src="https://a.fsdn.com/con/icons/ge/geoserver@sf.net/GeoServer_MARK.png" alt="" width="32" height="32" align="left" /></a>GeoServer on The Anvil Podcast:</h2>
<div>
<div>
<p><audio width="100px" height="50px" controls="controls"><source src="http://sourceforge.net/blog/communityhub/uploads/2012/02/sf12_geoserver.mp3" type="audio/mpeg" /><source src="http://sourceforge.net/blog/communityhub/uploads/2012/02/sf12_geoserver.ogg" type="audio/ogg" /></audio></p>
<p><strong>Rich</strong>: I&#8217;m speaking with Justin Deoliveira, who is involved with the <a href="http://sf.net/projects/geoserver/">GeoServer project</a>. GeoServer is a little over 10 years old and … almost 11 years old actually … and is a Java server for geospatial data.</p>
<p><strong>Rich</strong>: Justin, can you tell us a bit more about what that means. How someone would actually use this product.</p>
<p><strong>Justin</strong>: Sure, and thanks for having me on, Rich. As you mentioned, <a href="http://sf.net/projects/geoserver/">GeoServer</a> is a GIS data server written in Java. What it allows for is the publishing and sharing of GIS, or geospatial data, on the web.</p>
<p>When I say GIS or geospatial data, what I mean is data that has location associated with it. When you&#8217;re looking at a map and you see a road or a building on a map, that building has some geospatial representation of it that allows us to place it on a map accordingly.</p>
<p>The analogy I usually use is GeoServer is sort of a specialized web server for geospatial data. Typically where we see it used is with web mapping. So using it as a back-end to create a Google Maps-type web map, but with full control over things like cartography and styling.</p>
<p><strong>Rich</strong>: The data that&#8217;s included in this &#8211; where does that come from?</p>
<p><strong>Justin</strong>: GeoServer ships with what we call &#8220;vanilla&#8221; or demo data, and that&#8217;s data that&#8217;s been gathered from all over the place. I believe there&#8217;s a subset of it that comes from New York City. But you&#8217;re certainly not constrained to that data. Typically people use GeoServer with their own data. So it might be a government agency that has satellite imagery or something like that, that they want to publish on the web. They can use GeoServer to connect to that data and serve it up for them.</p>
<p><strong>Rich</strong>: Can you give me some examples of sites that are using this?</p>
<p><strong>Justin</strong>: Certainly. We&#8217;ve seen a lot of uptick in GeoServer in the last two years. A lot of it we see in the government sector, from federal all the way down to municipal. For instance, the FCC uses it in something called their <a href="http://www.broadband.gov/maps/availability.htm">Broadband Map</a>, which is essentially a map of high speed Internet connectivity across the United States. You can go to the map and see things like high-speed Internet density at a country-scale. You can also go down to the state- and county-scales as well. And that is all using GeoServer on the back-end.</p>
<p style="text-align: center;"><a href="https://sourceforge.net/blog/communityhub/uploads/2012/02/broadband_map.png"><img class="wp-image-6191 aligncenter" title="broadband" src="https://sourceforge.net/blog/communityhub/uploads/2012/02/broadband_map-600x402.png" alt="broadband" width="466" height="312" /></a></p>
<p>The city of Portland uses GeoServer in their transportation authority called TriMet. If you <a href="http://ride.trimet.org/?tool=routes">go to the TriMet site &#8211; TriMet.org</a>, you&#8217;ll see a map of the Portland transportation network, with all the routes and stops, and that stuff on it. And it also comes with trip planner, where you put in a source and destination where you want to go, and the route is calculated and displayed on a map. That all comes with GeoServer on the back end.</p>
<p style="text-align: center;"><a href="https://sourceforge.net/blog/communityhub/uploads/2012/02/trimet.png"><img class=" wp-image-6192 aligncenter" title="trimet" src="https://sourceforge.net/blog/communityhub/uploads/2012/02/trimet-600x420.png" alt="trimet" width="469" height="328" /></a></p>
<p>A final example is, New York City uses it in something called their <a href="http://gis.nyc.gov/moo/scout/index.htm">SCOUT program</a>. SCOUT stands for Street Conditions Observation UniT. Essentially how it works is, inspectors will go out in New York, and drive the streets, and they&#8217;ll report on conditions and events that they see, and those reports are fed back into their system, and displayed on a map, served by GeoServer in real time. That map is used by other agencies to allocate and dispatch resources accordingly.</p>
<p style="text-align: center;"><a href="https://sourceforge.net/blog/communityhub/uploads/2012/02/scout.png"><img class=" wp-image-6193 aligncenter" title="SCOUT" src="https://sourceforge.net/blog/communityhub/uploads/2012/02/scout-600x552.png" alt="SCOUT" width="466" height="428" /></a></p>
<p><strong>Rich</strong>: The route finding stuff … is that included in to GeoServer as well?</p>
<p><strong>Justin</strong>: The way Portland uses it is that they have their own route trip software that they use. So they do the route calculation and then push the result into GeoServer. However I should mention that it&#8217;s using something called <a href="http://opentripplanner.com/">Open Trip Planner</a>, which is another Open Source project, and that&#8217;s an Open Source based trip-planning multi-modal project.</p>
<p><strong>Rich</strong>: I see that you have a fairly sizable developer pool. What&#8217;s the process for somebody becoming a full developer on a project like this?</p>
<p><strong>Justin</strong>: Good question. We don&#8217;t just hand commit access out, obviously, as most Open Source projects do. It&#8217;s all based on trust for us. What we encourage developers who interested in contributing, is to submit as many patches as they can. And we have formal review process for patches. Patches are commented on. We get the patch submitter to clean things up. Or we just apply the patch if it&#8217;s good enough. And once a developer has submitted enough patches, gaining the trust of the core developer community &#8211; we don&#8217;t have a specific number &#8211; they&#8217;re granted commit access.</p>
<p>We also have a module system in GeoServer. Someone might want to contribute just a module, and then they become the maintainer of that specific module. That gives them commit access for that specific module, but not necessarily to some of the other core modules.</p>
<p><strong>Rich</strong>: Do you have a formal vote, or is it just consensus on the mailing list?</p>
<p><strong>Justin</strong>: For things like patches, it&#8217;s pretty informal in terms of voting. We require that at least two core committers review a patch. They give their two &#8220;plus-ones&#8221;, and then the patch can be submitted. We also have a formal improvement proposal process, which we call GeoServer Improvement Proposal, and that&#8217;s more formal, and it&#8217;s really designed for larger changes. Things like architectural changes, breaking backwards compatibility, stuff like that. And that&#8217;s a formal process. We require the whole Project Steering Committee to vote on that, and there has to be more positive votes than negative.</p>
<p>Certainly it didn&#8217;t start off like that. In the early years &#8211; back in the early 2000&#8242;s &#8211; is was pretty informal, and it was one or two developers doing things pretty ad-hoc. As the development community grew, and people were doing more and more contributions, it really became more critical. And now it&#8217;s a framework we rely upon to move things on the project smoothly.</p>
<p><strong>Rich</strong>: I noticed that there&#8217;s also commercial support available for GeoServer. Can you tell me about that.</p>
<p><strong>Justin</strong>: I work for a company called <a href="http://opengeo.org/">OpenGeo</a>, who essentially does that. We offer products that bundle GeoServer, and we provide support and training, customization for GeoServer. So it&#8217;s a pretty typical model of company monetizing open source &#8211; Red Hat or JBoss &#8211; having this Open Source core that&#8217;s based on GeoServer and other Open Source mapping projects, and then offering commercial support on top of that.</p>
<p>And there are other organizations that do as well &#8211; there&#8217;s a company in Italy called <a href="http://www.geo-solutions.it/">GeoSolutions</a> that also offers the same level of commercial support as well.</p>
<p><strong>Rich</strong>: Where&#8217;s this project going in the future?</p>
<p><strong>Justin</strong>: The current stable version of GeoServer is 2.1, and the 2.2 release is coming probably within the next six months. A few pretty major themes have been focused on for 2.2: One is the cloud and clustering &#8211; working on features that make GeoServer scale better and making it easier to deploy GeoServer in a clustered environment.</p>
<p>As we see GeoServer adopted by more agencies &#8211; especially government agencies at the Federal level, obviously security becomes a major concern. 2.2 comes with a complete revamp of the GeoServer security system. It allows for more flexibility for hooking up to external security systems that might be in place, like LDAP servers. But also things like better password encryption.</p>
<p>Dealing with geospatial data means … there are a wide variety of formats of geospatial data, so we try to support as many of them as we can. 2.2 will also come with improvements to existing formats, and also support for new formats as well.</p>
<p>And then the final one might be … this is pretty experimental at this stage … We&#8217;re seeing more asking for true 3-D. Typically maps that you and I are used to looking are all two-dimensional. But there are people with 3-D data out there, and they do want to visualize it on a map, so providing 3-D capabilities as well.</p>
<p><strong>Rich</strong>: I&#8217;m particularly interested in the <a href="http://www.openstreetmap.org/">Open Street Map</a> project. Is there any overlap whatsoever between what you&#8217;re doing and what they&#8217;re doing?</p>
<p><strong>Justin</strong>: Not really. The Open Street Map initiative is really on the data side of things, and GeoServer lives on the tool side of things. Open Street Map is this rich, really good crowdsourced data set, and then GeoServer would load Open Street Map data, and push it onto the web.</p>
<p><strong>Rich</strong>: So, I could use the Open street Map data within GeoServer?</p>
<p><strong>Justin</strong>: Certainly.</p>
<p><strong>Rich</strong>: Cool!</p>
<p>If I were interested in getting involved in your project … I may have some Java experience or I may not. Tell me how I could plug into what you&#8217;re doing.</p>
<p><strong>Justin</strong>: There are certainly numerous levels that people can get involved. The easiest one is probably just filing bugs in the issue tracker. Whenever users report issues or problems that they&#8217;re having in the forum, we encourage them to file those as bug reports. And if they do have some programming experience we certainly encourage them to submit a patch along with that bug report.</p>
<p>For those who might not have coding skills we also accept documentation patches. So if you&#8217;re a user who is familiar with a certain feature, and that feature might not be documented all that well, we certainly encourage you to submit a documentation patch, and help us with continually improving our documentation.</p>
<p>I&#8217;ll also mention translations. GeoServer comes with a web interface for doing administration. That interface needs to be internationalized into different languages. I think we support four or five different languages now, and we&#8217;re always looking for new people to do translations.</p>
<p><strong>Rich</strong>: Thanks so much for speaking with me.</p>
<p><strong>Justin</strong>: Thanks a lot for having me, Rich.</p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.opengeo.org/2012/03/20/geoserver-featured-on-the-sourceforge-anvil-podcast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://sourceforge.net/blog/communityhub/uploads/2012/02/sf12_geoserver.mp3" length="9452704" type="audio/mpeg" />
<enclosure url="http://sourceforge.net/blog/communityhub/uploads/2012/02/sf12_geoserver.ogg" length="8398109" type="audio/ogg" />
		</item>
	</channel>
</rss>

