Merge pull request #5184 from nyalldawson/join_locate

[FEATURE] Reworked processing 'Join by location' alg
This commit is contained in:
Nyall Dawson 2017-09-14 06:09:56 +10:00 committed by GitHub
commit c371b72dfe
35 changed files with 2837 additions and 174 deletions

View File

@ -267,12 +267,18 @@ qgis:joinattributesbylocation: >
The additional attributes and their values are taken from a second vector layer. A spatial criteria is applied to select the values from the second layer that are added to each feature from the first layer in the resulting one.
qgis:joinattributestable: >
This algorithm takes an input vector layer and creates a new vector layer that is an extended version of the input one, with additional attributes in its attribute table.
The additional attributes and their values are taken from a second vector layer. An attribute is selected in each of them to define the join criteria.
qgis:joinbylocationsummary: >
This algorithm takes an input vector layer and creates a new vector layer that is an extended version of the input one, with additional attributes in its attribute table.
The additional attributes and their values are taken from a second vector layer. A spatial criteria is applied to select the values from the second layer that are added to each feature from the first layer in the resulting one.
The algorithm calculates a statistical summary for the values from matching features in the second layer (e.g. maximum value, mean value, etc).
qgis:keepnbiggestparts: >
This algorithm takes a polygon layer and creates a new polygon layer in which multipart geometries have been removed, leaving only the n largest (in terms of area) parts.

View File

