//
// NavigatedCoordinateSystem.java
//

/*
VisAD system for interactive analysis and visualization of numerical
data.  Copyright (C) 1996 - 2017 Bill Hibbard, Curtis Rueden, Tom
Rink, Dave Glowacki, Steve Emmerson, Tom Whittaker, Don Murray, and
Tommy Jasmin.
 
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.

This library 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
Library General Public License for more details.

You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA
*/

package visad.georef;

import visad.*;

/**
 * Abstract class for CoordinateSystems that have RealType.Latitude
 * and RealType.Longitude in their reference RealTupleType.
 *
 * @author Don Murray
 */
public abstract class NavigatedCoordinateSystem extends CoordinateSystem
{
    private final int latIndex;
    private final int lonIndex;

    /**
     * Constructs from the type of the reference coordinate system and 
     * units for values in this coordinate system. The reference coordinate
     * system must contain RealType.Latitude and RealType.Longitude.
     *
     * @param reference  The type of the reference coordinate system. The
     *                   reference must contain RealType.Latitude and
     *                   RealType.Longitude.  Values in the reference 
     *                   coordinate system shall be in units of 
     *                   reference.getDefaultUnits() unless specified 
     *                   otherwise.
     * @param units      The default units for this coordinate system. 
     *                   Numeric values in this coordinate system shall be 
     *                   in units of units unless specified otherwise. 
     *                   May be null or an array of null-s.
     * @exception VisADException  Couldn't create necessary VisAD object or
     *                            reference does not contain RealType.Latitude
     *                            or RealType.Longitude.
     */
    public NavigatedCoordinateSystem(RealTupleType reference, Unit[] units)
        throws VisADException
    {
        super(reference, units);
        latIndex = reference.getIndex(RealType.Latitude);
        if (latIndex == -1)
            throw new CoordinateSystemException(
                "NavigatedCoordinateSystem: Reference must contain " + 
                "RealType.Latitude");
        lonIndex = reference.getIndex(RealType.Longitude);
        if (lonIndex == -1)
            throw new CoordinateSystemException(
                "NavigatedCoordinateSystem: Reference must contain " + 
                "RealType.Longitude");
    }

    /**
     * Get the index of RealType.Latitude in the reference RealTupleType.
     *
     * @return  index of RealType.Latitude in the reference
     */
    public int getLatitudeIndex()
    {
        return latIndex;
    }

    /**
     * Get the index of RealType.Longitude in the reference RealTupleType.
     *
     * @return  index of RealType.Longitude in the reference
     */
    public int getLongitudeIndex()
    {
        return lonIndex;
    }

}

 

Ads help maintain this website.