<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.0.12-alpha" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Geographic Queries on Google App Engine</title>
	<link>http://labs.metacarta.com/blog/27.entry/geographic-queries-on-google-app-engine/</link>
	<description>MetaCarta Labs Weblog</description>
	<pubDate>Wed, 17 Mar 2010 19:27:54 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.12-alpha</generator>

	<item>
		<title>by: Christopher Schmidt</title>
		<link>http://labs.metacarta.com/blog/27.entry/geographic-queries-on-google-app-engine/#comment-172</link>
		<pubDate>Thu, 29 May 2008 22:43:58 +0000</pubDate>
		<guid>http://labs.metacarta.com/blog/27.entry/geographic-queries-on-google-app-engine/#comment-172</guid>
					<description>Dateline isn't handled at all: it's a planar map, and the plane doesn't cross the dateline.

Equator and Meridian are problematic. In the end, this is an approximation: In order to determine features which actually intersect, you have to do a post-query limit. (This is also true in PostGIS: You do a "the_geom &#38;&#38; bbox AND ST_Intersect(the_geom, bbox)" to get features which actually intersect.) Features which cross a top-level boundary like the equator or dateline will cover the entire range of the world in that dimension. For this demo, this works out okay because such features are usually excluded in the other direction: you end up with (for example):

&lt;code&gt;10101210&lt;/code&gt;

where the '1111' is the dimension in which the feature has crossed the top-level boundary of the meridian or equator. Then, because you query is looking only for features &#62; '01' and less than '22' (for example), you won't hit that feature.

This isn't a perfect solution: it doesn't push all the things into the datasource that you actually need. But it provides a first-order limit, which you can use to pull out a mostly-correct list that you can filter on.</description>
		<content:encoded><![CDATA[<p>Dateline isn&#8217;t handled at all: it&#8217;s a planar map, and the plane doesn&#8217;t cross the dateline.</p>
<p>Equator and Meridian are problematic. In the end, this is an approximation: In order to determine features which actually intersect, you have to do a post-query limit. (This is also true in PostGIS: You do a &#8220;the_geom &amp;&amp; bbox AND ST_Intersect(the_geom, bbox)&#8221; to get features which actually intersect.) Features which cross a top-level boundary like the equator or dateline will cover the entire range of the world in that dimension. For this demo, this works out okay because such features are usually excluded in the other direction: you end up with (for example):</p>
<p><code>10101210</code></p>
<p>where the &#8216;1111&#8242; is the dimension in which the feature has crossed the top-level boundary of the meridian or equator. Then, because you query is looking only for features &gt; &#8216;01&#8242; and less than &#8216;22&#8242; (for example), you won&#8217;t hit that feature.</p>
<p>This isn&#8217;t a perfect solution: it doesn&#8217;t push all the things into the datasource that you actually need. But it provides a first-order limit, which you can use to pull out a mostly-correct list that you can filter on.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Tom Carden</title>
		<link>http://labs.metacarta.com/blog/27.entry/geographic-queries-on-google-app-engine/#comment-171</link>
		<pubDate>Thu, 29 May 2008 22:34:34 +0000</pubDate>
		<guid>http://labs.metacarta.com/blog/27.entry/geographic-queries-on-google-app-engine/#comment-171</guid>
					<description>I'm super-intrigued by all this stuff, but I'm not sure I've fully wrapped my head around it. How /does/ the bounding box query handle the equator, date-line and meridian?</description>
		<content:encoded><![CDATA[<p>I&#8217;m super-intrigued by all this stuff, but I&#8217;m not sure I&#8217;ve fully wrapped my head around it. How /does/ the bounding box query handle the equator, date-line and meridian?
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Christopher Schmidt</title>
		<link>http://labs.metacarta.com/blog/27.entry/geographic-queries-on-google-app-engine/#comment-155</link>
		<pubDate>Wed, 28 May 2008 20:20:42 +0000</pubDate>
		<guid>http://labs.metacarta.com/blog/27.entry/geographic-queries-on-google-app-engine/#comment-155</guid>
					<description>Really, I only think in planar space anyway. Spheres are for losers! :)</description>
		<content:encoded><![CDATA[<p>Really, I only think in planar space anyway. Spheres are for losers! <img src='http://labs.metacarta.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Martin Davis</title>
		<link>http://labs.metacarta.com/blog/27.entry/geographic-queries-on-google-app-engine/#comment-154</link>
		<pubDate>Wed, 28 May 2008 17:31:30 +0000</pubDate>
		<guid>http://labs.metacarta.com/blog/27.entry/geographic-queries-on-google-app-engine/#comment-154</guid>
					<description>The Geohash concept looks like it is isomorphic to the concept of the Z-order linearization of space.

This indexing scheme of "truncated geohashes" then is isomorphic to the long-established concept of using Quadtrees as a index structure.

Quadtrees is a viable spatial indexing technique for a planar space.  There are issues with using it for indexing data on the sphere - it doesn't handle objects which cross a pole, or which cross the data line.</description>
		<content:encoded><![CDATA[<p>The Geohash concept looks like it is isomorphic to the concept of the Z-order linearization of space.</p>
<p>This indexing scheme of &#8220;truncated geohashes&#8221; then is isomorphic to the long-established concept of using Quadtrees as a index structure.</p>
<p>Quadtrees is a viable spatial indexing technique for a planar space.  There are issues with using it for indexing data on the sphere - it doesn&#8217;t handle objects which cross a pole, or which cross the data line.
</p>
]]></content:encoded>
				</item>
</channel>
</rss>
