Bug report #8219

fTools "Convex hull(s)" does not work if a input field is specified

Added by Minoru Akagi almost 11 years ago. Updated almost 7 years ago.

Status:Closed
Priority:Severe/Regression
Assignee:-
Category:Processing/QGIS
Affected QGIS version:master Regression?:
Operating System: Easy fix?:
Pull Request or Patch supplied:No Resolution:
Crashes QGIS or corrupts data:No Copied to github as #:17033

Description

When I used "Convex hull(s)" tool with "Create convex hulls based on input field" option selected, the following error message was logged.

An error has occured while executing Python code:

Traceback (most recent call last):
  File "C:\\OSGeo4W\\apps\\qgis-dev\\python\\plugins\\fTools\\tools\\doGeoprocessing.py", line 300, in run
    geos, feature, match, error = self.convex_hull( useField )
  File "C:\\OSGeo4W\\apps\\qgis-dev\\python\\plugins\\fTools\\tools\\doGeoprocessing.py", line 490, in convex_hull
    vproviderA.rewind()
AttributeError: 'QgsVectorDataProvider' object has no attribute 'rewind'

Python version:
2.7.4 (default, Apr  6 2013, 19:54:46) [MSC v.1500 32 bit (Intel)]

QGIS version:
1.9.0-Master Master, 630427f

polygons.zip (1.91 KB) Minoru Akagi, 2013-07-06 12:12 PM

Associated revisions

History

#1 Updated by Minoru Akagi almost 11 years ago

In addition, it is necessary to check "Use only selected features" to replicate this error.

#2 Updated by Minoru Akagi almost 11 years ago

Without feature selection, the following error was logged.

Traceback (most recent call last):
  File "C:\\OSGeo4W\\apps\\qgis-dev\\python\\plugins\\fTools\\tools\\doGeoprocessing.py", line 300, in run
    geos, feature, match, error = self.convex_hull( useField )
  File "C:\\OSGeo4W\\apps\\qgis-dev\\python\\plugins\\fTools\\tools\\doGeoprocessing.py", line 550, in convex_hull
    if idVar.strip() == i.strip():
AttributeError: 'QPyNullVariant' object has no attribute 'strip'

#3 Updated by Minoru Akagi almost 11 years ago

The reason of the error "'QPyNullVariant' object has no attribute 'strip'" is that there are NULL values in the field of my data.

#4 Updated by Daniel Vaz almost 11 years ago

Please, attach the dataset you are using.

#5 Updated by Minoru Akagi almost 11 years ago

The attribute table of the attached dataset has three fields. "id" and "name" are string type fields. "nvertex" is integer type field. The "name" field includes NULL values.

#6 Updated by Daniel Vaz almost 11 years ago

I commented the line

vproviderA.rewind()
so the program pass but I got a crash.
Fatal: QGIS died on signal 11
Stacktrace (piped through c++filt):
qgis(myMessageOutput(QtMsgType, char const*)+0x24f)[0x55145c]
/usr/lib/x86_64-linux-gnu/libQtCore.so.4(qt_message_output(QtMsgType, char const*)+0x30)[0x7f204193e4d0]
/usr/lib/x86_64-linux-gnu/libQtCore.so.4(+0x71938)[0x7f204193e938]
/usr/lib/x86_64-linux-gnu/libQtCore.so.4(qFatal(char const*, ...)+0x94)[0x7f204193eac4]
qgis(qgisCrash(int)+0x1f)[0x55120b]
/lib/x86_64-linux-gnu/libc.so.6(+0x370b0)[0x7f203ee460b0]
/usr/lib/libgdal.so.1(swq_select_summarize(swq_select*, int, char const*)+0x93)[0x7f2043945ba3]
/usr/lib/libgdal.so.1(OGRGenSQLResultsLayer::PrepareSummary()+0x162)[0x7f20437dcb22]
/usr/lib/libgdal.so.1(OGRGenSQLResultsLayer::GetFeature(long)+0xbd)[0x7f20437de81d]
/usr/local/lib/qgis/plugins/libogrprovider.so(QgsOgrProvider::uniqueValues(int, QList<QVariant>&, int)+0x553)[0x7f2020412ba9]
/usr/lib/python2.7/dist-packages/qgis/core.so(+0x4e54cc)[0x7f2017c724cc]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5e75)[0x7f201945b8d5]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5c03)[0x7f201945b663]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x5c03)[0x7f201945b663]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x81a)[0x7f20194ef2fa]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(+0xff4a6)[0x7f20194ef4a6]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyObject_Call+0x4e)[0x7f2019521d8e]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(+0xa106d)[0x7f201949106d]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyObject_Call+0x4e)[0x7f2019521d8e]
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_CallObjectWithKeywords+0x47)[0x7f2019522b37]
/usr/lib/python2.7/dist-packages/sip.so(+0x98e2)[0x7f2018fd88e2]
/usr/lib/python2.7/dist-packages/PyQt4/QtCore.so(+0x8c885)[0x7f2018be4885]
/usr/lib/python2.7/dist-packages/PyQt4/QtCore.so(+0xd79de)[0x7f2018c2f9de]
/usr/lib/x86_64-linux-gnu/libQtCore.so.4(+0x7bbec)[0x7f2041948bec]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x7f8e)[0x7f203ebf9f8e]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d)[0x7f203ef08e1d]
Aborted (core dumped)

The function

ftools_utils.getUniqueValues()
is the crash point.

#8 Updated by Nathan Woodrow almost 11 years ago

  • Status changed from Open to Closed

#9 Updated by Giovanni Manghi almost 7 years ago

The "ftools" category is being removed from the tracker, changing the category of this ticket to "Processing/QGIS" to not leave the category orphaned.

Also available in: Atom PDF