OGS
XmlGmlInterface.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#pragma once
5
6#include <QString>
7
10
11#include "GeoLib/GEOObjects.h"
12
13namespace GeoLib
14{
15namespace IO
16{
17
23{
24public:
25 explicit XmlGmlInterface(GeoLib::GEOObjects& geo_objs);
26
28 int readFile(const QString& fileName) override;
29
30 bool readFile(std::string const& fname) override
31 {
32 return readFile(QString(fname.c_str())) != 0;
33 }
34
35protected:
36 bool write() override;
37
38private:
40 void readPoints(const QDomNode& pointsRoot,
41 std::vector<GeoLib::Point*>& points,
42 std::map<std::string, std::size_t>* pnt_names);
43
45 void readPolylines(const QDomNode& polylinesRoot,
46 std::vector<GeoLib::Polyline*>& polylines,
47 std::vector<GeoLib::Point*> const& points,
48 const std::vector<std::size_t>& pnt_id_map,
50
52 void readSurfaces(const QDomNode& surfacesRoot,
53 std::vector<GeoLib::Surface*>& surfaces,
54 std::vector<GeoLib::Point*> const& points,
55 const std::vector<std::size_t>& pnt_id_map,
57
59 std::map<std::size_t, std::size_t> _idx_map;
60};
61
62} // end namespace IO
63} // namespace GeoLib
Container class for geometric objects.
Definition GEOObjects.h:46
void readPoints(const QDomNode &pointsRoot, std::vector< GeoLib::Point * > &points, std::map< std::string, std::size_t > *pnt_names)
Reads GeoLib::Point-objects from an xml-file.
std::map< std::size_t, std::size_t > _idx_map
bool write() override
Writes the object to the internal stream. This method must be implemented by a subclass....
GeoLib::GEOObjects & _geo_objs
void readSurfaces(const QDomNode &surfacesRoot, std::vector< GeoLib::Surface * > &surfaces, std::vector< GeoLib::Point * > const &points, const std::vector< std::size_t > &pnt_id_map, GeoLib::SurfaceVec::NameIdMap &sfc_names)
Reads GeoLib::Surface-objects from an xml-file.
void readPolylines(const QDomNode &polylinesRoot, std::vector< GeoLib::Polyline * > &polylines, std::vector< GeoLib::Point * > const &points, const std::vector< std::size_t > &pnt_id_map, GeoLib::PolylineVec::NameIdMap &ply_names)
Reads GeoLib::Polyline-objects from an xml-file.
bool readFile(std::string const &fname) override
XmlGmlInterface(GeoLib::GEOObjects &geo_objs)
int readFile(const QString &fileName) override
Reads an xml-file containing geometric object definitions into the GEOObjects used in the constructor...
std::map< std::string, std::size_t > NameIdMap
Definition TemplateVec.h:30
Base class for writing any information to and from XML files.