<?xml version="1.0" encoding="utf-8"?>
<!-- generator="Kukkaisvoima version 7" -->
<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/"
>
<channel>
<title>vmx: Erlang</title>
<link>https://vmx.cx/cgi-bin/blog/index.cgi</link>
<description>Blog of Volker Mische</description>
<pubDate>Fri, 06 Jan 2012 22:35:25 +0200</pubDate>
<lastBuildDate>Fri, 06 Jan 2012 22:35:25 +0200</lastBuildDate>
<generator>http://23.fi/kukkaisvoima/</generator>
<language>en</language>
<item>
<title>The future of GeoCouch and CouchDB
</title>
<link>https://vmx.cx/cgi-bin/blog/index.cgi/the-future-of-geocouch-and-couchdb%3A2012-01-06%3Aen%2CCouchDB%2CGeoCouch%2CErlang%2Cgeo</link>
<comments>https://vmx.cx/cgi-bin/blog/index.cgi/the-future-of-geocouch-and-couchdb%3A2012-01-06%3Aen%2CCouchDB%2CGeoCouch%2CErlang%2Cgeo#comments</comments>
<pubDate>Fri, 06 Jan 2012 22:35:25 +0200</pubDate>
<dc:creator>Volker Mische</dc:creator>
<category>en</category>
<category>CouchDB</category>
<category>GeoCouch</category>
<category>Erlang</category>
<category>geo</category>
<guid isPermaLink="false">https://vmx.cx/cgi-bin/blog/index.cgi/the-future-of-geocouch-and-couchdb%3A2012-01-06%3Aen%2CCouchDB%2CGeoCouch%2CErlang%2Cgeo/</guid>
<description><![CDATA[ 
 [...]]]></description>
<content:encoded><![CDATA[

<p>The CouchDB world is currently full of “The future of CouchDB” blog posts. It started with the <a href="http://damienkatz.net/2012/01/the_future_of_couchdb.html">blog post from Damien Katz</a> the creator of CouchDB. Of course <a href="https://twitter.com/oltonn/status/154908935789355008">people were also concerned</a> about the future of GeoCouch. No worries, it will be good.</p>

<h3>The future of Apache CouchDB</h3>

<p>The reactions were quite different. People who are not deeply involved with the CouchDB community think that this means the end of Apache CouchDB. My reaction was positive, <a href="https://twitter.com/vmische/status/154892687844192257">I tweeted</a>:</p>

<p><blockquote>“It’s good to see the Damien is so open to [the] world”</blockquote></p>

<p>The reason was, that for me it was pretty clear that it would happen, and I was just happy that Damien officially made the cut.</p>

<p>The reactions from CouchDB community members where pretty much what <a href="http://till.klampaeckel.de/blog/archives/178-The-future-of-CouchDB.html">Till Klampäckel describes in his blog post</a>. You could see it comming after <a href="http://blog.couchbase.com/couchbase-2011-year-review">Couchbase announced</a> that they are not the CouchDB company and that their product won’t be Apache CouchDB compatible.</p>

<p>I agree with Till here, the way Damien wrote his blog post, isn’t the best imaginable. For outsiders, it really seems to be the end of Apache CouchDB, but it is not. For me it just shows, why foundations like the Apache Foundation are such a great idea. Even if the original creator leaves the project, it still lives on.</p>

<p>Apache CouchDB has a lot of contributers and the mailing lists and IRC channel is busy as always. That CouchDB has a future is also shown by the <a href="http://blog.cloudant.com/the-future-of-couchdb">blog post from Cloudant</a>. They will keep supporting Apache CouchDB.</p>

<h3>The future of GeoCouch</h3>

<p>After this quick recap what happened so far, it’s time to talk about the future of GeoCouch. As you may know, I work for Couchbase on the integration of spatial functionality into their product.</p>

<p>Currently the overlap between Apache CouchDB and the version Couchbase uses internally is still quite huge, but it will diverge more and more in the future. Thus it will get harder and harder to maintain a single version that supports Apache CouchDB and Couchbase.</p>

<p>The good news is, that GeoCouch is pretty much a data structure only. It's an <a href="http://en.wikipedia.org/wiki/R-tree">R-tree</a> that stores JSON documents. This can easily be used by CouchDB and Couchbase. Perhaps small wrappers will be needed, but those should be minimal.</p>

<p>The easiest way to understand how the future looks like is in a small illustration:</p>
<div class="figure">
  <img src="/blog/2012-01-06/geocouch-couchdb-couchbase.png" width="399" height="292" alt="Illustration of GeoCouch and its relation to CouchDB and Couchbase"/>
  <p class="caption">GeoCouch's core is the R-tree, it's the same code for CouchDB and Couchbase. On top of it there will be code that is specific to either CouchDB or Couchbase.</p>
</div>

<p>This means that the majority of the devlopment I do for Couchbase will also improve the GeoCouch you can use for CouchDB.</p>

<h3>Conclusion</h3>

<p>The future of all three, Apache CouchDB, Couchbase and GeoCouch looks bright.</p>
]]></content:encoded>
<wfw:commentRss>https://vmx.cx/cgi-bin/blog/index.cgi/the-future-of-geocouch-and-couchdb%3A2012-01-06%3Aen%2CCouchDB%2CGeoCouch%2CErlang%2Cgeo/feed/</wfw:commentRss>
</item>
<item>
<title>FOSS4G 2011: Report
</title>
<link>https://vmx.cx/cgi-bin/blog/index.cgi/foss4g-2011%3A2011-09-20%3Aen%2CCouchDB%2CGeoCouch%2CMapQuery%2CErlang%2CJavaScript%2Cgeo</link>
<comments>https://vmx.cx/cgi-bin/blog/index.cgi/foss4g-2011%3A2011-09-20%3Aen%2CCouchDB%2CGeoCouch%2CMapQuery%2CErlang%2CJavaScript%2Cgeo#comments</comments>
<pubDate>Tue, 20 Sep 2011 22:35:23 +0200</pubDate>
<dc:creator>Volker Mische</dc:creator>
<category>en</category>
<category>CouchDB</category>
<category>GeoCouch</category>
<category>MapQuery</category>
<category>Erlang</category>
<category>JavaScript</category>
<category>geo</category>
<guid isPermaLink="false">https://vmx.cx/cgi-bin/blog/index.cgi/foss4g-2011%3A2011-09-20%3Aen%2CCouchDB%2CGeoCouch%2CMapQuery%2CErlang%2CJavaScript%2Cgeo/</guid>
<description><![CDATA[ 
 [...]]]></description>
