NAME
GPS::Point::Cluster - Groups GPS Points in to clusters
SYNOPSIS
use GPS::Point::Cluster;
my $cluster=GPS::Point::Cluster->new(
separation => 500, #meters
interlude => 600, #seconds
);
my @pt=({}, {}, {}, ...); #{lat=>39, lon=>-77, time=>$epoch_seconds}
foreach my $pt (@pt) {
my $obj=$cluster->merge_attempt($pt);
if (defined $obj) {
print join(",", $cluster->index, $cluster->start_dt, $cluster->end_dt,
$cluster->lat, $cluster->lon, $cluster->weight), "\n";
$cluster=$obj;
}
}
DESCRIPTION
USAGE
CONSTRUCTOR
new
my $cluster = GPS::Point::Cluster->new(separation=>500);
METHODS
initialize
settings
Returns a hash of default settings to transfer from one cluster to the next.
my $hash=$cluster->settings;
my %hash=$cluster->settings;
index
Returns the cluster index which is a running integer.
separation
The threshold distance in meters between the cluster and the test point.
interlude
The threshold duration in seconds between the cluster end time and the test point.
lat
Latitude in decimal degrees WGS-84. The latitude is calculated as a mathimatical average of all latitudes that constitute the cluster.
lon
Longitude in decimal degrees WGS-84. The longitude is calculated as a mathimatical average of all longitudes that constitute the cluster.
weight
The count of points that constitute the cluster.
start
Returns the cluster start date time as seconds from epoch
start_dt
Returns the cluster start date time as a DateTime object
end
Returns the cluster end date time as seconds from epoch
end_dt
Returns the cluster end date time as a DateTime object
GeoInverse
Returns a Geo::Inverse object which is used to calculate geodetic distances.
merge_attempt
Attempts to merge the point into the cluster. If the point does not fit in the cluster then the method returns a new cluster. If it merged, then it returns undef.
my $new_cluster=$cluster->merge_attempt($pt);
if (defined $new_cluster) {
#New cluster is constructed with $pt as the only member. $cluster is unmodified.
} else {
#$pt is added the cluster. The cluster is updated appropriately.
}
distance
Returns the distance in meters between the cluster and the point.
my $distance=$cluster->distance($pt);
duration
Returns the duration in seconds between the cluster and the point.
my $duration=$cluster->duration($pt);
merge
Merges point into cluster returns cluster.
my $cluster->merge($pt);
BUGS
SUPPORT
AUTHOR
Michael R. Davis
CPAN ID: MRDVT
STOP, LLC
domain=>michaelrdavis,tld=>com,account=>perl
http://www.stopllc.com/
COPYRIGHT
This program is free software licensed under the...
The BSD License
The full text of the license can be found in the LICENSE file included with this module.