Algorithm-SpatialIndex-Strategy-MedianQuadTree

 view release on metacpan or  search on metacpan

lib/Algorithm/SpatialIndex/Strategy/MedianQuadTree.pm  view on Meta::CPAN

use Algorithm::SpatialIndex::Strategy::QuadTree qw(:all);
use parent 'Algorithm::SpatialIndex::Strategy::QuadTree';

use Statistics::CaseResampling qw(median);

sub _node_split_coords {
  my ($self, $node, $bucket, $coords) = @_;
  my $items = $bucket->items;
  if (@$items == 0) {
    # degrade to a quad tree
    return $self->SUPER::_node_split_coords($node, $bucket, $coords);
  }

  my $xmedian = median([map $_->[XI()], @$items]);
  my $ymedian = median([map $_->[YI()], @$items]);

  return($xmedian, $ymedian);
}

1;
__END__



( run in 0.887 second using v1.01-cache-2.11-cpan-49f99fa48dc )