<content:encoded><![CDATA[

<p>The <a href="http://2011.foss4g.org/">FOSS4G 2011</a> is over now. Time for a small report. The crowd was amazing and it was again the ultimate gathering of the Free and Open Source for Geospatial developer tribe. Solid presentations and great evenings.</p>

<h3>My talk: The State of GeoCouch</h3>

<p>I'm really happy how <a href="http://2011.foss4g.org/sessions/state-geocouch">my talk</a> went, I really enjoyed it. The were lots of people (although there was a talk from Frank Warmerdam at the same time) asking interesting questions at the end.
</p>

<p>The talk is not only about <a href="https://github.com/couchbase/geocouch">GeoCouch</a> but also gives you an overview of some of the features it leverages from <a href="http://couchdb.apache.org/">Apache CouchDB</a>. In the end you should have an overview why you might want to use GeoCouch for your next project.
</p>
<p>You can get the slides right here.</p>
<ul>
  <li>The slides (download optimized)
<a href="/blog/2011-09-20/the-state-of-geocouch.pdf">as PDF</a> (licensed under
<a href="http://creativecommons.org/licenses/by/3.0/de/">CC-BY-3.0-de</a>).</li>
  <li>The slides with comments
<a href="/blog/2011-09-20/the-state-of-geocouch.html">as HTML</a> (licensed under
<a href="http://creativecommons.org/licenses/by/3.0/de/">CC-BY-3.0-de</a>).</li>
  <li><a href="http://www.fosslc.org/drupal/content/state-geocouch">The slides with audio</a>. It’s the recording of the actual talk at the conference.</li>
</ul>

<h3>Other talks</h3>

<p>I was happy to see that there was <a href="http://2011.foss4g.org/sessions/new-geodata-tool-set-couchdb-and-nodejs">another talk about GeoCouch</a>. Other talks I really enjoyed were:</p>
<ul>
  <li><a href="http://2011.foss4g.org/sessions/cartoset-new-foss-create-highly-visual-geo-portals">CartoSet, a new FOSS to create highly visual geo portals</a>: So many true things were said, e.g. get the data from the customer first, before you start building anything.
  </li>
  <li><a href="http://2011.foss4g.org/sessions/introduction-opensource-webmapping-beyond-google-maps">Introduction to OpenSource WebMapping: Beyond Google Maps</a>: A very nice introduction off the full stack for web mapping. From the database, over the server to the client. It's for people that have no clue that they could have maps on their own infrastructure.
  </li>
  <li><a href="http://2011.foss4g.org/sessions/comparing-geoext-mapquery-and-legato-technical-and-collaborative-point-view">Comparing GeoExt, MapQuery and Legato from a technical and collaborative point of view</a>: A good comparison between <a href="http://geoext.org/">GeoExt</a>, <a href="http://mapquery.org/">MapQuery</a> and <a href="http://www.legato.net">Legato</a>. I especially liked the “Bodo”-test.
  </li>
  <li><a href="http://2011.foss4g.org/sessions/beyond-vectors-adapting-remote-sensing-research-environmental-monitoring-open-source-hardwa">Beyond vectors: Adapting remote sensing research for environmental monitoring with open source hardware and software: Citizen mapping the BP oil spill with balloons and kites</a>: Kite and balloon mapping is just awesome. It's kind of the OpenStreetMap for raster data.
  </li>
  <li><a href="http://2011.foss4g.org/sessions/geoglobaldomination-musical">GeoGlobalDomination: The Musical</a>: One of the highlights was the GeoGlobalDomination musical. <a href="http://vimeo.com/29203100">Grab the video</a> while it's hot.
  </li>
</ul>
<p>And of course there were also great talks from in the plenary sessions from <a href="http://twitter.com/pwramsey">Paul Ramsey</a> about <a href="http://2011.foss4g.org/sessions/why-do-you-do-exploration-open-source-business-models">Why do you do that? An exploration of open source business models</a> and <a href="http://twitter.com/schuyler">Schuyler Erle's</a> so funny lightning talk about <a href="http://2011.foss4g.org/sessions/pivoting-monetize-mobile-hyperlocal-social-gamification-going-viral">Pivoting to Monetize Mobile Hyperlocal Social Gamification by Going Viral</a>
</p>

<h3>Code Sprint</h3>

<p>At the code sprint I was working on MapQuery together with <a href="http://twitter.com/stvno">Steven Ottens</a> and <a href="http://twitter.com/h0st1le">Justin Penka</a>. Steven was working on TMS support, Justin on a 6 minutes tutorial and I on making manual adding of features possible.
</p>
<p>The OpenLayers developers did the migration from Subversion to Git for their development. OpenLayers is <a href="https://github.com/openlayers">now available</a> on Github.
</p>
<p>And luckily there was a fire alarm in between to take a <a href="http://wiki.osgeo.org/images/f/f7/Code-sprint-foss4g2011.png">group photograph</a>.
</p>

<h3>Future of the FOSS4G</h3>

<p>I really hope there won't be a yearly FOSS4G conference for the whole of the US. There should be regional events, as I think one big one would draw the attention away from the international conference. Why should you fly to Beijing for the FOSS4G 2012 if you can meet the majority of the developers in the US as well?
</p>

<h3>Final words</h3>

<p>The FOSS4G was great. It was organized well and people were always out in the evenings. The only minor nitpick is that many people working remote had the city of their company in the name badge and not the one they live in. It seems that the original for you had to fill was confusing. So for next year it should perhaps say “Location where you live”. Hence I still don't believe that there were more Dutch than German people at the conference (Tik hem aan, ouwe! ;)
</p>
]]></content:encoded>
<wfw:commentRss>https://vmx.cx/cgi-bin/blog/index.cgi/foss4g-2011%3A2011-09-20%3Aen%2CCouchDB%2CGeoCouch%2CMapQuery%2CErlang%2CJavaScript%2Cgeo/feed/</wfw:commentRss>
</item>
<item>
<title>GeoCouch Vortrag in Augsburg
</title>
<link>https://vmx.cx/cgi-bin/blog/index.cgi/geocouch-vortrag-in-augsburg%3A2010-07-07%3Ade%2CCouchDB%2CGeoCouch%2CErlang%2Cgeo</link>
<comments>https://vmx.cx/cgi-bin/blog/index.cgi/geocouch-vortrag-in-augsburg%3A2010-07-07%3Ade%2CCouchDB%2CGeoCouch%2CErlang%2Cgeo#comments</comments>
<pubDate>Wed, 07 Jul 2010 22:35:25 +0200</pubDate>
<dc:creator>Volker Mische</dc:creator>
<category>de</category>
<category>CouchDB</category>
<category>GeoCouch</category>
<category>Erlang</category>
<category>geo</category>
<guid isPermaLink="false">https://vmx.cx/cgi-bin/blog/index.cgi/geocouch-vortrag-in-augsburg%3A2010-07-07%3Ade%2CCouchDB%2CGeoCouch%2CErlang%2Cgeo/</guid>
<description><![CDATA[ 
 [...]]]></description>
