aboutsummaryrefslogtreecommitdiffstats
path: root/bin/populate_bing_cache
diff options
context:
space:
mode:
authorStruan Donald <struan@exo.org.uk>2011-11-30 22:04:33 +0000
committerStruan Donald <struan@exo.org.uk>2011-11-30 22:04:33 +0000
commit0f43cd3b8fbe82256c052aaad65c6a16e3668cbe (patch)
treee80405918a85cb8847d4a4ef3e602ff400cba4f0 /bin/populate_bing_cache
parentd69c8404b6ca7cc3b92f3fd1d175b000f2f82e08 (diff)
parent783601d101ad0ff356921c2f3af0e8b3b9d6e24e (diff)
Merge branch 'rss-addresses'
Conflicts: db/schema.sql perllib/FixMyStreet/DB/Result/Problem.pm
Diffstat (limited to 'bin/populate_bing_cache')
-rwxr-xr-xbin/populate_bing_cache52
1 files changed, 52 insertions, 0 deletions
diff --git a/bin/populate_bing_cache b/bin/populate_bing_cache
new file mode 100755
index 000000000..bb5d4e77a
--- /dev/null
+++ b/bin/populate_bing_cache
@@ -0,0 +1,52 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+require 5.8.0;
+
+use Data::Dumper;
+
+use FixMyStreet::App;
+use FixMyStreet::Geocode::Bing;
+
+my $reports = FixMyStreet::App->model('DB::Problem')->search(
+ {
+ geocode => undef,
+ confirmed => { '!=', undef },
+ latitude => { '!=', 0 },
+ longitude => { '!=', 0 },
+ },
+ { select => [qw/id geocode confirmed latitude longitude/] }
+);
+
+my $num_reports = $reports->count();
+print "Found $num_reports lacking geocode information\n";
+
+my $time_to_do = ( $num_reports * 10 ) / 60 / 60;
+if ( $time_to_do > 24 ) {
+ my $days = $time_to_do / 24;
+ my $hours = $time_to_do % 24;
+ printf( "Should take %d days and %d hours to finish\n", $days, $hours );
+} elsif ( $time_to_do < 1 ) {
+ printf( "Should take %d minutes to finish\n", $time_to_do * 60 );
+} else {
+ my $mins = ( $num_reports * 10 ) / 60 % 60;
+ printf( "Should take %d hours and %d minutes to finish\n", $time_to_do, $mins );
+}
+
+while ( my $report = $reports->next ) {
+ $num_reports--;
+ next unless $report->latitude && $report->longitude;
+ next if $report->geocode;
+
+ my $j = FixMyStreet::Geocode::Bing::reverse( $report->latitude,
+ $report->longitude );
+
+ $report->geocode($j);
+ $report->update;
+
+ print "$num_reports left to populate\n" unless $num_reports % 100;
+ sleep 10;
+}
+
+print "done\n";