@ -150,6 +150,8 @@ from .Smooth import Smooth
from .SnapGeometries import SnapGeometriesToLayer
from .SpatialiteExecuteSQL import SpatialiteExecuteSQL
from .SpatialIndex import SpatialIndex
from .SpatialJoin import SpatialJoin
from .SpatialJoinSummary import SpatialJoinSummary
from .SplitWithLines import SplitWithLines
from .StatisticsByCategories import StatisticsByCategories
from .SumLines import SumLines
@ -166,7 +168,6 @@ from .VectorSplit import VectorSplit
from .VoronoiPolygons import VoronoiPolygons
from .ZonalStatistics import ZonalStatistics
# from .SpatialJoin import SpatialJoin
pluginPath = os.path.normpath(os.path.join(
os.path.split(os.path.dirname(__file__))[0], os.pardir))
@ -180,9 +181,6 @@ class QGISAlgorithmProvider(QgsProcessingProvider):
self.externalAlgs = []
def getAlgs(self):
# algs = [
# SpatialJoin(),
# ]
algs = [AddTableField(),
Aggregate(),
Aspect(),
@ -293,6 +291,8 @@ class QGISAlgorithmProvider(QgsProcessingProvider):
SnapGeometriesToLayer(),
SpatialiteExecuteSQL(),
SpatialIndex(),
SpatialJoin(),
SpatialJoinSummary(),
SplitWithLines(),
StatisticsByCategories(),
SumLines(),

View File

@ -31,28 +31,31 @@ __revision__ = '$Format:%H$'
import os
from qgis.PyQt.QtGui import QIcon
from qgis.PyQt.QtCore import QVariant
from qgis.core import QgsFields, QgsField, QgsFeatureSink, QgsFeature, QgsGeometry, NULL, QgsWkbTypes, QgsProcessingUtils
from qgis.core import (QgsFields,
QgsFeatureSink,
QgsFeatureRequest,
QgsGeometry,
QgsProcessing,
QgsProcessingParameterBoolean,
QgsProcessingParameterFeatureSource,
QgsProcessingParameterEnum,
QgsProcessingParameterField,
QgsProcessingParameterFeatureSink)
from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm
from processing.core.parameters import ParameterVector
from processing.core.parameters import ParameterNumber
from processing.core.parameters import ParameterSelection
from processing.core.parameters import ParameterString
from processing.core.outputs import OutputVector
from processing.tools import vector
pluginPath = os.path.split(os.path.split(os.path.dirname(__file__))[0])[0]
class SpatialJoin(QgisAlgorithm):
TARGET = "TARGET"
INPUT = "INPUT"
JOIN = "JOIN"
PREDICATE = "PREDICATE"
SUMMARY = "SUMMARY"
STATS = "STATS"
KEEP = "KEEP"
JOIN_FIELDS = "JOIN_FIELDS"
METHOD = "METHOD"
DISCARD_NONMATCHING = "DISCARD_NONMATCHING"
OUTPUT = "OUTPUT"
def icon(self):
@ -74,32 +77,40 @@ class SpatialJoin(QgisAlgorithm):
('within', self.tr('within')),
('crosses', self.tr('crosses')))
self.summarys = [
self.tr('Take attributes of the first located feature'),
self.tr('Take summary of intersecting features')
self.reversed_predicates = {'intersects': 'intersects',
'contains': 'within',
'isEqual': 'isEqual',
'touches': 'touches',
'overlaps': 'overlaps',
'within': 'contains',
'crosses': 'crosses'}
self.methods = [
self.tr('Create separate feature for each located feature'),
self.tr('Take attributes of the first located feature only')
]
self.keeps = [
self.tr('Only keep matching records'),
self.tr('Keep all records (including non-matching target records)')
]
self.addParameter(ParameterVector(self.TARGET,
self.tr('Target vector layer')))
self.addParameter(ParameterVector(self.JOIN,
self.tr('Join vector layer')))
self.addParameter(ParameterSelection(self.PREDICATE,
self.tr('Geometric predicate'),
self.predicates,
multiple=True))
self.addParameter(ParameterSelection(self.SUMMARY,
self.tr('Attribute summary'), self.summarys))
self.addParameter(ParameterString(self.STATS,
self.tr('Statistics for summary (comma separated)'),
'sum,mean,min,max,median', optional=True))
self.addParameter(ParameterSelection(self.KEEP,
self.tr('Joined table'), self.keeps))
self.addOutput(OutputVector(self.OUTPUT, self.tr('Joined layer')))
self.addParameter(QgsProcessingParameterFeatureSource(self.INPUT,
self.tr('Input layer'),
[QgsProcessing.TypeVectorAnyGeometry]))
self.addParameter(QgsProcessingParameterFeatureSource(self.JOIN,
self.tr('Join layer'),
[QgsProcessing.TypeVectorAnyGeometry]))
self.addParameter(QgsProcessingParameterEnum(self.PREDICATE,
self.tr('Geometric predicate'),
options=[p[1] for p in self.predicates],
allowMultiple=True, defaultValue=[0]))
self.addParameter(QgsProcessingParameterField(self.JOIN_FIELDS,
self.tr('Fields to add (leave empty to use all fields)'),
parentLayerParameterName=self.JOIN,
allowMultiple=True, optional=True))
self.addParameter(QgsProcessingParameterEnum(self.METHOD,
self.tr('Join type'), self.methods))
self.addParameter(QgsProcessingParameterBoolean(self.DISCARD_NONMATCHING,
self.tr('Discard records which could not be joined'),
defaultValue=False))
self.addParameter(QgsProcessingParameterFeatureSink(self.OUTPUT,
self.tr('Joined layer')))
def name(self):
return 'joinattributesbylocation'
@ -107,155 +118,97 @@ class SpatialJoin(QgisAlgorithm):
def displayName(self):
return self.tr('Join attributes by location')
def tags(self):
return self.tr("join,intersects,intersecting,touching,within,contains,overlaps,relation,spatial").split(',')
def processAlgorithm(self, parameters, context, feedback):
target = QgsProcessingUtils.mapLayerFromString(self.getParameterValue(self.TARGET), context)
join = QgsProcessingUtils.mapLayerFromString(self.getParameterValue(self.JOIN), context)
predicates = self.getParameterValue(self.PREDICATE)
source = self.parameterAsSource(parameters, self.INPUT, context)
join_source = self.parameterAsSource(parameters, self.JOIN, context)
join_fields = self.parameterAsFields(parameters, self.JOIN_FIELDS, context)
method = self.parameterAsEnum(parameters, self.METHOD, context)
discard_nomatch = self.parameterAsBool(parameters, self.DISCARD_NONMATCHING, context)
summary = self.getParameterValue(self.SUMMARY) == 1
keep = self.getParameterValue(self.KEEP) == 1
sumList = self.getParameterValue(self.STATS).lower().split(',')
targetFields = target.fields()
joinFields = join.fields()
fieldList = QgsFields()
if not summary:
joinFields = vector.testForUniqueness(targetFields, joinFields)
seq = list(range(len(targetFields) + len(joinFields)))
targetFields.extend(joinFields)
targetFields = dict(list(zip(seq, targetFields)))
source_fields = source.fields()
fields_to_join = QgsFields()
join_field_indexes = []
if not join_fields:
fields_to_join = join_source.fields()
join_field_indexes = [i for i in range(len(fields_to_join))]
else:
numFields = {}
for j in range(len(joinFields)):
if joinFields[j].type() in [QVariant.Int, QVariant.Double, QVariant.LongLong, QVariant.UInt, QVariant.ULongLong]:
numFields[j] = []
for i in sumList:
field = QgsField(i + str(joinFields[j].name()), QVariant.Double, '', 24, 16)
fieldList.append(field)
field = QgsField('count', QVariant.Double, '', 24, 16)
fieldList.append(field)
joinFields = vector.testForUniqueness(targetFields, fieldList)
targetFields.extend(fieldList)
seq = list(range(len(targetFields)))
targetFields = dict(list(zip(seq, targetFields)))
for f in join_fields:
idx = join_source.fields().lookupField(f)
join_field_indexes.append(idx)
if idx >= 0:
fields_to_join.append(join_source.fields().at(idx))
fields = QgsFields()
for f in list(targetFields.values()):
fields.append(f)
out_fields = vector.combineFields(source_fields, fields_to_join)
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(fields, target.wkbType(), target.crs(), context)
(sink, dest_id) = self.parameterAsSink(parameters, self.OUTPUT, context,
out_fields, source.wkbType(), source.sourceCrs())
outFeat = QgsFeature()
inFeatB = QgsFeature()
inGeom = QgsGeometry()
# do the join
index = QgsProcessingUtils.createSpatialIndex(join, context)
# build a list of 'reversed' predicates, because in this function
# we actually test the reverse of what the user wants (allowing us
# to prepare geometries and optimise the algorithm)
predicates = [self.reversed_predicates[self.predicates[i][0]] for i in
self.parameterAsEnums(parameters, self.PREDICATE, context)]
mapP2 = dict()
features = QgsProcessingUtils.getFeatures(join, context)
for f in features:
mapP2[f.id()] = QgsFeature(f)
remaining = set()
if not discard_nomatch:
remaining = set(source.allFeatureIds())
features = QgsProcessingUtils.getFeatures(target, context)
total = 100.0 / target.featureCount() if target.featureCount() else 0
for c, f in enumerate(features):
atMap1 = f.attributes()
outFeat.setGeometry(f.geometry())
inGeom = f.geometry()
none = True
joinList = []
if inGeom.type() == QgsWkbTypes.PointGeometry:
bbox = inGeom.buffer(10, 2).boundingBox()
else:
bbox = inGeom.boundingBox()
joinList = index.intersects(bbox)
if len(joinList) > 0:
count = 0
for i in joinList:
inFeatB = mapP2[i]
inGeomB = inFeatB.geometry()
added_set = set()
res = False
for predicate in predicates:
res = getattr(inGeom, predicate)(inGeomB)
if res:
break
request = QgsFeatureRequest().setSubsetOfAttributes(join_field_indexes).setDestinationCrs(source.sourceCrs())
features = join_source.getFeatures(request)
total = 100.0 / join_source.featureCount() if join_source.featureCount() else 0
if res:
count = count + 1
none = False
atMap2 = inFeatB.attributes()
if not summary:
atMap = atMap1
atMap2 = atMap2
atMap.extend(atMap2)
atMap = dict(list(zip(seq, atMap)))
break
else:
for j in list(numFields.keys()):
numFields[j].append(atMap2[j])
for current, f in enumerate(features):
if feedback.isCanceled():
break
if summary and not none:
atMap = atMap1
for j in list(numFields.keys()):
for k in sumList:
if k == 'sum':
atMap.append(sum(self._filterNull(numFields[j])))
elif k == 'mean':
try:
nn_count = sum(1 for _ in self._filterNull(numFields[j]))
atMap.append(sum(self._filterNull(numFields[j])) / nn_count)
except ZeroDivisionError:
atMap.append(NULL)
elif k == 'min':
try:
atMap.append(min(self._filterNull(numFields[j])))
except ValueError:
atMap.append(NULL)
elif k == 'median':
atMap.append(self._median(numFields[j]))
else:
try:
atMap.append(max(self._filterNull(numFields[j])))
except ValueError:
atMap.append(NULL)
if not f.hasGeometry():
continue
numFields[j] = []
atMap.append(count)
atMap = dict(list(zip(seq, atMap)))
if none:
outFeat.setAttributes(atMap1)
else:
outFeat.setAttributes(list(atMap.values()))
bbox = f.geometry().boundingBox()
engine = None
if keep:
writer.addFeature(outFeat, QgsFeatureSink.FastInsert)
else:
if not none:
writer.addFeature(outFeat, QgsFeatureSink.FastInsert)
request = QgsFeatureRequest().setFilterRect(bbox)
for test_feat in source.getFeatures(request):
if feedback.isCanceled():
break
if method == 1 and test_feat.id() in added_set:
# already added this feature, and user has opted to only output first match
continue
feedback.setProgress(int(c * total))
del writer
join_attributes = []
for a in join_field_indexes:
join_attributes.append(f.attributes()[a])
def _filterNull(self, values):
"""Takes an iterator of values and returns a new iterator
returning the same values but skipping any NULL values"""
return (v for v in values if v != NULL)
if engine is None:
engine = QgsGeometry.createGeometryEngine(f.geometry().geometry())
engine.prepareGeometry()
def _median(self, data):
count = len(data)
if count == 1:
return data[0]
data.sort()
for predicate in predicates:
if getattr(engine, predicate)(test_feat.geometry().geometry()):
added_set.add(test_feat.id())
median = 0
if count > 1:
if (count % 2) == 0:
median = 0.5 * ((data[count / 2 - 1]) + (data[count / 2]))
else:
median = data[(count + 1) / 2 - 1]
# join attributes and add
attributes = test_feat.attributes()
attributes.extend(join_attributes)
output_feature = test_feat
output_feature.setAttributes(attributes)
sink.addFeature(output_feature, QgsFeatureSink.FastInsert)
break
return median
feedback.setProgress(int(current * total))
if not discard_nomatch:
remaining = remaining.difference(added_set)
for f in source.getFeatures(QgsFeatureRequest().setFilterFids(list(remaining))):
if feedback.isCanceled():
break
sink.addFeature(f, QgsFeatureSink.FastInsert)
return {self.OUTPUT: dest_id}

View File

@ -0,0 +1,341 @@
# -*- coding: utf-8 -*-
"""
***************************************************************************
SpatialJoin.py
---------------------
Date : September 2017
Copyright : (C) 2017 by Nyall Dawson
Email : nyall dot dawson at gmail dot com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************
"""
from builtins import range
__author__ = 'Nyall Dawson'
__date__ = 'September 2017'
__copyright__ = '(C) 2017, Nyall Dawson'
# This will get replaced with a git SHA1 when you do a git archive
__revision__ = '$Format:%H$'
import os
from collections import defaultdict
from qgis.PyQt.QtGui import QIcon
from qgis.PyQt.QtCore import QVariant
from qgis.core import (NULL,
QgsField,
QgsFields,
QgsFeatureSink,
QgsFeatureRequest,
QgsGeometry,
QgsCoordinateTransform,
QgsStatisticalSummary,
QgsDateTimeStatisticalSummary,
QgsStringStatisticalSummary,
QgsProcessing,
QgsProcessingParameterBoolean,
QgsProcessingParameterFeatureSource,
QgsProcessingParameterEnum,
QgsProcessingParameterField,
QgsProcessingParameterFeatureSink)
from processing.algs.qgis.QgisAlgorithm import QgisAlgorithm
from processing.tools import vector
pluginPath = os.path.split(os.path.split(os.path.dirname(__file__))[0])[0]
class SpatialJoinSummary(QgisAlgorithm):
INPUT = "INPUT"
JOIN = "JOIN"
PREDICATE = "PREDICATE"
JOIN_FIELDS = "JOIN_FIELDS"
SUMMARIES = "SUMMARIES"
DISCARD_NONMATCHING = "DISCARD_NONMATCHING"
OUTPUT = "OUTPUT"
def icon(self):
return QIcon(os.path.join(pluginPath, 'images', 'ftools', 'join_location.png'))
def group(self):
return self.tr('Vector general')
def __init__(self):
super().__init__()
def initAlgorithm(self, config=None):
self.predicates = (
('intersects', self.tr('intersects')),
('contains', self.tr('contains')),
('equals', self.tr('equals')),
('touches', self.tr('touches')),
('overlaps', self.tr('overlaps')),
('within', self.tr('within')),
('crosses', self.tr('crosses')))
self.statistics = [
('count', self.tr('count')),
('unique', self.tr('unique')),
('min', self.tr('min')),
('max', self.tr('max')),
('range', self.tr('range')),
('sum', self.tr('sum')),
('mean', self.tr('mean')),
('median', self.tr('median')),
('stddev', self.tr('stddev')),
('minority', self.tr('minority')),
('majority', self.tr('majority')),
('q1', self.tr('q1')),
('q3', self.tr('q3')),
('iqr', self.tr('iqr')),
('empty', self.tr('empty')),
('filled', self.tr('filled')),
('min_length', self.tr('min_length')),
('max_length', self.tr('max_length')),
('mean_length', self.tr('mean_length'))]
self.addParameter(QgsProcessingParameterFeatureSource(self.INPUT,
self.tr('Input layer'),
[QgsProcessing.TypeVectorAnyGeometry]))
self.addParameter(QgsProcessingParameterFeatureSource(self.JOIN,
self.tr('Join layer'),
[QgsProcessing.TypeVectorAnyGeometry]))
self.addParameter(QgsProcessingParameterEnum(self.PREDICATE,
self.tr('Geometric predicate'),
options=[p[1] for p in self.predicates],
allowMultiple=True, defaultValue=[0]))
self.addParameter(QgsProcessingParameterField(self.JOIN_FIELDS,
self.tr('Fields to summarise (leave empty to use all fields)'),
parentLayerParameterName=self.JOIN,
allowMultiple=True, optional=True))
self.addParameter(QgsProcessingParameterEnum(self.SUMMARIES,
self.tr(
'Summaries to calculate (leave empty to use all available)'),
options=[p[1] for p in self.statistics],
allowMultiple=True, optional=True))
self.addParameter(QgsProcessingParameterBoolean(self.DISCARD_NONMATCHING,
self.tr('Discard records which could not be joined'),
defaultValue=False))
self.addParameter(QgsProcessingParameterFeatureSink(self.OUTPUT,
self.tr('Joined layer')))
def name(self):
return 'joinbylocationsummary'
def displayName(self):
return self.tr('Join attributes by location (summary)')
def tags(self):
return self.tr(
"summary,aggregate,join,intersects,intersecting,touching,within,contains,overlaps,relation,spatial").split(
',')
def processAlgorithm(self, parameters, context, feedback):
source = self.parameterAsSource(parameters, self.INPUT, context)
join_source = self.parameterAsSource(parameters, self.JOIN, context)
join_fields = self.parameterAsFields(parameters, self.JOIN_FIELDS, context)
discard_nomatch = self.parameterAsBool(parameters, self.DISCARD_NONMATCHING, context)
summaries = [self.statistics[i][0] for i in
sorted(self.parameterAsEnums(parameters, self.SUMMARIES, context))]
if not summaries:
# none selected, so use all
summaries = [s[0] for s in self.statistics]
source_fields = source.fields()
fields_to_join = QgsFields()
join_field_indexes = []
if not join_fields:
# no fields selected, use all
join_fields = [join_source.fields().at(i).name() for i in range(len(join_source.fields()))]
def addFieldKeepType(original, stat):
"""
Adds a field to the output, keeping the same data type as the original
"""
field = QgsField(original)
field.setName(field.name() + '_' + stat)
fields_to_join.append(field)
def addField(original, stat, type):
"""
Adds a field to the output, with a specified type
"""
field = QgsField(original)
field.setName(field.name() + '_' + stat)
field.setType(type)
if type == QVariant.Double:
field.setLength(20)
field.setPrecision(6)
fields_to_join.append(field)
numeric_fields = (
('count', QVariant.Int, 'count'),
('unique', QVariant.Int, 'variety'),
('min', QVariant.Double, 'min'),
('max', QVariant.Double, 'max'),
('range', QVariant.Double, 'range'),
('sum', QVariant.Double, 'sum'),
('mean', QVariant.Double, 'mean'),
('median', QVariant.Double, 'median'),
('stddev', QVariant.Double, 'stDev'),
('minority', QVariant.Double, 'minority'),
('majority', QVariant.Double, 'majority'),
('q1', QVariant.Double, 'firstQuartile'),
('q3', QVariant.Double, 'thirdQuartile'),
('iqr', QVariant.Double, 'interQuartileRange')
)
datetime_fields = (
('count', QVariant.Int, 'count'),
('unique', QVariant.Int, 'countDistinct'),
('empty', QVariant.Int, 'countMissing'),
('filled', QVariant.Int),
('min', None),
('max', None)
)
string_fields = (
('count', QVariant.Int, 'count'),
('unique', QVariant.Int, 'countDistinct'),
('empty', QVariant.Int, 'countMissing'),
('filled', QVariant.Int),
('min', None, 'min'),
('max', None, 'max'),
('min_length', QVariant.Int, 'minLength'),
('max_length', QVariant.Int, 'maxLength'),
('mean_length', QVariant.Double, 'meanLength')
)
field_types = []
for f in join_fields:
idx = join_source.fields().lookupField(f)
if idx >= 0:
join_field_indexes.append(idx)
join_field = join_source.fields().at(idx)
if join_field.isNumeric():
field_types.append('numeric')
field_list = numeric_fields
elif join_field.type() in (QVariant.Date, QVariant.Time, QVariant.DateTime):
field_types.append('datetime')
field_list = datetime_fields
else:
field_types.append('string')
field_list = string_fields
for f in field_list:
if f[0] in summaries:
if f[1] is not None:
addField(join_field, f[0], f[1])
else:
addFieldKeepType(join_field, f[0])
out_fields = vector.combineFields(source_fields, fields_to_join)
(sink, dest_id) = self.parameterAsSink(parameters, self.OUTPUT, context,
out_fields, source.wkbType(), source.sourceCrs())
# do the join
predicates = [self.predicates[i][0] for i in self.parameterAsEnums(parameters, self.PREDICATE, context)]
features = source.getFeatures()
total = 100.0 / source.featureCount() if source.featureCount() else 0
# bounding box transform
bbox_transform = QgsCoordinateTransform(source.sourceCrs(), join_source.sourceCrs())
for current, f in enumerate(features):
if feedback.isCanceled():
break
if not f.hasGeometry():
if not discard_nomatch:
sink.addFeature(f, QgsFeatureSink.FastInsert)
continue
bbox = bbox_transform.transformBoundingBox(f.geometry().boundingBox())
engine = None
values = []
request = QgsFeatureRequest().setFilterRect(bbox).setSubsetOfAttributes(join_field_indexes).setDestinationCrs(source.sourceCrs())
for test_feat in join_source.getFeatures(request):
if feedback.isCanceled():
break
join_attributes = []
for a in join_field_indexes:
join_attributes.append(test_feat.attributes()[a])
if engine is None:
engine = QgsGeometry.createGeometryEngine(f.geometry().geometry())
engine.prepareGeometry()
for predicate in predicates:
if getattr(engine, predicate)(test_feat.geometry().geometry()):
values.append(join_attributes)
break
feedback.setProgress(int(current * total))
if len(values) == 0:
if discard_nomatch:
continue
else:
sink.addFeature(f, QgsFeatureSink.FastInsert)
else:
attrs = f.attributes()
for i in range(len(join_field_indexes)):
attribute_values = [v[i] for v in values]
field_type = field_types[i]
if field_type == 'numeric':
stat = QgsStatisticalSummary()
for v in attribute_values:
stat.addVariant(v)
stat.finalize()
for s in numeric_fields:
if s[0] in summaries:
attrs.append(getattr(stat, s[2])())
elif field_type == 'datetime':
stat = QgsDateTimeStatisticalSummary()
stat.calculate(attribute_values)
for s in datetime_fields:
if s[0] in summaries:
if s[0] == 'filled':
attrs.append(stat.count() - stat.countMissing())
elif s[0] == 'min':
attrs.append(stat.statistic(QgsDateTimeStatisticalSummary.Min))
elif s[0] == 'max':
attrs.append(stat.statistic(QgsDateTimeStatisticalSummary.Max))
else:
attrs.append(getattr(stat, s[2])())
else:
stat = QgsStringStatisticalSummary()
for v in attribute_values:
if v == NULL:
stat.addString('')
else:
stat.addString(str(v))
stat.finalize()
for s in string_fields:
if s[0] in summaries:
if s[0] == 'filled':
attrs.append(stat.count() - stat.countMissing())
else:
attrs.append(getattr(stat, s[2])())
f.setAttributes(attrs)
sink.addFeature(f, QgsFeatureSink.FastInsert)
return {self.OUTPUT: dest_id}

View File

@ -101,7 +101,7 @@ class StatisticsByCategories(QgisAlgorithm):
"""
Adds a field to the output, keeping the same data type as the value_field
"""
field = value_field
field = QgsField(value_field)
field.setName(name)
fields.append(field)

View File

@ -0,0 +1 @@
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]

