GeoGraticle
VTKExamples/Cxx/Geovis/GeoGraticle
Description¶
vtkGeoGraticle generates polydata to illustrate the distortions introduced by a map projection. The level parameter specifies the number of lines to be drawn. Poles are treated differently than other regions; hence the use of a Level parameter instead of a NumberOfLines parameter. The latitude and longitude are specified as half-open intervals with units of degrees. By default the latitude bounds are [-90,90[ and the longitude bounds are [0,180[.
Note
The vtkGeovisCore classes as well as the module vtkViewsGeovis have been deprecated for VTK 8.2 and will be removed in a future version. See VTK Merge Request 4395
Code¶
GeoGraticle.cxx
#include <vtkSmartPointer.h> #include <vtkGeoGraticule.h> #include <vtkActor.h> #include <vtkGeoProjection.h> #include <vtkGeoTransform.h> #include <vtkPolyDataMapper.h> #include <vtkRenderer.h> #include <vtkRenderWindow.h> #include <vtkRenderWindowInteractor.h> #include <vtkTransformFilter.h> #include <vtkXMLPolyDataReader.h> #include <vtkNamedColors.h> int main( int argc, char* argv[] ) { vtkSmartPointer<vtkNamedColors> colors = vtkSmartPointer<vtkNamedColors>::New(); int latLevel = 2; int lngLevel = 2; const char* pname = "rouss"; vtkSmartPointer<vtkGeoGraticule> geoGraticle = vtkSmartPointer<vtkGeoGraticule>::New(); vtkSmartPointer<vtkGeoTransform> transformProjection = vtkSmartPointer<vtkGeoTransform>::New(); vtkSmartPointer<vtkGeoProjection> destinationProjection = vtkSmartPointer<vtkGeoProjection>::New(); vtkSmartPointer<vtkGeoProjection> sourceProjection = vtkSmartPointer<vtkGeoProjection>::New(); vtkSmartPointer<vtkTransformFilter> transformGraticle = vtkSmartPointer<vtkTransformFilter>::New(); vtkSmartPointer<vtkXMLPolyDataReader> reader = vtkSmartPointer<vtkXMLPolyDataReader>::New(); vtkSmartPointer<vtkTransformFilter> transformReader = vtkSmartPointer<vtkTransformFilter>::New(); vtkSmartPointer<vtkPolyDataMapper> graticleMapper = vtkSmartPointer<vtkPolyDataMapper>::New(); vtkSmartPointer<vtkPolyDataMapper> readerMapper = vtkSmartPointer<vtkPolyDataMapper>::New(); vtkSmartPointer<vtkActor> graticleActor = vtkSmartPointer<vtkActor>::New(); vtkSmartPointer<vtkActor> readerActor = vtkSmartPointer<vtkActor>::New(); geoGraticle->SetGeometryType( vtkGeoGraticule::POLYLINES ); geoGraticle->SetLatitudeLevel( latLevel ); geoGraticle->SetLongitudeLevel( lngLevel ); geoGraticle->SetLongitudeBounds( -180, 180 ); geoGraticle->SetLatitudeBounds( -90, 90 ); // destinationProjection defaults to latlong. destinationProjection->SetName( pname ); destinationProjection->SetCentralMeridian( 0. ); transformProjection->SetSourceProjection( sourceProjection ); transformProjection->SetDestinationProjection( destinationProjection ); transformGraticle->SetInputConnection( geoGraticle->GetOutputPort() ); transformGraticle->SetTransform( transformProjection ); graticleMapper->SetInputConnection( transformGraticle->GetOutputPort() ); graticleActor->SetMapper( graticleMapper ); reader->SetFileName(argv[1]); transformReader->SetTransform( transformProjection ); transformReader->SetInputConnection( reader->GetOutputPort() ); readerMapper->SetInputConnection( transformReader->GetOutputPort() ); readerActor->SetMapper( readerMapper ); vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New(); vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New(); vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New(); renderWindow->SetInteractor( interactor ); renderWindow->AddRenderer( renderer ); renderWindow->SetSize(640, 480); renderer->SetBackground(colors->GetColor3d("BurlyWood").GetData()); renderer->AddActor( readerActor ); renderer->AddActor( graticleActor ); renderWindow->Render(); interactor->Initialize(); interactor->Start(); return EXIT_SUCCESS; };
CMakeLists.txt¶
cmake_minimum_required(VERSION 2.8) PROJECT(GeoGraticle) find_package(VTK REQUIRED) include(${VTK_USE_FILE}) add_executable(GeoGraticle MACOSX_BUNDLE GeoGraticle.cxx ) target_link_libraries(GeoGraticle ${VTK_LIBRARIES})
Download and Build GeoGraticle¶
Click here to download GeoGraticle and its CMakeLists.txt file. Once the tarball GeoGraticle.tar has been downloaded and extracted,
cd GeoGraticle/build
If VTK is installed:
cmake ..
If VTK is not installed but compiled on your system, you will need to specify the path to your VTK build:
cmake -DVTK_DIR:PATH=/home/me/vtk_build ..
Build the project:
make
and run it:
./GeoGraticle
WINDOWS USERS
Be sure to add the VTK bin directory to your path. This will resolve the VTK dll's at run time.