<content:encoded><![CDATA[

<p>Im Rahmen des Diplomandencolloquium des
<a href="http://www.geo.uni-augsburg.de/lehrstuehle/humgeo/">Lehrstuhl für
Humangeographie und Geoinformatik</a> halte ich am 19.07.2010 um 17:30 Uhr
(Raum 2125) an der <a href="http://www.uni-augsburg.de/">Uni Augsburg</a>
einen Votrag über GeoCouch. Der genaue Titel lautet:
</p>
<p>GeoCouch: Eine Erweiterung für CouchDB zur Abfrage räumlicher Daten
</p>
<p>Er richtet sich an Geographen, wird also nicht zu sehr ins Detail der
Implementierung gehen. Es sind auch keine Vorkenntnisse zum Thema CouchDB
nötig. Wer also mehr über CouchDB und GeoCouch wissen will,
ist herzlich dazu eingeladen. Danach stehe ich natürlich zu Fragen zur
Verfügung.
</p>
<p>Ich habe keine Ahnung wie groß die CouchDB Community im Raum Augsburg ist,
aber sollte jemand dieser Einladung folgen, spricht auch nichts gegen ein
anschließendes kleines CouchDB/GeoCouch/NoSQL Meetup. Am besten meldet ihr
euch bei mir per Mail, denn wenn ein paar Leute sicher kommen, werden es
sich andere bestimmt auch überlegen.</p>

<p><em>Sorry Planet CouchDB for writing in German, but this is about a talk
in German.</em></p>
]]></content:encoded>
<wfw:commentRss>https://vmx.cx/cgi-bin/blog/index.cgi/geocouch-vortrag-in-augsburg%3A2010-07-07%3Ade%2CCouchDB%2CGeoCouch%2CErlang%2Cgeo/feed/</wfw:commentRss>
</item>
<item>
<title>FOSS4G 2010: I'm speaking
</title>
<link>https://vmx.cx/cgi-bin/blog/index.cgi/foss4g-2010-im-speaking%3A2010-05-21%3Aen%2CGeoCouch%2CCouchDB%2CErlang%2Cgeo</link>
<comments>https://vmx.cx/cgi-bin/blog/index.cgi/foss4g-2010-im-speaking%3A2010-05-21%3Aen%2CGeoCouch%2CCouchDB%2CErlang%2Cgeo#comments</comments>
<pubDate>Fri, 21 May 2010 22:35:25 +0200</pubDate>
<dc:creator>Volker Mische</dc:creator>
<category>en</category>
<category>GeoCouch</category>
<category>CouchDB</category>
<category>Erlang</category>
<category>geo</category>
<guid isPermaLink="false">https://vmx.cx/cgi-bin/blog/index.cgi/foss4g-2010-im-speaking%3A2010-05-21%3Aen%2CGeoCouch%2CCouchDB%2CErlang%2Cgeo/</guid>
<description><![CDATA[ 
 [...]]]></description>