View File

@ -0,0 +1 @@
GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]

View File

@ -0,0 +1,48 @@
<GMLFeatureClassList>
<GMLFeatureClass>
<Name>join_by_location_intersect</Name>
<ElementPath>join_by_location_intersect</ElementPath>
<!--POLYGON-->
<GeometryType>3</GeometryType>
<SRSName>EPSG:4326</SRSName>
<DatasetSpecificInfo>
<FeatureCount>10</FeatureCount>
<ExtentXMin>-1.00000</ExtentXMin>
<ExtentXMax>10.00000</ExtentXMax>
<ExtentYMin>-3.00000</ExtentYMin>
<ExtentYMax>6.00000</ExtentYMax>
</DatasetSpecificInfo>
<PropertyDefn>
<Name>name</Name>
<ElementPath>name</ElementPath>
<Type>String</Type>
<Width>5</Width>
</PropertyDefn>
<PropertyDefn>
<Name>intval</Name>
<ElementPath>intval</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>floatval</Name>
<ElementPath>floatval</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>fid_2</Name>
<ElementPath>fid_2</ElementPath>
<Type>String</Type>
<Width>8</Width>
</PropertyDefn>
<PropertyDefn>
<Name>id</Name>
<ElementPath>id</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2</Name>
<ElementPath>id2</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
</GMLFeatureClass>
</GMLFeatureClassList>

View File

@ -0,0 +1,111 @@
<?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>-1</gml:X><gml:Y>-3</gml:Y></gml:coord>
<gml:coord><gml:X>10</gml:X><gml:Y>6</gml:Y></gml:coord>
</gml:Box>
</gml:boundedBy>
<gml:featureMember>
<ogr:join_by_location_intersect fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:fid_2>points.0</ogr:fid_2>
<ogr:id>1</ogr:id>
<ogr:id2>2</ogr:id2>
</ogr:join_by_location_intersect>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:fid_2>points.1</ogr:fid_2>
<ogr:id>2</ogr:id>
<ogr:id2>1</ogr:id2>
</ogr:join_by_location_intersect>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:fid_2>points.2</ogr:fid_2>
<ogr:id>3</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_intersect>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect fid="polys.5">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>3,2 6,1 6,-3 2,-1 2,2 3,2</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>elim</ogr:name>
<ogr:intval>2</ogr:intval>
<ogr:floatval>3.33</ogr:floatval>
<ogr:fid_2>points.2</ogr:fid_2>
<ogr:id>3</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_intersect>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect fid="polys.5">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>3,2 6,1 6,-3 2,-1 2,2 3,2</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>elim</ogr:name>
<ogr:intval>2</ogr:intval>
<ogr:floatval>3.33</ogr:floatval>
<ogr:fid_2>points.4</ogr:fid_2>
<ogr:id>5</ogr:id>
<ogr:id2>1</ogr:id2>
</ogr:join_by_location_intersect>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect fid="polys.3">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>6,1 10,1 10,-3 6,-3 6,1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>7,0 7,-2 9,-2 9,0 7,0</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>ASDF</ogr:name>
<ogr:intval>0</ogr:intval>
<ogr:fid_2>points.7</ogr:fid_2>
<ogr:id>8</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_intersect>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:fid_2>points.8</ogr:fid_2>
<ogr:id>9</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_intersect>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect fid="polys.2">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>2,5 2,6 3,6 3,5 2,5</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>bbaaa</ogr:name>
<ogr:floatval>0.123</ogr:floatval>
</ogr:join_by_location_intersect>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect fid="polys.1">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>5,5 6,4 4,4 5,5</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>Aaaaa</ogr:name>
<ogr:intval>-33</ogr:intval>
<ogr:floatval>0</ogr:floatval>
</ogr:join_by_location_intersect>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect fid="polys.4">
<ogr:intval>120</ogr:intval>
<ogr:floatval>-100291.43213</ogr:floatval>
</ogr:join_by_location_intersect>
</gml:featureMember>
</ogr:FeatureCollection>

View File

@ -0,0 +1,48 @@
<GMLFeatureClassList>
<GMLFeatureClass>
<Name>join_by_location_intersect_discardnomatch</Name>
<ElementPath>join_by_location_intersect_discardnomatch</ElementPath>
<!--POLYGON-->
<GeometryType>3</GeometryType>
<SRSName>EPSG:4326</SRSName>
<DatasetSpecificInfo>
<FeatureCount>7</FeatureCount>
<ExtentXMin>-1.00000</ExtentXMin>
<ExtentXMax>10.00000</ExtentXMax>
<ExtentYMin>-3.00000</ExtentYMin>
<ExtentYMax>3.00000</ExtentYMax>
</DatasetSpecificInfo>
<PropertyDefn>
<Name>name</Name>
<ElementPath>name</ElementPath>
<Type>String</Type>
<Width>5</Width>
</PropertyDefn>
<PropertyDefn>
<Name>intval</Name>
<ElementPath>intval</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>floatval</Name>
<ElementPath>floatval</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>fid_2</Name>
<ElementPath>fid_2</ElementPath>
<Type>String</Type>
<Width>8</Width>
</PropertyDefn>
<PropertyDefn>
<Name>id</Name>
<ElementPath>id</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2</Name>
<ElementPath>id2</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
</GMLFeatureClass>
</GMLFeatureClassList>

View File

@ -0,0 +1,90 @@
<?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>-1</gml:X><gml:Y>-3</gml:Y></gml:coord>
<gml:coord><gml:X>10</gml:X><gml:Y>3</gml:Y></gml:coord>
</gml:Box>
</gml:boundedBy>
<gml:featureMember>
<ogr:join_by_location_intersect_discardnomatch fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:fid_2>points.0</ogr:fid_2>
<ogr:id>1</ogr:id>
<ogr:id2>2</ogr:id2>
</ogr:join_by_location_intersect_discardnomatch>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_discardnomatch fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:fid_2>points.1</ogr:fid_2>
<ogr:id>2</ogr:id>
<ogr:id2>1</ogr:id2>
</ogr:join_by_location_intersect_discardnomatch>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_discardnomatch fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:fid_2>points.2</ogr:fid_2>
<ogr:id>3</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_intersect_discardnomatch>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_discardnomatch fid="polys.5">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>3,2 6,1 6,-3 2,-1 2,2 3,2</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>elim</ogr:name>
<ogr:intval>2</ogr:intval>
<ogr:floatval>3.33</ogr:floatval>
<ogr:fid_2>points.2</ogr:fid_2>
<ogr:id>3</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_intersect_discardnomatch>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_discardnomatch fid="polys.5">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>3,2 6,1 6,-3 2,-1 2,2 3,2</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>elim</ogr:name>
<ogr:intval>2</ogr:intval>
<ogr:floatval>3.33</ogr:floatval>
<ogr:fid_2>points.4</ogr:fid_2>
<ogr:id>5</ogr:id>
<ogr:id2>1</ogr:id2>
</ogr:join_by_location_intersect_discardnomatch>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_discardnomatch fid="polys.3">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>6,1 10,1 10,-3 6,-3 6,1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>7,0 7,-2 9,-2 9,0 7,0</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>ASDF</ogr:name>
<ogr:intval>0</ogr:intval>
<ogr:fid_2>points.7</ogr:fid_2>
<ogr:id>8</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_intersect_discardnomatch>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_discardnomatch fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:fid_2>points.8</ogr:fid_2>
<ogr:id>9</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_intersect_discardnomatch>
</gml:featureMember>
</ogr:FeatureCollection>

View File

@ -0,0 +1,48 @@
<GMLFeatureClassList>
<GMLFeatureClass>
<Name>join_by_location_intersect_first_only</Name>
<ElementPath>join_by_location_intersect_first_only</ElementPath>
<!--POLYGON-->
<GeometryType>3</GeometryType>
<SRSName>EPSG:4326</SRSName>
<DatasetSpecificInfo>
<FeatureCount>6</FeatureCount>
<ExtentXMin>-1.00000</ExtentXMin>
<ExtentXMax>10.00000</ExtentXMax>
<ExtentYMin>-3.00000</ExtentYMin>
<ExtentYMax>6.00000</ExtentYMax>
</DatasetSpecificInfo>
<PropertyDefn>
<Name>name</Name>
<ElementPath>name</ElementPath>
<Type>String</Type>
<Width>5</Width>
</PropertyDefn>
<PropertyDefn>
<Name>intval</Name>
<ElementPath>intval</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>floatval</Name>
<ElementPath>floatval</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>fid_2</Name>
<ElementPath>fid_2</ElementPath>
<Type>String</Type>
<Width>8</Width>
</PropertyDefn>
<PropertyDefn>
<Name>id</Name>
<ElementPath>id</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2</Name>
<ElementPath>id2</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
</GMLFeatureClass>
</GMLFeatureClassList>

