/*========================================================================= Program: Visualization Toolkit Module: vtkGeoAssignCoordinates.h Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ /*------------------------------------------------------------------------- Copyright 2008 Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains certain rights in this software. -------------------------------------------------------------------------*/ /** * @class vtkGeoAssignCoordinates * @brief Given latitude and longitude arrays, * take the values in those arrays and convert them to x,y,z world coordinates. * * * Givem latitude and longitude arrays, * take the values in those arrays and convert them to x,y,z world coordinates. * Uses a spherical model of the earth to do the conversion. * The position is in meters relative to the center of the earth. * * If a transform is given, use the transform to convert latitude and longitude * to the world coordinate. */ #ifndef vtkGeoAssignCoordinates_h #define vtkGeoAssignCoordinates_h #include "vtkGeovisCoreModule.h" // For export macro #include "vtkPassInputTypeAlgorithm.h" class vtkAbstractTransform; class VTKGEOVISCORE_EXPORT vtkGeoAssignCoordinates : public vtkPassInputTypeAlgorithm { public: static vtkGeoAssignCoordinates *New(); vtkTypeMacro(vtkGeoAssignCoordinates, vtkPassInputTypeAlgorithm); void PrintSelf(ostream& os, vtkIndent indent) override; //@{ /** * Set the longitude coordinate array name. */ vtkSetStringMacro(LongitudeArrayName); vtkGetStringMacro(LongitudeArrayName); //@} //@{ /** * Set the latitude coordinate array name. */ vtkSetStringMacro(LatitudeArrayName); vtkGetStringMacro(LatitudeArrayName); //@} //@{ /** * The base radius to use in GLOBAL mode. * Default is the earth's radius. */ vtkSetMacro(GlobeRadius, double); vtkGetMacro(GlobeRadius, double); //@} //@{ /** * The transform to use to convert coordinates of the form * (lat, long, 0) to (x, y z). If this is nullptr (the default), * use GlobeRadius to perform a spherical embedding. */ virtual void SetTransform(vtkAbstractTransform* trans); vtkGetObjectMacro(Transform, vtkAbstractTransform); //@} //@{ /** * If on, uses LatitudeArrayName and LongitudeArrayName to * move values in data arrays into the points of the data set. * Turn off if the latitude and longitude are already in * the points. */ vtkSetMacro(CoordinatesInArrays, bool); vtkGetMacro(CoordinatesInArrays, bool); vtkBooleanMacro(CoordinatesInArrays, bool); //@} protected: vtkGeoAssignCoordinates(); ~vtkGeoAssignCoordinates() override; int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override; int FillInputPortInformation(int port, vtkInformation* info) override; private: char* LongitudeArrayName; char* LatitudeArrayName; double GlobeRadius; bool CoordinatesInArrays; vtkAbstractTransform* Transform; vtkGeoAssignCoordinates(const vtkGeoAssignCoordinates&) = delete; void operator=(const vtkGeoAssignCoordinates&) = delete; }; #endif