<content:encoded><![CDATA[

<div class="figure">
  <a href="http://2010.foss4g.org">
    <img src="http://2010.foss4g.org/images/logo_145x90_speaking.jpg"
    alt="FOSS4G Conference - I'm Speaking!"  width="145" height="90"/>
 </a>
</div>

<p>I did it! I'll speak at the <a href="http://2010.foss4g.org/">FOSS4G
Conference 2010</a> (Free and Open Source Software for Geospatial Conference),
6th–9th September in Barcelona about “GeoCouch: A spatial index for CouchDB”.
As soon as the abstract is available online I'll link to it. Hope to see you
there!
</p>
]]></content:encoded>
<wfw:commentRss>https://vmx.cx/cgi-bin/blog/index.cgi/foss4g-2010-im-speaking%3A2010-05-21%3Aen%2CGeoCouch%2CCouchDB%2CErlang%2Cgeo/feed/</wfw:commentRss>
</item>
<item>
<title>Non-validating WKT parser for Erlang
</title>
<link>https://vmx.cx/cgi-bin/blog/index.cgi/non-validating-wkt-parser-for-erlang%3A2010-05-14%3Aen%2CGeoCouch%2CErlang%2Cgeo</link>
<comments>https://vmx.cx/cgi-bin/blog/index.cgi/non-validating-wkt-parser-for-erlang%3A2010-05-14%3Aen%2CGeoCouch%2CErlang%2Cgeo#comments</comments>
<pubDate>Fri, 14 May 2010 22:35:23 +0200</pubDate>
<dc:creator>Volker Mische</dc:creator>
<category>en</category>
<category>GeoCouch</category>
<category>Erlang</category>
<category>geo</category>
<guid isPermaLink="false">https://vmx.cx/cgi-bin/blog/index.cgi/non-validating-wkt-parser-for-erlang%3A2010-05-14%3Aen%2CGeoCouch%2CErlang%2Cgeo/</guid>
<description><![CDATA[ 
 [...]]]></description>