View File

@ -0,0 +1,67 @@
<?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>-1</gml:X><gml:Y>-3</gml:Y></gml:coord>
<gml:coord><gml:X>10</gml:X><gml:Y>6</gml:Y></gml:coord>
</gml:Box>
</gml:boundedBy>
<gml:featureMember>
<ogr:join_by_location_intersect_first_only fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:fid_2>points.0</ogr:fid_2>
<ogr:id>1</ogr:id>
<ogr:id2>2</ogr:id2>
</ogr:join_by_location_intersect_first_only>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_first_only fid="polys.5">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>3,2 6,1 6,-3 2,-1 2,2 3,2</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>elim</ogr:name>
<ogr:intval>2</ogr:intval>
<ogr:floatval>3.33</ogr:floatval>
<ogr:fid_2>points.2</ogr:fid_2>
<ogr:id>3</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_intersect_first_only>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_first_only fid="polys.3">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>6,1 10,1 10,-3 6,-3 6,1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>7,0 7,-2 9,-2 9,0 7,0</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>ASDF</ogr:name>
<ogr:intval>0</ogr:intval>
<ogr:fid_2>points.7</ogr:fid_2>
<ogr:id>8</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_intersect_first_only>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_first_only fid="polys.1">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>5,5 6,4 4,4 5,5</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>Aaaaa</ogr:name>
<ogr:intval>-33</ogr:intval>
<ogr:floatval>0</ogr:floatval>
</ogr:join_by_location_intersect_first_only>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_first_only fid="polys.2">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>2,5 2,6 3,6 3,5 2,5</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>bbaaa</ogr:name>
<ogr:floatval>0.123</ogr:floatval>
</ogr:join_by_location_intersect_first_only>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_first_only fid="polys.4">
<ogr:intval>120</ogr:intval>
<ogr:floatval>-100291.43213</ogr:floatval>
</ogr:join_by_location_intersect_first_only>
</gml:featureMember>
</ogr:FeatureCollection>

View File

@ -0,0 +1,48 @@
<GMLFeatureClassList>
<GMLFeatureClass>
<Name>join_by_location_intersect_first_only_discardnomatch</Name>
<ElementPath>join_by_location_intersect_first_only_discardnomatch</ElementPath>
<!--POLYGON-->
<GeometryType>3</GeometryType>
<SRSName>EPSG:4326</SRSName>
<DatasetSpecificInfo>
<FeatureCount>3</FeatureCount>
<ExtentXMin>-1.00000</ExtentXMin>
<ExtentXMax>10.00000</ExtentXMax>
<ExtentYMin>-3.00000</ExtentYMin>
<ExtentYMax>3.00000</ExtentYMax>
</DatasetSpecificInfo>
<PropertyDefn>
<Name>name</Name>
<ElementPath>name</ElementPath>
<Type>String</Type>
<Width>5</Width>
</PropertyDefn>
<PropertyDefn>
<Name>intval</Name>
<ElementPath>intval</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>floatval</Name>
<ElementPath>floatval</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>fid_2</Name>
<ElementPath>fid_2</ElementPath>
<Type>String</Type>
<Width>8</Width>
</PropertyDefn>
<PropertyDefn>
<Name>id</Name>
<ElementPath>id</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2</Name>
<ElementPath>id2</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
</GMLFeatureClass>
</GMLFeatureClassList>

View File

@ -0,0 +1,46 @@
<?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>-1</gml:X><gml:Y>-3</gml:Y></gml:coord>
<gml:coord><gml:X>10</gml:X><gml:Y>3</gml:Y></gml:coord>
</gml:Box>
</gml:boundedBy>
<gml:featureMember>
<ogr:join_by_location_intersect_first_only_discardnomatch fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:fid_2>points.0</ogr:fid_2>
<ogr:id>1</ogr:id>
<ogr:id2>2</ogr:id2>
</ogr:join_by_location_intersect_first_only_discardnomatch>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_first_only_discardnomatch fid="polys.5">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>3,2 6,1 6,-3 2,-1 2,2 3,2</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>elim</ogr:name>
<ogr:intval>2</ogr:intval>
<ogr:floatval>3.33</ogr:floatval>
<ogr:fid_2>points.2</ogr:fid_2>
<ogr:id>3</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_intersect_first_only_discardnomatch>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_first_only_discardnomatch fid="polys.3">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>6,1 10,1 10,-3 6,-3 6,1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>7,0 7,-2 9,-2 9,0 7,0</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>ASDF</ogr:name>
<ogr:intval>0</ogr:intval>
<ogr:fid_2>points.7</ogr:fid_2>
<ogr:id>8</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_intersect_first_only_discardnomatch>
</gml:featureMember>
</ogr:FeatureCollection>

View File

@ -0,0 +1,37 @@
<GMLFeatureClassList>
<GMLFeatureClass>
<Name>join_by_location_intersect_subset_fields</Name>
<ElementPath>join_by_location_intersect_subset_fields</ElementPath>
<!--POLYGON-->
<GeometryType>3</GeometryType>
<SRSName>EPSG:4326</SRSName>
<DatasetSpecificInfo>
<FeatureCount>10</FeatureCount>
<ExtentXMin>-1.00000</ExtentXMin>
<ExtentXMax>10.00000</ExtentXMax>
<ExtentYMin>-3.00000</ExtentYMin>
<ExtentYMax>6.00000</ExtentYMax>
</DatasetSpecificInfo>
<PropertyDefn>
<Name>name</Name>
<ElementPath>name</ElementPath>
<Type>String</Type>
<Width>5</Width>
</PropertyDefn>
<PropertyDefn>
<Name>intval</Name>
<ElementPath>intval</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>floatval</Name>
<ElementPath>floatval</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id</Name>
<ElementPath>id</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
</GMLFeatureClass>
</GMLFeatureClassList>

View File

@ -0,0 +1,97 @@
<?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>-1</gml:X><gml:Y>-3</gml:Y></gml:coord>
<gml:coord><gml:X>10</gml:X><gml:Y>6</gml:Y></gml:coord>
</gml:Box>
</gml:boundedBy>
<gml:featureMember>
<ogr:join_by_location_intersect_subset_fields fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:id>1</ogr:id>
</ogr:join_by_location_intersect_subset_fields>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_subset_fields fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:id>2</ogr:id>
</ogr:join_by_location_intersect_subset_fields>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_subset_fields fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:id>3</ogr:id>
</ogr:join_by_location_intersect_subset_fields>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_subset_fields fid="polys.5">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>3,2 6,1 6,-3 2,-1 2,2 3,2</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>elim</ogr:name>
<ogr:intval>2</ogr:intval>
<ogr:floatval>3.33</ogr:floatval>
<ogr:id>3</ogr:id>
</ogr:join_by_location_intersect_subset_fields>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_subset_fields fid="polys.5">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>3,2 6,1 6,-3 2,-1 2,2 3,2</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>elim</ogr:name>
<ogr:intval>2</ogr:intval>
<ogr:floatval>3.33</ogr:floatval>
<ogr:id>5</ogr:id>
</ogr:join_by_location_intersect_subset_fields>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_subset_fields fid="polys.3">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>6,1 10,1 10,-3 6,-3 6,1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>7,0 7,-2 9,-2 9,0 7,0</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>ASDF</ogr:name>
<ogr:intval>0</ogr:intval>
<ogr:id>8</ogr:id>
</ogr:join_by_location_intersect_subset_fields>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_subset_fields fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:id>9</ogr:id>
</ogr:join_by_location_intersect_subset_fields>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_subset_fields fid="polys.1">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>5,5 6,4 4,4 5,5</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>Aaaaa</ogr:name>
<ogr:intval>-33</ogr:intval>
<ogr:floatval>0</ogr:floatval>
</ogr:join_by_location_intersect_subset_fields>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_subset_fields fid="polys.2">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>2,5 2,6 3,6 3,5 2,5</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>bbaaa</ogr:name>
<ogr:floatval>0.123</ogr:floatval>
</ogr:join_by_location_intersect_subset_fields>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_intersect_subset_fields fid="polys.4">
<ogr:intval>120</ogr:intval>
<ogr:floatval>-100291.43213</ogr:floatval>
</ogr:join_by_location_intersect_subset_fields>
</gml:featureMember>
</ogr:FeatureCollection>

View File

@ -0,0 +1,64 @@
<GMLFeatureClassList>
<GMLFeatureClass>
<Name>join_by_location_summary_date</Name>
<ElementPath>join_by_location_summary_date</ElementPath>
<!--POLYGON-->
<GeometryType>3</GeometryType>
<SRSName>EPSG:4326</SRSName>
<DatasetSpecificInfo>
<FeatureCount>6</FeatureCount>
<ExtentXMin>-1.00000</ExtentXMin>
<ExtentXMax>10.00000</ExtentXMax>
<ExtentYMin>-3.00000</ExtentYMin>
<ExtentYMax>6.00000</ExtentYMax>
</DatasetSpecificInfo>
<PropertyDefn>
<Name>name</Name>
<ElementPath>name</ElementPath>
<Type>String</Type>
<Width>5</Width>
</PropertyDefn>
<PropertyDefn>
<Name>intval</Name>
<ElementPath>intval</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>floatval</Name>
<ElementPath>floatval</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>date_count</Name>
<ElementPath>date_count</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>date_unique</Name>
<ElementPath>date_unique</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>date_empty</Name>
<ElementPath>date_empty</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>date_filled</Name>
<ElementPath>date_filled</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>date_min</Name>
<ElementPath>date_min</ElementPath>
<Type>String</Type>
<Width>10</Width>
</PropertyDefn>
<PropertyDefn>
<Name>date_max</Name>
<ElementPath>date_max</ElementPath>
<Type>String</Type>
<Width>10</Width>
</PropertyDefn>
</GMLFeatureClass>
</GMLFeatureClassList>

View File

@ -0,0 +1,76 @@
<?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>-1</gml:X><gml:Y>-3</gml:Y></gml:coord>
<gml:coord><gml:X>10</gml:X><gml:Y>6</gml:Y></gml:coord>
</gml:Box>
</gml:boundedBy>
<gml:featureMember>
<ogr:join_by_location_summary_date fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:date_count>4</ogr:date_count>
<ogr:date_unique>3</ogr:date_unique>
<ogr:date_empty>1</ogr:date_empty>
<ogr:date_filled>3</ogr:date_filled>
<ogr:date_min>2005/09/13</ogr:date_min>
<ogr:date_max>2017/09/13</ogr:date_max>
</ogr:join_by_location_summary_date>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_date fid="polys.1">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>5,5 6,4 4,4 5,5</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>Aaaaa</ogr:name>
<ogr:intval>-33</ogr:intval>
<ogr:floatval>0</ogr:floatval>
</ogr:join_by_location_summary_date>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_date fid="polys.2">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>2,5 2,6 3,6 3,5 2,5</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>bbaaa</ogr:name>
<ogr:floatval>0.123</ogr:floatval>
</ogr:join_by_location_summary_date>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_date fid="polys.3">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>6,1 10,1 10,-3 6,-3 6,1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>7,0 7,-2 9,-2 9,0 7,0</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>ASDF</ogr:name>
<ogr:intval>0</ogr:intval>
<ogr:date_count>1</ogr:date_count>
<ogr:date_unique>1</ogr:date_unique>
<ogr:date_empty>0</ogr:date_empty>
<ogr:date_filled>1</ogr:date_filled>
<ogr:date_min>2011/09/13</ogr:date_min>
<ogr:date_max>2011/09/13</ogr:date_max>
</ogr:join_by_location_summary_date>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_date fid="polys.4">
<ogr:intval>120</ogr:intval>
<ogr:floatval>-100291.43213</ogr:floatval>
</ogr:join_by_location_summary_date>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_date fid="polys.5">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>3,2 6,1 6,-3 2,-1 2,2 3,2</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>elim</ogr:name>
<ogr:intval>2</ogr:intval>
<ogr:floatval>3.33</ogr:floatval>
<ogr:date_count>2</ogr:date_count>
<ogr:date_unique>2</ogr:date_unique>
<ogr:date_empty>0</ogr:date_empty>
<ogr:date_filled>2</ogr:date_filled>
<ogr:date_min>2005/09/13</ogr:date_min>
<ogr:date_max>2014/03/13</ogr:date_max>
</ogr:join_by_location_summary_date>
</gml:featureMember>
</ogr:FeatureCollection>

