NAME

XML::Generator::SVG::ShapeFile - Generate SAX2 events for an SVG rendering of an ESRI shapefile.

SYNOPSIS

use PerlIO::gzip;
use XML::SAX::Writer;
use XML::Generator::SVG::ShapeFile;

# see CAVEATS below

open SVGZ, ">:gzip", "/path/to/my/output.svgz"
   || die "do the right thing, luke";

my $writer = XML::SAX::Writer->new(Output => \*SVGZ);
my $svg    = XML::Generator::SVG::ShapeFile->new(Handler=>$writer);

$svg->set_width(1024);
$svg->set_decimals(1);

$svg->set_title("You are here");
$svg->set_stylesheet("foo.css");

$svg->add_point({lat=>"123",long=>"456"});

$svg->render("/path/to/shapefile");

DESCRIPTION

Generate SAX2 events for an SVG rendering of an ESRI shapefile.

CAVEATS

Depending on your input data, this package may generate huge SVG files if left uncompressed.

DOCUMENT STRUCTURE

+ svg

  + metadata
    + rdf:Description [@rdf:about = '...']
      ~ dc:title
      ~ dc:description
      ~ dc:publisher
      ~ dc:language
      - dc:date
      - dc:format

  + g [@id = 'map'] 
    - rect [@id = 'canvas']
    - path                       (+)

  ~ g [@id = 'locations']

    + g [@id = '...']            (+)
      - title
      -circle

PACKAGE METHODS

__PACKAGE__->new(\%args)

Inherits from XML::SAX::Base, so constructor arguments are the same.

OBJECT METHODS

$obj->set_width($int)

Required

$obj->set_decimals($int)

Required

$obj->set_uri($str)

Set the URI used to identify the document in RDF metadata section.

Default is '#'

$obj->set_title($str)

Set the title for the document's RDF metadata section.

$obj->set_description($str)

Set the description for the document's RDF metadata section.

$obj->set_publisher($str)

Set the publisher for the document's RDF metadata section.

$obj->set_language($str)

Set the language for the document's RDF metadata section.

$obj->set_stylesheet($str)

Set the URI for the document's CSS stylesheet.

$obj->add_point(\%args)

Points are added as SVG circle elements.

Valid arguments are :

  • lat

    The latitude, in decimal form, of the point you are adding.

    Required

  • long

    The longitude, in decimal form, of the point you are adding.

    Required

  • id

    Default is 'id-<lat>-<long>', where decimal points are replaced by '-'

  • title

    A label for the point you are adding.

  • radius

    The radius of the point you are adding.

    Default is '1'

  • style

    CSS stylings specific to the point you are adding.

$obj->render($path)

Generate SAX2/SVG events for an ESRI shapefile.

VERSION

0.2

DATE

$Date: 2004/08/21 04:13:28 $

AUTHOR

Aaron Straup Cope <ascope@cpan.org>

SEE ALSO

http://www.webmapper.net/svg/create/

(these are the nice people who did most of the hard work for this package)

Geo::ShapeFile

LICENSE

Copyright (c) 2004 Aaron Straup Cope. All rights reserved.

This is free software, you may use it and distribute it under the same terms as Perl itself.