Skip to content

Commit bceff40

Browse files
authored
Merge pull request #1738 from joto/geom-cleanups
Fix various small code smells in geometry code
2 parents b0352aa + 33c133a commit bceff40

File tree

3 files changed

+22
-22
lines changed

3 files changed

+22
-22
lines changed

src/geom-functions.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,13 @@ class geometry_n_visitor
7070

7171
void operator()(geom::collection_t const &input) const
7272
{
73-
*m_output = input[m_n - 1];
73+
*m_output = input[m_n];
7474
}
7575

7676
template <typename T>
7777
void operator()(geom::multigeometry_t<T> const &input) const
7878
{
79-
m_output->set<T>() = input[m_n - 1];
79+
m_output->set<T>() = input[m_n];
8080
}
8181

8282
template <typename T>
@@ -95,13 +95,13 @@ class geometry_n_visitor
9595

9696
void geometry_n(geometry_t *output, geometry_t const &input, std::size_t n)
9797
{
98-
auto const num = num_geometries(input);
99-
if (n < 1 || n > num) {
98+
auto const max = num_geometries(input);
99+
if (n < 1 || n > max) {
100100
output->reset();
101101
return;
102102
}
103103

104-
input.visit(geometry_n_visitor{output, n});
104+
input.visit(geometry_n_visitor{output, n - 1});
105105
output->set_srid(input.srid());
106106
}
107107

@@ -630,17 +630,17 @@ geometry_t centroid(geometry_t const &geom)
630630
return output;
631631
}
632632

633-
void simplify(geometry_t *output, geometry_t const &geom, double tolerance)
633+
void simplify(geometry_t *output, geometry_t const &input, double tolerance)
634634
{
635-
if (!geom.is_linestring()) {
635+
if (!input.is_linestring()) {
636636
output->reset();
637637
return;
638638
}
639639

640640
auto &ls = output->set<linestring_t>();
641-
output->set_srid(geom.srid());
641+
output->set_srid(input.srid());
642642

643-
boost::geometry::simplify(geom.get<linestring_t>(), ls, tolerance);
643+
boost::geometry::simplify(input.get<linestring_t>(), ls, tolerance);
644644

645645
// Linestrings with less then 2 nodes are invalid. Older boost::geometry
646646
// versions will generate a "line" with two identical points which the
@@ -650,10 +650,10 @@ void simplify(geometry_t *output, geometry_t const &geom, double tolerance)
650650
}
651651
}
652652

653-
geometry_t simplify(geometry_t const &geom, double tolerance)
653+
geometry_t simplify(geometry_t const &input, double tolerance)
654654
{
655-
geom::geometry_t output{linestring_t{}, geom.srid()};
656-
simplify(&output, geom, tolerance);
655+
geom::geometry_t output{linestring_t{}, input.srid()};
656+
simplify(&output, input, tolerance);
657657
return output;
658658
}
659659

src/geom-functions.hpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -92,30 +92,30 @@ geometry_t geometry_n(geometry_t const &input, std::size_t n);
9292
* Transform a geometry in 4326 into some other projection.
9393
*
9494
* \param output Pointer to output geometry.
95-
* \param geom Input geometry.
95+
* \param input Input geometry.
9696
* \param reprojection Target projection.
9797
*
9898
* \pre \code geom.srid() == 4326 \endcode
9999
*/
100-
void transform(geometry_t *output, geometry_t const &geom,
100+
void transform(geometry_t *output, geometry_t const &input,
101101
reprojection const &reprojection);
102102

103103
/**
104104
* Transform a geometry in 4326 into some other projection.
105105
*
106-
* \param geom Input geometry.
106+
* \param input Input geometry.
107107
* \param reprojection Target projection.
108108
* \returns Reprojected geometry.
109109
*
110110
* \pre \code geom.srid() == 4326 \endcode
111111
*/
112-
geometry_t transform(geometry_t const &geom, reprojection const &reprojection);
112+
geometry_t transform(geometry_t const &input, reprojection const &reprojection);
113113

114114
/**
115115
* Returns a modified geometry having no segment longer than the given
116116
* max_segment_length.
117117
*
118-
* \param line The input geometry, must be a linestring or multilinestring.
118+
* \param geom The input geometry, must be a linestring or multilinestring.
119119
* \param max_segment_length The maximum length (using Euclidean distance
120120
* in the length unit of the srs of the geometry) of each resulting
121121
* linestring.
@@ -171,11 +171,11 @@ geometry_t centroid(geometry_t const &geom);
171171
* Returns null geometry for anything but linestring geometries!
172172
*
173173
* \param output Pointer to output geometry.
174-
* \param geom Input geometry.
174+
* \param input Input geometry.
175175
* \param tolerance Max distance (in units of input coordinates) of a point
176176
* to other segments to be removed.
177177
*/
178-
void simplify(geometry_t *output, geometry_t const &geom, double tolerance);
178+
void simplify(geometry_t *output, geometry_t const &input, double tolerance);
179179

180180
/**
181181
* Simplify a linestring geometry using Douglas-Peucker algorithm.
@@ -185,12 +185,12 @@ void simplify(geometry_t *output, geometry_t const &geom, double tolerance);
185185
*
186186
* Returns null geometry for anything but linestring geometries!
187187
*
188-
* \param geom Input geometry.
188+
* \param input Input geometry.
189189
* \param tolerance Max distance (in units of input coordinates) of a point
190190
* to other segments to be removed.
191191
* \returns Simplified geometry.
192192
*/
193-
geometry_t simplify(geometry_t const &geom, double tolerance);
193+
geometry_t simplify(geometry_t const &input, double tolerance);
194194

195195
} // namespace geom
196196

src/geom.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ class geometry_t
237237
constexpr geometry_t() = default;
238238

239239
constexpr explicit geometry_t(point_t &&geom, int srid = 4326)
240-
: m_geom(std::move(geom)), m_srid(srid)
240+
: m_geom(geom), m_srid(srid) // geom is trivially copyable, no move needed
241241
{}
242242

243243
constexpr explicit geometry_t(linestring_t &&geom, int srid = 4326)

0 commit comments

Comments
 (0)