View File

@ -0,0 +1,172 @@
<GMLFeatureClassList>
<GMLFeatureClass>
<Name>join_by_location_summary_intersect</Name>
<ElementPath>join_by_location_summary_intersect</ElementPath>
<!--POLYGON-->
<GeometryType>3</GeometryType>
<SRSName>EPSG:4326</SRSName>
<DatasetSpecificInfo>
<FeatureCount>6</FeatureCount>
<ExtentXMin>-1.00000</ExtentXMin>
<ExtentXMax>10.00000</ExtentXMax>
<ExtentYMin>-3.00000</ExtentYMin>
<ExtentYMax>6.00000</ExtentYMax>
</DatasetSpecificInfo>
<PropertyDefn>
<Name>name</Name>
<ElementPath>name</ElementPath>
<Type>String</Type>
<Width>5</Width>
</PropertyDefn>
<PropertyDefn>
<Name>intval</Name>
<ElementPath>intval</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>floatval</Name>
<ElementPath>floatval</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_count</Name>
<ElementPath>id_count</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_unique</Name>
<ElementPath>id_unique</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_min</Name>
<ElementPath>id_min</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_max</Name>
<ElementPath>id_max</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_range</Name>
<ElementPath>id_range</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_sum</Name>
<ElementPath>id_sum</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_mean</Name>
<ElementPath>id_mean</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_median</Name>
<ElementPath>id_median</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_stddev</Name>
<ElementPath>id_stddev</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_minority</Name>
<ElementPath>id_minority</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_majority</Name>
<ElementPath>id_majority</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_q1</Name>
<ElementPath>id_q1</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_q3</Name>
<ElementPath>id_q3</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_iqr</Name>
<ElementPath>id_iqr</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_count</Name>
<ElementPath>id2_count</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_unique</Name>
<ElementPath>id2_unique</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_min</Name>
<ElementPath>id2_min</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_max</Name>
<ElementPath>id2_max</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_range</Name>
<ElementPath>id2_range</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_sum</Name>
<ElementPath>id2_sum</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_mean</Name>
<ElementPath>id2_mean</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_median</Name>
<ElementPath>id2_median</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_stddev</Name>
<ElementPath>id2_stddev</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_minority</Name>
<ElementPath>id2_minority</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_majority</Name>
<ElementPath>id2_majority</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_q1</Name>
<ElementPath>id2_q1</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_q3</Name>
<ElementPath>id2_q3</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_iqr</Name>
<ElementPath>id2_iqr</ElementPath>
<Type>Real</Type>
</PropertyDefn>
</GMLFeatureClass>
</GMLFeatureClassList>

View File

@ -0,0 +1,142 @@
<?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>-1</gml:X><gml:Y>-3</gml:Y></gml:coord>
<gml:coord><gml:X>10</gml:X><gml:Y>6</gml:Y></gml:coord>
</gml:Box>
</gml:boundedBy>
<gml:featureMember>
<ogr:join_by_location_summary_intersect fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:id_count>4</ogr:id_count>
<ogr:id_unique>4</ogr:id_unique>
<ogr:id_min>1.000000</ogr:id_min>
<ogr:id_max>9.000000</ogr:id_max>
<ogr:id_range>8.000000</ogr:id_range>
<ogr:id_sum>15.000000</ogr:id_sum>
<ogr:id_mean>3.750000</ogr:id_mean>
<ogr:id_median>2.500000</ogr:id_median>
<ogr:id_stddev>3.112475</ogr:id_stddev>
<ogr:id_minority>1.000000</ogr:id_minority>
<ogr:id_majority>1.000000</ogr:id_majority>
<ogr:id_q1>1.500000</ogr:id_q1>
<ogr:id_q3>6.000000</ogr:id_q3>
<ogr:id_iqr>4.500000</ogr:id_iqr>
<ogr:id2_count>4</ogr:id2_count>
<ogr:id2_unique>3</ogr:id2_unique>
<ogr:id2_min>0.000000</ogr:id2_min>
<ogr:id2_max>2.000000</ogr:id2_max>
<ogr:id2_range>2.000000</ogr:id2_range>
<ogr:id2_sum>3.000000</ogr:id2_sum>
<ogr:id2_mean>0.750000</ogr:id2_mean>
<ogr:id2_median>0.500000</ogr:id2_median>
<ogr:id2_stddev>0.829156</ogr:id2_stddev>
<ogr:id2_minority>1.000000</ogr:id2_minority>
<ogr:id2_majority>0.000000</ogr:id2_majority>
<ogr:id2_q1>0.000000</ogr:id2_q1>
<ogr:id2_q3>1.500000</ogr:id2_q3>
<ogr:id2_iqr>1.500000</ogr:id2_iqr>
</ogr:join_by_location_summary_intersect>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_intersect fid="polys.1">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>5,5 6,4 4,4 5,5</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>Aaaaa</ogr:name>
<ogr:intval>-33</ogr:intval>
<ogr:floatval>0</ogr:floatval>
</ogr:join_by_location_summary_intersect>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_intersect fid="polys.2">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>2,5 2,6 3,6 3,5 2,5</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>bbaaa</ogr:name>
<ogr:floatval>0.123</ogr:floatval>
</ogr:join_by_location_summary_intersect>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_intersect fid="polys.3">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>6,1 10,1 10,-3 6,-3 6,1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>7,0 7,-2 9,-2 9,0 7,0</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>ASDF</ogr:name>
<ogr:intval>0</ogr:intval>
<ogr:id_count>1</ogr:id_count>
<ogr:id_unique>1</ogr:id_unique>
<ogr:id_min>8.000000</ogr:id_min>
<ogr:id_max>8.000000</ogr:id_max>
<ogr:id_range>0.000000</ogr:id_range>
<ogr:id_sum>8.000000</ogr:id_sum>
<ogr:id_mean>8.000000</ogr:id_mean>
<ogr:id_median>8.000000</ogr:id_median>
<ogr:id_stddev>0.000000</ogr:id_stddev>
<ogr:id_minority>8.000000</ogr:id_minority>
<ogr:id_majority>8.000000</ogr:id_majority>
<ogr:id_q1>8.000000</ogr:id_q1>
<ogr:id_q3>8.000000</ogr:id_q3>
<ogr:id_iqr>0.000000</ogr:id_iqr>
<ogr:id2_count>1</ogr:id2_count>
<ogr:id2_unique>1</ogr:id2_unique>
<ogr:id2_min>0.000000</ogr:id2_min>
<ogr:id2_max>0.000000</ogr:id2_max>
<ogr:id2_range>0.000000</ogr:id2_range>
<ogr:id2_sum>0.000000</ogr:id2_sum>
<ogr:id2_mean>0.000000</ogr:id2_mean>
<ogr:id2_median>0.000000</ogr:id2_median>
<ogr:id2_stddev>0.000000</ogr:id2_stddev>
<ogr:id2_minority>0.000000</ogr:id2_minority>
<ogr:id2_majority>0.000000</ogr:id2_majority>
<ogr:id2_q1>0.000000</ogr:id2_q1>
<ogr:id2_q3>0.000000</ogr:id2_q3>
<ogr:id2_iqr>0.000000</ogr:id2_iqr>
</ogr:join_by_location_summary_intersect>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_intersect fid="polys.4">
<ogr:intval>120</ogr:intval>
<ogr:floatval>-100291.43213</ogr:floatval>
</ogr:join_by_location_summary_intersect>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_intersect fid="polys.5">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>3,2 6,1 6,-3 2,-1 2,2 3,2</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>elim</ogr:name>
<ogr:intval>2</ogr:intval>
<ogr:floatval>3.33</ogr:floatval>
<ogr:id_count>2</ogr:id_count>
<ogr:id_unique>2</ogr:id_unique>
<ogr:id_min>3.000000</ogr:id_min>
<ogr:id_max>5.000000</ogr:id_max>
<ogr:id_range>2.000000</ogr:id_range>
<ogr:id_sum>8.000000</ogr:id_sum>
<ogr:id_mean>4.000000</ogr:id_mean>
<ogr:id_median>4.000000</ogr:id_median>
<ogr:id_stddev>1.000000</ogr:id_stddev>
<ogr:id_minority>3.000000</ogr:id_minority>
<ogr:id_majority>3.000000</ogr:id_majority>
<ogr:id_q1>3.000000</ogr:id_q1>
<ogr:id_q3>5.000000</ogr:id_q3>
<ogr:id_iqr>2.000000</ogr:id_iqr>
<ogr:id2_count>2</ogr:id2_count>
<ogr:id2_unique>2</ogr:id2_unique>
<ogr:id2_min>0.000000</ogr:id2_min>
<ogr:id2_max>1.000000</ogr:id2_max>
<ogr:id2_range>1.000000</ogr:id2_range>
<ogr:id2_sum>1.000000</ogr:id2_sum>
<ogr:id2_mean>0.500000</ogr:id2_mean>
<ogr:id2_median>0.500000</ogr:id2_median>
<ogr:id2_stddev>0.500000</ogr:id2_stddev>
<ogr:id2_minority>0.000000</ogr:id2_minority>
<ogr:id2_majority>0.000000</ogr:id2_majority>
<ogr:id2_q1>0.000000</ogr:id2_q1>
<ogr:id2_q3>1.000000</ogr:id2_q3>
<ogr:id2_iqr>1.000000</ogr:id2_iqr>
</ogr:join_by_location_summary_intersect>
</gml:featureMember>
</ogr:FeatureCollection>

View File

