MultiLineString.h
Go to the documentation of this file.
1 //=============================================================================
2 // Copyright (C) 2021-2024 Wageningen University - All Rights Reserved
3 // Author: Gonzalo Mier
4 // BSD-3 License
5 //=============================================================================
6 
7 #pragma once
8 #ifndef FIELDS2COVER_TYPES_MULTILINESTRING_H_
9 #define FIELDS2COVER_TYPES_MULTILINESTRING_H_
10 
11 #include <gdal/ogr_geometry.h>
12 #include <utility>
15 
16 namespace f2c::types {
17 
19  public Geometries<MultiLineString, OGRMultiLineString,
20  wkbMultiLineString, LineString> {
21  public:
22  using Geometries<MultiLineString, OGRMultiLineString,
23  wkbMultiLineString, LineString>::Geometries;
25  explicit MultiLineString(const OGRGeometry* geom);
26  explicit MultiLineString(const LineString& line);
27  explicit MultiLineString(const std::initializer_list<LineString>& ls);
28 
29  size_t size() const;
30 
31  double length() const;
32 
33  void operator*=(double b);
34 
35  void getGeometry(size_t i, LineString& line);
36 
37  void getGeometry(size_t i, LineString& line) const;
38 
39  LineString getGeometry(size_t i);
40 
41  const LineString getGeometry(size_t i) const;
42 
43  void setGeometry(size_t i, const LineString& line);
44 
45  void append(const OGRGeometry* geom);
46 
47  void addGeometry(const LineString& line);
48  void addGeometry(const MultiLineString& lines);
49 
50  static MultiLineString getLineSegments(const LineString& line);
51  static MultiLineString getLineSegments(const LinearRing& line);
52 
53  template <class T, OGRwkbGeometryType R>
55 
56  template <class T, OGRwkbGeometryType R>
58  const LineString& line, const Geometry<T, R>& g);
59 };
60 
61 
62 template <class T, OGRwkbGeometryType R>
64  auto inter = this->data_->Intersection(g.get());
66  OGRGeometryFactory::destroyGeometry(inter);
67  return lines;
68 }
69 
70 
71 template <class T, OGRwkbGeometryType R>
73  const LineString& line, const Geometry<T, R>& g) {
74  auto inter = line->Intersection(g.get());
76  OGRGeometryFactory::destroyGeometry(inter);
77  return lines;
78 }
79 
80 
81 } // namespace f2c::types
82 
83 #endif // FIELDS2COVER_TYPES_MULTILINESTRING_H_
f2c::types::MultiLineString::append
void append(const OGRGeometry *geom)
Definition: MultiLineString.cpp:45
f2c::types
Types used by fields2cover library.
Definition: Cell.h:20
f2c::types::MultiLineString::intersection
MultiLineString intersection(const Geometry< T, R > &g) const
Definition: MultiLineString.h:63
f2c::types::Geometry
Definition: Geometry.h:26
f2c::types::MultiLineString
Definition: MultiLineString.h:18
f2c::types::LinearRing
Definition: LinearRing.h:18
f2c::types::MultiLineString::getLineSegments
static MultiLineString getLineSegments(const LineString &line)
Definition: MultiLineString.cpp:130
LineString.h
f2c::types::Geometry::get
T * get()
Definition: Geometry_impl.hpp:71
f2c::types::LineString
Definition: LineString.h:19
f2c::types::MultiLineString::size
size_t size() const
Definition: MultiLineString.cpp:31
f2c::types::MultiLineString::getGeometry
void getGeometry(size_t i, LineString &line)
Definition: MultiLineString.cpp:71
Geometries.h
f2c::types::MultiLineString::operator*=
void operator*=(double b)
Definition: MultiLineString.cpp:39
f2c::types::MultiLineString::MultiLineString
MultiLineString()
Definition: MultiLineString.cpp:11
f2c::types::MultiLineString::setGeometry
void setGeometry(size_t i, const LineString &line)
Definition: MultiLineString.cpp:103
f2c::types::Geometry< OGRMultiLineString, R >::data_
std::shared_ptr< OGRMultiLineString > data_
Definition: Geometry.h:129
f2c::types::Geometries
Definition: Geometries.h:21
1_basic_types.lines
lines
Definition: 1_basic_types.py:73
f2c::types::MultiLineString::length
double length() const
Definition: MultiLineString.cpp:35
f2c::types::MultiLineString::addGeometry
void addGeometry(const LineString &line)
Definition: MultiLineString.cpp:120


fields2cover
Author(s):
autogenerated on Fri Apr 25 2025 02:18:31