mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-17 00:04:02 -04:00
Merge pull request #4863 from nyalldawson/nn
Port 2 more processing algorithms
This commit is contained in:
commit
aec6a79462
@ -31,12 +31,16 @@ import math
|
|||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
from qgis.PyQt.QtCore import QVariant
|
from qgis.PyQt.QtCore import QVariant
|
||||||
|
|
||||||
from qgis.core import QgsFeature, QgsGeometry, QgsWkbTypes, QgsField, QgsFeatureSink, QgsProcessingUtils
|
from qgis.core import (QgsFeature,
|
||||||
|
QgsGeometry,
|
||||||
|
QgsWkbTypes,
|
||||||
|
QgsField,
|
||||||
|
QgsFeatureSink,
|
||||||
|
QgsProcessing,
|
||||||
|
QgsProcessingParameterFeatureSource,
|
||||||
|
QgsProcessingParameterFeatureSink)
|
||||||
|
|
||||||
from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm
|
from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm
|
||||||
from processing.core.parameters import ParameterVector
|
|
||||||
from processing.core.outputs import OutputVector
|
|
||||||
from processing.tools import dataobjects, vector
|
|
||||||
|
|
||||||
pluginPath = os.path.split(os.path.split(os.path.dirname(__file__))[0])[0]
|
pluginPath = os.path.split(os.path.split(os.path.dirname(__file__))[0])[0]
|
||||||
|
|
||||||
@ -56,12 +60,10 @@ class ExtractNodes(QgisAlgorithm):
|
|||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
def initAlgorithm(self, config=None):
|
def initAlgorithm(self, config=None):
|
||||||
self.addParameter(ParameterVector(self.INPUT,
|
self.addParameter(QgsProcessingParameterFeatureSource(self.INPUT,
|
||||||
self.tr('Input layer'),
|
self.tr('Input layer')))
|
||||||
[dataobjects.TYPE_VECTOR_POLYGON,
|
|
||||||
dataobjects.TYPE_VECTOR_LINE]))
|
|
||||||
|
|
||||||
self.addOutput(OutputVector(self.OUTPUT, self.tr('Nodes'), datatype=[dataobjects.TYPE_VECTOR_POINT]))
|
self.addParameter(QgsProcessingParameterFeatureSink(self.OUTPUT, self.tr('Nodes'), QgsProcessing.TypeVectorPoint))
|
||||||
|
|
||||||
def name(self):
|
def name(self):
|
||||||
return 'extractnodes'
|
return 'extractnodes'
|
||||||
@ -70,36 +72,51 @@ class ExtractNodes(QgisAlgorithm):
|
|||||||
return self.tr('Extract nodes')
|
return self.tr('Extract nodes')
|
||||||
|
|
||||||
def processAlgorithm(self, parameters, context, feedback):
|
def processAlgorithm(self, parameters, context, feedback):
|
||||||
layer = QgsProcessingUtils.mapLayerFromString(self.getParameterValue(self.INPUT), context)
|
source = self.parameterAsSource(parameters, self.INPUT, context)
|
||||||
|
|
||||||
fields = layer.fields()
|
fields = source.fields()
|
||||||
fields.append(QgsField('node_index', QVariant.Int))
|
fields.append(QgsField('node_index', QVariant.Int))
|
||||||
fields.append(QgsField('distance', QVariant.Double))
|
fields.append(QgsField('distance', QVariant.Double))
|
||||||
fields.append(QgsField('angle', QVariant.Double))
|
fields.append(QgsField('angle', QVariant.Double))
|
||||||
|
|
||||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(fields, QgsWkbTypes.Point, layer.crs(), context)
|
out_wkb = QgsWkbTypes.Point
|
||||||
|
if QgsWkbTypes.hasM(source.wkbType()):
|
||||||
|
out_wkb = QgsWkbTypes.addM(out_wkb)
|
||||||
|
if QgsWkbTypes.hasZ(source.wkbType()):
|
||||||
|
out_wkb = QgsWkbTypes.addZ(out_wkb)
|
||||||
|
|
||||||
features = QgsProcessingUtils.getFeatures(layer, context)
|
(sink, dest_id) = self.parameterAsSink(parameters, self.OUTPUT, context,
|
||||||
total = 100.0 / layer.featureCount() if layer.featureCount() else 0
|
fields, out_wkb, source.sourceCrs())
|
||||||
|
|
||||||
|
features = source.getFeatures()
|
||||||
|
total = 100.0 / source.featureCount() if source.featureCount() else 0
|
||||||
for current, f in enumerate(features):
|
for current, f in enumerate(features):
|
||||||
|
if feedback.isCanceled():
|
||||||
|
break
|
||||||
|
|
||||||
input_geometry = f.geometry()
|
input_geometry = f.geometry()
|
||||||
if not input_geometry:
|
if not input_geometry:
|
||||||
writer.addFeature(f, QgsFeatureSink.FastInsert)
|
sink.addFeature(f, QgsFeatureSink.FastInsert)
|
||||||
else:
|
else:
|
||||||
points = vector.extractPoints(input_geometry)
|
i = 0
|
||||||
|
for part in input_geometry.geometry().coordinateSequence():
|
||||||
|
for ring in part:
|
||||||
|
if feedback.isCanceled():
|
||||||
|
break
|
||||||
|
|
||||||
for i, point in enumerate(points):
|
for point in ring:
|
||||||
distance = input_geometry.distanceToVertex(i)
|
distance = input_geometry.distanceToVertex(i)
|
||||||
angle = math.degrees(input_geometry.angleAtVertex(i))
|
angle = math.degrees(input_geometry.angleAtVertex(i))
|
||||||
attrs = f.attributes()
|
attrs = f.attributes()
|
||||||
attrs.append(i)
|
attrs.append(i)
|
||||||
attrs.append(distance)
|
attrs.append(distance)
|
||||||
attrs.append(angle)
|
attrs.append(angle)
|
||||||
output_feature = QgsFeature()
|
output_feature = QgsFeature()
|
||||||
output_feature.setAttributes(attrs)
|
output_feature.setAttributes(attrs)
|
||||||
output_feature.setGeometry(QgsGeometry.fromPoint(point))
|
output_feature.setGeometry(QgsGeometry(point.clone()))
|
||||||
writer.addFeature(output_feature, QgsFeatureSink.FastInsert)
|
sink.addFeature(output_feature, QgsFeatureSink.FastInsert)
|
||||||
|
i += 1
|
||||||
|
|
||||||
feedback.setProgress(int(current * total))
|
feedback.setProgress(int(current * total))
|
||||||
|
|
||||||
del writer
|
return {self.OUTPUT: dest_id}
|
||||||
|
@ -31,21 +31,28 @@ import os
|
|||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
from qgis.PyQt.QtCore import QVariant
|
from qgis.PyQt.QtCore import QVariant
|
||||||
|
|
||||||
from qgis.core import QgsField, QgsFeature, QgsGeometry, QgsPointXY, QgsWkbTypes, QgsProcessingUtils, QgsFeatureSink, QgsFields
|
from qgis.core import (QgsField,
|
||||||
|
QgsFeature,
|
||||||
|
QgsGeometry,
|
||||||
|
QgsPointXY,
|
||||||
|
QgsWkbTypes,
|
||||||
|
QgsFeatureRequest,
|
||||||
|
QgsFeatureSink,
|
||||||
|
QgsFields,
|
||||||
|
QgsProcessing,
|
||||||
|
QgsProcessingParameterFeatureSink,
|
||||||
|
QgsProcessingParameterField,
|
||||||
|
QgsProcessingParameterFeatureSource,
|
||||||
|
QgsProcessingException)
|
||||||
|
|
||||||
from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm
|
from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm
|
||||||
from processing.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
|
from processing.tools import vector
|
||||||
from processing.core.parameters import ParameterTableField
|
|
||||||
from processing.core.parameters import ParameterVector
|
|
||||||
from processing.core.outputs import OutputVector
|
|
||||||
from processing.tools import dataobjects, vector
|
|
||||||
|
|
||||||
pluginPath = os.path.split(os.path.split(os.path.dirname(__file__))[0])[0]
|
pluginPath = os.path.split(os.path.split(os.path.dirname(__file__))[0])[0]
|
||||||
|
|
||||||
|
|
||||||
class MeanCoords(QgisAlgorithm):
|
class MeanCoords(QgisAlgorithm):
|
||||||
|
INPUT = 'INPUT'
|
||||||
POINTS = 'POINTS'
|
|
||||||
WEIGHT = 'WEIGHT'
|
WEIGHT = 'WEIGHT'
|
||||||
OUTPUT = 'OUTPUT'
|
OUTPUT = 'OUTPUT'
|
||||||
UID = 'UID'
|
UID = 'UID'
|
||||||
@ -61,19 +68,19 @@ class MeanCoords(QgisAlgorithm):
|
|||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
def initAlgorithm(self, config=None):
|
def initAlgorithm(self, config=None):
|
||||||
self.addParameter(ParameterVector(self.POINTS,
|
self.addParameter(QgsProcessingParameterFeatureSource(self.INPUT,
|
||||||
self.tr('Input layer')))
|
self.tr('Input layer')))
|
||||||
self.addParameter(ParameterTableField(self.WEIGHT,
|
self.addParameter(QgsProcessingParameterField(self.WEIGHT, self.tr('Weight field'),
|
||||||
self.tr('Weight field'),
|
parentLayerParameterName=MeanCoords.INPUT,
|
||||||
MeanCoords.POINTS,
|
type=QgsProcessingParameterField.Numeric,
|
||||||
ParameterTableField.DATA_TYPE_NUMBER,
|
optional=True))
|
||||||
optional=True))
|
self.addParameter(QgsProcessingParameterField(self.UID,
|
||||||
self.addParameter(ParameterTableField(self.UID,
|
self.tr('Unique ID field'),
|
||||||
self.tr('Unique ID field'),
|
parentLayerParameterName=MeanCoords.INPUT,
|
||||||
MeanCoords.POINTS,
|
optional=True))
|
||||||
optional=True))
|
|
||||||
|
|
||||||
self.addOutput(OutputVector(MeanCoords.OUTPUT, self.tr('Mean coordinates'), datatype=[dataobjects.TYPE_VECTOR_POINT]))
|
self.addParameter(QgsProcessingParameterFeatureSink(MeanCoords.OUTPUT, self.tr('Mean coordinates'),
|
||||||
|
QgsProcessing.TypeVectorPoint))
|
||||||
|
|
||||||
def name(self):
|
def name(self):
|
||||||
return 'meancoordinates'
|
return 'meancoordinates'
|
||||||
@ -82,46 +89,58 @@ class MeanCoords(QgisAlgorithm):
|
|||||||
return self.tr('Mean coordinate(s)')
|
return self.tr('Mean coordinate(s)')
|
||||||
|
|
||||||
def processAlgorithm(self, parameters, context, feedback):
|
def processAlgorithm(self, parameters, context, feedback):
|
||||||
layer = QgsProcessingUtils.mapLayerFromString(self.getParameterValue(self.POINTS), context)
|
source = self.parameterAsSource(parameters, self.INPUT, context)
|
||||||
weightField = self.getParameterValue(self.WEIGHT)
|
|
||||||
uniqueField = self.getParameterValue(self.UID)
|
|
||||||
|
|
||||||
if weightField is None:
|
weight_field = self.parameterAsString(parameters, self.WEIGHT, context)
|
||||||
weightIndex = -1
|
unique_field = self.parameterAsString(parameters, self.UID, context)
|
||||||
|
|
||||||
|
attributes = []
|
||||||
|
if not weight_field:
|
||||||
|
weight_index = -1
|
||||||
else:
|
else:
|
||||||
weightIndex = layer.fields().lookupField(weightField)
|
weight_index = source.fields().lookupField(weight_field)
|
||||||
|
if weight_index >= 0:
|
||||||
|
attributes.append(weight_index)
|
||||||
|
|
||||||
if uniqueField is None:
|
if not unique_field:
|
||||||
uniqueIndex = -1
|
unique_index = -1
|
||||||
else:
|
else:
|
||||||
uniqueIndex = layer.fields().lookupField(uniqueField)
|
unique_index = source.fields().lookupField(unique_field)
|
||||||
|
if unique_index >= 0:
|
||||||
|
attributes.append(unique_index)
|
||||||
|
|
||||||
fieldList = QgsFields()
|
field_list = QgsFields()
|
||||||
fieldList.append(QgsField('MEAN_X', QVariant.Double, '', 24, 15))
|
field_list.append(QgsField('MEAN_X', QVariant.Double, '', 24, 15))
|
||||||
fieldList.append(QgsField('MEAN_Y', QVariant.Double, '', 24, 15))
|
field_list.append(QgsField('MEAN_Y', QVariant.Double, '', 24, 15))
|
||||||
fieldList.append(QgsField('UID', QVariant.String, '', 255))
|
if unique_index >= 0:
|
||||||
|
field_list.append(QgsField('UID', QVariant.String, '', 255))
|
||||||
|
|
||||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(fieldList, QgsWkbTypes.Point, layer.crs(), context)
|
(sink, dest_id) = self.parameterAsSink(parameters, self.OUTPUT, context,
|
||||||
|
field_list, QgsWkbTypes.Point, source.sourceCrs())
|
||||||
|
|
||||||
features = QgsProcessingUtils.getFeatures(layer, context)
|
features = source.getFeatures(QgsFeatureRequest().setSubsetOfAttributes(attributes))
|
||||||
total = 100.0 / layer.featureCount() if layer.featureCount() else 0
|
total = 100.0 / source.featureCount() if source.featureCount() else 0
|
||||||
means = {}
|
means = {}
|
||||||
for current, feat in enumerate(features):
|
for current, feat in enumerate(features):
|
||||||
|
if feedback.isCanceled():
|
||||||
|
break
|
||||||
|
|
||||||
feedback.setProgress(int(current * total))
|
feedback.setProgress(int(current * total))
|
||||||
if uniqueIndex == -1:
|
if unique_index == -1:
|
||||||
clazz = "Single class"
|
clazz = "Single class"
|
||||||
else:
|
else:
|
||||||
clazz = str(feat.attributes()[uniqueIndex]).strip()
|
clazz = str(feat.attributes()[unique_index]).strip()
|
||||||
if weightIndex == -1:
|
if weight_index == -1:
|
||||||
weight = 1.00
|
weight = 1.00
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
weight = float(feat.attributes()[weightIndex])
|
weight = float(feat.attributes()[weight_index])
|
||||||
except:
|
except:
|
||||||
weight = 1.00
|
weight = 1.00
|
||||||
|
|
||||||
if weight < 0:
|
if weight < 0:
|
||||||
raise GeoAlgorithmExecutionException(self.tr('Negative weight value found. Please fix your data and try again.'))
|
raise QgsProcessingException(
|
||||||
|
self.tr('Negative weight value found. Please fix your data and try again.'))
|
||||||
|
|
||||||
if clazz not in means:
|
if clazz not in means:
|
||||||
means[clazz] = (0, 0, 0)
|
means[clazz] = (0, 0, 0)
|
||||||
@ -138,15 +157,21 @@ class MeanCoords(QgisAlgorithm):
|
|||||||
current = 0
|
current = 0
|
||||||
total = 100.0 / len(means) if means else 1
|
total = 100.0 / len(means) if means else 1
|
||||||
for (clazz, values) in list(means.items()):
|
for (clazz, values) in list(means.items()):
|
||||||
|
if feedback.isCanceled():
|
||||||
|
break
|
||||||
|
|
||||||
outFeat = QgsFeature()
|
outFeat = QgsFeature()
|
||||||
cx = values[0] / values[2]
|
cx = values[0] / values[2]
|
||||||
cy = values[1] / values[2]
|
cy = values[1] / values[2]
|
||||||
meanPoint = QgsPointXY(cx, cy)
|
meanPoint = QgsPointXY(cx, cy)
|
||||||
|
|
||||||
outFeat.setGeometry(QgsGeometry.fromPoint(meanPoint))
|
outFeat.setGeometry(QgsGeometry.fromPoint(meanPoint))
|
||||||
outFeat.setAttributes([cx, cy, clazz])
|
attributes = [cx, cy]
|
||||||
writer.addFeature(outFeat, QgsFeatureSink.FastInsert)
|
if unique_index >= 0:
|
||||||
|
attributes.append(clazz)
|
||||||
|
outFeat.setAttributes(attributes)
|
||||||
|
sink.addFeature(outFeat, QgsFeatureSink.FastInsert)
|
||||||
current += 1
|
current += 1
|
||||||
feedback.setProgress(int(current * total))
|
feedback.setProgress(int(current * total))
|
||||||
|
|
||||||
del writer
|
return {self.OUTPUT: dest_id}
|
||||||
|
@ -32,29 +32,38 @@ import os
|
|||||||
import math
|
import math
|
||||||
|
|
||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
|
from qgis.PyQt.QtCore import QVariant
|
||||||
|
|
||||||
from qgis.core import QgsFeatureRequest, QgsProject, QgsDistanceArea, QgsFeatureSink, QgsProcessingUtils
|
from qgis.core import (QgsFeatureRequest,
|
||||||
|
QgsField,
|
||||||
|
QgsFields,
|
||||||
|
QgsProject,
|
||||||
|
QgsFeature,
|
||||||
|
QgsGeometry,
|
||||||
|
QgsDistanceArea,
|
||||||
|
QgsFeatureSink,
|
||||||
|
QgsProcessingParameterFeatureSource,
|
||||||
|
QgsProcessing,
|
||||||
|
QgsProcessingParameterEnum,
|
||||||
|
QgsProcessingParameterField,
|
||||||
|
QgsProcessingParameterNumber,
|
||||||
|
QgsProcessingParameterFeatureSink,
|
||||||
|
QgsSpatialIndex,
|
||||||
|
QgsWkbTypes)
|
||||||
|
|
||||||
from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm
|
from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm
|
||||||
from processing.core.parameters import ParameterNumber
|
|
||||||
from processing.core.parameters import ParameterVector
|
|
||||||
from processing.core.parameters import ParameterSelection
|
|
||||||
from processing.core.parameters import ParameterTableField
|
|
||||||
from processing.core.outputs import OutputTable
|
|
||||||
from processing.tools import dataobjects
|
|
||||||
|
|
||||||
pluginPath = os.path.split(os.path.split(os.path.dirname(__file__))[0])[0]
|
pluginPath = os.path.split(os.path.split(os.path.dirname(__file__))[0])[0]
|
||||||
|
|
||||||
|
|
||||||
class PointDistance(QgisAlgorithm):
|
class PointDistance(QgisAlgorithm):
|
||||||
|
INPUT = 'INPUT'
|
||||||
INPUT_LAYER = 'INPUT_LAYER'
|
|
||||||
INPUT_FIELD = 'INPUT_FIELD'
|
INPUT_FIELD = 'INPUT_FIELD'
|
||||||
TARGET_LAYER = 'TARGET_LAYER'
|
TARGET = 'TARGET'
|
||||||
TARGET_FIELD = 'TARGET_FIELD'
|
TARGET_FIELD = 'TARGET_FIELD'
|
||||||
MATRIX_TYPE = 'MATRIX_TYPE'
|
MATRIX_TYPE = 'MATRIX_TYPE'
|
||||||
NEAREST_POINTS = 'NEAREST_POINTS'
|
NEAREST_POINTS = 'NEAREST_POINTS'
|
||||||
DISTANCE_MATRIX = 'DISTANCE_MATRIX'
|
OUTPUT = 'OUTPUT'
|
||||||
|
|
||||||
def icon(self):
|
def icon(self):
|
||||||
return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'matrix.png'))
|
return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'matrix.png'))
|
||||||
@ -70,22 +79,26 @@ class PointDistance(QgisAlgorithm):
|
|||||||
self.tr('Standard (N x T) distance matrix'),
|
self.tr('Standard (N x T) distance matrix'),
|
||||||
self.tr('Summary distance matrix (mean, std. dev., min, max)')]
|
self.tr('Summary distance matrix (mean, std. dev., min, max)')]
|
||||||
|
|
||||||
self.addParameter(ParameterVector(self.INPUT_LAYER,
|
self.addParameter(QgsProcessingParameterFeatureSource(self.INPUT,
|
||||||
self.tr('Input point layer'), [dataobjects.TYPE_VECTOR_POINT]))
|
self.tr('Input point layer'),
|
||||||
self.addParameter(ParameterTableField(self.INPUT_FIELD,
|
[QgsProcessing.TypeVectorPoint]))
|
||||||
self.tr('Input unique ID field'), self.INPUT_LAYER,
|
self.addParameter(QgsProcessingParameterField(self.INPUT_FIELD,
|
||||||
ParameterTableField.DATA_TYPE_ANY))
|
self.tr('Input unique ID field'),
|
||||||
self.addParameter(ParameterVector(self.TARGET_LAYER,
|
parentLayerParameterName=self.INPUT,
|
||||||
self.tr('Target point layer'), dataobjects.TYPE_VECTOR_POINT))
|
type=QgsProcessingParameterField.Any))
|
||||||
self.addParameter(ParameterTableField(self.TARGET_FIELD,
|
self.addParameter(QgsProcessingParameterFeatureSource(self.TARGET,
|
||||||
self.tr('Target unique ID field'), self.TARGET_LAYER,
|
self.tr('Target point layer'),
|
||||||
ParameterTableField.DATA_TYPE_ANY))
|
[QgsProcessing.TypeVectorPoint]))
|
||||||
self.addParameter(ParameterSelection(self.MATRIX_TYPE,
|
self.addParameter(QgsProcessingParameterField(self.TARGET_FIELD,
|
||||||
self.tr('Output matrix type'), self.mat_types, 0))
|
self.tr('Target unique ID field'),
|
||||||
self.addParameter(ParameterNumber(self.NEAREST_POINTS,
|
parentLayerParameterName=self.TARGET,
|
||||||
self.tr('Use only the nearest (k) target points'), 0, 9999, 0))
|
type=QgsProcessingParameterField.Any))
|
||||||
|
self.addParameter(QgsProcessingParameterEnum(self.MATRIX_TYPE,
|
||||||
|
self.tr('Output matrix type'), options=self.mat_types, defaultValue=0))
|
||||||
|
self.addParameter(QgsProcessingParameterNumber(self.NEAREST_POINTS,
|
||||||
|
self.tr('Use only the nearest (k) target points'), type=QgsProcessingParameterNumber.Integer, minValue=0, maxValue=9999, defaultValue=0))
|
||||||
|
|
||||||
self.addOutput(OutputTable(self.DISTANCE_MATRIX, self.tr('Distance matrix')))
|
self.addParameter(QgsProcessingParameterFeatureSink(self.OUTPUT, self.tr('Distance matrix'), QgsProcessing.TypeVectorPoint))
|
||||||
|
|
||||||
def name(self):
|
def name(self):
|
||||||
return 'distancematrix'
|
return 'distancematrix'
|
||||||
@ -94,65 +107,86 @@ class PointDistance(QgisAlgorithm):
|
|||||||
return self.tr('Distance matrix')
|
return self.tr('Distance matrix')
|
||||||
|
|
||||||
def processAlgorithm(self, parameters, context, feedback):
|
def processAlgorithm(self, parameters, context, feedback):
|
||||||
inLayer = QgsProcessingUtils.mapLayerFromString(self.getParameterValue(self.INPUT_LAYER), context)
|
source = self.parameterAsSource(parameters, self.INPUT, context)
|
||||||
inField = self.getParameterValue(self.INPUT_FIELD)
|
source_field = self.parameterAsString(parameters, self.INPUT_FIELD, context)
|
||||||
targetLayer = QgsProcessingUtils.mapLayerFromString(self.getParameterValue(self.TARGET_LAYER), context)
|
target_source = self.parameterAsSource(parameters, self.TARGET, context)
|
||||||
targetField = self.getParameterValue(self.TARGET_FIELD)
|
target_field = self.parameterAsString(parameters, self.TARGET_FIELD, context)
|
||||||
matType = self.getParameterValue(self.MATRIX_TYPE)
|
matType = self.parameterAsEnum(parameters, self.MATRIX_TYPE, context)
|
||||||
nPoints = self.getParameterValue(self.NEAREST_POINTS)
|
nPoints = self.parameterAsInt(parameters, self.NEAREST_POINTS, context)
|
||||||
|
|
||||||
outputFile = self.getOutputFromName(self.DISTANCE_MATRIX)
|
|
||||||
|
|
||||||
if nPoints < 1:
|
if nPoints < 1:
|
||||||
nPoints = QgsProcessingUtils.featureCount(targetLayer, context)
|
nPoints = target_source.featureCount()
|
||||||
|
|
||||||
self.writer = outputFile.getTableWriter([])
|
|
||||||
|
|
||||||
if matType == 0:
|
if matType == 0:
|
||||||
# Linear distance matrix
|
# Linear distance matrix
|
||||||
self.linearMatrix(context, inLayer, inField, targetLayer, targetField,
|
return self.linearMatrix(parameters, context, source, source_field, target_source, target_field,
|
||||||
matType, nPoints, feedback)
|
matType, nPoints, feedback)
|
||||||
elif matType == 1:
|
elif matType == 1:
|
||||||
# Standard distance matrix
|
# Standard distance matrix
|
||||||
self.regularMatrix(context, inLayer, inField, targetLayer, targetField,
|
return self.regularMatrix(parameters, context, source, source_field, target_source, target_field,
|
||||||
nPoints, feedback)
|
nPoints, feedback)
|
||||||
elif matType == 2:
|
elif matType == 2:
|
||||||
# Summary distance matrix
|
# Summary distance matrix
|
||||||
self.linearMatrix(context, inLayer, inField, targetLayer, targetField,
|
return self.linearMatrix(parameters, context, source, source_field, target_source, target_field,
|
||||||
matType, nPoints, feedback)
|
matType, nPoints, feedback)
|
||||||
|
|
||||||
def linearMatrix(self, context, inLayer, inField, targetLayer, targetField,
|
def linearMatrix(self, parameters, context, source, inField, target_source, targetField,
|
||||||
matType, nPoints, feedback):
|
matType, nPoints, feedback):
|
||||||
|
inIdx = source.fields().lookupField(inField)
|
||||||
|
outIdx = target_source.fields().lookupField(targetField)
|
||||||
|
|
||||||
|
fields = QgsFields()
|
||||||
|
input_id_field = source.fields()[inIdx]
|
||||||
|
input_id_field.setName('InputID')
|
||||||
|
fields.append(input_id_field)
|
||||||
if matType == 0:
|
if matType == 0:
|
||||||
self.writer.addRecord(['InputID', 'TargetID', 'Distance'])
|
target_id_field = target_source.fields()[outIdx]
|
||||||
|
target_id_field.setName('TargetID')
|
||||||
|
fields.append(target_id_field)
|
||||||
|
fields.append(QgsField('Distance', QVariant.Double))
|
||||||
else:
|
else:
|
||||||
self.writer.addRecord(['InputID', 'MEAN', 'STDDEV', 'MIN', 'MAX'])
|
fields.append(QgsField('MEAN', QVariant.Double))
|
||||||
|
fields.append(QgsField('STDDEV', QVariant.Double))
|
||||||
|
fields.append(QgsField('MIN', QVariant.Double))
|
||||||
|
fields.append(QgsField('MAX', QVariant.Double))
|
||||||
|
|
||||||
index = QgsProcessingUtils.createSpatialIndex(targetLayer, context)
|
out_wkb = QgsWkbTypes.multiType(source.wkbType()) if matType == 0 else source.wkbType()
|
||||||
|
(sink, dest_id) = self.parameterAsSink(parameters, self.OUTPUT, context,
|
||||||
|
fields, out_wkb, source.sourceCrs())
|
||||||
|
|
||||||
inIdx = inLayer.fields().lookupField(inField)
|
index = QgsSpatialIndex(target_source.getFeatures(QgsFeatureRequest().setSubsetOfAttributes([]).setDestinationCrs(source.sourceCrs())), feedback)
|
||||||
outIdx = targetLayer.fields().lookupField(targetField)
|
|
||||||
|
|
||||||
distArea = QgsDistanceArea()
|
distArea = QgsDistanceArea()
|
||||||
distArea.setSourceCrs(inLayer.crs())
|
distArea.setSourceCrs(source.sourceCrs())
|
||||||
distArea.setEllipsoid(QgsProject.instance().ellipsoid())
|
distArea.setEllipsoid(QgsProject.instance().ellipsoid())
|
||||||
|
|
||||||
features = QgsProcessingUtils.getFeatures(inLayer, context)
|
features = source.getFeatures(QgsFeatureRequest().setSubsetOfAttributes([inIdx]))
|
||||||
total = 100.0 / inLayer.featureCount() if inLayer.featureCount() else 0
|
total = 100.0 / source.featureCount() if source.featureCount() else 0
|
||||||
for current, inFeat in enumerate(features):
|
for current, inFeat in enumerate(features):
|
||||||
|
if feedback.isCanceled():
|
||||||
|
break
|
||||||
|
|
||||||
inGeom = inFeat.geometry()
|
inGeom = inFeat.geometry()
|
||||||
inID = str(inFeat.attributes()[inIdx])
|
inID = str(inFeat.attributes()[inIdx])
|
||||||
featList = index.nearestNeighbor(inGeom.asPoint(), nPoints)
|
featList = index.nearestNeighbor(inGeom.asPoint(), nPoints)
|
||||||
distList = []
|
distList = []
|
||||||
vari = 0.0
|
vari = 0.0
|
||||||
request = QgsFeatureRequest().setFilterFids(featList).setSubsetOfAttributes([outIdx])
|
request = QgsFeatureRequest().setFilterFids(featList).setSubsetOfAttributes([outIdx]).setDestinationCrs(source.sourceCrs())
|
||||||
for outFeat in targetLayer.getFeatures(request):
|
for outFeat in target_source.getFeatures(request):
|
||||||
|
if feedback.isCanceled():
|
||||||
|
break
|
||||||
|
|
||||||
outID = outFeat.attributes()[outIdx]
|
outID = outFeat.attributes()[outIdx]
|
||||||
outGeom = outFeat.geometry()
|
outGeom = outFeat.geometry()
|
||||||
dist = distArea.measureLine(inGeom.asPoint(),
|
dist = distArea.measureLine(inGeom.asPoint(),
|
||||||
outGeom.asPoint())
|
outGeom.asPoint())
|
||||||
|
|
||||||
if matType == 0:
|
if matType == 0:
|
||||||
self.writer.addRecord([inID, str(outID), str(dist)])
|
out_feature = QgsFeature()
|
||||||
|
out_geom = QgsGeometry.unaryUnion([inFeat.geometry(), outFeat.geometry()])
|
||||||
|
out_feature.setGeometry(out_geom)
|
||||||
|
out_feature.setAttributes([inID, outID, dist])
|
||||||
|
sink.addFeature(out_feature, QgsFeatureSink.FastInsert)
|
||||||
else:
|
else:
|
||||||
distList.append(float(dist))
|
distList.append(float(dist))
|
||||||
|
|
||||||
@ -161,44 +195,61 @@ class PointDistance(QgisAlgorithm):
|
|||||||
for i in distList:
|
for i in distList:
|
||||||
vari += (i - mean) * (i - mean)
|
vari += (i - mean) * (i - mean)
|
||||||
vari = math.sqrt(vari / len(distList))
|
vari = math.sqrt(vari / len(distList))
|
||||||
self.writer.addRecord([inID, str(mean),
|
|
||||||
str(vari), str(min(distList)),
|
out_feature = QgsFeature()
|
||||||
str(max(distList))])
|
out_feature.setGeometry(inFeat.geometry())
|
||||||
|
out_feature.setAttributes([inID, mean, vari, min(distList), max(distList)])
|
||||||
|
sink.addFeature(out_feature, QgsFeatureSink.FastInsert)
|
||||||
|
|
||||||
feedback.setProgress(int(current * total))
|
feedback.setProgress(int(current * total))
|
||||||
|
|
||||||
def regularMatrix(self, context, inLayer, inField, targetLayer, targetField,
|
return {self.OUTPUT: dest_id}
|
||||||
nPoints, feedback):
|
|
||||||
index = QgsProcessingUtils.createSpatialIndex(targetLayer, context)
|
|
||||||
|
|
||||||
inIdx = inLayer.fields().lookupField(inField)
|
def regularMatrix(self, parameters, context, source, inField, target_source, targetField,
|
||||||
|
nPoints, feedback):
|
||||||
|
|
||||||
|
index = QgsSpatialIndex(target_source.getFeatures(QgsFeatureRequest().setSubsetOfAttributes([]).setDestinationCrs(source.sourceCrs())), feedback)
|
||||||
|
inIdx = source.fields().lookupField(inField)
|
||||||
|
|
||||||
distArea = QgsDistanceArea()
|
distArea = QgsDistanceArea()
|
||||||
distArea.setSourceCrs(inLayer.sourceCrs())
|
distArea.setSourceCrs(source.sourceCrs())
|
||||||
distArea.setEllipsoid(QgsProject.instance().ellipsoid())
|
distArea.setEllipsoid(QgsProject.instance().ellipsoid())
|
||||||
|
|
||||||
first = True
|
first = True
|
||||||
features = QgsProcessingUtils.getFeatures(inLayer, context)
|
sink = None
|
||||||
total = 100.0 / inLayer.featureCount() if inLayer.featureCount() else 0
|
dest_id = None
|
||||||
|
features = source.getFeatures(QgsFeatureRequest().setSubsetOfAttributes([inIdx]))
|
||||||
|
total = 100.0 / source.featureCount() if source.featureCount() else 0
|
||||||
for current, inFeat in enumerate(features):
|
for current, inFeat in enumerate(features):
|
||||||
|
if feedback.isCanceled():
|
||||||
|
break
|
||||||
|
|
||||||
inGeom = inFeat.geometry()
|
inGeom = inFeat.geometry()
|
||||||
inID = str(inFeat.attributes()[inIdx])
|
inID = str(inFeat.attributes()[inIdx])
|
||||||
featList = index.nearestNeighbor(inGeom.asPoint(), nPoints)
|
featList = index.nearestNeighbor(inGeom.asPoint(), nPoints)
|
||||||
if first:
|
if first:
|
||||||
first = False
|
first = False
|
||||||
data = ['ID']
|
fields = QgsFields()
|
||||||
|
input_id_field = source.fields()[inIdx]
|
||||||
|
input_id_field.setName('ID')
|
||||||
|
fields.append(input_id_field)
|
||||||
for i in range(len(featList)):
|
for i in range(len(featList)):
|
||||||
data.append('DIST_{0}'.format(i + 1))
|
fields.append(QgsField('DIST_{0}'.format(i + 1), QVariant.Double))
|
||||||
self.writer.addRecord(data)
|
(sink, dest_id) = self.parameterAsSink(parameters, self.OUTPUT, context,
|
||||||
|
fields, source.wkbType(), source.sourceCrs())
|
||||||
|
|
||||||
data = [inID]
|
data = [inID]
|
||||||
for i in featList:
|
for target in target_source.getFeatures(QgsFeatureRequest().setSubsetOfAttributes([]).setFilterFids(featList).setDestinationCrs(source.sourceCrs())):
|
||||||
request = QgsFeatureRequest().setFilterFid(i)
|
if feedback.isCanceled():
|
||||||
outFeat = next(targetLayer.getFeatures(request))
|
break
|
||||||
outGeom = outFeat.geometry()
|
outGeom = target.geometry()
|
||||||
dist = distArea.measureLine(inGeom.asPoint(),
|
dist = distArea.measureLine(inGeom.asPoint(),
|
||||||
outGeom.asPoint())
|
outGeom.asPoint())
|
||||||
data.append(str(float(dist)))
|
data.append(float(dist))
|
||||||
self.writer.addRecord(data)
|
out_feature = QgsFeature()
|
||||||
|
out_feature.setGeometry(inGeom)
|
||||||
|
out_feature.setAttributes(data)
|
||||||
|
sink.addFeature(out_feature, QgsFeatureSink.FastInsert)
|
||||||
feedback.setProgress(int(current * total))
|
feedback.setProgress(int(current * total))
|
||||||
|
|
||||||
|
return {self.OUTPUT: dest_id}
|
||||||
|
@ -57,6 +57,7 @@ from .DensifyGeometriesInterval import DensifyGeometriesInterval
|
|||||||
from .Difference import Difference
|
from .Difference import Difference
|
||||||
from .DropGeometry import DropGeometry
|
from .DropGeometry import DropGeometry
|
||||||
from .ExtentFromLayer import ExtentFromLayer
|
from .ExtentFromLayer import ExtentFromLayer
|
||||||
|
from .ExtractNodes import ExtractNodes
|
||||||
from .FixGeometry import FixGeometry
|
from .FixGeometry import FixGeometry
|
||||||
from .GridPolygon import GridPolygon
|
from .GridPolygon import GridPolygon
|
||||||
from .Heatmap import Heatmap
|
from .Heatmap import Heatmap
|
||||||
@ -66,8 +67,10 @@ from .ImportIntoSpatialite import ImportIntoSpatialite
|
|||||||
from .Intersection import Intersection
|
from .Intersection import Intersection
|
||||||
from .LinesIntersection import LinesIntersection
|
from .LinesIntersection import LinesIntersection
|
||||||
from .LinesToPolygons import LinesToPolygons
|
from .LinesToPolygons import LinesToPolygons
|
||||||
|
from .MeanCoords import MeanCoords
|
||||||
from .Merge import Merge
|
from .Merge import Merge
|
||||||
from .NearestNeighbourAnalysis import NearestNeighbourAnalysis
|
from .NearestNeighbourAnalysis import NearestNeighbourAnalysis
|
||||||
|
from .PointDistance import PointDistance
|
||||||
from .PointsInPolygon import PointsInPolygon
|
from .PointsInPolygon import PointsInPolygon
|
||||||
from .PointsLayerFromTable import PointsLayerFromTable
|
from .PointsLayerFromTable import PointsLayerFromTable
|
||||||
from .PolygonsToLines import PolygonsToLines
|
from .PolygonsToLines import PolygonsToLines
|
||||||
@ -87,17 +90,14 @@ from .SpatialiteExecuteSQL import SpatialiteExecuteSQL
|
|||||||
from .SumLines import SumLines
|
from .SumLines import SumLines
|
||||||
from .SymmetricalDifference import SymmetricalDifference
|
from .SymmetricalDifference import SymmetricalDifference
|
||||||
from .Union import Union
|
from .Union import Union
|
||||||
|
from .UniqueValues import UniqueValues
|
||||||
from .VectorSplit import VectorSplit
|
from .VectorSplit import VectorSplit
|
||||||
from .VoronoiPolygons import VoronoiPolygons
|
from .VoronoiPolygons import VoronoiPolygons
|
||||||
from .ZonalStatistics import ZonalStatistics
|
from .ZonalStatistics import ZonalStatistics
|
||||||
|
|
||||||
# from .ExtractByLocation import ExtractByLocation
|
# from .ExtractByLocation import ExtractByLocation
|
||||||
# from .MeanCoords import MeanCoords
|
|
||||||
# from .PointDistance import PointDistance
|
|
||||||
# from .UniqueValues import UniqueValues
|
|
||||||
# from .ExportGeometryInfo import ExportGeometryInfo
|
# from .ExportGeometryInfo import ExportGeometryInfo
|
||||||
# from .SinglePartsToMultiparts import SinglePartsToMultiparts
|
# from .SinglePartsToMultiparts import SinglePartsToMultiparts
|
||||||
# from .ExtractNodes import ExtractNodes
|
|
||||||
# from .ConvexHull import ConvexHull
|
# from .ConvexHull import ConvexHull
|
||||||
# from .FixedDistanceBuffer import FixedDistanceBuffer
|
# from .FixedDistanceBuffer import FixedDistanceBuffer
|
||||||
# from .VariableDistanceBuffer import VariableDistanceBuffer
|
# from .VariableDistanceBuffer import VariableDistanceBuffer
|
||||||
@ -183,11 +183,10 @@ class QGISAlgorithmProvider(QgsProcessingProvider):
|
|||||||
self.externalAlgs = []
|
self.externalAlgs = []
|
||||||
|
|
||||||
def getAlgs(self):
|
def getAlgs(self):
|
||||||
# algs = [MeanCoords(),
|
# algs = [
|
||||||
# UniqueValues(), PointDistance(),
|
#
|
||||||
# ExportGeometryInfo(),
|
# ExportGeometryInfo(),
|
||||||
# SinglePartsToMultiparts(),
|
# SinglePartsToMultiparts(),
|
||||||
# ExtractNodes(),
|
|
||||||
# ConvexHull(), FixedDistanceBuffer(),
|
# ConvexHull(), FixedDistanceBuffer(),
|
||||||
# VariableDistanceBuffer(),
|
# VariableDistanceBuffer(),
|
||||||
# RandomSelection(), RandomSelectionWithinSubsets(),
|
# RandomSelection(), RandomSelectionWithinSubsets(),
|
||||||
@ -251,6 +250,7 @@ class QGISAlgorithmProvider(QgsProcessingProvider):
|
|||||||
Difference(),
|
Difference(),
|
||||||
DropGeometry(),
|
DropGeometry(),
|
||||||
ExtentFromLayer(),
|
ExtentFromLayer(),
|
||||||
|
ExtractNodes(),
|
||||||
FixGeometry(),
|
FixGeometry(),
|
||||||
GridPolygon(),
|
GridPolygon(),
|
||||||
Heatmap(),
|
Heatmap(),
|
||||||
@ -260,8 +260,10 @@ class QGISAlgorithmProvider(QgsProcessingProvider):
|
|||||||
Intersection(),
|
Intersection(),
|
||||||
LinesIntersection(),
|
LinesIntersection(),
|
||||||
LinesToPolygons(),
|
LinesToPolygons(),
|
||||||
|
MeanCoords(),
|
||||||
Merge(),
|
Merge(),
|
||||||
NearestNeighbourAnalysis(),
|
NearestNeighbourAnalysis(),
|
||||||
|
PointDistance(),
|
||||||
PointsInPolygon(),
|
PointsInPolygon(),
|
||||||
PointsLayerFromTable(),
|
PointsLayerFromTable(),
|
||||||
PolygonsToLines(),
|
PolygonsToLines(),
|
||||||
@ -281,6 +283,7 @@ class QGISAlgorithmProvider(QgsProcessingProvider):
|
|||||||
SumLines(),
|
SumLines(),
|
||||||
SymmetricalDifference(),
|
SymmetricalDifference(),
|
||||||
Union(),
|
Union(),
|
||||||
|
UniqueValues(),
|
||||||
VectorSplit(),
|
VectorSplit(),
|
||||||
VoronoiPolygons(),
|
VoronoiPolygons(),
|
||||||
ZonalStatistics()
|
ZonalStatistics()
|
||||||
|
@ -31,25 +31,32 @@ import codecs
|
|||||||
|
|
||||||
from qgis.PyQt.QtGui import QIcon
|
from qgis.PyQt.QtGui import QIcon
|
||||||
|
|
||||||
from qgis.core import QgsProcessingUtils, QgsFeatureSink
|
from qgis.core import (QgsCoordinateReferenceSystem,
|
||||||
|
QgsWkbTypes,
|
||||||
|
QgsFeature,
|
||||||
|
QgsFeatureSink,
|
||||||
|
QgsFields,
|
||||||
|
QgsProcessingParameterField,
|
||||||
|
QgsProcessingParameterFeatureSource,
|
||||||
|
QgsProcessingParameterFeatureSink,
|
||||||
|
QgsProcessingOutputNumber,
|
||||||
|
QgsProcessingOutputString,
|
||||||
|
QgsProcessingParameterFileDestination,
|
||||||
|
QgsProcessingOutputHtml)
|
||||||
|
|
||||||
from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm
|
from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm
|
||||||
from processing.core.parameters import ParameterVector
|
|
||||||
from processing.core.parameters import ParameterTableField
|
|
||||||
from processing.core.outputs import OutputHTML
|
|
||||||
from processing.core.outputs import OutputNumber
|
|
||||||
from processing.core.outputs import OutputString
|
|
||||||
|
|
||||||
pluginPath = os.path.split(os.path.split(os.path.dirname(__file__))[0])[0]
|
pluginPath = os.path.split(os.path.split(os.path.dirname(__file__))[0])[0]
|
||||||
|
|
||||||
|
|
||||||
class UniqueValues(QgisAlgorithm):
|
class UniqueValues(QgisAlgorithm):
|
||||||
|
|
||||||
INPUT_LAYER = 'INPUT_LAYER'
|
INPUT = 'INPUT'
|
||||||
FIELD_NAME = 'FIELD_NAME'
|
FIELD_NAME = 'FIELD_NAME'
|
||||||
TOTAL_VALUES = 'TOTAL_VALUES'
|
TOTAL_VALUES = 'TOTAL_VALUES'
|
||||||
UNIQUE_VALUES = 'UNIQUE_VALUES'
|
UNIQUE_VALUES = 'UNIQUE_VALUES'
|
||||||
OUTPUT = 'OUTPUT'
|
OUTPUT = 'OUTPUT'
|
||||||
|
OUTPUT_HTML_FILE = 'OUTPUT_HTML_FILE'
|
||||||
|
|
||||||
def icon(self):
|
def icon(self):
|
||||||
return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'unique.png'))
|
return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'unique.png'))
|
||||||
@ -61,14 +68,18 @@ class UniqueValues(QgisAlgorithm):
|
|||||||
super().__init__()
|
super().__init__()
|
||||||
|
|
||||||
def initAlgorithm(self, config=None):
|
def initAlgorithm(self, config=None):
|
||||||
self.addParameter(ParameterVector(self.INPUT_LAYER,
|
self.addParameter(QgsProcessingParameterFeatureSource(self.INPUT,
|
||||||
self.tr('Input layer')))
|
self.tr('Input layer')))
|
||||||
self.addParameter(ParameterTableField(self.FIELD_NAME,
|
self.addParameter(QgsProcessingParameterField(self.FIELD_NAME,
|
||||||
self.tr('Target field'),
|
self.tr('Target field'),
|
||||||
self.INPUT_LAYER, ParameterTableField.DATA_TYPE_ANY))
|
parentLayerParameterName=self.INPUT, type=QgsProcessingParameterField.Any))
|
||||||
self.addOutput(OutputHTML(self.OUTPUT, self.tr('Unique values')))
|
|
||||||
self.addOutput(OutputNumber(self.TOTAL_VALUES, self.tr('Total unique values')))
|
self.addParameter(QgsProcessingParameterFeatureSink(self.OUTPUT, self.tr('Unique values'), optional=True, defaultValue=''))
|
||||||
self.addOutput(OutputString(self.UNIQUE_VALUES, self.tr('Unique values')))
|
|
||||||
|
self.addParameter(QgsProcessingParameterFileDestination(self.OUTPUT_HTML_FILE, self.tr('HTML report'), self.tr('HTML files (*.html)'), None, True))
|
||||||
|
self.addOutput(QgsProcessingOutputHtml(self.OUTPUT_HTML_FILE, self.tr('HTML report')))
|
||||||
|
self.addOutput(QgsProcessingOutputNumber(self.TOTAL_VALUES, self.tr('Total unique values')))
|
||||||
|
self.addOutput(QgsProcessingOutputString(self.UNIQUE_VALUES, self.tr('Unique values')))
|
||||||
|
|
||||||
def name(self):
|
def name(self):
|
||||||
return 'listuniquevalues'
|
return 'listuniquevalues'
|
||||||
@ -77,14 +88,36 @@ class UniqueValues(QgisAlgorithm):
|
|||||||
return self.tr('List unique values')
|
return self.tr('List unique values')
|
||||||
|
|
||||||
def processAlgorithm(self, parameters, context, feedback):
|
def processAlgorithm(self, parameters, context, feedback):
|
||||||
layer = QgsProcessingUtils.mapLayerFromString(self.getParameterValue(self.INPUT_LAYER), context)
|
source = self.parameterAsSource(parameters, self.INPUT, context)
|
||||||
fieldName = self.getParameterValue(self.FIELD_NAME)
|
field_name = self.parameterAsString(parameters, self.FIELD_NAME, context)
|
||||||
outputFile = self.getOutputValue(self.OUTPUT)
|
values = source.uniqueValues(source.fields().lookupField(field_name))
|
||||||
values = QgsProcessingUtils.uniqueValues(layer, layer.fields().lookupField(fieldName), context)
|
|
||||||
self.createHTML(outputFile, values)
|
fields = QgsFields()
|
||||||
self.setOutputValue(self.TOTAL_VALUES, len(values))
|
field = source.fields()[source.fields().lookupField(field_name)]
|
||||||
self.setOutputValue(self.UNIQUE_VALUES, ';'.join([str(v) for v in
|
field.setName('VALUES')
|
||||||
values]))
|
fields.append(field)
|
||||||
|
(sink, dest_id) = self.parameterAsSink(parameters, self.OUTPUT, context,
|
||||||
|
fields, QgsWkbTypes.NoGeometry, QgsCoordinateReferenceSystem())
|
||||||
|
results = {}
|
||||||
|
if sink:
|
||||||
|
for value in values:
|
||||||
|
if feedback.isCanceled():
|
||||||
|
break
|
||||||
|
|
||||||
|
f = QgsFeature()
|
||||||
|
f.setAttributes([value])
|
||||||
|
sink.addFeature(f, QgsFeatureSink.FastInsert)
|
||||||
|
results[self.OUTPUT] = dest_id
|
||||||
|
|
||||||
|
output_file = self.parameterAsFileOutput(parameters, self.OUTPUT_HTML_FILE, context)
|
||||||
|
if output_file:
|
||||||
|
self.createHTML(output_file, values)
|
||||||
|
results[self.OUTPUT_HTML_FILE] = output_file
|
||||||
|
|
||||||
|
results[self.TOTAL_VALUES] = len(values)
|
||||||
|
results[self.UNIQUE_VALUES] = ';'.join([str(v) for v in
|
||||||
|
values])
|
||||||
|
return results
|
||||||
|
|
||||||
def createHTML(self, outputFile, algData):
|
def createHTML(self, outputFile, algData):
|
||||||
with codecs.open(outputFile, 'w', encoding='utf-8') as f:
|
with codecs.open(outputFile, 'w', encoding='utf-8') as f:
|
||||||
|
@ -239,7 +239,7 @@ def createTest(text):
|
|||||||
|
|
||||||
definition['params'] = params
|
definition['params'] = params
|
||||||
|
|
||||||
for i, out in enumerate([out for out in alg.destinationParameterDefinitions() if not out.flags() & QgsProcessingParameterDefinition.FlagHiddenn]):
|
for i, out in enumerate([out for out in alg.destinationParameterDefinitions() if not out.flags() & QgsProcessingParameterDefinition.FlagHidden]):
|
||||||
token = tokens[i - len(alg.destinationParameterDefinitions())]
|
token = tokens[i - len(alg.destinationParameterDefinitions())]
|
||||||
|
|
||||||
if isinstance(out, (OutputNumber, OutputString)):
|
if isinstance(out, (OutputNumber, OutputString)):
|
||||||
|
33
python/plugins/processing/tests/testdata/expected/distance_matrix.gfs
vendored
Normal file
33
python/plugins/processing/tests/testdata/expected/distance_matrix.gfs
vendored
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<GMLFeatureClassList>
|
||||||
|
<GMLFeatureClass>
|
||||||
|
<Name>distance_matrix</Name>
|
||||||
|
<ElementPath>distance_matrix</ElementPath>
|
||||||
|
<!--MULTIPOINT-->
|
||||||
|
<GeometryType>4</GeometryType>
|
||||||
|
<SRSName>EPSG:4326</SRSName>
|
||||||
|
<DatasetSpecificInfo>
|
||||||
|
<FeatureCount>81</FeatureCount>
|
||||||
|
<ExtentXMin>0.00000</ExtentXMin>
|
||||||
|
<ExtentXMax>8.00000</ExtentXMax>
|
||||||
|
<ExtentYMin>-5.00000</ExtentYMin>
|
||||||
|
<ExtentYMax>3.00000</ExtentYMax>
|
||||||
|
</DatasetSpecificInfo>
|
||||||
|
<PropertyDefn>
|
||||||
|
<Name>InputID</Name>
|
||||||
|
<ElementPath>InputID</ElementPath>
|
||||||
|
<Type>String</Type>
|
||||||
|
<Width>8</Width>
|
||||||
|
</PropertyDefn>
|
||||||
|
<PropertyDefn>
|
||||||
|
<Name>TargetID</Name>
|
||||||
|
<ElementPath>TargetID</ElementPath>
|
||||||
|
<Type>String</Type>
|
||||||
|
<Width>8</Width>
|
||||||
|
</PropertyDefn>
|
||||||
|
<PropertyDefn>
|
||||||
|
<Name>Distance</Name>
|
||||||
|
<ElementPath>Distance</ElementPath>
|
||||||
|
<Type>Real</Type>
|
||||||
|
</PropertyDefn>
|
||||||
|
</GMLFeatureClass>
|
||||||
|
</GMLFeatureClassList>
|
662
python/plugins/processing/tests/testdata/expected/distance_matrix.gml
vendored
Normal file
662
python/plugins/processing/tests/testdata/expected/distance_matrix.gml
vendored
Normal file
@ -0,0 +1,662 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<ogr:FeatureCollection
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation=""
|
||||||
|
xmlns:ogr="http://ogr.maptools.org/"
|
||||||
|
xmlns:gml="http://www.opengis.net/gml">
|
||||||
|
<gml:boundedBy>
|
||||||
|
<gml:Box>
|
||||||
|
<gml:coord><gml:X>0</gml:X><gml:Y>-5</gml:Y></gml:coord>
|
||||||
|
<gml:coord><gml:X>8</gml:X><gml:Y>3</gml:Y></gml:coord>
|
||||||
|
</gml:Box>
|
||||||
|
</gml:boundedBy>
|
||||||
|
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.0">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>3,3</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.0</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.1</ogr:TargetID>
|
||||||
|
<ogr:Distance>2.82842712474619</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.1">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.0</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.0</ogr:TargetID>
|
||||||
|
<ogr:Distance>0</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.2">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>7,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.0</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.7</ogr:TargetID>
|
||||||
|
<ogr:Distance>6.32455532033676</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.3">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>8,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.0</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.6</ogr:TargetID>
|
||||||
|
<ogr:Distance>7.28010988928052</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.4">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-5</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.0</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.5</ogr:TargetID>
|
||||||
|
<ogr:Distance>6.08276253029822</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.5">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>4,1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.0</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.4</ogr:TargetID>
|
||||||
|
<ogr:Distance>3</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.6">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.0</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.8</ogr:TargetID>
|
||||||
|
<ogr:Distance>2.23606797749979</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.7">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>5,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.0</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.3</ogr:TargetID>
|
||||||
|
<ogr:Distance>4.12310562561766</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.8">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>2,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.0</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.2</ogr:TargetID>
|
||||||
|
<ogr:Distance>1.4142135623731</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.9">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>3,3</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.1</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.1</ogr:TargetID>
|
||||||
|
<ogr:Distance>0</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.10">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>3,3</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.1</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.0</ogr:TargetID>
|
||||||
|
<ogr:Distance>2.82842712474619</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.11">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>3,3</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>7,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.1</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.7</ogr:TargetID>
|
||||||
|
<ogr:Distance>5.65685424949238</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.12">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>3,3</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>8,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.1</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.6</ogr:TargetID>
|
||||||
|
<ogr:Distance>6.40312423743285</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.13">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-5</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>3,3</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.1</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.5</ogr:TargetID>
|
||||||
|
<ogr:Distance>8.54400374531753</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.14">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>3,3</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>4,1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.1</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.4</ogr:TargetID>
|
||||||
|
<ogr:Distance>2.23606797749979</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.15">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>3,3</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.1</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.8</ogr:TargetID>
|
||||||
|
<ogr:Distance>5</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.16">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>3,3</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>5,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.1</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.3</ogr:TargetID>
|
||||||
|
<ogr:Distance>2.23606797749979</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.17">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>2,2</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>3,3</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.1</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.2</ogr:TargetID>
|
||||||
|
<ogr:Distance>1.4142135623731</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.18">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>2,2</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>3,3</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.2</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.1</ogr:TargetID>
|
||||||
|
<ogr:Distance>1.4142135623731</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.19">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>2,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.2</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.0</ogr:TargetID>
|
||||||
|
<ogr:Distance>1.4142135623731</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.20">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>2,2</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>7,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.2</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.7</ogr:TargetID>
|
||||||
|
<ogr:Distance>5.8309518948453</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.21">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>2,2</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>8,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.2</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.6</ogr:TargetID>
|
||||||
|
<ogr:Distance>6.70820393249937</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.22">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-5</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>2,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.2</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.5</ogr:TargetID>
|
||||||
|
<ogr:Distance>7.28010988928052</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.23">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>2,2</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>4,1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.2</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.4</ogr:TargetID>
|
||||||
|
<ogr:Distance>2.23606797749979</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.24">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>2,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.2</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.8</ogr:TargetID>
|
||||||
|
<ogr:Distance>3.60555127546399</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.25">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>2,2</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>5,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.2</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.3</ogr:TargetID>
|
||||||
|
<ogr:Distance>3</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.26">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>2,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.2</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.2</ogr:TargetID>
|
||||||
|
<ogr:Distance>0</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.27">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>3,3</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>5,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.3</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.1</ogr:TargetID>
|
||||||
|
<ogr:Distance>2.23606797749979</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.28">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>5,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.3</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.0</ogr:TargetID>
|
||||||
|
<ogr:Distance>4.12310562561766</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.29">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>5,2</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>7,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.3</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.7</ogr:TargetID>
|
||||||
|
<ogr:Distance>3.60555127546399</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.30">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>5,2</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>8,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.3</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.6</ogr:TargetID>
|
||||||
|
<ogr:Distance>4.24264068711928</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.31">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-5</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>5,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.3</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.5</ogr:TargetID>
|
||||||
|
<ogr:Distance>8.60232526704263</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.32">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>4,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>5,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.3</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.4</ogr:TargetID>
|
||||||
|
<ogr:Distance>1.4142135623731</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.33">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>5,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.3</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.8</ogr:TargetID>
|
||||||
|
<ogr:Distance>5.8309518948453</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.34">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>5,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.3</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.3</ogr:TargetID>
|
||||||
|
<ogr:Distance>0</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.35">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>2,2</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>5,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.3</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.2</ogr:TargetID>
|
||||||
|
<ogr:Distance>3</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.36">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>3,3</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>4,1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.4</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.1</ogr:TargetID>
|
||||||
|
<ogr:Distance>2.23606797749979</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.37">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>4,1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.4</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.0</ogr:TargetID>
|
||||||
|
<ogr:Distance>3</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.38">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>4,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>7,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.4</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.7</ogr:TargetID>
|
||||||
|
<ogr:Distance>3.60555127546399</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.39">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>4,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>8,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.4</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.6</ogr:TargetID>
|
||||||
|
<ogr:Distance>4.47213595499958</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.40">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-5</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>4,1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.4</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.5</ogr:TargetID>
|
||||||
|
<ogr:Distance>7.21110255092798</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.41">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>4,1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.4</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.4</ogr:TargetID>
|
||||||
|
<ogr:Distance>0</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.42">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>4,1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.4</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.8</ogr:TargetID>
|
||||||
|
<ogr:Distance>4.47213595499958</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.43">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>4,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>5,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.4</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.3</ogr:TargetID>
|
||||||
|
<ogr:Distance>1.4142135623731</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.44">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>2,2</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>4,1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.4</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.2</ogr:TargetID>
|
||||||
|
<ogr:Distance>2.23606797749979</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.45">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-5</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>3,3</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.5</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.1</ogr:TargetID>
|
||||||
|
<ogr:Distance>8.54400374531753</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.46">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-5</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.5</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.0</ogr:TargetID>
|
||||||
|
<ogr:Distance>6.08276253029822</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.47">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-5</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>7,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.5</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.7</ogr:TargetID>
|
||||||
|
<ogr:Distance>8.06225774829855</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.48">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-5</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>8,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.5</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.6</ogr:TargetID>
|
||||||
|
<ogr:Distance>8.94427190999916</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.49">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-5</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.5</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.5</ogr:TargetID>
|
||||||
|
<ogr:Distance>0</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.50">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-5</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>4,1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.5</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.4</ogr:TargetID>
|
||||||
|
<ogr:Distance>7.21110255092798</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.51">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-5</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>0,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.5</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.8</ogr:TargetID>
|
||||||
|
<ogr:Distance>4</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.52">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-5</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>5,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.5</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.3</ogr:TargetID>
|
||||||
|
<ogr:Distance>8.60232526704263</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.53">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-5</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>2,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.5</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.2</ogr:TargetID>
|
||||||
|
<ogr:Distance>7.28010988928052</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.54">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>3,3</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>8,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.6</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.1</ogr:TargetID>
|
||||||
|
<ogr:Distance>6.40312423743285</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.55">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>8,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.6</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.0</ogr:TargetID>
|
||||||
|
<ogr:Distance>7.28010988928052</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.56">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>7,-1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>8,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.6</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.7</ogr:TargetID>
|
||||||
|
<ogr:Distance>1</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.57">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>8,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.6</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.6</ogr:TargetID>
|
||||||
|
<ogr:Distance>0</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.58">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-5</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>8,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.6</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.5</ogr:TargetID>
|
||||||
|
<ogr:Distance>8.94427190999916</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.59">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>4,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>8,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.6</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.4</ogr:TargetID>
|
||||||
|
<ogr:Distance>4.47213595499958</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.60">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>8,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.6</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.8</ogr:TargetID>
|
||||||
|
<ogr:Distance>8</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.61">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>5,2</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>8,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.6</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.3</ogr:TargetID>
|
||||||
|
<ogr:Distance>4.24264068711928</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.62">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>2,2</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>8,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.6</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.2</ogr:TargetID>
|
||||||
|
<ogr:Distance>6.70820393249937</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.63">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>3,3</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>7,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.7</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.1</ogr:TargetID>
|
||||||
|
<ogr:Distance>5.65685424949238</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.64">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>7,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.7</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.0</ogr:TargetID>
|
||||||
|
<ogr:Distance>6.32455532033676</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.65">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>7,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.7</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.7</ogr:TargetID>
|
||||||
|
<ogr:Distance>0</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.66">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>7,-1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>8,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.7</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.6</ogr:TargetID>
|
||||||
|
<ogr:Distance>1</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.67">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-5</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>7,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.7</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.5</ogr:TargetID>
|
||||||
|
<ogr:Distance>8.06225774829855</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.68">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>4,1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>7,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.7</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.4</ogr:TargetID>
|
||||||
|
<ogr:Distance>3.60555127546399</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.69">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>7,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.7</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.8</ogr:TargetID>
|
||||||
|
<ogr:Distance>7</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.70">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>5,2</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>7,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.7</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.3</ogr:TargetID>
|
||||||
|
<ogr:Distance>3.60555127546399</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.71">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>2,2</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>7,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.7</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.2</ogr:TargetID>
|
||||||
|
<ogr:Distance>5.8309518948453</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.72">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>3,3</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.8</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.1</ogr:TargetID>
|
||||||
|
<ogr:Distance>5</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.73">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>1,1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.8</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.0</ogr:TargetID>
|
||||||
|
<ogr:Distance>2.23606797749979</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.74">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>7,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.8</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.7</ogr:TargetID>
|
||||||
|
<ogr:Distance>7</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.75">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>8,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.8</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.6</ogr:TargetID>
|
||||||
|
<ogr:Distance>8</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.76">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-5</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>0,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.8</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.5</ogr:TargetID>
|
||||||
|
<ogr:Distance>4</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.77">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>4,1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.8</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.4</ogr:TargetID>
|
||||||
|
<ogr:Distance>4.47213595499958</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.78">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-1</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.8</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.8</ogr:TargetID>
|
||||||
|
<ogr:Distance>0</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.79">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>5,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.8</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.3</ogr:TargetID>
|
||||||
|
<ogr:Distance>5.8309518948453</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:distance_matrix fid="distance_matrix.80">
|
||||||
|
<ogr:geometryProperty><gml:MultiPoint srsName="EPSG:4326"><gml:pointMember><gml:Point><gml:coordinates>0,-1</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>2,2</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint></ogr:geometryProperty>
|
||||||
|
<ogr:InputID>points.8</ogr:InputID>
|
||||||
|
<ogr:TargetID>points.2</ogr:TargetID>
|
||||||
|
<ogr:Distance>3.60555127546399</ogr:Distance>
|
||||||
|
</ogr:distance_matrix>
|
||||||
|
</gml:featureMember>
|
||||||
|
</ogr:FeatureCollection>
|
@ -22,11 +22,5 @@
|
|||||||
<ElementPath>MEAN_Y</ElementPath>
|
<ElementPath>MEAN_Y</ElementPath>
|
||||||
<Type>Real</Type>
|
<Type>Real</Type>
|
||||||
</PropertyDefn>
|
</PropertyDefn>
|
||||||
<PropertyDefn>
|
|
||||||
<Name>UID</Name>
|
|
||||||
<ElementPath>UID</ElementPath>
|
|
||||||
<Type>String</Type>
|
|
||||||
<Width>12</Width>
|
|
||||||
</PropertyDefn>
|
|
||||||
</GMLFeatureClass>
|
</GMLFeatureClass>
|
||||||
</GMLFeatureClassList>
|
</GMLFeatureClassList>
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
<ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>3.33333333333333,0.111111111111111</gml:coordinates></gml:Point></ogr:geometryProperty>
|
<ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>3.33333333333333,0.111111111111111</gml:coordinates></gml:Point></ogr:geometryProperty>
|
||||||
<ogr:MEAN_X>3.333333333333333</ogr:MEAN_X>
|
<ogr:MEAN_X>3.333333333333333</ogr:MEAN_X>
|
||||||
<ogr:MEAN_Y>0.111111111111111</ogr:MEAN_Y>
|
<ogr:MEAN_Y>0.111111111111111</ogr:MEAN_Y>
|
||||||
<ogr:UID>Single class</ogr:UID>
|
|
||||||
</ogr:mean_coordinates>
|
</ogr:mean_coordinates>
|
||||||
</gml:featureMember>
|
</gml:featureMember>
|
||||||
</ogr:FeatureCollection>
|
</ogr:FeatureCollection>
|
||||||
|
15
python/plugins/processing/tests/testdata/expected/unique_values.gfs
vendored
Normal file
15
python/plugins/processing/tests/testdata/expected/unique_values.gfs
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<GMLFeatureClassList>
|
||||||
|
<GMLFeatureClass>
|
||||||
|
<Name>unique_values</Name>
|
||||||
|
<ElementPath>unique_values</ElementPath>
|
||||||
|
<GeometryType>100</GeometryType>
|
||||||
|
<DatasetSpecificInfo>
|
||||||
|
<FeatureCount>3</FeatureCount>
|
||||||
|
</DatasetSpecificInfo>
|
||||||
|
<PropertyDefn>
|
||||||
|
<Name>VALUES</Name>
|
||||||
|
<ElementPath>VALUES</ElementPath>
|
||||||
|
<Type>Integer</Type>
|
||||||
|
</PropertyDefn>
|
||||||
|
</GMLFeatureClass>
|
||||||
|
</GMLFeatureClassList>
|
24
python/plugins/processing/tests/testdata/expected/unique_values.gml
vendored
Normal file
24
python/plugins/processing/tests/testdata/expected/unique_values.gml
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<ogr:FeatureCollection
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation=""
|
||||||
|
xmlns:ogr="http://ogr.maptools.org/"
|
||||||
|
xmlns:gml="http://www.opengis.net/gml">
|
||||||
|
<gml:boundedBy><gml:null>missing</gml:null></gml:boundedBy>
|
||||||
|
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:unique_values fid="unique_values.0">
|
||||||
|
<ogr:VALUES>0</ogr:VALUES>
|
||||||
|
</ogr:unique_values>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:unique_values fid="unique_values.1">
|
||||||
|
<ogr:VALUES>1</ogr:VALUES>
|
||||||
|
</ogr:unique_values>
|
||||||
|
</gml:featureMember>
|
||||||
|
<gml:featureMember>
|
||||||
|
<ogr:unique_values fid="unique_values.2">
|
||||||
|
<ogr:VALUES>2</ogr:VALUES>
|
||||||
|
</ogr:unique_values>
|
||||||
|
</gml:featureMember>
|
||||||
|
</ogr:FeatureCollection>
|
@ -241,6 +241,19 @@ tests:
|
|||||||
# geometry:
|
# geometry:
|
||||||
# precision: 7
|
# precision: 7
|
||||||
#
|
#
|
||||||
|
|
||||||
|
- algorithm: qgis:listuniquevalues
|
||||||
|
name: Unique values
|
||||||
|
params:
|
||||||
|
INPUT:
|
||||||
|
name: points.gml
|
||||||
|
type: vector
|
||||||
|
FIELD_NAME: id2
|
||||||
|
results:
|
||||||
|
OUTPUT:
|
||||||
|
name: expected/unique_values.gml
|
||||||
|
type: vector
|
||||||
|
|
||||||
- algorithm: qgis:addautoincrementalfield
|
- algorithm: qgis:addautoincrementalfield
|
||||||
name: Add autoincremental field
|
name: Add autoincremental field
|
||||||
params:
|
params:
|
||||||
@ -876,50 +889,50 @@ tests:
|
|||||||
# OUTPUT_LAYER:
|
# OUTPUT_LAYER:
|
||||||
# name: expected/single_sided_buffer_multiline_bevel.gml
|
# name: expected/single_sided_buffer_multiline_bevel.gml
|
||||||
# type: vector
|
# type: vector
|
||||||
#
|
|
||||||
# - algorithm: qgis:extractnodes
|
- algorithm: qgis:extractnodes
|
||||||
# name: Test (qgis:extractnodes)
|
name: Test (qgis:extractnodes)
|
||||||
# params:
|
params:
|
||||||
# INPUT:
|
INPUT:
|
||||||
# name: multipolys.gml
|
name: multipolys.gml
|
||||||
# type: vector
|
type: vector
|
||||||
# results:
|
results:
|
||||||
# OUTPUT:
|
OUTPUT:
|
||||||
# name: expected/extract_nodes_multipolys.gml
|
name: expected/extract_nodes_multipolys.gml
|
||||||
# type: vector
|
type: vector
|
||||||
#
|
|
||||||
# - algorithm: qgis:extractnodes
|
- algorithm: qgis:extractnodes
|
||||||
# name: Extract nodes from polygons
|
name: Extract nodes from polygons
|
||||||
# params:
|
params:
|
||||||
# INPUT:
|
INPUT:
|
||||||
# name: polys.gml
|
name: polys.gml
|
||||||
# type: vector
|
type: vector
|
||||||
# results:
|
results:
|
||||||
# OUTPUT:
|
OUTPUT:
|
||||||
# name: expected/extract_nodes_polys.gml
|
name: expected/extract_nodes_polys.gml
|
||||||
# type: vector
|
type: vector
|
||||||
#
|
|
||||||
# - algorithm: qgis:extractnodes
|
- algorithm: qgis:extractnodes
|
||||||
# name: Extract nodes from multilines
|
name: Extract nodes from multilines
|
||||||
# params:
|
params:
|
||||||
# INPUT:
|
INPUT:
|
||||||
# name: multilines.gml
|
name: multilines.gml
|
||||||
# type: vector
|
type: vector
|
||||||
# results:
|
results:
|
||||||
# OUTPUT:
|
OUTPUT:
|
||||||
# name: expected/extract_nodes_multilines.gml
|
name: expected/extract_nodes_multilines.gml
|
||||||
# type: vector
|
type: vector
|
||||||
#
|
|
||||||
# - algorithm: qgis:extractnodes
|
- algorithm: qgis:extractnodes
|
||||||
# name: Extract nodes from lines
|
name: Extract nodes from lines
|
||||||
# params:
|
params:
|
||||||
# INPUT:
|
INPUT:
|
||||||
# name: lines.gml
|
name: lines.gml
|
||||||
# type: vector
|
type: vector
|
||||||
# results:
|
results:
|
||||||
# OUTPUT:
|
OUTPUT:
|
||||||
# name: expected/extract_nodes_lines.gml
|
name: expected/extract_nodes_lines.gml
|
||||||
# type: vector
|
type: vector
|
||||||
|
|
||||||
- algorithm: qgis:simplifygeometries
|
- algorithm: qgis:simplifygeometries
|
||||||
name: Simplify (lines)
|
name: Simplify (lines)
|
||||||
@ -2171,21 +2184,25 @@ tests:
|
|||||||
# name: expected/truncated.shp
|
# name: expected/truncated.shp
|
||||||
# type: vector
|
# type: vector
|
||||||
# in_place_result: true
|
# in_place_result: true
|
||||||
#
|
|
||||||
# - algorithm: qgis:distancematrix
|
- algorithm: qgis:distancematrix
|
||||||
# name: Distance matrix (only tests for TableWriter, does not check result)
|
name: Distance matrix (only tests for run, does not check result as rows are in random order)
|
||||||
# params:
|
params:
|
||||||
# INPUT_FIELD: fid
|
INPUT_FIELD: fid
|
||||||
# INPUT_LAYER:
|
INPUT:
|
||||||
# name: points.gml
|
name: points.gml
|
||||||
# type: vector
|
type: vector
|
||||||
# MATRIX_TYPE: '0'
|
MATRIX_TYPE: '0'
|
||||||
# NEAREST_POINTS: 0
|
NEAREST_POINTS: 0
|
||||||
# TARGET_FIELD: fid
|
TARGET_FIELD: fid
|
||||||
# TARGET_LAYER:
|
TARGET:
|
||||||
# name: points.gml
|
name: points.gml
|
||||||
# type: vector
|
type: vector
|
||||||
# results: {}
|
results:
|
||||||
|
OUTPUT:
|
||||||
|
name: expected/count_unique_points.gml
|
||||||
|
type: vector
|
||||||
|
compare: false
|
||||||
|
|
||||||
- algorithm: qgis:countpointsinpolygon
|
- algorithm: qgis:countpointsinpolygon
|
||||||
name: standard count unique points in polygon
|
name: standard count unique points in polygon
|
||||||
@ -2232,18 +2249,18 @@ tests:
|
|||||||
# OUTPUT:
|
# OUTPUT:
|
||||||
# name: expected/points_alog_lines.gml
|
# name: expected/points_alog_lines.gml
|
||||||
# type: vector
|
# type: vector
|
||||||
#
|
|
||||||
# - algorithm: qgis:meancoordinates
|
- algorithm: qgis:meancoordinates
|
||||||
# name: standard mean coordinates
|
name: standard mean coordinates
|
||||||
# params:
|
params:
|
||||||
# POINTS:
|
INPUT:
|
||||||
# name: custom/points.shp
|
name: custom/points.shp
|
||||||
# type: vector
|
type: vector
|
||||||
# results:
|
results:
|
||||||
# OUTPUT:
|
OUTPUT:
|
||||||
# name: expected/mean_coordinates.gml
|
name: expected/mean_coordinates.gml
|
||||||
# type: vector
|
type: vector
|
||||||
#
|
|
||||||
# # Temporarily disable until we figure out why it failed after merging
|
# # Temporarily disable until we figure out why it failed after merging
|
||||||
# # into master
|
# # into master
|
||||||
# #- algorithm: qgis:singlepartstomultipart
|
# #- algorithm: qgis:singlepartstomultipart
|
||||||
|
Loading…
x
Reference in New Issue
Block a user