@ -0,0 +1,172 @@
<GMLFeatureClassList>
<GMLFeatureClass>
<Name>join_by_location_summary_intersect_discardnomatch</Name>
<ElementPath>join_by_location_summary_intersect_discardnomatch</ElementPath>
<!--POLYGON-->
<GeometryType>3</GeometryType>
<SRSName>EPSG:4326</SRSName>
<DatasetSpecificInfo>
<FeatureCount>3</FeatureCount>
<ExtentXMin>-1.00000</ExtentXMin>
<ExtentXMax>10.00000</ExtentXMax>
<ExtentYMin>-3.00000</ExtentYMin>
<ExtentYMax>3.00000</ExtentYMax>
</DatasetSpecificInfo>
<PropertyDefn>
<Name>name</Name>
<ElementPath>name</ElementPath>
<Type>String</Type>
<Width>5</Width>
</PropertyDefn>
<PropertyDefn>
<Name>intval</Name>
<ElementPath>intval</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>floatval</Name>
<ElementPath>floatval</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_count</Name>
<ElementPath>id_count</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_unique</Name>
<ElementPath>id_unique</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_min</Name>
<ElementPath>id_min</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_max</Name>
<ElementPath>id_max</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_range</Name>
<ElementPath>id_range</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_sum</Name>
<ElementPath>id_sum</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_mean</Name>
<ElementPath>id_mean</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_median</Name>
<ElementPath>id_median</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_stddev</Name>
<ElementPath>id_stddev</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_minority</Name>
<ElementPath>id_minority</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_majority</Name>
<ElementPath>id_majority</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_q1</Name>
<ElementPath>id_q1</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_q3</Name>
<ElementPath>id_q3</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_iqr</Name>
<ElementPath>id_iqr</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_count</Name>
<ElementPath>id2_count</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_unique</Name>
<ElementPath>id2_unique</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_min</Name>
<ElementPath>id2_min</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_max</Name>
<ElementPath>id2_max</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_range</Name>
<ElementPath>id2_range</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_sum</Name>
<ElementPath>id2_sum</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_mean</Name>
<ElementPath>id2_mean</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_median</Name>
<ElementPath>id2_median</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_stddev</Name>
<ElementPath>id2_stddev</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_minority</Name>
<ElementPath>id2_minority</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_majority</Name>
<ElementPath>id2_majority</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_q1</Name>
<ElementPath>id2_q1</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_q3</Name>
<ElementPath>id2_q3</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_iqr</Name>
<ElementPath>id2_iqr</ElementPath>
<Type>Real</Type>
</PropertyDefn>
</GMLFeatureClass>
</GMLFeatureClassList>

View File

@ -0,0 +1,121 @@
<?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>-1</gml:X><gml:Y>-3</gml:Y></gml:coord>
<gml:coord><gml:X>10</gml:X><gml:Y>3</gml:Y></gml:coord>
</gml:Box>
</gml:boundedBy>
<gml:featureMember>
<ogr:join_by_location_summary_intersect_discardnomatch fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:id_count>4</ogr:id_count>
<ogr:id_unique>4</ogr:id_unique>
<ogr:id_min>1.000000</ogr:id_min>
<ogr:id_max>9.000000</ogr:id_max>
<ogr:id_range>8.000000</ogr:id_range>
<ogr:id_sum>15.000000</ogr:id_sum>
<ogr:id_mean>3.750000</ogr:id_mean>
<ogr:id_median>2.500000</ogr:id_median>
<ogr:id_stddev>3.112475</ogr:id_stddev>
<ogr:id_minority>1.000000</ogr:id_minority>
<ogr:id_majority>1.000000</ogr:id_majority>
<ogr:id_q1>1.500000</ogr:id_q1>
<ogr:id_q3>6.000000</ogr:id_q3>
<ogr:id_iqr>4.500000</ogr:id_iqr>
<ogr:id2_count>4</ogr:id2_count>
<ogr:id2_unique>3</ogr:id2_unique>
<ogr:id2_min>0.000000</ogr:id2_min>
<ogr:id2_max>2.000000</ogr:id2_max>
<ogr:id2_range>2.000000</ogr:id2_range>
<ogr:id2_sum>3.000000</ogr:id2_sum>
<ogr:id2_mean>0.750000</ogr:id2_mean>
<ogr:id2_median>0.500000</ogr:id2_median>
<ogr:id2_stddev>0.829156</ogr:id2_stddev>
<ogr:id2_minority>1.000000</ogr:id2_minority>
<ogr:id2_majority>0.000000</ogr:id2_majority>
<ogr:id2_q1>0.000000</ogr:id2_q1>
<ogr:id2_q3>1.500000</ogr:id2_q3>
<ogr:id2_iqr>1.500000</ogr:id2_iqr>
</ogr:join_by_location_summary_intersect_discardnomatch>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_intersect_discardnomatch fid="polys.3">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>6,1 10,1 10,-3 6,-3 6,1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>7,0 7,-2 9,-2 9,0 7,0</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>ASDF</ogr:name>
<ogr:intval>0</ogr:intval>
<ogr:id_count>1</ogr:id_count>
<ogr:id_unique>1</ogr:id_unique>
<ogr:id_min>8.000000</ogr:id_min>
<ogr:id_max>8.000000</ogr:id_max>
<ogr:id_range>0.000000</ogr:id_range>
<ogr:id_sum>8.000000</ogr:id_sum>
<ogr:id_mean>8.000000</ogr:id_mean>
<ogr:id_median>8.000000</ogr:id_median>
<ogr:id_stddev>0.000000</ogr:id_stddev>
<ogr:id_minority>8.000000</ogr:id_minority>
<ogr:id_majority>8.000000</ogr:id_majority>
<ogr:id_q1>8.000000</ogr:id_q1>
<ogr:id_q3>8.000000</ogr:id_q3>
<ogr:id_iqr>0.000000</ogr:id_iqr>
<ogr:id2_count>1</ogr:id2_count>
<ogr:id2_unique>1</ogr:id2_unique>
<ogr:id2_min>0.000000</ogr:id2_min>
<ogr:id2_max>0.000000</ogr:id2_max>
<ogr:id2_range>0.000000</ogr:id2_range>
<ogr:id2_sum>0.000000</ogr:id2_sum>
<ogr:id2_mean>0.000000</ogr:id2_mean>
<ogr:id2_median>0.000000</ogr:id2_median>
<ogr:id2_stddev>0.000000</ogr:id2_stddev>
<ogr:id2_minority>0.000000</ogr:id2_minority>
<ogr:id2_majority>0.000000</ogr:id2_majority>
<ogr:id2_q1>0.000000</ogr:id2_q1>
<ogr:id2_q3>0.000000</ogr:id2_q3>
<ogr:id2_iqr>0.000000</ogr:id2_iqr>
</ogr:join_by_location_summary_intersect_discardnomatch>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_intersect_discardnomatch fid="polys.5">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>3,2 6,1 6,-3 2,-1 2,2 3,2</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>elim</ogr:name>
<ogr:intval>2</ogr:intval>
<ogr:floatval>3.33</ogr:floatval>
<ogr:id_count>2</ogr:id_count>
<ogr:id_unique>2</ogr:id_unique>
<ogr:id_min>3.000000</ogr:id_min>
<ogr:id_max>5.000000</ogr:id_max>
<ogr:id_range>2.000000</ogr:id_range>
<ogr:id_sum>8.000000</ogr:id_sum>
<ogr:id_mean>4.000000</ogr:id_mean>
<ogr:id_median>4.000000</ogr:id_median>
<ogr:id_stddev>1.000000</ogr:id_stddev>
<ogr:id_minority>3.000000</ogr:id_minority>
<ogr:id_majority>3.000000</ogr:id_majority>
<ogr:id_q1>3.000000</ogr:id_q1>
<ogr:id_q3>5.000000</ogr:id_q3>
<ogr:id_iqr>2.000000</ogr:id_iqr>
<ogr:id2_count>2</ogr:id2_count>
<ogr:id2_unique>2</ogr:id2_unique>
<ogr:id2_min>0.000000</ogr:id2_min>
<ogr:id2_max>1.000000</ogr:id2_max>
<ogr:id2_range>1.000000</ogr:id2_range>
<ogr:id2_sum>1.000000</ogr:id2_sum>
<ogr:id2_mean>0.500000</ogr:id2_mean>
<ogr:id2_median>0.500000</ogr:id2_median>
<ogr:id2_stddev>0.500000</ogr:id2_stddev>
<ogr:id2_minority>0.000000</ogr:id2_minority>
<ogr:id2_majority>0.000000</ogr:id2_majority>
<ogr:id2_q1>0.000000</ogr:id2_q1>
<ogr:id2_q3>1.000000</ogr:id2_q3>
<ogr:id2_iqr>1.000000</ogr:id2_iqr>
</ogr:join_by_location_summary_intersect_discardnomatch>
</gml:featureMember>
</ogr:FeatureCollection>

View File

@ -0,0 +1,73 @@
<GMLFeatureClassList>
<GMLFeatureClass>
<Name>join_by_location_summary_string</Name>
<ElementPath>join_by_location_summary_string</ElementPath>
<!--POINT-->
<GeometryType>1</GeometryType>
<SRSName>EPSG:4326</SRSName>
<DatasetSpecificInfo>
<FeatureCount>9</FeatureCount>
<ExtentXMin>0.00000</ExtentXMin>
<ExtentXMax>8.00000</ExtentXMax>
<ExtentYMin>-5.00000</ExtentYMin>
<ExtentYMax>3.00000</ExtentYMax>
</DatasetSpecificInfo>
<PropertyDefn>
<Name>id</Name>
<ElementPath>id</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2</Name>
<ElementPath>id2</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>name_count</Name>
<ElementPath>name_count</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>name_unique</Name>
<ElementPath>name_unique</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>name_empty</Name>
<ElementPath>name_empty</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>name_filled</Name>
<ElementPath>name_filled</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>name_min</Name>
<ElementPath>name_min</ElementPath>
<Type>String</Type>
<Width>5</Width>
</PropertyDefn>
<PropertyDefn>
<Name>name_max</Name>
<ElementPath>name_max</ElementPath>
<Type>String</Type>
<Width>5</Width>
</PropertyDefn>
<PropertyDefn>
<Name>name_min_length</Name>
<ElementPath>name_min_length</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>name_max_length</Name>
<ElementPath>name_max_length</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>name_mean_length</Name>
<ElementPath>name_mean_length</ElementPath>
<Type>Real</Type>
</PropertyDefn>
</GMLFeatureClass>
</GMLFeatureClassList>

View File