<content:encoded><![CDATA[

<p>The <a href="http://www.opensearch.org/Specifications/OpenSearch/Extensions/Geo/1.0/Draft_2">upcoming OpenSearch Geo
specification</a>
will <a href="http://groups.google.com/group/opensearch/browse_thread/thread/e8cc2a298a36b998/">add support for querying with
WKT</a>
(<a href="http://en.wikipedia.org/wiki/Well-known_text">Well-Known Text</a>). As
I plan to support this specification in
<a href="http://vmx.cx/cgi-bin/blog/index.cgi/geocouch-the-future-is-now:2010-05-03:en,CouchDB,Python,Erlang,geo">GeoCouch</a>,
I was in need of a WKT parser written in Erlang. I tried several
ways to write this parser, but I ended up with writing it manually,
based on the ideas of the fabulous <a href="http://code.google.com/p/mochiweb/source/browse/trunk/src/mochijson2.erl">MochiWeb JSON2
Parser</a></p>

<p>The parser is meant for fast parsing, it is non-validating. This means
that it parses only valid WKT and all other strings that seem to be
valid, but are not. The grammar is simplified to (in <a href="http://www.w3.org/TR/2004/REC-xml-20040204/#sec-notation">EBNF as used for
the XML spec</a>):</p>

<pre><code>wkt ::= item | string  '(' space* item (comma item)* ')'
item ::= string (geom | list | nested_list | item | 'EMPTY')
nested_list ::= space* '(' list (comma list)* ')' | '(' nested_list+ ')'
list ::= '(' geom (comma geom)* ')'
geom ::= space* '(' coord (comma coord)* ')'
coord ::= space* number (space+ number)*
number ::= integer | float 
integer ::=  ('-' | '+')? [0-9]+
float ::= ('-' | '+')? [0-9]+ '.' [0-9]+ exponent?
exponent = 'E' ('-' | '+')? [0-9]+
string ::= [a-zA-Z]+ (space* [a-zA-Z])*
space :== #x20
comma :== ',' space*
</code></pre>

<p>I hope I got the grammar right, leave a comment if not. This means
also strings like <code>this(is(10 20), a test EMPTY)</code> would be parsed to:</p>

<pre><code>{this,[{is,[{10,20}]},{'a test',[]}]}
</code></pre>

<p>A validating parser would be much slower as it would also need to
perform checks on the geometry, e.g. for polygons whether interiors
are really within the exterior ring or not.</p>

<p>The general rule is, a list of coordinates is transformed to a tuple,
a list of coordinates to a list. The geometry name will be an
atom. Here's an example for a polygon:</p>

<pre><code>wkt:parse("POLYGON ((102 103, 204 205, 306 107, 102 103),
                    (12 13, 24 25, 36 17, 12 13),
                    (62 63, 74 75, 86 67, 62 63))").
{polygon,[[{102,103},{204,205},{306,107},{102,103}],
          [{12,13},{24,25},{36,17},{12,13}],
          [{62,63},{74,75},{86,67},{62,63}]]}
</code></pre>

<p>In case you're getting excited now, <a href="http://github.com/vmx/wkt">the source is available at Github</a>,
realeased under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT
License</a>.

<p>If someone plans to write a validating WKT parser for Erlang (please
let me know), I propose using
<a href="http://github.com/seancribbs/neotoma/">neotoma</a> it's really a nice
"<em>packrat parser-generator for Erlang for <a href="http://en.wikipedia.org/wiki/Parsing_expression_grammar">Parsing Expression
Grammars</a> (PEGs)</em>".</p>
]]></content:encoded>
<wfw:commentRss>https://vmx.cx/cgi-bin/blog/index.cgi/non-validating-wkt-parser-for-erlang%3A2010-05-14%3Aen%2CGeoCouch%2CErlang%2Cgeo/feed/</wfw:commentRss>
</item>
<item>
<title>GeoCouch: The future is now
</title>
<link>https://vmx.cx/cgi-bin/blog/index.cgi/geocouch-the-future-is-now%3A2010-05-03%3Aen%2CCouchDB%2CPython%2CErlang%2Cgeo</link>
<comments>https://vmx.cx/cgi-bin/blog/index.cgi/geocouch-the-future-is-now%3A2010-05-03%3Aen%2CCouchDB%2CPython%2CErlang%2Cgeo#comments</comments>
<pubDate>Mon, 03 May 2010 22:35:25 +0200</pubDate>
<dc:creator>Volker Mische</dc:creator>
<category>en</category>
<category>CouchDB</category>
<category>Python</category>
<category>Erlang</category>
<category>geo</category>
<guid isPermaLink="false">https://vmx.cx/cgi-bin/blog/index.cgi/geocouch-the-future-is-now%3A2010-05-03%3Aen%2CCouchDB%2CPython%2CErlang%2Cgeo/</guid>
<description><![CDATA[ 
 [...]]]></description>
