.\" Automatically generated by Pod::Man 2.1801 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Geography::NationalGrid::TW 3pm" .TH Geography::NationalGrid::TW 3pm "2009-09-06" "perl v5.10.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Geography::NationalGrid::TW \- Module to convert Taiwan Datum (TWD67/TM2, TWD97/TM2) to/from Latitude and Longitude .SH "SYNOPSIS" .IX Header "SYNOPSIS" You should _create_ the object using the Geography::NationalGrid factory class, but you still need to know the object interface, given below. .PP .Vb 11 \& use Geography::NationalGrid; \& use Geography::NationalGrid::TW; \& # default TWD97 \& my $point1 = new Geography::NationalGrid::TW( \& \*(AqEasting\*(Aq => 302721.36, \& \*(AqNorthing\*(Aq => 2768851.3995, \& ); \& printf("Point 1 is %f X and %f Y\en", $point1\->easting, $point1\->northing); \& printf("Point 1 is %f N and %f E\en", $point1\->latitude, $point1\->longitude); \& # transform to TWD67 \& $point1\->transform(\*(AqTWD67\*(Aq); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" Once created, the object allows you to retrieve information about the point that the object represents. For example you can create an object using easting / northing and the retrieve the latitude / longitude. .SH "OPTIONS" .IX Header "OPTIONS" These are the options accepted in the constructor. You \s-1MUST\s0 provide either Latitude and Longitude, or Easting and Northing. .IP "Projection" 4 .IX Item "Projection" Default is '\s-1TWD97\s0', the \*(L"\s-1TAIWAN\s0 \s-1DATUM\s0 97\*(R". Another projection recognized is '\s-1TWD67\s0', but only '\s-1TWD97\s0' is tested. .IP "GridReference" 4 .IX Item "GridReference" There is no grid reference in Taiwan datum. Grid related functions are disabled. .IP "Latitude" 4 .IX Item "Latitude" The latitude of the point. Actually should be the latitude using the spheroid related to the grid projection but for most purposes the difference is not too great. Specify the amount in any of these ways: as a decimal number of degrees, a reference to an array of three values (i.e. [ \f(CW$degrees\fR, \f(CW$minutes\fR, \f(CW$seconds\fR ]), or as a string of the form '52d 13m 12s'. North is positive degrees, south is negative degrees. .IP "Longitude" 4 .IX Item "Longitude" As for latitude, except that east is positive degrees, west is negative degrees. .IP "Easting" 4 .IX Item "Easting" The number of metres east of the grid origin, using grid east. .IP "Northing" 4 .IX Item "Northing" The number of metres north of the grid origin, using grid north. .IP "Userdata" 4 .IX Item "Userdata" The value of this option is a hash-reference, which you can fill with whatever you want \- typical usage might be to specify \f(CW\*(C`Userdata =\*(C'\fR { Name => 'Dublin Observatory' }> but add whatever you want. Access using the \fIdata()\fR method. .SH "METHODS" .IX Header "METHODS" Most of these methods take no arguments. Some are inherited from Geography::NationalGrid .IP "latitude" 4 .IX Item "latitude" Returns the latitude of the point in a floating point number of degrees, north being positive. .IP "longitude" 4 .IX Item "longitude" As latitude, but east is positive degrees. .IP "easting" 4 .IX Item "easting" How many metres east of the origin the point is. The precision of this value depends on how it was derived, but is truncated to an integer number of metres. .IP "northing" 4 .IX Item "northing" How many metres north of the origin the point is. The precision of this value depends on how it was derived, but is truncated to an integer number of metres. .IP "deg2string( \s-1DEGREES\s0 )" 4 .IX Item "deg2string( DEGREES )" Given a floating point number of degrees, returns a string of the form '51d 38m 34.34s'. Intended for formatting, like: \&\f(CW$self\fR\->deg2string( \f(CW$self\fR\->latitude ); .IP "data( \s-1PARAMETER_NAME\s0 )" 4 .IX Item "data( PARAMETER_NAME )" Returns the item from the Userdata hash whose key is the \s-1PARAMETER_NAME\s0. .IP "transform( \s-1PROJECTION\s0 )" 4 .IX Item "transform( PROJECTION )" Transform the point to the new projection, i.e. \s-1TWD67\s0 to \s-1TWD97\s0 or reverse. Return the point after transformation and keep original point intact. Uses the formula proposed by John Hsieh which is supposed to provide 2 meter accuracy conversions. .SH "ACCURACY AND PRECISION" .IX Header "ACCURACY AND PRECISION" The routines used in this code may not give you completely accurate results for various mathematical and theoretical reasons. In tests the results appeared to be correct, but it may be that under certain conditions the output could be highly inaccurate. It is likely that output accuracy decreases further from the datum, and behaviour is probably divergent outside the intended area of the grid. .PP This module has been coded in good faith but it may still get things wrong. Hence, it is recommended that this module is used for preliminary calculations only, and that it is \s-1NOT\s0 used under any circumstance where its lack of accuracy could cause any harm, loss or other problems of any kind. Beware! .SH "REFERENCES" .IX Header "REFERENCES" http://wiki.osgeo.org/wiki/Taiwan_datums .PP John Hsieh \- http://gis.thl.ncku.edu.tw/coordtrans/coordtrans.aspx .SH "AUTHOR AND COPYRIGHT" .IX Header "AUTHOR AND COPYRIGHT" Copyright (c) 2006 Yen-Ming Lee \f(CW\*(C`\*(C'\fR. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.