You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
3.6 KiB
C
116 lines
3.6 KiB
C
3 weeks ago
|
/*=========================================================================
|
||
|
|
||
|
Program: Visualization Toolkit
|
||
|
Module: vtkCityGMLReader.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.
|
||
|
|
||
|
=========================================================================*/
|
||
|
/**
|
||
|
* @class vtkCityGMLReader
|
||
|
* @brief read CityGML data file
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef vtkCityGMLReader_h
|
||
|
#define vtkCityGMLReader_h
|
||
|
|
||
|
#include "vtkIOCityGMLModule.h" // For export macro
|
||
|
#include "vtkMultiBlockDataSetAlgorithm.h"
|
||
|
|
||
|
/**
|
||
|
* @class vtkCityGMLReader
|
||
|
* @brief reads CityGML files
|
||
|
*
|
||
|
* vtkCityGMLReader is a reader for CityGML .gml files. The output is
|
||
|
* a multiblock dataset. We read objects at level of detail (LOD)
|
||
|
* specified (default is 3).
|
||
|
|
||
|
* The leafs of the multiblock dataset (which are polygonal datasets)
|
||
|
* have a field array with one element called "gml_id" which
|
||
|
* corresponds to the gml:id for gml:TriangulatedSurface,
|
||
|
* gml:MultiSurface or gml:CompositeSurface in the CityGML file. If
|
||
|
* the poly dataset has a texture, we specify this with a point array
|
||
|
* called "tcoords" and a field array with one element called
|
||
|
* "texture_uri" containing the path to the texture file. If the poly
|
||
|
* dataset has a app::X3DMaterial we store two fields arrays with 3
|
||
|
* components and 1 tuple: "diffuse_color" and "specular_color" and
|
||
|
* one field array with 1 component and 1 tuple: "transparency".
|
||
|
|
||
|
* Top level children of the multiblock dataset have a field array
|
||
|
* with one element called "element" which contains the CityGML
|
||
|
* element name for example: dem:ReliefFeature, wtr:WaterBody,
|
||
|
* grp::CityObjectGroup (forest), veg:SolitaryVegetationObject,
|
||
|
* brid:Bridge, run:Tunel, tran:Railway, tran:Road, bldg:Building,
|
||
|
* gen:GenericCityObject, luse:LandUse. These nodes also have a gml_id field array.
|
||
|
*/
|
||
|
class VTKIOCITYGML_EXPORT vtkCityGMLReader : public vtkMultiBlockDataSetAlgorithm
|
||
|
{
|
||
|
public:
|
||
|
static vtkCityGMLReader* New();
|
||
|
vtkTypeMacro(vtkCityGMLReader, vtkMultiBlockDataSetAlgorithm);
|
||
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Specify file name of the CityGML data file to read.
|
||
|
*/
|
||
|
vtkSetStringMacro(FileName);
|
||
|
vtkGetStringMacro(FileName);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Specify the level of detail (LOD) to read. Valid values are from 0 (least detailed)
|
||
|
* through 4 (most detailed), default value is 3.
|
||
|
*/
|
||
|
vtkSetClampMacro(LOD, int, 0, 4);
|
||
|
vtkGetMacro(LOD, int);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Certain input files use app:transparency as opacity. Set this field true
|
||
|
* to show that correctly. The default is false.
|
||
|
*/
|
||
|
vtkSetMacro(UseTransparencyAsOpacity, int);
|
||
|
vtkGetMacro(UseTransparencyAsOpacity, int);
|
||
|
vtkBooleanMacro(UseTransparencyAsOpacity, int);
|
||
|
//@}
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Number of buildings read from the file.
|
||
|
* Default is numeric_limits<int>::max().
|
||
|
*/
|
||
|
vtkSetMacro(NumberOfBuildings, int);
|
||
|
vtkGetMacro(NumberOfBuildings, int);
|
||
|
//@}
|
||
|
|
||
|
protected:
|
||
|
vtkCityGMLReader();
|
||
|
~vtkCityGMLReader() override;
|
||
|
|
||
|
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
|
||
|
|
||
|
char* FileName;
|
||
|
int LOD;
|
||
|
int UseTransparencyAsOpacity;
|
||
|
int NumberOfBuildings;
|
||
|
|
||
|
private:
|
||
|
vtkCityGMLReader(const vtkCityGMLReader&) = delete;
|
||
|
void operator=(const vtkCityGMLReader&) = delete;
|
||
|
|
||
|
class Implementation;
|
||
|
Implementation* Impl;
|
||
|
};
|
||
|
|
||
|
#endif
|