<?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>IONCANNON &#187; gis</title>
	<atom:link href="http://www.ioncannon.net/category/gis/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ioncannon.net</link>
	<description>Thoughts on Software Development and Engineering</description>
	<lastBuildDate>Tue, 03 Jan 2012 13:59:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<atom:link rel='hub' href='http://www.ioncannon.net/?pushpress=hub'/>
		<item>
		<title>The Search for Timezone Maps</title>
		<link>http://www.ioncannon.net/utilities/137/the-search-for-timezone-maps/</link>
		<comments>http://www.ioncannon.net/utilities/137/the-search-for-timezone-maps/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 03:25:46 +0000</pubDate>
		<dc:creator>carson</dc:creator>
				<category><![CDATA[gis]]></category>
		<category><![CDATA[meta]]></category>
		<category><![CDATA[utilities]]></category>

		<guid isPermaLink="false">http://www.ioncannon.net/?p=137</guid>
		<description><![CDATA[For a while I had been casually searching for a way to overlay US time zones over a map for a project I was working on. It was never important enough to have a solution that required paying for something so I was searching for some type of government data source. My first attempt was [...]]]></description>
			<content:encoded><![CDATA[<p>For a while I had been casually searching for a way to overlay US time zones over a map for a project I was working on. It was never important enough to have a solution that required paying for something so I was searching for some type of government data source. </p>
<p><span id="more-137"></span></p>
<p>My first attempt was to use <a href="http://aa.usno.navy.mil/graphics/TimeZoneMap0802.jpg">this large international timezone map</a>, <a href="http://en.wikipedia.org/wiki/Image:National-atlas-timezones-2006.gif">this wikipedia map</a> or <a href="http://en.wikipedia.org/wiki/List_of_U.S._states_by_time_zone">the list of US states by time zone</a> and then trace and outline over the states. This turned out to be a non-starter because the maps aren&#039;t detailed enough and the list of states doesn&#039;t give you enough information.</p>
<p>I figured I would end up looking for <a href="http://www.esri.com/news/arcuser/0401/topo.html">ESRI shape files</a> at some point and that is where I turned next. An initial google search got me to <a href="http://laughingmeme.org/2004/04/09/timezone-shape-files/">a post</a> that led to a <a href="http://fri.sfasu.edu/data/geographic/world/shape/">link to what should have been a set of shape files</a>. Of course the link was dead so I turned to archive.org and <a href="http://web.archive.org/web/20030705005855/http://fri.sfasu.edu/data/geographic/world/shape/">found that the archive was incomplete</a>.</p>
<p>I reverted back to looking for another source and found <a href="http://data.crgsc.org/geographic/world/shape/">a set of shapes that ended up being just a bunch of squares</a>. At this point I had gone over a lot of random links that didn&#039;t get me anything and I was about to give up for good when I finally found <a href="http://www-atlas.usgs.gov/atlasftp.html?openChapters=chpbound#chpref">the USGS atlas site&#039;s time zone data</a>. This was the jackpot, not only do they have time zone shapefiles but they have a large number of other shapefiles that could come in handy some day. This quest has made it apparent to me that the government doesn&#039;t do a great job of getting their data found.</p>
<p>One helpful tool in my shapefile search was <a href="http://www.esri.com/software/arcexplorer/index1.html">ESRI&#039;s free Arc Explorer</a>. It was a quick way to validate the shapefiles where or where not what I was looking for before landing on a set of files that would work.</p>
<p>Now that I had a valid set of time zone shapes I created a simple java application using <a href="http://www.osgeo.org/geotools">geotools</a> to read the files in and generate a resulting map graphic that I could overlay in the project. The shapefiles are easily converted to lat/lon polygons so using this data to overlay on something like a google map would be even easier.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ioncannon.net/utilities/137/the-search-for-timezone-maps/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Free geocoding</title>
		<link>http://www.ioncannon.net/gis/66/free-geocoding/</link>
		<comments>http://www.ioncannon.net/gis/66/free-geocoding/#comments</comments>
		<pubDate>Sat, 20 May 2006 23:13:50 +0000</pubDate>
		<dc:creator>carson</dc:creator>
				<category><![CDATA[gis]]></category>

		<guid isPermaLink="false">http://www.ioncannon.net/gis/66/free-geocoding/</guid>
		<description><![CDATA[I&#039;ve had opertunities to work with a number of different GIS packages in the past (see my post comparing a few). Most of them are great but they all cost a lot of money to use. If you trying to get your feet wet and don&#039;t want to spend money on one of the real [...]]]></description>
			<content:encoded><![CDATA[<p>I&#039;ve had opertunities to work with a number of different GIS packages in the past (see my <a href="http://www.ioncannon.net/gis/43/gis-geocoding-experiments/">post comparing a few</a>). Most of them are great but they all cost a lot of money to use. If you trying to get your feet wet and don&#039;t want to spend money on one of the real services there are a number of places where you can start like <a href="http://developer.yahoo.com/maps/">yahoo</a> or <a href="http://www.esri.com/software/arcwebservices/index.html">ESRI</a>. These free services however have strict rules about using them for any commercial venture. So if you wanted to do geocoding for something that you charge for you need something else.</p>
<p>That something else could be one of the few open source applications that have sprung up. The first one has been around for a good while: <a href="http://geocoder.us/">geocoder.us</a>. geocoder.us is has a free web service you can use to do your geocoding and they also give away the software they use to do it for free. The code they use to do all the work is in perl so it should work on a number of platforms (they also have a <a href="http://geocoder.us/blog/">blog</a> with some <a href="http://geocoder.us/blog/2006/03/11/another-php-sample/">PHP examples</a>). The second choice would be a newer entry <a href="http://www.extendthereach.com/products/OSGeocoder.srct">SRC Open Source Explorer Geocoder</a>. The code for SRC Open Source Explorer Geocoder is windows only for now but maybe someone will come along and port it to Unix. Now for the bad new. Both of these applications need a source of data and the most likely source of data for the average joe would be the US TIGER data. The TIGER data isn&#039;t too bad but it isn&#039;t great and not nearly as good as a purchased dataset. But you can&#039;t get better than free so if you are interested in a way to do free geocoding without comercial use restrictions then geocoder.us or SRC Open Source Explorer Geocoder are good places to start.</p>
<p>Tags: <a href="http://technorati.com/tag/geocoding" rel="tag">geocoding</a>, <a href="http://technorati.com/tag/geocode" rel="tag"> geocode</a>, <a href="http://technorati.com/tag/tiger" rel="tag"> tiger</a>, <a href="http://technorati.com/tag/esri" rel="tag"> esri</a>, <a href="http://technorati.com/tag/mapping" rel="tag"> mapping</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ioncannon.net/gis/66/free-geocoding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Good Techcrunch review of mapping apis</title>
		<link>http://www.ioncannon.net/gis/31/good-techcrunch-review-of-mapping-apis/</link>
		<comments>http://www.ioncannon.net/gis/31/good-techcrunch-review-of-mapping-apis/#comments</comments>
		<pubDate>Tue, 18 Apr 2006 18:06:21 +0000</pubDate>
		<dc:creator>carson</dc:creator>
				<category><![CDATA[gis]]></category>

		<guid isPermaLink="false">http://www.ioncannon.net/uncategorized/31/good-techcrunch-review-of-mapping-apis/</guid>
		<description><![CDATA[Techcrunch has a good review by Frank Gruber of the look and feel of mapping services. I think it is notable that ESRI&#039;s service is not included in the review. I think it is at least as good as the mapquest service. I may have to find time to redo my review of the acuracy [...]]]></description>
			<content:encoded><![CDATA[<p>Techcrunch has a good <a href="http://www.techcrunch.com/2006/04/17/comparing-the-mapping-services/">review</a> by <a href="http://www.somewhatfrank.com/">Frank Gruber</a> of the look and feel of mapping services. I think it is notable that <a href="http://www.esri.com/software/arcgis/about/gis-webservices.html">ESRI&#039;s service</a> is not included in the review. I think it is at least as good as the mapquest service. I may have to find time to redo my <a href="http://www.ioncannon.net/gis/43/gis-geocoding-experiments/">review</a> of the acuracy of each again and a more technical evaluation of each.</p>
<p>Tags: <a href="http://technorati.com/tag/gis" rel="tag">gis</a>, <a href="http://technorati.com/tag/esri" rel="tag"> esri</a>, <a href="http://technorati.com/tag/geocode" rel="tag"> geocode</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ioncannon.net/gis/31/good-techcrunch-review-of-mapping-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Approximating a circle with a polygon</title>
		<link>http://www.ioncannon.net/gis/32/approximating-a-circle-with-a-polygon/</link>
		<comments>http://www.ioncannon.net/gis/32/approximating-a-circle-with-a-polygon/#comments</comments>
		<pubDate>Tue, 18 Apr 2006 06:36:18 +0000</pubDate>
		<dc:creator>carson</dc:creator>
				<category><![CDATA[gis]]></category>

		<guid isPermaLink="false">http://www.ioncannon.net/uncategorized/32/approximating-a-circle-with-a-polygon/</guid>
		<description><![CDATA[I recently had an opportunity to use ESRI&#039;s ArcSDE again. It is a spatial database interface and in this instance I was using the java api. I wanted to change what used to be a query using a rectangle into a query using a circle. For some reason parts of the java api for ArcSDE [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had an opportunity to use ESRI&#039;s <a href="http://www.esri.com/software/arcgis/arcsde/index.html">ArcSDE</a> again. It is a spatial database interface and in this instance I was using the java api. I wanted to change what used to be a query using a rectangle into a query using a circle. For some reason parts of the java api for ArcSDE require a C library or something. I gave up pretty quickly on trying to make their arc function work since the documentation wasn&#039;t very clear on how it worked. Instead I decided to figure out how to approximate a circle with a polygon and use that instead. Here is the result of that research.</p>
<p><span id="more-32"></span></p>
<p>First it helps to have a little background. Most people are familiar with <a href="http://en.wikipedia.org/wiki/Latitude">latitude</a> and <a href="http://en.wikipedia.org/wiki/Longitude">longitude</a> but you may not be familiar with their exact definitions. I have included the links to the wikipedia pages for both so you can research them more if you want. The main things to know are: latitude runs north/south and each degree of latitude is about 111 km; longitude runs east/west and is 111 km times the cosine of the latitude. The next thing that is helpful to know is the <a href="http://en.wikipedia.org/wiki/Earth_radius">radius of the earth</a>: 6,378.135 km in this case I&#039;ll just use the equatorial radius.</p>
<p>Now that we have the earth taken care of we need to go back to basics. We start by looking at the definition of a <a href="http://en.wikipedia.org/wiki/Circle">circle</a> and <a href="http://en.wikipedia.org/wiki/Unit_circle">the unit circle</a>. The mathematical definition of a circle is the important part here. The following equations will play an important part: x = a + r cos(t) and y = b + r sin(t) where a,b are the center of the circle, x,y are points of the unit circle, r is the radius of the circle, and t is the angle of a line from the origin to x,y in radians. It helps to think of the circle as broken up into triangles.</p>
<p>The last thing to keep in mind is that latitude and longitude are in degrees but when working with cos and sin you need to use radians and not degrees. The conversion between radians and degrees is easy: radians = degrees * (PI / 180) and degrees = radians * (180 / PI).</p>
<p>So now for the main formula in pseudocode:</p>
<div class="codesnip-container" >
<div class="javascript codesnip" style="font-family:monospace;">earths_radius <span class="sy0">=</span> <span class="nu0">3963</span> <span class="co1">// number of miles in the radius of the earth</span><br />
&nbsp;longitude <span class="sy0">=</span> <span class="nu0">80</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// longitude of the center of the circle</span><br />
&nbsp;latitude <span class="sy0">=</span> <span class="nu0">90</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// latitude of the center of the circle</span><br />
&nbsp;points <span class="sy0">=</span> <span class="nu0">32</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="co1">// number of points in the polygon</span><br />
&nbsp;circle_radius <span class="sy0">=</span> <span class="nu0">1</span> &nbsp; &nbsp; &nbsp; <span class="co1">// miles of radius</span></p>
<p>&nbsp;<span class="co1">// find the raidus in lat/lon, units per latitude, units per longitude</span><br />
&nbsp;r_latitude <span class="sy0">=</span> radius_to_degrees<span class="br0">&#40;</span>circle_radius <span class="sy0">/</span> earths_radius<span class="br0">&#41;</span><br />
&nbsp;r_longitude <span class="sy0">=</span> r_latitude <span class="sy0">/</span> cos<span class="br0">&#40;</span>degrees_to_radius<span class="br0">&#40;</span>latitude<span class="br0">&#41;</span><span class="br0">&#41;</span></p>
<p>&nbsp;<span class="co1">// create a point for each edge, we need one extra point to connect the</span><br />
&nbsp;<span class="co1">// end to the begining</span><br />
&nbsp;<span class="kw1">for</span> point_count <span class="sy0">=</span> <span class="nu0">0</span> to points <span class="sy0">+</span> <span class="nu0">1</span><br />
&nbsp;<span class="br0">&#123;</span><br />
&nbsp; &nbsp; theta <span class="sy0">=</span> PI <span class="sy0">*</span> <span class="br0">&#40;</span>point_count <span class="co2">/ (points /</span> <span class="nu0">2</span><span class="br0">&#41;</span><span class="br0">&#41;</span> &nbsp; &nbsp;<span class="co1">// find the angle for the current triangle</span><br />
&nbsp; &nbsp; circle_x <span class="sy0">=</span> lng <span class="sy0">+</span> <span class="br0">&#40;</span>r_longitude <span class="sy0">*</span> cos<span class="br0">&#40;</span>theta<span class="br0">&#41;</span><span class="br0">&#41;</span> &nbsp;<span class="co1">// center a + radius x * cos(theta)</span><br />
&nbsp; &nbsp; circle_y <span class="sy0">=</span> lat <span class="sy0">+</span> <span class="br0">&#40;</span>r_latitude <span class="sy0">*</span> sin<span class="br0">&#40;</span>theta<span class="br0">&#41;</span><span class="br0">&#41;</span> &nbsp; &nbsp; <span class="co1">// center b + radius y * sin(theta)</span></p>
<p>&nbsp; &nbsp; <span class="co1">// circle_x, circle_y represents a point on the circle</span><br />
&nbsp;<span class="br0">&#125;</span></div>
</div>
<p>That is all there is to it. In this example I just picked 32 points for the circle but you may want more or less depending on how large your radius is and how closely you want to approximate the circle. One thing to note about this function is that it produces the points in a counter-clockwise direction.</p>
<p>Now for an example using google maps to display a circle around a point with a radius of one mile:</p>
<h3>Missiondata World HQ, Louisville, Ky</h3>
</p>
<p>And here is the javascript source you need to do it:</p>
<div class="codesnip-container" >
<div class="javascript codesnip" style="font-family:monospace;"><span class="kw2">var</span> d2r <span class="sy0">=</span> Math.<span class="me1">PI</span> <span class="sy0">/</span> <span class="nu0">180</span><span class="sy0">;</span> &nbsp; <span class="co1">// degrees to radians</span><br />
<span class="kw2">var</span> r2d <span class="sy0">=</span> 180 <span class="sy0">/</span> Math.<span class="me1">PI</span><span class="sy0">;</span> &nbsp; <span class="co1">// radians to degrees</span><br />
<span class="kw2">var</span> earthsradius <span class="sy0">=</span> <span class="nu0">3963</span><span class="sy0">;</span> <span class="co1">// 3963 is the radius of the earth in miles</span></p>
<p><span class="kw2">var</span> hqpoint <span class="sy0">=</span> <span class="kw2">new</span> GPoint<span class="br0">&#40;</span><span class="sy0">-</span>85.578852<span class="sy0">,</span> 38.215601<span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw2">var</span> map <span class="sy0">=</span> <span class="kw2">new</span> GMap<span class="br0">&#40;</span>document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&quot;map&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>map.<span class="me1">addControl</span><span class="br0">&#40;</span><span class="kw2">new</span> GSmallMapControl<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
map.<span class="me1">addControl</span><span class="br0">&#40;</span><span class="kw2">new</span> GMapTypeControl<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
map.<span class="me1">centerAndZoom</span><span class="br0">&#40;</span>hqpoint<span class="sy0">,</span> 4<span class="br0">&#41;</span><span class="sy0">;</span><br />
map.<span class="me1">addOverlay</span><span class="br0">&#40;</span><span class="kw2">new</span> GMarker<span class="br0">&#40;</span>hqpoint<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>drawCircle<span class="br0">&#40;</span><span class="sy0">-</span>85.578852<span class="sy0">,</span> 38.215601<span class="sy0">,</span> map<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="kw2">function</span> drawCircle<span class="br0">&#40;</span>lng<span class="sy0">,</span> lat<span class="sy0">,</span> map<span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp;<span class="kw2">var</span> points <span class="sy0">=</span> <span class="nu0">32</span><span class="sy0">;</span><br />
&nbsp; &nbsp;<span class="kw2">var</span> radius <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// radius in miles</span></p>
<p>&nbsp; &nbsp;<span class="co1">// find the raidus in lat/lon</span><br />
&nbsp; &nbsp;<span class="kw2">var</span> rlat <span class="sy0">=</span> <span class="br0">&#40;</span>radius <span class="sy0">/</span> earthsradius<span class="br0">&#41;</span> <span class="sy0">*</span> r2d<span class="sy0">;</span><br />
&nbsp; &nbsp;<span class="kw2">var</span> rlng <span class="sy0">=</span> rlat <span class="sy0">/</span> Math.<span class="me1">cos</span><span class="br0">&#40;</span>lat <span class="sy0">*</span> d2r<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp;<span class="kw2">var</span> extp <span class="sy0">=</span> <span class="kw2">new</span> Array<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp;<span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&amp;</span>lt<span class="sy0">;</span> points<span class="sy0">+</span><span class="nu0">1</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="co1">// one extra here makes sure we connect the</span><br />
&nbsp; &nbsp;<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw2">var</span> theta <span class="sy0">=</span> Math.<span class="me1">PI</span> <span class="sy0">*</span> <span class="br0">&#40;</span>i <span class="sy0">/</span> <span class="br0">&#40;</span>points<span class="sy0">/</span>2<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; ex <span class="sy0">=</span> lng <span class="sy0">+</span> <span class="br0">&#40;</span>rlng <span class="sy0">*</span> Math.<span class="me1">cos</span><span class="br0">&#40;</span>theta<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// center a + radius x * cos(theta)</span><br />
&nbsp; &nbsp; &nbsp; ey <span class="sy0">=</span> lat <span class="sy0">+</span> <span class="br0">&#40;</span>rlat <span class="sy0">*</span> Math.<span class="me1">sin</span><span class="br0">&#40;</span>theta<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// center b + radius y * sin(theta)</span><br />
&nbsp; &nbsp; &nbsp; extp.<span class="me1">push</span><span class="br0">&#40;</span><span class="kw2">new</span> GPoint<span class="br0">&#40;</span>ex<span class="sy0">,</span> ey<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp;<span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp;map.<span class="me1">addOverlay</span><span class="br0">&#40;</span><span class="kw2">new</span> GPolyline<span class="br0">&#40;</span>extp<span class="sy0">,</span> <span class="st0">&quot;#000000&quot;</span><span class="sy0">,</span> 2<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>Tags: <a href="http://technorati.com/tag/gis" rel="tag">gis</a>, <a href="http://technorati.com/tag/esri" rel="tag"> esri</a>, <a href="http://technorati.com/tag/arcsde" rel="tag"> arcsde</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ioncannon.net/gis/32/approximating-a-circle-with-a-polygon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GIS Geocoding experiments</title>
		<link>http://www.ioncannon.net/gis/43/gis-geocoding-experiments/</link>
		<comments>http://www.ioncannon.net/gis/43/gis-geocoding-experiments/#comments</comments>
		<pubDate>Thu, 09 Mar 2006 07:39:31 +0000</pubDate>
		<dc:creator>carson</dc:creator>
				<category><![CDATA[gis]]></category>

		<guid isPermaLink="false">http://www.ioncannon.net/uncategorized/43/gis-geocoding-experiments/</guid>
		<description><![CDATA[I&#039;ve been evaluating a couple different mapping software packages recently and the other day I noticed that the same addresses geocoded (for those who don&#039;t know what geocoding is you can find out more about it here) to different locations. They are mostly the same but I figured it was interesting enough to do some [...]]]></description>
			<content:encoded><![CDATA[<p>I&#039;ve been evaluating a couple different mapping software packages recently and the other day I noticed that the same addresses geocoded (for those who don&#039;t know what geocoding is you can find out more about it <a title="here" href="http://en.wikipedia.org/wiki/Geocoding">here</a>) to different locations. They are mostly the same but I figured it was interesting enough to do some more digging and see how different mapping services compared.I looked at the following services. Some of them are commercial services with open apis (ESRI and mapquest) and some of them are non-commercial services with open apis (yahoo and google although google does not have a geocoding api).</p>
<p><span id="more-43"></span></p>
<ul>
<li><a title="http://www.esri.com/software/awspublicservices/index.html" href="http://www.esri.com/software/awspublicservices/index.html">http://www.esri.com/software/awspublicservices/index.html</a></li>
<li><a title="http://developer.yahoo.com/maps/index.html" href="http://developer.yahoo.com/maps/index.html"> http://developer.yahoo.com/maps/index.html</a></li>
<li><a title="http://www.mapquest.com/openapi" href="http://www.mapquest.com/openapi"> http://www.mapquest.com/openapi</a></li>
<li><a title="http://maps.google.com" href="http://maps.google.com"> http://maps.google.com</a></li>
</ul>
<p>For google I viewed the resulting values for latitude and longitude that were generated from a search for the address. For yahoo and ESRI I used their REST geocoding apis and for mapquest I used their java api to their commercial service since their openapi service is only in beta currently.I took 5 addresses located at different points in the US and one in Canada and mapped the returned latitude and longitude from each service. Here are the results:<br />
<a></a></p>
<p>Missiondata, 2300 Hurstbourne Village Drive, Suite 1100, Louisville, KY, 40299<br />
mapquest: 38.215303, -85.578698<br />
google: 38.215601, -85.578852<br />
yahoo: 38.215496, -85.578669<br />
esri: 38.216273, -85.579028</p>
<p><img alt="Missiondata Results" src="/examples/gis-01/md.gis.jpg" /></p>
<p>Googleplex, 1600 Amphitheatre Parkway, Mountain View, CA, 94043<br />
mapquest: 37.4238,   -122.0901<br />
google: 37.422845, -122.085035<br />
yahoo: 37.42386,  -122.090332<br />
esri: 37.42386,  -122.090332</p>
<p><img alt="Googleplex Results" src="/examples/gis-01/google.gis.jpg" /></p>
<p>IBM New York, 590 Madison Ave, New York, NY, 10022<br />
mapquest: 40.7623,   -73.972399<br />
google: 40.762267, -73.972535<br />
yahoo: 40.762245, -73.972644<br />
esri: 40.762245, -73.972644</p>
<p><img alt="IBM NY Results" src="/examples/gis-01/ibm.gis.jpg" /></p>
<p>Lockheed Martin, 6304 Spine Rd, Boulder, CO, 80301<br />
mapquest: 40.0672,   -105.206711<br />
google: 40.067084, -105.206555<br />
yahoo: 40.067063, -105.20654<br />
esri: 40.067063, -105.20654</p>
<p><img alt="Lockheed Martin Results" src="/examples/gis-01/lm.gis.jpg" /></p>
<p>Red Hat Canada, 2323 Yonge Street, Suite #300, Toronto, Ontario M4P 2C9, Canada<br />
yahoo: none<br />
mapquest: 43.708137, -79.3985<br />
google: 37.062500, -95.677068<br />
esri: 79.398592, -43.7081</p>
<p><img alt="Redhat Canada Mapquest Results" src="/examples/gis-01/canada.mapquest.jpg" /><br />
<img alt="Redhat Canada Google Results" src="/examples/gis-01/canada.google.jpg" /></p>
<p>For the most part all of the services provide very similar results for geocoding in the US. From the limited number of locations I tested it seems that the larger cities have a more reliable set of outputs. In NY for example they almost completely stack on top of each other. I find it interesting too that in 4 out of 6 cases yahoo came back with the exact same results as ESRI provided.</p>
<p>The last thing to notice of course is that the results for Canada are not as good. First off I couldn&#039;t get yahoo&#039;s service to work with a Canadian address for some reason. Also notice that the ESRI latitude and longitude results are swapped. And viewing the results from google for latitude and longitude gave me some wildly incorrect values but the map was actually correct (thus the two maps). The only completely reliable service for Canada was mapquest and google (although google doesn&#039;t do geocoding) with ESRI coming in next just because the results were swapped. All in all I think all 3 did a good job.</p>
<p>I&#039;m not sure why google hasn&#039;t produced something in the way of geocoding yet. I think they have the mapping nailed down but their lack of geocoding will put them at somewhat of a disadvantage at some point since the other 3 services are in the open now and both ESRI and mapquest already have commercial versions of their services that people use widely.
</p>
<p>Tags: <a href="http://technorati.com/tag/gis" rel="tag">gis</a>, <a href="http://technorati.com/tag/geocode" rel="tag"> geocode</a>, <a href="http://technorati.com/tag/esri" rel="tag"> esri</a>, <a href="http://technorati.com/tag/map" rel="tag"> map</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ioncannon.net/gis/43/gis-geocoding-experiments/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

