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 
31 class 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 
42 class VTKIOGEOJSON_EXPORT vtkGeoJSONFeature : public vtkDataObject
43 {
44 public:
45  static vtkGeoJSONFeature *New();
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 
66 protected:
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 
135  void InsertFeatureProperties(vtkPolyData *outputData);
136 
137 private:
138  vtkGeoJSONFeature(const vtkGeoJSONFeature&) VTK_DELETE_FUNCTION;
139  void operator=(const vtkGeoJSONFeature&) VTK_DELETE_FUNCTION;
140 };
141 
142 #endif // vtkGeoJSONFeature_h
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
static vtkDataObject * New()
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:85
Represents GeoJSON feature geometry & properties.
bool OutlinePolygons
Set/get option to generate the border outlining each polygon, so that the output cells are polyine da...
a simple class to control print indentation
Definition: vtkIndent.h:39
char * FeatureId
Id of current GeoJSON feature being parsed.
Json::Value featureRoot
Json::Value featureRoot corresponds to the root of the geoJSON feature from which the geometry and pr...
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
general representation of visualization data
Definition: vtkDataObject.h:64