logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Geo::WKT::Simple - Simple utils to parse/build Well Known Text(WKT) format string.

Author

       Yuto KAWAMURA(kawamuray) <kawamuray.dadada {at} gmail.com>

Description

       Geo::WKT::Simple is a module to provide simple parser/builder for Well Known Text(WKT) format string.

       This module can parse/build WKT format string into/from pure perl data structure.

   WhynotGeo::WKT?
       There is few reasons.

       - I just need simple return value represented by pure perl data structure. Geo::WKT returns results as a
       Geo::* instances which represents each type of geodetic components.
       - Geo::Proj4 dependencies. Geo::Proj4 depends to libproj4
       - I need to support MULTI(LINESTRING|POLYGON).

Functions

       See SYNOPSIS section for usages.

   wkt_parse_point()
       Parse WKT Point string.

   wkt_parse_linestring()
       Parse WKT Linestring string.

   wkt_parse_multilinestring()
       Parse WKT MultiLinestring string.

   wkt_parse_polygon()
       Parse WKT Polygon string.

   wkt_parse_multipolygon()
       Parse WKT MultiPolygon string.

   wkt_parse_geometrycollection()
       Parse WKT GeometryCollection string.

   wkt_parse()
       Dispatch to parser which specified in first argument.

         wkt_parse(POINT => 'POINT(10 20)') is equivalent to wkt_parse_point('POINT(10 20)')

   wkt_make_point()
       Build WKT Point string.

   wkt_make_linestring()
       Build WKT Linestring string.

   wkt_make_multilinestring()
       Build WKT MultiLinestring string.

   wkt_make_polygon()
       Build WKT Polygon string.

   wkt_make_multipolygon()
       Build WKT MultiPolygon string.

   wkt_make_geometrycollection()
       Build WKT GeometryCollection string.

   wkt_make()
       Dispatch to builder function which specified in first argument.

         wkt_make(POINT => [ 10, 20 ]) is equivalent to wkt_make_point(10, 20)

License

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

perl v5.40.0                                       2024-10-02                              Geo::WKT::Simple(3pm)

Name

       Geo::WKT::Simple - Simple utils to parse/build Well Known Text(WKT) format string.

See Also

       Geo::WKT: As same as this module except few things.

       Well-known text: http://en.wikipedia.org/wiki/Well-known_text

Synopsis

         use Geo::WKT::Simple;           # Export all
         or
         use Geo::WKT::Simple ':parse';  # Only WKT parser functions
         or
         use Geo::WKT::Simple ':make';   # Only WKT builder functions

         # WKT POINT
         wkt_parse_point('POINT(10 20)');                  #=> (10 20)
         wkt_make_point(10, 20);                           #=> POINT(10 20)

         # WKT LINESTRING
         wkt_parse_linestring('LINESTRING(1 2, 3 4)');     #=> ([ 1, 2 ], [ 3, 4 ])
         wkt_make_linestring([ 1, 2 ], [ 3, 4 ]);          #=> LINESTRING(1 2, 3 4)

         # WKT POLYGON
         wkt_parse_polygon('POLYGON((1 2, 3 4, 5 6, 1 2), (1 2, 3 4, 5 6, 1 2))');
         #=> (
         #      [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 1, 2 ] ],
         #      [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 1, 2 ] ],
         #   )
         wkt_make_polygon(
             [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 1, 2 ] ],
             [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 1, 2 ] ],
         ); #=> 'POLYGON((1 2, 3 4, 5 6, 1 2), (1 2, 3 4, 5 6, 1 2))'

         # And like so on for (MULTI)LINESTRING|POLYGON

         # WKT GEOMETRYCOLLECTION
         wkt_parse_geometrycollection(
             'GEOMETRYCOLLECTION(POINT(10 20), LINESTRING(10 20, 30 40))'
         ); #=> ([ POINT => [ 10, 20 ] ], [ LINESTRING => [ [ 10, 20 ], [ 30, 40 ] ] ])
         wkt_make_geometrycollection(
             [ POINT => [ 10, 20 ] ], [ LINESTRING => [ [ 10, 20 ], [ 30, 40 ] ] ]
         ); #=> 'GEOMETRYCOLLECTION(POINT(10 20), LINESTRING(10 20, 30 40))'

         # If you don't like too many exported symbols:
         use Geo::WKT::Simple qw/ wkt_parse wkt_make /;
         wkt_parse(POINT => 'POINT(10 20)');
         wkt_make(POINT => [ 10, 20 ]);

See Also