Skip to content

Commit aece517

Browse files
committed
Avoid duplicate geometry columns, invalid geometry column name in gdal points along lines alg
1 parent 3d1be95 commit aece517

File tree

4 files changed

+30
-21
lines changed

4 files changed

+30
-21
lines changed

python/plugins/processing/algs/gdal/ogr2ogrpointsonlines.py

+13-1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ def group(self):
7474
return self.tr('Vector geoprocessing')
7575

7676
def getConsoleCommands(self, parameters, context, feedback):
77+
fields = self.parameterAsSource(parameters, self.INPUT, context).fields()
7778
ogrLayer, layername = self.getOgrCompatibleSource(self.INPUT, parameters, context, feedback)
7879

7980
distance = str(self.parameterAsDouble(parameters, self.DISTANCE, context))
@@ -84,6 +85,13 @@ def getConsoleCommands(self, parameters, context, feedback):
8485
output, format = GdalUtils.ogrConnectionStringAndFormat(outFile, context)
8586
options = self.parameterAsString(parameters, self.OPTIONS, context)
8687

88+
other_fields = []
89+
for f in fields:
90+
if f.name() == geometry:
91+
continue
92+
93+
other_fields.append(f.name())
94+
8795
arguments = []
8896
if format:
8997
arguments.append('-f {}'.format(format))
@@ -94,7 +102,11 @@ def getConsoleCommands(self, parameters, context, feedback):
94102
arguments.append(geometry)
95103
arguments.append(',')
96104
arguments.append(distance)
97-
arguments.append('),*')
105+
arguments.append(')')
106+
arguments.append('AS')
107+
arguments.append(geometry)
108+
arguments.append(',')
109+
arguments.append(','.join(other_fields))
98110
arguments.append('FROM')
99111
arguments.append(layername)
100112
arguments.append('"')

python/plugins/processing/tests/testdata/expected/gdal/points_along_lines.gfs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<GMLFeatureClassList>
22
<GMLFeatureClass>
3-
<Name>points_along_lines</Name>
4-
<ElementPath>points_along_lines</ElementPath>
3+
<Name>SELECT</Name>
4+
<ElementPath>SELECT</ElementPath>
55
<!--POINT-->
66
<GeometryType>1</GeometryType>
77
<SRSName>EPSG:4326</SRSName>
88
<DatasetSpecificInfo>
9-
<FeatureCount>7</FeatureCount>
9+
<FeatureCount>6</FeatureCount>
1010
<ExtentXMin>-0.50000</ExtentXMin>
1111
<ExtentXMax>7.75000</ExtentXMax>
1212
<ExtentYMin>-3.00000</ExtentYMin>
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8" ?>
22
<ogr:FeatureCollection
33
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4-
xsi:schemaLocation=""
4+
xsi:schemaLocation="http://ogr.maptools.org/ points_along_lines.xsd"
55
xmlns:ogr="http://ogr.maptools.org/"
66
xmlns:gml="http://www.opengis.net/gml">
77
<gml:boundedBy>
@@ -12,37 +12,33 @@
1212
</gml:boundedBy>
1313

1414
<gml:featureMember>
15-
<ogr:points_along_lines fid="lines.0">
15+
<ogr:SELECT fid="lines.0">
1616
<ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>7.70710678118655,2.0</gml:coordinates></gml:Point></ogr:geometryProperty>
17-
</ogr:points_along_lines>
17+
</ogr:SELECT>
1818
</gml:featureMember>
1919
<gml:featureMember>
20-
<ogr:points_along_lines fid="lines.1">
20+
<ogr:SELECT fid="lines.1">
2121
<ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>-0.5,-1.0</gml:coordinates></gml:Point></ogr:geometryProperty>
22-
</ogr:points_along_lines>
22+
</ogr:SELECT>
2323
</gml:featureMember>
2424
<gml:featureMember>
25-
<ogr:points_along_lines fid="lines.2">
25+
<ogr:SELECT fid="lines.2">
2626
<ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>2,1</gml:coordinates></gml:Point></ogr:geometryProperty>
27-
</ogr:points_along_lines>
27+
</ogr:SELECT>
2828
</gml:featureMember>
2929
<gml:featureMember>
30-
<ogr:points_along_lines fid="lines.3">
30+
<ogr:SELECT fid="lines.3">
3131
<ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>3.5,1.0</gml:coordinates></gml:Point></ogr:geometryProperty>
32-
</ogr:points_along_lines>
32+
</ogr:SELECT>
3333
</gml:featureMember>
3434
<gml:featureMember>
35-
<ogr:points_along_lines fid="lines.4">
35+
<ogr:SELECT fid="lines.4">
3636
<ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>7.75,-3.0</gml:coordinates></gml:Point></ogr:geometryProperty>
37-
</ogr:points_along_lines>
37+
</ogr:SELECT>
3838
</gml:featureMember>
3939
<gml:featureMember>
40-
<ogr:points_along_lines fid="lines.5">
40+
<ogr:SELECT fid="lines.5">
4141
<ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>7,-2</gml:coordinates></gml:Point></ogr:geometryProperty>
42-
</ogr:points_along_lines>
43-
</gml:featureMember>
44-
<gml:featureMember>
45-
<ogr:points_along_lines fid="lines.6">
46-
</ogr:points_along_lines>
42+
</ogr:SELECT>
4743
</gml:featureMember>
4844
</ogr:FeatureCollection>

python/plugins/processing/tests/testdata/gdal_algorithm_tests.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ tests:
102102
OUTPUT:
103103
name: expected/gdal/points_along_lines.gml
104104
type: vector
105+
pk: fid
105106
compare:
106107
ignore_crs_check: true
107108

0 commit comments

Comments
 (0)