NAME
Geo::Coder::Many::Util
DESCRIPTION
Miscellaneous routines that are convenient for, for example, generating commonly used callback methods to be used with Geo::Coder::Many.
SUBROUTINES
min_precision_filter
Constructs a result filter callback which only passes results which exceed the specified precision.
country_filter
Constructs a result filter callback which only passes results with the specified 'country' value.
max_precision_picker
A picker callback that requests all available results, and then picks the one with the highest precision. Note that querying all available geocoders may take a comparatively long time.
Example:
$GCMU->set_picker_callback( \&max_precision_picker );
consensus_picker
Returns a picker callback that requires at least 'required_consensus' separate geocoder results to be within a bounding square of side-length 'nearness'. If this can be satisfied, the result from that square which has the highest precision will be returned. Otherwise, asks for more/returns undef.
WARNING: quadratic time in length of @$ra_results - could be improved if necessary.
Example:
$GCMU->set_picker_callback( consensus_picker({nearness => 0.1, required_consensus => 2}) );
determine_precision_from_bbox
my $precision = Geo::Coder::Many::Util->determine_precision_from_bbox({
'lon1' => $sw_lon,
'lat1' => $sw_lat,
'lon2' => $ne_lon,
'lat2' => $ne_lat,
});
returns a precison between 0 (unknown) and 1 (highly precise) based on the size of the box supplied
INTERNAL ROUTINES
_in_box
Used by consensus_picker - returns true if ($lat, $lon) is inside the square with centre ($centre_lat, $centre_lon) and side length 2*$half_width.
_find_max_precision
Given a reference to an array of result hashes, returns the one with the highest precision value