Geodot Plugin
Loading...
Searching...
No Matches
geodata.h
1#ifndef __GEODATA_H__
2#define __GEODATA_H__
3
4#include "RasterTileExtractor.h"
5#include "VectorExtractor.h"
6#include "defines.h"
7#include "geofeatures.h"
8#include "geoimage.h"
9#include "godot_cpp/variant/dictionary.hpp"
10#include "godot_cpp/variant/variant.hpp"
11
12namespace godot {
13
14// Forward decaration
15class EXPORT GeoDataset;
16
22class EXPORT GeoFeatureLayer : public RefCounted {
23 GDCLASS(GeoFeatureLayer, RefCounted)
24
25 protected:
26 static void _bind_methods();
27
28 public:
29 GeoFeatureLayer() = default;
30 ~GeoFeatureLayer() = default; // No need to delete anything here - OGRLayers are part of
31 // the dataset and deleted with it.
32
34 bool is_valid();
35
39 Dictionary get_file_info();
40
42 Ref<GeoDataset> get_dataset();
43
45 int get_epsg_code();
46
49 Vector3 get_center();
50
52 Ref<GeoFeature> get_feature_by_id(int id);
53
55 Array get_all_features();
56
59 Ref<GeoFeature> create_feature();
60
63 void remove_feature(Ref<GeoFeature> feature);
64
67 void clear_cache();
68
71 void save_override();
72
75 void save_new(String file_path);
76
79 Array get_features_near_position(double pos_x, double pos_y, double radius, int max_features);
80
82 Array get_features_in_square(double top_left_x, double top_left_y, double size_meters,
83 int max_features);
84
87 Array get_features_by_attribute_filter(String filter);
88
90 Ref<GeoFeature> get_specialized_feature(std::shared_ptr<Feature> raw_feature);
91
95 void set_native_layer(std::shared_ptr<NativeLayer> new_layer);
96
99 void set_origin_dataset(Ref<GeoDataset> dataset);
100
101 String name;
102
103 private:
104 std::shared_ptr<NativeLayer> layer;
105 std::map<std::shared_ptr<Feature>, Ref<GeoFeature>> feature_cache;
106 Ref<GeoDataset> origin_dataset;
107 ExtentData extent_data;
108};
109
114class EXPORT GeoRasterLayer : public RefCounted {
115 GDCLASS(GeoRasterLayer, RefCounted)
116
117 protected:
118 static void _bind_methods();
119
120 public:
121 GeoRasterLayer() : origin_dataset(nullptr) {}
122 ~GeoRasterLayer() = default;
123
125 bool is_valid();
126
128 bool has_write_access();
129
134 Dictionary get_file_info();
135
137 int get_epsg_code();
138
140 Image::Format get_format();
141
145 int get_band_count();
146
148 Array get_band_descriptions();
149
152 Ref<GeoDataset> get_dataset();
153
157 Ref<GeoRasterLayer> clone();
158
162 Ref<GeoImage> get_image(double top_left_x, double top_left_y, double size_meters, int img_size,
163 GeoImage::INTERPOLATION interpolation_type);
164
167 Ref<GeoImage> get_band_image(double top_left_x, double top_left_y, double size_meters, int img_size,
168 GeoImage::INTERPOLATION interpolation_type, int band_index);
169
173 float get_value_at_position(double pos_x, double pos_y);
174
179 float get_value_at_position_with_resolution(double pos_x, double pos_y,
180 double pixel_size_meters);
181
186 void set_value_at_position(double pos_x, double pos_y, Variant value);
187
191 void smooth_add_value_at_position(double pos_x, double pos_y, double summand, double radius);
192
198 void overlay_image_at_position(double pos_x, double pos_y, Ref<Image> image, double scale);
199
201 Rect2 get_extent();
202
205 Vector3 get_center();
206
209 float get_min();
210
213 float get_max();
214
216 float get_pixel_size();
217
219 void load_from_file(String file_path, bool write_access);
220
224 void set_native_dataset(std::shared_ptr<NativeDataset> new_dataset);
225
228 void set_origin_dataset(Ref<GeoDataset> dataset);
229
230 bool write_access;
231
232 String name;
233
234 private:
235 Ref<GeoDataset> origin_dataset;
236 std::shared_ptr<NativeDataset> dataset;
237 ExtentData extent_data;
238};
239
242class EXPORT GeoDataset : public RefCounted {
243 GDCLASS(GeoDataset, RefCounted)
244
245 protected:
246 static void _bind_methods();
247
248 public:
249 GeoDataset() = default;
250 ~GeoDataset();
251
253 bool is_valid();
254
256 Dictionary get_file_info();
257
259 bool has_write_access();
260
262 Array get_raster_layers();
263
265 Array get_feature_layers();
266
270 Ref<GeoRasterLayer> get_raster_layer(String name);
271
275 Ref<GeoFeatureLayer> get_feature_layer(String name);
276
280 Ref<GeoFeatureLayer> get_sql_feature_layer(String query);
281
284 void load_from_file(String file_path, bool write_access);
285
289 void set_native_dataset(std::shared_ptr<NativeDataset> new_dataset);
290
291 bool write_access;
292
293 std::shared_ptr<NativeDataset> dataset;
294
295 String name;
296};
297
298} // namespace godot
299
300#endif // __GEODATA_H__
Definition: geodata.h:242
Definition: geodata.h:22
Definition: geodata.h:114
Definition: util.h:3