Skip to content

Commit b6770be

Browse files
committed
[ftools] Fix "Join attributes by location"
1 parent 54956db commit b6770be

File tree

4 files changed

+17
-9
lines changed

4 files changed

+17
-9
lines changed

python/core/qgsfield.sip

+1
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ public:
146146
int fieldOriginIndex( int fieldIdx ) const;
147147

148148
int indexFromName( const QString& name ) const;
149+
void extend( const QgsFields& other );
149150

150151

151152
QgsField& operator[](int i);

python/plugins/fTools/tools/doSpatialJoin.py

+2-3
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ def compute(self, inName, joinName, outName, summary, sumList, keep, progressBar
149149
# check for correct field names
150150
print fieldList1
151151
longNames = ftools_utils.checkFieldNameLength( fieldList1.values() )
152-
if not longNames.isEmpty():
152+
if len( longNames ) > 0:
153153
QMessageBox.warning( self, self.tr( 'Incorrect field names' ),
154154
self.tr( 'No output will be created.\nFollowing field names are longer than 10 characters:\n%s' ) % ( "\n".join(longNames) ) )
155155
return False
@@ -202,8 +202,7 @@ def compute(self, inName, joinName, outName, summary, sumList, keep, progressBar
202202
for i in joinList:
203203
#tempGeom = i.geometry()
204204
provider2.getFeatures( QgsFeatureRequest().setFilterFid( int(i) ) ).nextFeature( inFeatB )
205-
tmpGeom = QgsGeometry( inFeatB.geometry() )
206-
if inGeom.intersects(tmpGeom):
205+
if inGeom.intersects(inFeatB.geometry()):
207206
count = count + 1
208207
none = False
209208
atMap2 = inFeatB.attributes()

python/plugins/fTools/tools/ftools_utils.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -185,8 +185,8 @@ def createUniqueFieldName( field ):
185185
def checkFieldNameLength( fieldList ):
186186
longNames = []
187187
for field in fieldList:
188-
if field.name().size() > 10:
189-
longNames.append(unicode( field.name() ))
188+
if len ( field.name() ) > 10:
189+
longNames.append( field.name() )
190190
return longNames
191191

192192
# Return list of names of all layers in QgsMapLayerRegistry
@@ -195,15 +195,15 @@ def getLayerNames( vTypes ):
195195
layerlist = []
196196
if vTypes == "all":
197197
for name, layer in layermap.iteritems():
198-
layerlist.append( unicode( layer.name() ) )
198+
layerlist.append( layer.name() )
199199
else:
200200
for name, layer in layermap.iteritems():
201201
if layer.type() == QgsMapLayer.VectorLayer:
202202
if layer.geometryType() in vTypes:
203-
layerlist.append( unicode( layer.name() ) )
203+
layerlist.append( layer.name() )
204204
elif layer.type() == QgsMapLayer.RasterLayer:
205205
if "Raster" in vTypes:
206-
layerlist.append( unicode( layer.name() ) )
206+
layerlist.append( layer.name() )
207207
return sorted( layerlist, cmp=locale.strcoll )
208208

209209
# Return list of names of all fields from input QgsVectorLayer
@@ -212,7 +212,7 @@ def getFieldNames( vlayer ):
212212
fieldlist = []
213213
for field in fieldmap:
214214
if not field.name() in fieldlist:
215-
fieldlist.append( unicode( field.name() ) )
215+
fieldlist.append( field.name() )
216216
return sorted( fieldlist, cmp=locale.strcoll )
217217

218218
# Return QgsVectorLayer from a layer name ( as string )

src/core/qgsfield.h

+8
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,14 @@ class CORE_EXPORT QgsFields
186186
inline bool isEmpty() const { return mFields.isEmpty(); }
187187
inline int count() const { return mFields.count(); }
188188
inline int size() const { return mFields.count(); } // TODO[MD]: delete?
189+
void extend( const QgsFields& other )
190+
{
191+
for ( int i = 0; i < other.count(); ++i )
192+
{
193+
if ( other.fieldOrigin( i ) != OriginJoin )
194+
append( other.at( i ), other.fieldOrigin( i ), other.fieldOriginIndex( i ) );
195+
}
196+
}
189197
inline const QgsField& operator[]( int i ) const { return mFields[i].field; }
190198
inline QgsField& operator[]( int i ) { return mFields[i].field; }
191199
const QgsField& at( int i ) const { return mFields[i].field; }

0 commit comments

Comments
 (0)