<content:encoded><![CDATA[

<p><b>Update:</b> <em>This blog entry is outdated and kepts for historical
reasons. Please do always check for newer blog posts. The up to date
information on how to install and use GeoCouch can be found in
<a href="https://github.com/couchbase/geocouch/#readme">its README</a>.
</em></p>

<p>An idea has become reality. Exactly two years after the
<a href="http://vmx.cx/cgi-bin/blog/index.cgi/couchdb-and-geodata:2008-05-03:en,geo,CouchDB">blog post with the initial vision</a>,
a new version of GeoCouch is finished. It's a huge step forward. The first time
the dependencies were narrowed down to <a href="http://couchdb.apache.org">CouchDB</a>
itself. No <a href="http://www.python.org">Python</a>,
no <a href="http://www.gaia-gis.it/spatialite/">SpatiaLite</a> any longer, it's pure
<a href="http://www.erlang.org">Erlang</a>. GeoCouch is tightly integrated with
CouchDB, so you'll get all the nice features you love about CouchDB.</p>

<h3>Current implementation</h3>

<p>Thanks to the feedback after the FOSS4G 2009 and
<a href="http://vmx.cx/cgi-bin/blog/index.cgi/geocouch-the-future:2009-12-20:en,CouchDB,Python,geo">"GeoCouch: The future" blog entry</a>"
it was clear that people prefer a simple, yet powerful and tightly integrated
approach, rather than having to many external dependencies (which was a
showstopper for quite a few people).</p>

<p>I implemented an R-tree (I call it vtree as the implementation is
subject to change a lot) from scratch. The reason why I haven't used
the <a href="http://github.com/cchandler/RTreeCouchDB">already existing R-Tree implementation available at
Github</a> is that I needed
something to learn Erlang, it doesn't contain test or examples and
that it is always a good idea to implement a data structure yourself
to understand the details/problems. My implementation is far from
being perfect but works good enough for now. The vtree is implemented
as an append-only data structure just as CouchDB's B-trees
are. Currently it doesn't support bulk insertion.</p>

<p>If you want to know details on how to create your own indexer, have a look at
my <a href="http://vmx.cx/couchdb/tutorial/indexer.html">Indexer tutorial</a>.</p>

<h3>Feature set</h3>

<p>Following the "Release early, release often" philosophy currently only points
can be inserted, the only supported query is a bounding box search. Though
other geometries should follow soon.</p>

<h3>Using GeoCouch</h3>

<p>GeoCouch is now <a href="http://github.com/vmx/couchdb/tree/geocouch">hosted
at Github</a>. Giving GeoCouch a go is easy:</p>

<pre><code>git clone http://github.com/vmx/couchdb.git
cd couchdb
./bootstrap
./configure
make dev
./utils/run
</code></pre>

<p>To try the spatial features when it's up and running is easy as well. Just add
a <code>spatial</code> property and a named function to your Design Document as you
would to for
<a href="http://wiki.apache.org/couchdb/Formatting_with_Show_and_List">show or list functions</a>:</p>

<pre><code>function(doc) {
    if (doc.loc) {
        emit(doc._id, {
            type: "Point",
            coordinates: [doc.loc[0], doc.loc[1]]
        });
    }
};
</code></pre>

<p>All you need to do is emitting <a href="http://geojson.org">GeoJSON</a> as the value
(Remember that <code>point</code> is the only supported geometry at the moment), the
key is currently ignored.</p>

<pre><code>curl -X PUT http://127.0.0.1:5984/places
curl -X PUT -d '{"spatial":{"points":"function(doc) {\n    if (doc.loc) {\n        emit(doc._id, {\n            type: \"Point\",\n            coordinates: [doc.loc[0], doc.loc[1]]\n        });\n    }};"}}' http://127.0.0.1:5984/places/_design/main
</code></pre>

<p>Before a bounding box query can return anything, you need to insert Documents
that contain a location.</p>

<pre><code>curl -X PUT -d '{"loc": [-122.270833, 37.804444]}' http://127.0.0.1:5984/places/oakland
curl -X PUT -d '{"loc": [10.898333, 48.371667]}' http://127.0.0.1:5984/places/augsburg
</code></pre>

<p>And finally you can make a bounding box request:</p>

<pre><code>curl -X GET 'http://localhost:5984/places/_design/main/_spatial/points/%5B0,0,180,90%5D'
</code></pre>

<p>This one should return only <code>augsburg</code>:</p>

<pre><code>{"query1":[{"id":"augsburg","loc":[10.898333,48.371667]}]}
</code></pre>

<h3>Next steps</h3>

<p>The development of GeoCouch was quite slow in the past, but it gets up
to speed as my diploma thesis (comparable to a master's thesis) will be
about GeoCouch. Additionally <a href="http://www.couch.io/">Couchio</a> kindly
supports the development.</p>

<p>The next steps are (in no particular order):</p>

<ul>
<li>Better R-tree (better splitting algorithm, bulk operations)</li>
<li>Supporting more geometries</li>
<li>Polygon search</li>
<li>Improving CouchDB's plugin capabilities</li>
</ul>

<h3>Thanks</h3>

<p>I'd like to thank all the people that kept me motivated over the past two
years with their tremendous feedback. Special thanks go to
<a href="http://jan.prima.de/">Jan Lehnardt</a> for getting me onto the Couch,
<a href="http://cameronshorter.blogspot.com/">Cameron Shorter</a> for introducing me
into the geospatial open source business and all people from
<a href="http://www.couch.io/">Couchio</a> for the
great two weeks in Oakland.</p>
]]></content:encoded>
<wfw:commentRss>https://vmx.cx/cgi-bin/blog/index.cgi/geocouch-the-future-is-now%3A2010-05-03%3Aen%2CCouchDB%2CPython%2CErlang%2Cgeo/feed/</wfw:commentRss>
</item>
</channel>
</rss>
