VTK
vtkGeoJSONFeature.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkGeoJSONFeature.h
5
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13
14=========================================================================*/
23#ifndef vtkGeoJSONFeature_h
24#define vtkGeoJSONFeature_h
25
26// VTK Includes
27#include "vtkIOGeoJSONModule.h" // For export macro
28#include "vtkDataObject.h"
29#include "vtk_jsoncpp.h" // For json parser
30
31class vtkPolyData;
32
33// Currently implemented geoJSON compatible Geometries
34#define GeoJSON_POINT "Point"
35#define GeoJSON_MULTI_POINT "MultiPoint"
36#define GeoJSON_LINE_STRING "LineString"
37#define GeoJSON_MULTI_LINE_STRING "MultiLineString"
38#define GeoJSON_POLYGON "Polygon"
39#define GeoJSON_MULTI_POLYGON "MultiPolygon"
40#define GeoJSON_GEOMETRY_COLLECTION "GeometryCollection"
41
42class VTKIOGEOJSON_EXPORT vtkGeoJSONFeature : public vtkDataObject
43{
44public:
46 virtual void PrintSelf(ostream &os, vtkIndent indent);
48
50
55 vtkSetMacro(OutlinePolygons, bool);
56 vtkGetMacro(OutlinePolygons, bool);
57 vtkBooleanMacro(OutlinePolygons, bool);
59
64 void ExtractGeoJSONFeature(const Json::Value& root, vtkPolyData *outputData);
65
66protected:
69
74 Json::Value featureRoot;
75
79 char *FeatureId;
80
86
90 void ExtractGeoJSONFeatureGeometry(const Json::Value& root,
91 vtkPolyData *outputData);
92
94
97 vtkPolyData *ExtractPoint(const Json::Value& coordinates,
98 vtkPolyData *outputData);
99 vtkPolyData *ExtractLineString(const Json::Value& coordinates,
100 vtkPolyData *outputData);
101 vtkPolyData *ExtractPolygon(const Json::Value& coordinates,
102 vtkPolyData *outputData);
104
106
109 vtkPolyData *ExtractMultiPoint(const Json::Value& coordinates,
110 vtkPolyData *outputData);
111 vtkPolyData *ExtractMultiLineString(const Json::Value& coordinates,
112 vtkPolyData *outputData);
113 vtkPolyData *ExtractMultiPolygon(const Json::Value& coordinates,
114 vtkPolyData *outputData);
116
118
122 bool IsPoint(const Json::Value& root);
123 bool IsMultiPoint(const Json::Value& root);
124 bool IsLineString(const Json::Value& root); //To Do.
125 bool IsMultiLineString(const Json::Value& root); //To Do.
126 bool IsPolygon(const Json::Value& root); //To Do.
127 bool IsMultiPolygon(const Json::Value& root); //To Do.
129
133 bool CreatePoint(const Json::Value& coordinates, double point[3]);
134
136
137private:
138 vtkGeoJSONFeature(const vtkGeoJSONFeature&) VTK_DELETE_FUNCTION;
139 void operator=(const vtkGeoJSONFeature&) VTK_DELETE_FUNCTION;
140};
141
142#endif // vtkGeoJSONFeature_h
general representation of visualization data
Definition: vtkDataObject.h:65
Represents GeoJSON feature geometry & properties.
vtkPolyData * ExtractMultiLineString(const Json::Value &coordinates, vtkPolyData *outputData)
void InsertFeatureProperties(vtkPolyData *outputData)
char * FeatureId
Id of current GeoJSON feature being parsed.
static vtkGeoJSONFeature * New()
bool IsPoint(const Json::Value &root)
Check if the root contains corresponding appropriate geometry in the Jsoncpp root.
bool IsPolygon(const Json::Value &root)
virtual void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
void ExtractGeoJSONFeature(const Json::Value &root, vtkPolyData *outputData)
Extract the geometry corresponding to the geoJSON feature stored at root Assign any feature propertie...
bool IsMultiLineString(const Json::Value &root)
Json::Value featureRoot
Json::Value featureRoot corresponds to the root of the geoJSON feature from which the geometry and pr...
vtkPolyData * ExtractPolygon(const Json::Value &coordinates, vtkPolyData *outputData)
bool IsMultiPoint(const Json::Value &root)
bool CreatePoint(const Json::Value &coordinates, double point[3])
Point[] from its JSON equivalent.
bool IsLineString(const Json::Value &root)
vtkPolyData * ExtractMultiPoint(const Json::Value &coordinates, vtkPolyData *outputData)
extractMultiXXXX extracts an array of geometries XXXX into the outputData
bool OutlinePolygons
Set/get option to generate the border outlining each polygon, so that the output cells are polyine da...
vtkPolyData * ExtractMultiPolygon(const Json::Value &coordinates, vtkPolyData *outputData)
vtkPolyData * ExtractPoint(const Json::Value &coordinates, vtkPolyData *outputData)
In extractXXXX() Extract geoJSON geometries XXXX into outputData.
void ExtractGeoJSONFeatureGeometry(const Json::Value &root, vtkPolyData *outputData)
Extract geoJSON geometry into vtkPolyData *.
vtkPolyData * ExtractLineString(const Json::Value &coordinates, vtkPolyData *outputData)
bool IsMultiPolygon(const Json::Value &root)
a simple class to control print indentation
Definition: vtkIndent.h:40
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:86
@ point
Definition: vtkX3D.h:236
vtkSetMacro(IgnoreDriverBugs, bool)
Updates the extensions string.
vtkBooleanMacro(IgnoreDriverBugs, bool)
Updates the extensions string.