The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Geo::JSON - Perl OO interface for geojson

SYNOPSIS

    use Geo::JSON;
    
    my $obj = Geo::JSON->from_json( $json );
    
    $obj->to_json();

DESCRIPTION

Convert to and from geojson using Perl objects. GeoJSON objects represent various geographical positions - points, lines, polygons, etc.

Currently supports 2 or 3 dimensions (longitude, latitude, altitude). Further dimensions in positions are ignored for calculations and comparisons, but will be read-from and written-to.

GEOJSON SPECIFICATION

See: http://www.geojson.org/geojson-spec.html

GEOJSON MEMBERS (ATTRIBUTES)

See the specification for the full details, but the basics are as follows:

  • type

    Determines the object the json will be turned into

  • position

    Not explicitly named in the json, but an array of at least two numbers representing a location in x, y, z order (either Easting, Northing, Altitude or Longitude, Latitude, Altitude as appropriate).

    Additional numbers may be present but ignored by this package for calculations.

  • coordinates

    Defined in geometry objects (Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon). Will consist of a single position (Point), an array of positions (MultiPoint, LineString), an array of arrays of positions (MultiLineString, Polygon) or an array of arrays of arrays of positions (MultiPolygon). The positions within a single object should all have the same number of axes and be in the same axis order.

  • bbox

    Optional, defining a bounding box that the position(s) are contained by.

    The box is defined by a array of 2*n items, where n is the number of dimensions in a position. The items are the lowest value for an axis followed by the highest value for an axis, in the axis order used in the positions.

    The Co-ordinates Reference System for the bounding box is assumed to match that of the object.

  • crs

    Optional, defining the Co-ordinates Reference System the object is using. See Geo::JSON::CRS for more details.

GEOMETRY OBJECTS

FEATURE OBJECTS

  • Geo::JSON::Feature

    Any of the above objects (as attribute feature), together with a data structure (as attruibute properties)

FEATURE COLLECTION OBJECTS

METHODS

from_json

    my $obj = Geo::JSON->from_json( $json );

Takes a geojson string, returns the object it represents.

to_json

    $obj->to_json();
    $obj->to_json( $codec );

Call on a Geo::JSON object. Returns the JSON that represents the object.

Pass in an optional JSON codec to modify the default behaviour of the JSON returned.

load

    my $obj = Geo::JSON->load( { type => 'Point', coordinates => ... } );

Creates a Geo::JSON object from a hashref.

This is used for coercion of attributes during object creation, and probably should not be called directly otherwise.

CLASS METHODS

codec

    Geo::JSON->codec->canonical(1)->pretty;
    
    my $prev_codec = Geo::JSON->codec($new_codec);

Set options on or replace JSON codec.

THANKS

Tim Bunce - for codec suggestions and bug spotting.

SEE ALSO

SUPPORT

Bugs / Feature Requests

Please report any bugs or feature requests through the issue tracker at https://github.com/mjemmeson/Geo-JSON/issues. You will be notified automatically of any progress on your issue.

Source Code

This is open source software. The code repository is available for public review and contribution under the terms of the license.

https://github.com/mjemmeson/Geo-JSON

  git clone https://github.com/mjemmeson/Geo-JSON.git

AUTHOR

Michael Jemmeson <mjemmeson@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2015 by Michael Jemmeson <mjemmeson@cpan.org>.

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