Skip to content

Commit 18c84af

Browse files
committed
Merge pull request #1531 from ccrook/DistanceMatrixFix
[processing] Distance matrix fixes
2 parents 9ae648b + c945eec commit 18c84af

File tree

1 file changed

+10
-13
lines changed

1 file changed

+10
-13
lines changed

python/plugins/processing/algs/qgis/ftools/PointDistance.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def linearMatrix(self, inLayer, inField, targetLayer, targetField,
113113
index = vector.spatialindex(targetLayer)
114114

115115
inIdx = inLayer.fieldNameIndex(inField)
116-
outIdx = targetLayer.fieldNameIndex(inField)
116+
outIdx = targetLayer.fieldNameIndex(targetField)
117117

118118
outFeat = QgsFeature()
119119
inGeom = QgsGeometry()
@@ -125,7 +125,7 @@ def linearMatrix(self, inLayer, inField, targetLayer, targetField,
125125
total = 100.0 / float(len(features))
126126
for inFeat in features:
127127
inGeom = inFeat.geometry()
128-
inID = inFeat.attributes()[inIdx]
128+
inID = unicode(inFeat.attributes()[inIdx])
129129
featList = index.nearestNeighbor(inGeom.asPoint(), nPoints)
130130
distList = []
131131
vari = 0.0
@@ -137,17 +137,16 @@ def linearMatrix(self, inLayer, inField, targetLayer, targetField,
137137
dist = distArea.measureLine(inGeom.asPoint(),
138138
outGeom.asPoint())
139139
if matType == 0:
140-
self.writer.addRecord([unicode(inID), unicode(outID),
141-
unicode(dist)])
140+
self.writer.addRecord([inID,unicode(outID),unicode(dist)])
142141
else:
143142
distList.append(float(dist))
144143

145-
if matType == 2:
144+
if matType != 0:
146145
mean = sum(distList) / len(distList)
147146
for i in distList:
148147
vari += (i - mean) * (i - mean)
149148
vari = math.sqrt(vari / len(distList))
150-
self.writer.addRecord([unicode(inID), unicode(mean),
149+
self.writer.addRecord([inID, unicode(mean),
151150
unicode(vari), unicode(min(distList)),
152151
unicode(max(distList))])
153152

@@ -173,18 +172,16 @@ def regularMatrix(self, inLayer, inField, targetLayer, targetField,
173172

174173
for inFeat in features:
175174
inGeom = inFeat.geometry()
176-
inID = inFeat.attributes()[inIdx]
175+
inID = unicode(inFeat.attributes()[inIdx])
176+
featList = index.nearestNeighbor(inGeom.asPoint(), nPoints)
177177
if first:
178-
featList = index.nearestNeighbor(inGeom.asPoint(), nPoints)
179178
first = False
180179
data = ['ID']
181-
for i in featList:
182-
request = QgsFeatureRequest().setFilterFid(i)
183-
outFeat = targetLayer.getFeatures(request).next()
184-
data.append(unicode(outFeat.attributes[outIdx]))
180+
for i in range(len(featList)):
181+
data.append('DIST_{0}'.format(i+1))
185182
self.writer.addRecord(data)
186183

187-
data = [unicode(inID)]
184+
data = [inID]
188185
for i in featList:
189186
request = QgsFeatureRequest().setFilterFid(i)
190187
outFeat = targetLayer.getFeatures(request).next()

0 commit comments

Comments
 (0)