@ -0,0 +1,131 @@
<?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:join_by_location_summary_string fid="points.0">
<ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>1,1</gml:coordinates></gml:Point></ogr:geometryProperty>
<ogr:id>1</ogr:id>
<ogr:id2>2</ogr:id2>
<ogr:name_count>1</ogr:name_count>
<ogr:name_unique>1</ogr:name_unique>
<ogr:name_empty>0</ogr:name_empty>
<ogr:name_filled>1</ogr:name_filled>
<ogr:name_min>aaaaa</ogr:name_min>
<ogr:name_max>aaaaa</ogr:name_max>
<ogr:name_min_length>5</ogr:name_min_length>
<ogr:name_max_length>5</ogr:name_max_length>
<ogr:name_mean_length>5.000000</ogr:name_mean_length>
</ogr:join_by_location_summary_string>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_string fid="points.1">
<ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>3,3</gml:coordinates></gml:Point></ogr:geometryProperty>
<ogr:id>2</ogr:id>
<ogr:id2>1</ogr:id2>
<ogr:name_count>1</ogr:name_count>
<ogr:name_unique>1</ogr:name_unique>
<ogr:name_empty>0</ogr:name_empty>
<ogr:name_filled>1</ogr:name_filled>
<ogr:name_min>aaaaa</ogr:name_min>
<ogr:name_max>aaaaa</ogr:name_max>
<ogr:name_min_length>5</ogr:name_min_length>
<ogr:name_max_length>5</ogr:name_max_length>
<ogr:name_mean_length>5.000000</ogr:name_mean_length>
</ogr:join_by_location_summary_string>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_string fid="points.2">
<ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>2,2</gml:coordinates></gml:Point></ogr:geometryProperty>
<ogr:id>3</ogr:id>
<ogr:id2>0</ogr:id2>
<ogr:name_count>2</ogr:name_count>
<ogr:name_unique>2</ogr:name_unique>
<ogr:name_empty>0</ogr:name_empty>
<ogr:name_filled>2</ogr:name_filled>
<ogr:name_min>aaaaa</ogr:name_min>
<ogr:name_max>elim</ogr:name_max>
<ogr:name_min_length>4</ogr:name_min_length>
<ogr:name_max_length>5</ogr:name_max_length>
<ogr:name_mean_length>4.500000</ogr:name_mean_length>
</ogr:join_by_location_summary_string>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_string fid="points.3">
<ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>5,2</gml:coordinates></gml:Point></ogr:geometryProperty>
<ogr:id>4</ogr:id>
<ogr:id2>2</ogr:id2>
</ogr:join_by_location_summary_string>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_string fid="points.4">
<ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>4,1</gml:coordinates></gml:Point></ogr:geometryProperty>
<ogr:id>5</ogr:id>
<ogr:id2>1</ogr:id2>
<ogr:name_count>1</ogr:name_count>
<ogr:name_unique>1</ogr:name_unique>
<ogr:name_empty>0</ogr:name_empty>
<ogr:name_filled>1</ogr:name_filled>
<ogr:name_min>elim</ogr:name_min>
<ogr:name_max>elim</ogr:name_max>
<ogr:name_min_length>4</ogr:name_min_length>
<ogr:name_max_length>4</ogr:name_max_length>
<ogr:name_mean_length>4.000000</ogr:name_mean_length>
</ogr:join_by_location_summary_string>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_string fid="points.5">
<ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>0,-5</gml:coordinates></gml:Point></ogr:geometryProperty>
<ogr:id>6</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_summary_string>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_string fid="points.6">
<ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>8,-1</gml:coordinates></gml:Point></ogr:geometryProperty>
<ogr:id>7</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_summary_string>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_string fid="points.7">
<ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>7,-1</gml:coordinates></gml:Point></ogr:geometryProperty>
<ogr:id>8</ogr:id>
<ogr:id2>0</ogr:id2>
<ogr:name_count>1</ogr:name_count>
<ogr:name_unique>1</ogr:name_unique>
<ogr:name_empty>0</ogr:name_empty>
<ogr:name_filled>1</ogr:name_filled>
<ogr:name_min>ASDF</ogr:name_min>
<ogr:name_max>ASDF</ogr:name_max>
<ogr:name_min_length>4</ogr:name_min_length>
<ogr:name_max_length>4</ogr:name_max_length>
<ogr:name_mean_length>4.000000</ogr:name_mean_length>
</ogr:join_by_location_summary_string>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_string fid="points.8">
<ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>0,-1</gml:coordinates></gml:Point></ogr:geometryProperty>
<ogr:id>9</ogr:id>
<ogr:id2>0</ogr:id2>
<ogr:name_count>1</ogr:name_count>
<ogr:name_unique>1</ogr:name_unique>
<ogr:name_empty>0</ogr:name_empty>
<ogr:name_filled>1</ogr:name_filled>
<ogr:name_min>aaaaa</ogr:name_min>
<ogr:name_max>aaaaa</ogr:name_max>
<ogr:name_min_length>5</ogr:name_min_length>
<ogr:name_max_length>5</ogr:name_max_length>
<ogr:name_mean_length>5.000000</ogr:name_mean_length>
</ogr:join_by_location_summary_string>
</gml:featureMember>
</ogr:FeatureCollection>

View File

@ -0,0 +1,62 @@
<GMLFeatureClassList>
<GMLFeatureClass>
<Name>join_by_location_summary_subset_stats</Name>
<ElementPath>join_by_location_summary_subset_stats</ElementPath>
<!--POLYGON-->
<GeometryType>3</GeometryType>
<SRSName>EPSG:4326</SRSName>
<DatasetSpecificInfo>
<FeatureCount>6</FeatureCount>
<ExtentXMin>-1.00000</ExtentXMin>
<ExtentXMax>10.00000</ExtentXMax>
<ExtentYMin>-3.00000</ExtentYMin>
<ExtentYMax>6.00000</ExtentYMax>
</DatasetSpecificInfo>
<PropertyDefn>
<Name>name</Name>
<ElementPath>name</ElementPath>
<Type>String</Type>
<Width>5</Width>
</PropertyDefn>
<PropertyDefn>
<Name>intval</Name>
<ElementPath>intval</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>floatval</Name>
<ElementPath>floatval</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_count</Name>
<ElementPath>id_count</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_min</Name>
<ElementPath>id_min</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_sum</Name>
<ElementPath>id_sum</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_count</Name>
<ElementPath>id2_count</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_min</Name>
<ElementPath>id2_min</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2_sum</Name>
<ElementPath>id2_sum</ElementPath>
<Type>Real</Type>
</PropertyDefn>
</GMLFeatureClass>
</GMLFeatureClassList>

View File

@ -0,0 +1,76 @@
<?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>-1</gml:X><gml:Y>-3</gml:Y></gml:coord>
<gml:coord><gml:X>10</gml:X><gml:Y>6</gml:Y></gml:coord>
</gml:Box>
</gml:boundedBy>
<gml:featureMember>
<ogr:join_by_location_summary_subset_stats fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:id_count>4</ogr:id_count>
<ogr:id_min>1.000000</ogr:id_min>
<ogr:id_sum>15.000000</ogr:id_sum>
<ogr:id2_count>4</ogr:id2_count>
<ogr:id2_min>0.000000</ogr:id2_min>
<ogr:id2_sum>3.000000</ogr:id2_sum>
</ogr:join_by_location_summary_subset_stats>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_subset_stats fid="polys.1">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>5,5 6,4 4,4 5,5</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>Aaaaa</ogr:name>
<ogr:intval>-33</ogr:intval>
<ogr:floatval>0</ogr:floatval>
</ogr:join_by_location_summary_subset_stats>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_subset_stats fid="polys.2">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>2,5 2,6 3,6 3,5 2,5</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>bbaaa</ogr:name>
<ogr:floatval>0.123</ogr:floatval>
</ogr:join_by_location_summary_subset_stats>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_subset_stats fid="polys.3">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>6,1 10,1 10,-3 6,-3 6,1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>7,0 7,-2 9,-2 9,0 7,0</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>ASDF</ogr:name>
<ogr:intval>0</ogr:intval>
<ogr:id_count>1</ogr:id_count>
<ogr:id_min>8.000000</ogr:id_min>
<ogr:id_sum>8.000000</ogr:id_sum>
<ogr:id2_count>1</ogr:id2_count>
<ogr:id2_min>0.000000</ogr:id2_min>
<ogr:id2_sum>0.000000</ogr:id2_sum>
</ogr:join_by_location_summary_subset_stats>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_subset_stats fid="polys.4">
<ogr:intval>120</ogr:intval>
<ogr:floatval>-100291.43213</ogr:floatval>
</ogr:join_by_location_summary_subset_stats>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_subset_stats fid="polys.5">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>3,2 6,1 6,-3 2,-1 2,2 3,2</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>elim</ogr:name>
<ogr:intval>2</ogr:intval>
<ogr:floatval>3.33</ogr:floatval>
<ogr:id_count>2</ogr:id_count>
<ogr:id_min>3.000000</ogr:id_min>
<ogr:id_sum>8.000000</ogr:id_sum>
<ogr:id2_count>2</ogr:id2_count>
<ogr:id2_min>0.000000</ogr:id2_min>
<ogr:id2_sum>1.000000</ogr:id2_sum>
</ogr:join_by_location_summary_subset_stats>
</gml:featureMember>
</ogr:FeatureCollection>

View File

@ -0,0 +1,102 @@
<GMLFeatureClassList>
<GMLFeatureClass>
<Name>join_by_location_summary_touches</Name>
<ElementPath>join_by_location_summary_touches</ElementPath>
<!--POLYGON-->
<GeometryType>3</GeometryType>
<SRSName>EPSG:4326</SRSName>
<DatasetSpecificInfo>
<FeatureCount>6</FeatureCount>
<ExtentXMin>-1.00000</ExtentXMin>
<ExtentXMax>10.00000</ExtentXMax>
<ExtentYMin>-3.00000</ExtentYMin>
<ExtentYMax>6.00000</ExtentYMax>
</DatasetSpecificInfo>
<PropertyDefn>
<Name>name</Name>
<ElementPath>name</ElementPath>
<Type>String</Type>
<Width>5</Width>
</PropertyDefn>
<PropertyDefn>
<Name>intval</Name>
<ElementPath>intval</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>floatval</Name>
<ElementPath>floatval</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_count</Name>
<ElementPath>id_count</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_unique</Name>
<ElementPath>id_unique</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_min</Name>
<ElementPath>id_min</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_max</Name>
<ElementPath>id_max</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_range</Name>
<ElementPath>id_range</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_sum</Name>
<ElementPath>id_sum</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_mean</Name>
<ElementPath>id_mean</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_median</Name>
<ElementPath>id_median</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_stddev</Name>
<ElementPath>id_stddev</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_minority</Name>
<ElementPath>id_minority</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_majority</Name>
<ElementPath>id_majority</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_q1</Name>
<ElementPath>id_q1</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_q3</Name>
<ElementPath>id_q3</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id_iqr</Name>
<ElementPath>id_iqr</ElementPath>
<Type>Real</Type>
</PropertyDefn>
</GMLFeatureClass>
</GMLFeatureClassList>

View File

@ -0,0 +1,100 @@
<?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>-1</gml:X><gml:Y>-3</gml:Y></gml:coord>
<gml:coord><gml:X>10</gml:X><gml:Y>6</gml:Y></gml:coord>
</gml:Box>
</gml:boundedBy>
<gml:featureMember>
<ogr:join_by_location_summary_touches fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:id_count>3</ogr:id_count>
<ogr:id_unique>3</ogr:id_unique>
<ogr:id_min>2.000000</ogr:id_min>
<ogr:id_max>9.000000</ogr:id_max>
<ogr:id_range>7.000000</ogr:id_range>
<ogr:id_sum>14.000000</ogr:id_sum>
<ogr:id_mean>4.666667</ogr:id_mean>
<ogr:id_median>3.000000</ogr:id_median>
<ogr:id_stddev>3.091206</ogr:id_stddev>
<ogr:id_minority>2.000000</ogr:id_minority>
<ogr:id_majority>2.000000</ogr:id_majority>
<ogr:id_q1>2.500000</ogr:id_q1>
<ogr:id_q3>6.000000</ogr:id_q3>
<ogr:id_iqr>3.500000</ogr:id_iqr>
</ogr:join_by_location_summary_touches>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_touches fid="polys.1">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>5,5 6,4 4,4 5,5</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>Aaaaa</ogr:name>
<ogr:intval>-33</ogr:intval>
<ogr:floatval>0</ogr:floatval>
</ogr:join_by_location_summary_touches>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_touches fid="polys.2">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>2,5 2,6 3,6 3,5 2,5</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>bbaaa</ogr:name>
<ogr:floatval>0.123</ogr:floatval>
</ogr:join_by_location_summary_touches>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_touches fid="polys.3">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>6,1 10,1 10,-3 6,-3 6,1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>7,0 7,-2 9,-2 9,0 7,0</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>ASDF</ogr:name>
<ogr:intval>0</ogr:intval>
<ogr:id_count>1</ogr:id_count>
<ogr:id_unique>1</ogr:id_unique>
<ogr:id_min>8.000000</ogr:id_min>
<ogr:id_max>8.000000</ogr:id_max>
<ogr:id_range>0.000000</ogr:id_range>
<ogr:id_sum>8.000000</ogr:id_sum>
<ogr:id_mean>8.000000</ogr:id_mean>
<ogr:id_median>8.000000</ogr:id_median>
<ogr:id_stddev>0.000000</ogr:id_stddev>
<ogr:id_minority>8.000000</ogr:id_minority>
<ogr:id_majority>8.000000</ogr:id_majority>
<ogr:id_q1>8.000000</ogr:id_q1>
<ogr:id_q3>8.000000</ogr:id_q3>
<ogr:id_iqr>0.000000</ogr:id_iqr>
</ogr:join_by_location_summary_touches>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_touches fid="polys.4">
<ogr:intval>120</ogr:intval>
<ogr:floatval>-100291.43213</ogr:floatval>
</ogr:join_by_location_summary_touches>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_summary_touches fid="polys.5">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>3,2 6,1 6,-3 2,-1 2,2 3,2</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>elim</ogr:name>
<ogr:intval>2</ogr:intval>
<ogr:floatval>3.33</ogr:floatval>
<ogr:id_count>1</ogr:id_count>
<ogr:id_unique>1</ogr:id_unique>
<ogr:id_min>3.000000</ogr:id_min>
<ogr:id_max>3.000000</ogr:id_max>
<ogr:id_range>0.000000</ogr:id_range>
<ogr:id_sum>3.000000</ogr:id_sum>
<ogr:id_mean>3.000000</ogr:id_mean>
<ogr:id_median>3.000000</ogr:id_median>
<ogr:id_stddev>0.000000</ogr:id_stddev>
<ogr:id_minority>3.000000</ogr:id_minority>
<ogr:id_majority>3.000000</ogr:id_majority>
<ogr:id_q1>3.000000</ogr:id_q1>
<ogr:id_q3>3.000000</ogr:id_q3>
<ogr:id_iqr>0.000000</ogr:id_iqr>
</ogr:join_by_location_summary_touches>
</gml:featureMember>
</ogr:FeatureCollection>

