NAME

Geo::UK::Postcode::CodePointOpen - Utility object to extract OS Code-Point Open data for British Postcodes

SYNOPSIS

use Geo::UK::Postcode::CodePointOpen;

my $code_point_open = Geo::UK::Postcode::CodePointOpen->new( path => ... );

my $metadata = $code_point_open->metadata();

my $iterator = $code_point_open->read_iterator();
while ( my $pc = $iterator->() ) {
    ...;
}

my $batch_iterator = $code_point_open->batch_iterator();
while ( my @batch = $batch_iterator->() ) {
    ...;
}

# Just access data files (as Path::Tiny objects)
my @data_files = sort $self->data_dir->children( qr/\.csv$/ );

DESCRIPTION

Util object to read OS Code-Point Open data.

ATTRIBUTES

path

Set at construction to the directory containing the contents of the OS Code-Point Open Zip file.

doc_dir, data_dir

Path::Tiny objects for the documentation and CSV data directories.

metadata

Hashref parsed from the Doc/metadata.txt file. Contains postcode counts per area, date data generated, etc.

METHODS

new

my $code_point_open = Geo::UK::Postcode::CodePointOpen->new(
    path => ...,    # path to Unzipped Code-Point Open directory
);

Constructor.

read_iterator

my $iterator = $code_point_open->read_iterator(
    short_column_names => 1,    # default is false (long names)
    include_lat_long   => 1,    # default is false
    split_postcode     => 1,    # split into outcode/incode
);

while ( my $pc = $iterator->() ) {
    ...
}

Returns a coderef iterator. Call that coderef repeatedly to get a hashref of data for each postcode in data files.

batch_iterator

my $batch_iterator = $code_point_open->batch_iterator(
    batch_size         => 100,  # number per batch (default 100)
    short_column_names => 1,    # default is false (long names)
    include_lat_long   => 1,    # default is false
    split_postcode     => 1,    # split into outcode/incode
);

while ( my @batch = $batch_iterator->() ) {
    ...
}

Returns a coderef iterator. Call that coderef repeatedly to get a list of postcode hashrefs.

SEE ALSO

AUTHOR

Michael Jemmeson <mjemmeson@cpan.org>

COPYRIGHT

Copyright 2014- Michael Jemmeson

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.