Brilliant! I will take a closer look at the PDF after I finish some things I need to take care of. The python code would be nice, but the truth is that this geocoding is a small part of the project (it is my UNIGIS Master's thesis as well :-), and if I can get decent geocoding through Google, then I would prefer not to get too caught up in that. I am looking at heat and mortality in Barcelona, and I need to generate a lot of interpolated temperature maps, so I would like to spend more time on that.<div>
<br></div><div>From the images in the paper (figure 35) it looks like Google is better at locating the position of the address, but then in Table 12 it shows that Google's positional accuracy was slightly worse than Bing's. Do you know why that is? </div>
<div><br></div><div>I'm geocoding addresses of people who died, so positional accuracy is important with regard to heat exposure. Which would you recommend? </div><div><br></div><div>Actually, after reading some of that, maybe I should take a look at your code. It looks like I am going to need to do more to make sure these are correct. The difficult thing is that the addresses I have are abbreviated (like "CL/ LLEO, 12" which is really "Carrer del Lleó 12"), so it will be hard to check accuracy automatically.</div>
<div><br></div><div>i am definitely citing your paper.</div><div><br></div><div>Cheers,</div><div>JP</div><div><div><br><div class="gmail_quote">On Sat, Feb 5, 2011 at 5:53 PM, Stark Hans-Jörg <span dir="ltr"><<a href="mailto:hansjoerg.stark@fhnw.ch">hansjoerg.stark@fhnw.ch</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div lang="DE-CH" link="blue" vlink="purple"><div><p class="MsoNormal"><span lang="EN-GB" style="font-size:11.0pt;color:#1F497D">Hi JP</span></p>
<p class="MsoNormal"><span lang="EN-GB" style="font-size:11.0pt;color:#1F497D"> </span></p><p class="MsoNormal"><span lang="EN-GB" style="font-size:11.0pt;color:#1F497D">Hope this helps: </span><a href="http://www.unigis.ac.at/club/bibliothek/pdf/40138.pdf" target="_blank"><span lang="EN-GB">http://www.unigis.ac.at/club/bibliothek/pdf/40138.pdf</span></a></p>
<p class="MsoNormal"> </p><p class="MsoNormal"><span lang="EN-GB">In OA we are currently running a test-phase where we check all user-digitised addresses versus open Geocoding engines like Bing, Google and Yahoo. The comparison results shall then be an indicator of the quality of the user entered address. Cf. </span><a href="http://geolin01.cti.ac.at/openaddresses/" target="_blank"><span lang="EN-GB">http://geolin01.cti.ac.at/openaddresses/</span></a><span lang="EN-GB"> (to digitise) and </span><a href="http://geolin01.cti.ac.at/openaddresses/qa/qareport" target="_blank"><span lang="EN-GB">http://geolin01.cti.ac.at/openaddresses/qa/qareport</span></a><span lang="EN-GB"> to get the report (and </span><a href="http://code.google.com/p/openaddresses/wiki/qa" target="_blank"><span lang="EN-GB">http://code.google.com/p/openaddresses/wiki/qa</span></a><span lang="EN-GB"> for a description).</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p><p class="MsoNormal"><span lang="EN-GB">I run the yahoo geocoding in python. If you want to see the code I could provide it (it is not yet in the wiki) and perhaps you can take parts of it for your purpose to avoid starting from scratch.</span></p>
<p class="MsoNormal"><span lang="EN-GB"> </span></p><p class="MsoNormal"><span lang="EN-GB">Best,</span></p><p class="MsoNormal"><span lang="EN-GB">hj</span><span lang="EN-GB" style="font-size:11.0pt;color:#1F497D"></span></p>
<p class="MsoNormal"><span lang="EN-GB" style="font-size:11.0pt;color:#1F497D"> </span></p><p class="MsoNormal" style="margin-left:35.4pt"><b><span lang="DE" style="font-size:10.0pt">Von:</span></b><span lang="DE" style="font-size:10.0pt"> <a href="mailto:discuss-bounces@lists.osgeo.org" target="_blank">discuss-bounces@lists.osgeo.org</a> [mailto:<a href="mailto:discuss-bounces@lists.osgeo.org" target="_blank">discuss-bounces@lists.osgeo.org</a>] <b>Im Auftrag von </b>JP Glutting<br>
<b>Gesendet:</b> Samstag, 5. Februar 2011 17:42</span></p><div><div></div><div class="h5"><br><b>An:</b> OSGeo Discussions<br><b>Betreff:</b> Re: [OSGeo-Discuss] Batch geocoding</div></div><p></p><div><div></div><div class="h5">
<p class="MsoNormal" style="margin-left:35.4pt"> </p><p class="MsoNormal" style="margin-left:35.4pt">Hi HJ,</p><div><p class="MsoNormal" style="margin-left:35.4pt"> </p></div><div><p class="MsoNormal" style="margin-left:35.4pt">
Yes, thanks, it is relevant. I was going to go looking for a reference just like that. It looks excellent. Is there a PDF available? From the image, it looks like Google is much better, but I can't read the table online (and I don't seem to get GeoInformatics in the mail anymore, not sure why).</p>
</div><div><p class="MsoNormal" style="margin-left:35.4pt"> </p></div><div><p class="MsoNormal" style="margin-left:35.4pt">At this point, I am not sure I have much choice in the matter. I can geocode the addresses in Google using fusion tables, but Yahoo seems to start returning errors after a few thousand lookups per day via geopy.</p>
</div><div><p class="MsoNormal" style="margin-left:35.4pt"> </p></div><div><p class="MsoNormal" style="margin-right:0cm;margin-bottom:12.0pt;margin-left:35.4pt">After spending some time fixing geocoding errors in fusion tables, I think I am going to go back and edit the addresses in the source table and re-export them to Fusion. It is putting addresses like "CL/ LLEO, 12, Barcelona, Spain" in León. Adjusting that to "Carrer del Lleó, 12, Barcelona, Spain" does a much better job, so I am going to go back and make abbreviations like "CL/", "PA/", "RBLA", etc. explicit and try the geocoding again. On the whole, it did a very good job, but there are a lot of addresses that I need to fix. It would probably work better if I could specify fields for City and Country (some of the addresses were encoded in Bermuda, despite all having "Barcelona, Spain" appended to them). </p>
</div><div><p class="MsoNormal" style="margin-left:35.4pt">Cheers,</p></div><div><p class="MsoNormal" style="margin-right:0cm;margin-bottom:12.0pt;margin-left:35.4pt">JP</p><div><p class="MsoNormal" style="margin-left:35.4pt">
On Sat, Feb 5, 2011 at 4:54 PM, Stark Hans-Jörg <<a href="mailto:hansjoerg.stark@fhnw.ch" target="_blank">hansjoerg.stark@fhnw.ch</a>> wrote:</p><div><div><p class="MsoNormal" style="margin-left:35.4pt"><span lang="EN-GB" style="font-size:11.0pt;color:#1F497D">BTW: the geocoding engines of Yahoo and Google provide different spatial accuracy (cf. </span><a href="http://www.geoinformatics.com/blog/in-the-spotlight/quality-assessment-of-volunteered-geographic-information-vgi" target="_blank"><span lang="EN-GB">http://www.geoinformatics.com/blog/in-the-spotlight/quality-assessment-of-volunteered-geographic-information-vgi</span></a><span lang="EN-GB">) </span></p>
<p class="MsoNormal" style="margin-left:35.4pt"><span lang="EN-GB" style="font-size:11.0pt;color:#1F497D">But I do not know whether that is relevant for your task.</span></p><p class="MsoNormal" style="margin-left:35.4pt">
<span lang="EN-GB" style="font-size:11.0pt;color:#1F497D"> </span></p><p class="MsoNormal" style="margin-left:35.4pt"><span lang="EN-GB" style="font-size:11.0pt;color:#1F497D">Cheers,</span></p><p class="MsoNormal" style="margin-left:35.4pt">
<span lang="EN-GB" style="font-size:11.0pt;color:#1F497D">hj</span></p><p class="MsoNormal" style="margin-left:35.4pt"><span lang="EN-GB" style="font-size:11.0pt;color:#1F497D"> </span></p><p class="MsoNormal" style="margin-left:70.8pt">
<b><span lang="DE" style="font-size:10.0pt">Von:</span></b><span lang="DE" style="font-size:10.0pt"> <a href="mailto:discuss-bounces@lists.osgeo.org" target="_blank">discuss-bounces@lists.osgeo.org</a> [mailto:<a href="mailto:discuss-bounces@lists.osgeo.org" target="_blank">discuss-bounces@lists.osgeo.org</a>] <b>Im Auftrag von </b>JP Glutting<br>
<b>Gesendet:</b> Samstag, 5. Februar 2011 16:37</span></p><div><p class="MsoNormal" style="margin-left:35.4pt"><br><b>An:</b> OSGeo Discussions<br><b>Betreff:</b> Re: [OSGeo-Discuss] Batch geocoding</p></div><p class="MsoNormal" style="margin-left:70.8pt">
 </p><p class="MsoNormal" style="margin-left:70.8pt">For anyone who is considering using Fusion Tables, it has a very nice feature that allows you to select a point that has been badly geocoded, and find the right location searching in a small pop-up map, and then select from a set of alternate locations. Your choice modifies the coordinates of the geocoding, but not the address itself. A very nice and quite easy way to fix problems.</p>
<div><div><div><p class="MsoNormal" style="margin-left:70.8pt"> </p></div><div><p class="MsoNormal" style="margin-left:70.8pt">Cheers,</p></div><div><p class="MsoNormal" style="margin-bottom:12.0pt;margin-left:70.8pt">JP</p>
<div><p class="MsoNormal" style="margin-left:70.8pt">On Sat, Feb 5, 2011 at 12:37 AM, JP Glutting <<a href="mailto:jpglutting@gmail.com" target="_blank">jpglutting@gmail.com</a>> wrote:</p><p class="MsoNormal" style="margin-left:70.8pt">
It is pretty slick, but I just started using it about an hour ago, so I haven't thought much about what to do with it. I did see a comment where someone from Google said that reverse geocoding is not possible yet. </p>
<div><p class="MsoNormal" style="margin-left:70.8pt"> </p></div><div><p class="MsoNormal" style="margin-left:70.8pt">I am going to have to get up to speed with PostGIS, but this is a pretty simple operation. I didn't number the addresses, but each event has a real address and a "cleaned" address column in a table. The CSV that I uploaded to Fusion was just a "select distinct..." of the cleaned addresses, so it will serve as a lookup table for all the addresses in the original table. I'm not sure how I am going to reorganize the tables afterward, but I want to interpolate temperatures for each data point based on other data that I have, and I think PostGIS only does simpler operations right now, so I might  have to export the points into shapefiles for each day an event occurs and do splines in another package, then copy the interpolated values back into the database. I am sure there is a more elegant way to do that, I really need to think about it some more. </p>
</div><div><p class="MsoNormal" style="margin-left:70.8pt"> </p></div><div><p class="MsoNormal" style="margin-left:70.8pt">(Oh, hey, I just saw that you can compile R into Postgres. That is pretty crazy, but potentially totally awesome: <a href="http://postgis.refractions.net/pipermail/postgis-users/2009-March/022894.html" target="_blank">http://postgis.refractions.net/pipermail/postgis-users/2009-March/022894.html</a>)</p>
</div><div><p class="MsoNormal" style="margin-left:70.8pt"> </p></div><div><p class="MsoNormal" style="margin-left:70.8pt">Cheers,</p></div><div><p class="MsoNormal" style="margin-left:70.8pt">JP</p><div><div><p class="MsoNormal" style="margin-bottom:12.0pt;margin-left:70.8pt">
 </p><div><p class="MsoNormal" style="margin-left:70.8pt">On Sat, Feb 5, 2011 at 12:17 AM, Dan Putler <<a href="mailto:dan.putler@sauder.ubc.ca" target="_blank">dan.putler@sauder.ubc.ca</a>> wrote:</p><p class="MsoNormal" style="margin-left:70.8pt">
Glad to be of help, I'm just curious about what the licensing / terms of use on the KML files that come out of fusion tables. Plus I want to know if it will reverse geocode. It is very slick, but I can imagine violating the terms of use almost instantly.<br>
<br>In terms of your next problem (which seems like one for the PostGIS user list), did you create a unique address ID? if you did, can't you put it in the data you created the fusion table from and then just do the appropriate table join in Postgres/PostGIS?<br>
<br>Dan</p><div><p class="MsoNormal" style="margin-left:70.8pt"><br><br>On 02/04/2011 03:08 PM, JP Glutting wrote:</p></div><blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0cm;margin-bottom:5.0pt">
<div><p class="MsoNormal" style="margin-bottom:12.0pt;margin-left:70.8pt">That is a nice trick, I will remember that. I really just need the coordinates, since each coordinate needs to go back into a database in a register of a location-time that needs more data added later. These are the "generic" addresses, with the apartment numbers stripped, so each address will provide coordinates for multiples DB entries on different dates, and I won't really be using them on the same layer. But I am sure I can figure out a way to get the data back out with PostGIS (the original data is in Postgres anyway).<br>
<br>Cheers,<br>JP</p></div><div><p class="MsoNormal" style="margin-left:70.8pt">On Fri, Feb 4, 2011 at 11:59 PM, Dan Putler <<a href="mailto:dan.putler@sauder.ubc.ca" target="_blank">dan.putler@sauder.ubc.ca</a> <mailto:<a href="mailto:dan.putler@sauder.ubc.ca" target="_blank">dan.putler@sauder.ubc.ca</a>>> wrote:<br>
<br>   JP,<br><br>   If you export the KML, and then feed it into QGIS you can then<br>   save the resulting layer as a shapefile, which is probably what<br>   you are really hoping to have since you can then easily feed it to<br>
   R, PostGIS, or a number of other tools to pull the coordinates.<br><br>   Dan<br><br><br>   On 02/04/2011 02:20 PM, JP Glutting wrote:<br><br>       Hi Bernie,<br><br>       You can't actually get the lat-lng back out of a Fusion table.<br>
       It will geocode all the addresses, but you can't get the<br>       numbers back, you can just make a map or layer or something.<br><br>       <a href="http://groups.google.com/group/fusion-tables-users-group/browse_thread/thread/91c43c73107164eb" target="_blank">http://groups.google.com/group/fusion-tables-users-group/browse_thread/thread/91c43c73107164eb</a><br>
<br>       Unless I export it to KML and pull it back out of there?<br><br>       That seems like a lot of work. But it sure geocodes like<br>       gangbusters.<br><br>       Cheers,<br>       JP<br><br>       Public Health - GIS - Bioinformatics<br>
       <a href="http://www.bmeisis.com" target="_blank">http://www.bmeisis.com</a> <<a href="http://www.bmeisis.com/" target="_blank">http://www.bmeisis.com/</a>><br>       <a href="http://www.jpglutting.com" target="_blank">http://www.jpglutting.com</a><br>
<br><br><br><br><br>       On Fri, Feb 4, 2011 at 7:42 PM, Connors, Bernie (SNB)<br>       <<a href="mailto:Bernie.Connors@snb.ca" target="_blank">Bernie.Connors@snb.ca</a> <mailto:<a href="mailto:Bernie.Connors@snb.ca" target="_blank">Bernie.Connors@snb.ca</a>></p>
</div><p class="MsoNormal" style="margin-left:70.8pt">       <mailto:<a href="mailto:Bernie.Connors@snb.ca" target="_blank">Bernie.Connors@snb.ca</a> <mailto:<a href="mailto:Bernie.Connors@snb.ca" target="_blank">Bernie.Connors@snb.ca</a>>>></p>
<div><p class="MsoNormal" style="margin-left:70.8pt"><br>       wrote:<br><br>          Try Google Fusion Tables.  All you have to do is put all of the<br>          address components in one field and it should be recognized and<br>
          geocoded.<br><br>          --<br><br>          *Bernie Connors, P.Eng*<br><br>          Service New Brunswick<br><br>          (506) 444-2077<br><br>          45°56'25.21"N, 66°38'53.65"W<br><br>
       <a href="http://www.snb.ca/geonb/" target="_blank">www.snb.ca/geonb/</a> <<a href="http://www.snb.ca/geonb/" target="_blank">http://www.snb.ca/geonb/</a>><br>       <<a href="http://www.snb.ca/geonb/" target="_blank">http://www.snb.ca/geonb/</a>><br>
<br><br>          *From:*<a href="mailto:discuss-bounces@lists.osgeo.org" target="_blank">discuss-bounces@lists.osgeo.org</a><br>       <mailto:<a href="mailto:discuss-bounces@lists.osgeo.org" target="_blank">discuss-bounces@lists.osgeo.org</a>><br>
       <mailto:<a href="mailto:discuss-bounces@lists.osgeo.org" target="_blank">discuss-bounces@lists.osgeo.org</a><br>       <mailto:<a href="mailto:discuss-bounces@lists.osgeo.org" target="_blank">discuss-bounces@lists.osgeo.org</a>>></p>
</div><p class="MsoNormal" style="margin-left:70.8pt">          [mailto:<a href="mailto:discuss-bounces@lists.osgeo.org" target="_blank">discuss-bounces@lists.osgeo.org</a></p><div><p class="MsoNormal" style="margin-left:70.8pt">
<br>       <mailto:<a href="mailto:discuss-bounces@lists.osgeo.org" target="_blank">discuss-bounces@lists.osgeo.org</a>><br>       <mailto:<a href="mailto:discuss-bounces@lists.osgeo.org" target="_blank">discuss-bounces@lists.osgeo.org</a><br>
       <mailto:<a href="mailto:discuss-bounces@lists.osgeo.org" target="_blank">discuss-bounces@lists.osgeo.org</a>>>] *On Behalf Of *JP<br>       Glutting<br>          *Sent:* Friday, 2011-02-04 09:34<br>          *To:* <a href="mailto:discuss@lists.osgeo.org" target="_blank">discuss@lists.osgeo.org</a><br>
       <mailto:<a href="mailto:discuss@lists.osgeo.org" target="_blank">discuss@lists.osgeo.org</a>></p></div><p class="MsoNormal" style="margin-left:70.8pt">       <mailto:<a href="mailto:discuss@lists.osgeo.org" target="_blank">discuss@lists.osgeo.org</a> <mailto:<a href="mailto:discuss@lists.osgeo.org" target="_blank">discuss@lists.osgeo.org</a>>></p>
<div><div><p class="MsoNormal" style="margin-left:70.8pt"><br><br>          *Subject:* [OSGeo-Discuss] Batch geocoding<br><br>          Hello,<br><br>          I have a large set of addresses (around 150k) that I need to<br>
          geocode for a study (my Masters thesis on heat-related<br>       mortality).<br>          I am looking into different solutions, but I can't find<br>       anything<br>          that seems like it would work properly.<br>
<br>          I could script a solution using Google's map API, but there<br>       is a<br>          limit of 2,500 addreses per day (I can get around them with a<br>          little patience).<br><br>          Right now the best solution I am looking at geopy for geocoding<br>
          addresses (<a href="http://code.google.com/p/geopy/" target="_blank">http://code.google.com/p/geopy/</a>). It seems like<br>       a good<br>          system, I think I can use it to pull addresses out of my<br>
       database<br>          and write back coordinates. There is one thing that I am<br>       not sure,<br>          about, though, is whether I am actually allowed to use the<br>       Google<br>          API without my use being liked to a specific web page. The<br>
       terms<br>          of service and form for getting a Google API key require a URL<br>          linked to a Google account. In fact, it looks like the API can<br>          only be used through a web site:<br><br>              "5.2 _Account Key_. After supplying Google with your<br>
       account<br>              information and the URL of your Maps API<br>       Implementation, and<br>              accepting the Terms, you will be issued an alphanumeric key<br>              assigned to you by Google that is uniquely associated with<br>
              your Google Account and the URL of your Maps API<br>              Implementation. Your Maps API Implementation must<br>       import the<br>              Google Maps APIs using this key as described in the<br>
       Maps APIs<br>              Documentation<br>       <<a href="http://code.google.com/apis/maps/documentation/" target="_blank">http://code.google.com/apis/maps/documentation/</a>>, and Google<br><br>              will block requests with an invalid key or invalid URL. You<br>
              may only obtain and use a key in accordance with these<br>       Terms<br>              and the Maps APIs Documentation<br>       <<a href="http://code.google.com/apis/maps/documentation/" target="_blank">http://code.google.com/apis/maps/documentation/</a>>."<br>
<br><br>          So it looks like I can't even get it to work without a URL.<br><br>          I can always write a script that loops through results<br>       extracted<br>          from the database, creates URLs and parses the XML results<br>
       one at<br>          a time, but that seems like a fairly inelegant solution.<br><br>          Does anyone have any good ideas about how to geocode a few<br>          thousand addresses?<br><br>          Many thanks,<br>
<br>          JP<br><br><br>          _______________________________________________<br>          Discuss mailing list<br>       <a href="mailto:Discuss@lists.osgeo.org" target="_blank">Discuss@lists.osgeo.org</a> <mailto:<a href="mailto:Discuss@lists.osgeo.org" target="_blank">Discuss@lists.osgeo.org</a>></p>
</div></div><p class="MsoNormal" style="margin-left:70.8pt">       <mailto:<a href="mailto:Discuss@lists.osgeo.org" target="_blank">Discuss@lists.osgeo.org</a> <mailto:<a href="mailto:Discuss@lists.osgeo.org" target="_blank">Discuss@lists.osgeo.org</a>>></p>
<div><p class="MsoNormal" style="margin-bottom:12.0pt;margin-left:70.8pt"><br><br>       <a href="http://lists.osgeo.org/mailman/listinfo/discuss" target="_blank">http://lists.osgeo.org/mailman/listinfo/discuss</a><br><br>
<br><br>   _______________________________________________<br>   Discuss mailing list<br>   <a href="mailto:Discuss@lists.osgeo.org" target="_blank">Discuss@lists.osgeo.org</a> <mailto:<a href="mailto:Discuss@lists.osgeo.org" target="_blank">Discuss@lists.osgeo.org</a>><br>
   <a href="http://lists.osgeo.org/mailman/listinfo/discuss" target="_blank">http://lists.osgeo.org/mailman/listinfo/discuss</a></p></div></blockquote><div><div><p class="MsoNormal" style="margin-left:70.8pt"><br>_______________________________________________<br>
Discuss mailing list<br><a href="mailto:Discuss@lists.osgeo.org" target="_blank">Discuss@lists.osgeo.org</a><br><a href="http://lists.osgeo.org/mailman/listinfo/discuss" target="_blank">http://lists.osgeo.org/mailman/listinfo/discuss</a></p>
</div></div></div><p class="MsoNormal" style="margin-left:70.8pt"> </p></div></div></div></div><p class="MsoNormal" style="margin-left:70.8pt"> </p></div></div></div></div></div><p class="MsoNormal" style="margin-right:0cm;margin-bottom:12.0pt;margin-left:35.4pt">
<br>_______________________________________________<br>Discuss mailing list<br><a href="mailto:Discuss@lists.osgeo.org" target="_blank">Discuss@lists.osgeo.org</a><br><a href="http://lists.osgeo.org/mailman/listinfo/discuss" target="_blank">http://lists.osgeo.org/mailman/listinfo/discuss</a></p>
</div><p class="MsoNormal" style="margin-left:35.4pt"> </p></div></div></div></div></div><br>_______________________________________________<br>
Discuss mailing list<br>
<a href="mailto:Discuss@lists.osgeo.org">Discuss@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/discuss" target="_blank">http://lists.osgeo.org/mailman/listinfo/discuss</a><br>
<br></blockquote></div><br></div></div>