View File

@ -0,0 +1,48 @@
<GMLFeatureClassList>
<GMLFeatureClass>
<Name>join_by_location_touches</Name>
<ElementPath>join_by_location_touches</ElementPath>
<!--POLYGON-->
<GeometryType>3</GeometryType>
<SRSName>EPSG:4326</SRSName>
<DatasetSpecificInfo>
<FeatureCount>5</FeatureCount>
<ExtentXMin>-1.00000</ExtentXMin>
<ExtentXMax>10.00000</ExtentXMax>
<ExtentYMin>-3.00000</ExtentYMin>
<ExtentYMax>3.00000</ExtentYMax>
</DatasetSpecificInfo>
<PropertyDefn>
<Name>name</Name>
<ElementPath>name</ElementPath>
<Type>String</Type>
<Width>5</Width>
</PropertyDefn>
<PropertyDefn>
<Name>intval</Name>
<ElementPath>intval</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>floatval</Name>
<ElementPath>floatval</ElementPath>
<Type>Real</Type>
</PropertyDefn>
<PropertyDefn>
<Name>fid_2</Name>
<ElementPath>fid_2</ElementPath>
<Type>String</Type>
<Width>8</Width>
</PropertyDefn>
<PropertyDefn>
<Name>id</Name>
<ElementPath>id</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
<PropertyDefn>
<Name>id2</Name>
<ElementPath>id2</ElementPath>
<Type>Integer</Type>
</PropertyDefn>
</GMLFeatureClass>
</GMLFeatureClassList>

View File

@ -0,0 +1,68 @@
<?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>-1</gml:X><gml:Y>-3</gml:Y></gml:coord>
<gml:coord><gml:X>10</gml:X><gml:Y>3</gml:Y></gml:coord>
</gml:Box>
</gml:boundedBy>
<gml:featureMember>
<ogr:join_by_location_touches fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:fid_2>points.1</ogr:fid_2>
<ogr:id>2</ogr:id>
<ogr:id2>1</ogr:id2>
</ogr:join_by_location_touches>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_touches fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:fid_2>points.2</ogr:fid_2>
<ogr:id>3</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_touches>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_touches fid="polys.5">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>3,2 6,1 6,-3 2,-1 2,2 3,2</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>elim</ogr:name>
<ogr:intval>2</ogr:intval>
<ogr:floatval>3.33</ogr:floatval>
<ogr:fid_2>points.2</ogr:fid_2>
<ogr:id>3</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_touches>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_touches fid="polys.3">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>6,1 10,1 10,-3 6,-3 6,1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>7,0 7,-2 9,-2 9,0 7,0</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>ASDF</ogr:name>
<ogr:intval>0</ogr:intval>
<ogr:fid_2>points.7</ogr:fid_2>
<ogr:id>8</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_touches>
</gml:featureMember>
<gml:featureMember>
<ogr:join_by_location_touches fid="polys.0">
<ogr:geometryProperty><gml:Polygon srsName="EPSG:4326"><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>-1,-1 -1,3 3,3 3,2 2,2 2,-1 -1,-1</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs></gml:Polygon></ogr:geometryProperty>
<ogr:name>aaaaa</ogr:name>
<ogr:intval>33</ogr:intval>
<ogr:floatval>44.123456</ogr:floatval>
<ogr:fid_2>points.8</ogr:fid_2>
<ogr:id>9</ogr:id>
<ogr:id2>0</ogr:id2>
</ogr:join_by_location_touches>
</gml:featureMember>
</ogr:FeatureCollection>

View File

@ -3621,6 +3621,320 @@ tests:
name: expected/stats_by_cat_date.gml
type: vector
pk: date
compare:
fields:
fid: skip
- algorithm: qgis:joinattributesbylocation
name: Join by location (intersects)
params:
DISCARD_NONMATCHING: false
INPUT:
name: polys.gml
type: vector
JOIN:
name: custom/points.shp
type: vector
METHOD: 0
PREDICATE:
- 0
results:
OUTPUT:
name: expected/join_by_location_intersect.gml
type: vector
pk:
- name
- id
- id2
compare:
fields:
fid: skip
fid_2: skip
- algorithm: qgis:joinattributesbylocation
name: Join by location (intersects), discard no match
params:
DISCARD_NONMATCHING: true
INPUT:
name: polys.gml
type: vector
JOIN:
name: custom/points.shp
type: vector
METHOD: 0
PREDICATE:
- 0
results:
OUTPUT:
name: expected/join_by_location_intersect_discardnomatch.gml
type: vector
pk:
- name
- id
- id2
compare:
fields:
fid: skip
fid_2: skip
- algorithm: qgis:joinattributesbylocation
name: Join by location (intersects), first match only
params:
DISCARD_NONMATCHING: false
INPUT:
name: polys.gml
type: vector
JOIN:
name: custom/points.shp
type: vector
METHOD: 1
PREDICATE:
- 0
results:
OUTPUT:
name: expected/join_by_location_intersect_first_only.gml
type: vector
pk:
- name
compare:
fields:
fid: skip
fid_2: skip
id: skip # cant check these - order of match is not predictable
id2: skip
- algorithm: qgis:joinattributesbylocation
name: Join by location (intersects), first match only, discard no match
params:
DISCARD_NONMATCHING: true
INPUT:
name: expected/join_by_location_intersect_first_only.gml
type: vector
JOIN:
name: custom/points.shp
type: vector
METHOD: 1
PREDICATE:
- 0
results:
OUTPUT:
name: expected/join_by_location_intersect_first_only_discardnomatch.gml
type: vector
pk:
- name
compare:
fields:
fid: skip
fid_2: skip
id: skip # cant check these - order of match is not predictable
id2: skip
- algorithm: qgis:joinattributesbylocation
name: Join by location (intersects), subset of fields
params:
DISCARD_NONMATCHING: false
INPUT:
name: polys.gml
type: vector
JOIN:
name: custom/points.shp
type: vector
JOIN_FIELDS:
- id
METHOD: 0
PREDICATE:
- 0
results:
OUTPUT:
name: expected/join_by_location_intersect_subset_fields.gml
type: vector
pk:
- name
- id
compare:
fields:
fid: skip
fid_2: skip
- algorithm: qgis:joinattributesbylocation
name: Join by location (touches)
params:
DISCARD_NONMATCHING: true
INPUT:
name: polys.gml
type: vector
JOIN:
name: custom/points.shp
type: vector
METHOD: 0
PREDICATE:
- 3
results:
OUTPUT:
name: expected/join_by_location_touches.gml
type: vector
pk:
- name
- id
- id2
compare:
fields:
fid: skip
fid_2: skip
- algorithm: qgis:joinbylocationsummary
name: Join by location (summary), intersects
params:
DISCARD_NONMATCHING: false
INPUT:
name: polys.gml
type: vector
JOIN:
name: custom/points.shp
type: vector
JOIN_FIELDS:
- id
- id2
PREDICATE:
- 0
SUMMARIES: []
results:
OUTPUT:
name: expected/join_by_location_summary_intersect.gml
type: vector
pk:
- name
compare:
fields:
fid: skip
- algorithm: qgis:joinbylocationsummary
name: Join by location (summary), intersects, discard no matching
params:
DISCARD_NONMATCHING: true
INPUT:
name: polys.gml
type: vector
JOIN:
name: custom/points.shp
type: vector
JOIN_FIELDS:
- id
- id2
PREDICATE:
- 0
SUMMARIES: []
results:
OUTPUT:
name: expected/join_by_location_summary_intersect_discardnomatch.gml
type: vector
pk:
- name
compare:
fields:
fid: skip
- algorithm: qgis:joinbylocationsummary
name: Join by location (summary), subset of stats
params:
DISCARD_NONMATCHING: false
INPUT:
name: polys.gml
type: vector
JOIN:
name: custom/points.shp
type: vector
JOIN_FIELDS:
- id
- id2
PREDICATE:
- 0
SUMMARIES:
- 0
- 2
- 5
results:
OUTPUT:
name: expected/join_by_location_summary_subset_stats.gml
type: vector
pk:
- name
compare:
fields:
fid: skip
- algorithm: qgis:joinbylocationsummary
name: Join by location (summary), touching
params:
DISCARD_NONMATCHING: false
INPUT:
name: polys.gml
type: vector
JOIN:
name: custom/points.shp
type: vector
JOIN_FIELDS:
- id
PREDICATE:
- 3
SUMMARIES: []
results:
OUTPUT:
name: expected/join_by_location_summary_touches.gml
type: vector
pk:
- name
compare:
fields:
fid: skip
- algorithm: qgis:joinbylocationsummary
name: Join by Location (summary), string field
params:
DISCARD_NONMATCHING: false
INPUT:
name: custom/points.shp
type: vector
JOIN:
name: polys.gml
type: vector
JOIN_FIELDS:
- name
PREDICATE:
- 0
SUMMARIES: []
results:
OUTPUT:
name: expected/join_by_location_summary_string.gml
type: vector
pk:
- id
- id2
compare:
fields:
fid: skip
- algorithm: qgis:joinbylocationsummary
name: Join by Location (summary), date
params:
DISCARD_NONMATCHING: false
INPUT:
name: polys.gml
type: vector
JOIN:
name: custom/points_with_date.shp
type: vector
JOIN_FIELDS:
- date
PREDICATE:
- 0
SUMMARIES: []
results:
OUTPUT:
name: expected/join_by_location_summary_date.gml
type: vector
pk:
- name
compare:
fields:
fid: skip