| Astro-FITS-Header documentation | Contained in the Astro-FITS-Header distribution. |
Astro::FITS::Header::GSD - Manipulate FITS headers from GSD files
use Astro::FITS::Header::GSD; $hdr = new Astro::FITS::Header::GSD( Cards => \@cards ); $hdr = new Astro::FITS::Header::GSD( gsdobj => $gsd ); $hdr = new Astro::FITS::Header::GSD( File => $file );
This module makes use of the Starlink GSD (GSD) module to read from a GSD header.
It stores information about a FITS header block in an object. Takes an hash as an argument, with either an array reference pointing to an array of FITS header cards, or a filename, or (alternatively) a GSD object.
Reads a header from a GSD file.
$hdr->configure( Cards => \@cards ); $hdr->configure( Items => \@items ); $hdr->configure( gsdobj => $gsd ); $hdr->configure( File => $filename );
Accepts a GSD object or a filename. If both gsdobj and File keys
exist, gsdobj key takes priority.
The GSD library is read-only. The writehdr method is not implemented for this sub-class.
This module requires the Starlink GSD (GSD) module.
GSD supports keys that are longer than the 8 characters allowed as part of the FITS standard. GSD keys are truncated to 8 characters by this module.
NDF, Astro::FITS::Header, Astro::FITS::Header::Item Astro::FITS::Header::CFITSIO, Astro::FITS::Header::NDF
Tim Jenness <t.jenness@jach.hawaii.edu>, Alasdair Allan <aa@astro.ex.ac.uk>
Copyright (C) 2008-2011 Science & Technology Facilities Council. Copyright (C) 2001-2002 Particle Physics and Astronomy Research Council. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place,Suite 330, Boston, MA 02111-1307, USA
| Astro-FITS-Header documentation | Contained in the Astro-FITS-Header distribution. |
package Astro::FITS::Header::GSD;
use strict; use Carp; use GSD; use Astro::FITS::Header::Item; use base qw/ Astro::FITS::Header /; use vars qw/ $VERSION /; $VERSION = 3.01;
sub configure { my $self = shift; my %args = @_; my ($indf, $started); my $task = ref($self); return $self->SUPER::configure(%args) if exists $args{Cards} or exists $args{Items}; my $gsd; if (exists $args{gsdobj} && defined $args{gsdobj}) { $gsd = $args{gsdobj}; croak "gsd object must be of class 'GSD'" unless UNIVERSAL::isa($gsd, 'GSD'); } elsif (exists $args{File}) { # Open the file $gsd = new GSD( $args{File} ); croak "Error opening gsd file $args{File}" unless defined $gsd; } else { croak "Argument hash does not contain gsdobj, File or Cards!"; } # Somewhere to store the FITS information my @cards; # Read through all the items extracting the scalar items for my $i (1..$gsd->nitems) { my ($name, $units, $type, $array) = $gsd->Item( $i ); if (!$array) { # Only scalars my $value = $gsd->GetByNum( $i ); # Generate a comment string my $comment = ''; $comment .= "[$units]" if $units; if (length($name) > 8 ) { $comment .= " Name shortened from $name"; $name = substr($name, 0, 8); } # We need to convert the type from GSD to one that's a FITS # type. if( ( $type eq 'R' ) || ( $type eq 'D' ) ) { $type = "FLOAT"; } elsif( ( $type eq 'I' ) || ( $type eq 'W' ) || ( $type eq 'B' ) ) { $type = "INT"; } elsif( $type eq 'C' ) { $type = "STRING"; } elsif( $type eq 'L' ) { $type = "LOGICAL"; } # We do not have an actual FITS style string so we just # create the item directly push(@cards, new Astro::FITS::Header::Item( Keyword => $name, Comment => $comment, Value => $value, Type => $type, )); } } # Configure the object $self->SUPER::configure( Items => \@cards ); return; }
sub writehdr { croak "The GSD library is read-only. The writehdr method is not implemented for this sub-class."; }
1;