[QGIS-trac] Re: [Quantum GIS] #2987: Auto GCP detection library

Quantum GIS qgis at qgis.org
Mon Oct 18 04:22:58 EDT 2010


#2987: Auto GCP detection library
--------------------------------+-------------------------------------------
   Reporter:  jamesm6162        |              Owner:  timlinux     
       Type:  patch             |             Status:  assigned     
   Priority:  minor: annoyance  |          Milestone:  Version 1.6.0
  Component:  C++ Plugins       |            Version:  Trunk        
   Keywords:                    |   Platform_version:               
   Platform:  Debian            |           Must_fix:  No           
Status_info:  0                 |  
--------------------------------+-------------------------------------------

Comment(by jamesm6162):

 Hi Tim

 Thanks for the feedback. We are working on getting all the crashes fixed
 adn we'll get to all your recommended features as soon as possible.

 One question from my side though.
 What would be the best resource to start looking at if we want to
 implement the Georeferencing with GDAL?

 Thanks

 James


 Replying to [comment:11 timlinux]:
 > Hi
 >
 > I upgraded both the lib parts and the plugin parts. A couple of new
 comments:
 >
 > - it would be nice to persist the last used dir for reference and raw
 images separately since these will often be in separate directories.
 >
 > - It would be nice to have an option to simply georeference the image
 (as opposed to orthorectify it) for those that dont have a dem handy.
 >
 > - I still get a crash when trying to gather GCP's between two images.
 The data is not publically shareable, so I will mail you a copy offlist.
 >
 > - It would still be nice to have a 'zoom to image' tool on the toolbars.
 >
 > - Thanks for updating to use the built in CRS selector from QGIS - much
 better usability.
 >
 > {{{
 > Debug: qgsautogcpmanager.cpp:
 (QgsAutoGCPManager::extractControlPoints()) Starting Control Point
 Extraction
 > Debug: Analyzer Starting GCP extraction
 > Debug: Levels: 5
 > Debug: Chip Cache Size = 5 of 256 elements
 >
 > Debug: Wavelet Iterations: 296 x 352
 >
 > Debug: Dividing image into 7 X 7 grids
 > Debug: Extracting GCP Chips
 > Debug: GCP Extraction Complete
 > Debug: ++++++++++++++++++++++++11
 > Debug: Analyzer Starting GCP extraction
 > Debug: Levels: 5
 > Debug: Chip Cache Size = 5 of 256 elements
 >
 > Debug: Wavelet Iterations: 221 x 260
 >
 > Debug: Dividing image into 56 X 56 grids
 > Debug: Extracting GCP Chips
 > Debug: GCP Extraction Complete
 >
 > Program received signal SIGSEGV, Segmentation fault.
 > 0x00007fffd34c9254 in QList<QgsGcp*>::detach (this=0x86333e0) at
 /usr/include/qt4/QtCore/qlist.h:122
 > 122       inline void detach() { if (d->ref != 1) detach_helper(); }
 > }}}
 >
 > backtrace:
 >
 > {{{
 > #0  0x00007fffd34c9254 in QList<QgsGcp*>::detach (this=0x86333e0) at
 /usr/include/qt4/QtCore/qlist.h:122
 > #1  0x00007fffd34c8d99 in QList<QgsGcp*>::append (this=0x86333e0,
 t=@0x69109b8) at /usr/include/qt4/QtCore/qlist.h:468
 > #2  0x00007fffd327a9cf in QList<QgsGcp*>::push_back (this=0x86333e0,
 t=@0x69109b8) at /usr/include/qt4/QtCore/qlist.h:277
 > #3  0x00007fffd3279e2e in QgsImageAnalyzer::QgsGrid::fillGrid
 (this=0x49121c0, gcpSet=0x61f9f30)
 >     at /home/timlinux/dev/cpp/qgis/src/autogcp/qgsimageanalyzer.cpp:521
 > #4  0x00007fffd327821d in QgsImageAnalyzer::matchGcps (this=0x4091630,
 gcpSet=0x5f58180)
 >     at /home/timlinux/dev/cpp/qgis/src/autogcp/qgsimageanalyzer.cpp:127
 > #5  0x00007fffd3270b9e in QgsAutoGCPManager::matchControlPoints
 (this=0x44fa290) at
 /home/timlinux/dev/cpp/qgis/src/autogcp/qgsautogcpmanager.cpp:138
 > #6  0x00007fffd34ddd3f in meth_QgsAutoGCPManager_matchControlPoints
 (sipSelf=<QgsAutoGCPManager at remote 0x43ff7c0>, sipArgs=())
 >     at sipautogcppart3.cpp:1361
 > #7  0x00007fffd67e1030 in call_function (f=
 >     Frame 0x408b230, for file
 /home/timlinux/.qgis/python/plugins/autogcp/guibase.py, line 1235, in
 matchGcps (self=<Ui_MainWindow(dockWidgetContents_2=<QWidget at remote
 0x43fb490>, dockWidgetContents_3=<QWidget at remote 0x43fbaf0>,
 rawMapCanvas=<QgsMapCanvas at remote 0x43fbd10>, actionTest1=<QAction at
 remote 0x43fe160>, menuSettings=<QMenu at remote 0x43f67c0>,
 actionTest2=<QAction at remote 0x43fe270>, actionAbout=<QAction at remote
 0x43fd7c0>, menubar=<QMenuBar at remote 0x43f65a0>, menuHelp=<QMenu at
 remote 0x43f6628>, actionZoomInAll=<QAction at remote 0x43fec88>,
 actionDetectGCP=<QAction at remote 0x43fd380>, actionZoomOutAll=<QAction
 at remote 0x43fed10>, bandCount=<QString at remote 0x43e68d8>,
 refLayer=<QgsRasterLayer at remote 0x43feaf0>, actionZoomOut2=<QAction at
 remote 0x43fe518>, rawScaleText=<QLineEdit at remote 0x43fd050>,
 actionShowRefImage=<QAction at remote 0x43fe958>, gcpItems=[],
 sqlitePath=<QString at remote 0x43e6460>,
 settings=<AutoGcpSettings(sqliteChoice=0, markerIconType=0,
 selected...(truncated),
 >     throwflag=<value optimized out>) at ../Python/ceval.c:3750
 > #8  PyEval_EvalFrameEx (f=
 >     Frame 0x408b230, for file
 /home/timlinux/.qgis/python/plugins/autogcp/guibase.py, line 1235, in
 matchGcps (self=<Ui_MainWindow(dockWidgetContents_2=<QWidget at remote
 0x43fb490>, dockWidgetContents_3=<QWidget at remote 0x43fbaf0>,
 rawMapCanvas=<QgsMapCanvas at remote 0x43fbd10>, actionTest1=<QAction at
 remote 0x43fe160>, menuSettings=<QMenu at remote 0x43f67c0>,
 actionTest2=<QAction at remote 0x43fe270>, actionAbout=<QAction at remote
 0x43fd7c0>, menubar=<QMenuBar at remote 0x43f65a0>, menuHelp=<QMenu at
 remote 0x43f6628>, actionZoomInAll=<QAction at remote 0x43fec88>,
 actionDetectGCP=<QAction at remote 0x43fd380>, actionZoomOutAll=<QAction
 at remote 0x43fed10>, bandCount=<QString at remote 0x43e68d8>,
 refLayer=<QgsRasterLayer at remote 0x43feaf0>, actionZoomOut2=<QAction at
 remote 0x43fe518>, rawScaleText=<QLineEdit at remote 0x43fd050>,
 actionShowRefImage=<QAction at remote 0x43fe958>, gcpItems=[],
 sqlitePath=<QString at remote 0x43e6460>,
 settings=<AutoGcpSettings(sqliteChoice=0, markerIconType=0,
 selected...(truncated),
 >     throwflag=<value optimized out>) at ../Python/ceval.c:2412
 > #9  0x00007fffd67e2d60 in PyEval_EvalCodeEx (co=0x247a558,
 globals=<value optimized out>, locals=<value optimized out>, args=0x1,
 >     argcount=<value optimized out>, kws=<value optimized out>,
 kwcount=0, defs=0x0, defcount=0, closure=0x0) at ../Python/ceval.c:3000
 > #10 0x00007fffd6768d60 in function_call (func=<function at remote
 0x252ccf8>, arg=
 >     (<Ui_MainWindow(dockWidgetContents_2=<QWidget at remote 0x43fb490>,
 dockWidgetContents_3=<QWidget at remote 0x43fbaf0>,
 rawMapCanvas=<QgsMapCanvas at remote 0x43fbd10>, actionTest1=<QAction at
 remote 0x43fe160>, menuSettings=<QMenu at remote 0x43f67c0>,
 actionTest2=<QAction at remote 0x43fe270>, actionAbout=<QAction at remote
 0x43fd7c0>, menubar=<QMenuBar at remote 0x43f65a0>, menuHelp=<QMenu at
 remote 0x43f6628>, actionZoomInAll=<QAction at remote 0x43fec88>,
 actionDetectGCP=<QAction at remote 0x43fd380>, actionZoomOutAll=<QAction
 at remote 0x43fed10>, bandCount=<QString at remote 0x43e68d8>,
 refLayer=<QgsRasterLayer at remote 0x43feaf0>, actionZoomOut2=<QAction at
 remote 0x43fe518>, rawScaleText=<QLineEdit at remote 0x43fd050>,
 actionShowRefImage=<QAction at remote 0x43fe958>, gcpItems=[],
 sqlitePath=<QString at remote 0x43e6460>,
 settings=<AutoGcpSettings(sqliteChoice=0, markerIconType=0,
 selectedIconColor=0, postgresHost=<QString at remote 0x44021f0>,
 chipHeight=32, databaseSelection=1, postgresName=<QStr...(truncated),
 kw=0x0) at ../Objects/funcobject.c:524
 > #11 0x00007fffd673b2e3 in PyObject_Call (func=<function at remote
 0x252ccf8>, arg=Traceback (most recent call last):
 >   File "/usr/lib/debug/usr/lib/libpython2.6.so.1.0-gdb.py", line 1054,
 in to_string
 >     pyop = PyObjectPtr.from_pyobject_ptr(self.gdbval)
 >   File "/usr/lib/debug/usr/lib/libpython2.6.so.1.0-gdb.py", line 343, in
 from_pyobject_ptr
 >     cls = cls.subclass_from_type(p.type())
 >   File "/usr/lib/debug/usr/lib/libpython2.6.so.1.0-gdb.py", line 288, in
 subclass_from_type
 >     tp_name = t.field('tp_name').string()
 >   File "/usr/lib/python2.6/encodings/utf_8.py", line 16, in decode
 >     return codecs.utf_8_decode(input, errors, True)
 > UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-2:
 invalid data
 > , kw=Traceback (most recent call last):
 >   File "/usr/lib/debug/usr/lib/libpython2.6.so.1.0-gdb.py", line 1054,
 in to_string
 >     pyop = PyObjectPtr.from_pyobject_ptr(self.gdbval)
 >   File "/usr/lib/debug/usr/lib/libpython2.6.so.1.0-gdb.py", line 343, in
 from_pyobject_ptr
 >     cls = cls.subclass_from_type(p.type())
 >   File "/usr/lib/debug/usr/lib/libpython2.6.so.1.0-gdb.py", line 288, in
 subclass_from_type
 >     tp_name = t.field('tp_name').string()
 >   File "/usr/lib/python2.6/encodings/utf_8.py", line 16, in decode
 >     return codecs.utf_8_decode(input, errors, True)
 > UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-2:
 invalid data
 > ) at ../Objects/abstract.c:2492
 > #12 0x00007fffd674ccef in instancemethod_call (func=<function at remote
 0x252ccf8>, arg=
 >     (<Ui_MainWindow(dockWidgetContents_2=<QWidget at remote 0x43fb490>,
 dockWidgetContents_3=<QWidget at remote 0x43fbaf0>,
 rawMapCanvas=<QgsMapCanvas at remote 0x43fbd10>, actionTest1=<QAction at
 remote 0x43fe160>, menuSettings=<QMenu at remote 0x43f67c0>,
 actionTest2=<QAction at remote 0x43fe270>, actionAbout=<QAction at remote
 0x43fd7c0>, menubar=<QMenuBar at remote 0x43f65a0>, menuHelp=<QMenu at
 remote 0x43f6628>, actionZoomInAll=<QAction at remote 0x43fec88>,
 actionDetectGCP=<QAction at remote 0x43fd380>, actionZoomOutAll=<QAction
 at remote 0x43fed10>, bandCount=<QString at remote 0x43e68d8>,
 refLayer=<QgsRasterLayer at remote 0x43feaf0>, actionZoomOut2=<QAction at
 remote 0x43fe518>, rawScaleText=<QLineEdit at remote 0x43fd050>,
 actionShowRefImage=<QAction at remote 0x43fe958>, gcpItems=[],
 sqlitePath=<QString at remote 0x43e6460>,
 settings=<AutoGcpSettings(sqliteChoice=0, markerIconType=0,
 selectedIconColor=0, postgresHost=<QString at remote 0x44021f0>,
 chipHeight=32, databaseSelection=1, postgresName=<QStr...(truncated), kw=
 >     0x0) at ../Objects/classobject.c:2579
 > #13 0x00007fffd673b2e3 in PyObject_Call (func=<instancemethod at remote
 0x1d8cf50>, arg=Traceback (most recent call last):
 >   File "/usr/lib/debug/usr/lib/libpython2.6.so.1.0-gdb.py", line 1054,
 in to_string
 >     pyop = PyObjectPtr.from_pyobject_ptr(self.gdbval)
 >   File "/usr/lib/debug/usr/lib/libpython2.6.so.1.0-gdb.py", line 343, in
 from_pyobject_ptr
 >     cls = cls.subclass_from_type(p.type())
 >   File "/usr/lib/debug/usr/lib/libpython2.6.so.1.0-gdb.py", line 288, in
 subclass_from_type
 >     tp_name = t.field('tp_name').string()
 >   File "/usr/lib/python2.6/encodings/utf_8.py", line 16, in decode
 >     return codecs.utf_8_decode(input, errors, True)
 > UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-2:
 invalid data
 > ) at ../Python/ceval.c:3619
 > #15 0x00007fffd64e2a38 in sip_api_invoke_slot () from
 /usr/lib/pymodules/python2.6/sip.so
 > #16 0x00007fffd621f016 in ?? () from
 /usr/lib/pymodules/python2.6/PyQt4/QtCore.so
 > #17 0x00007fffd621f138 in ?? () from
 /usr/lib/pymodules/python2.6/PyQt4/QtCore.so
 > #18 0x00007fffd621f1f2 in ?? () from
 /usr/lib/pymodules/python2.6/PyQt4/QtCore.so
 > #19 0x00007ffff6554e3f in QMetaObject::activate(QObject*, QMetaObject
 const*, int, void**) () from /usr/lib/libQtCore.so.4
 > #20 0x00007ffff58f5032 in QAction::triggered(bool) () from
 /usr/lib/libQtGui.so.4
 > #21 0x00007ffff58f70ab in QAction::activate(QAction::ActionEvent) ()
 from /usr/lib/libQtGui.so.4
 > #22 0x00007ffff5cb16ca in ?? () from /usr/lib/libQtGui.so.4
 > #23 0x00007ffff5cb197c in
 QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from
 /usr/lib/libQtGui.so.4
 > #24 0x00007ffff5d7d8ca in QToolButton::mouseReleaseEvent(QMouseEvent*)
 () from /usr/lib/libQtGui.so.4
 > #25 0x00007ffff5951582 in QWidget::event(QEvent*) () from
 /usr/lib/libQtGui.so.4
 > #26 0x00007ffff58fb22c in QApplicationPrivate::notify_helper(QObject*,
 QEvent*) () from /usr/lib/libQtGui.so.4
 > #27 0x00007ffff5901ecb in QApplication::notify(QObject*, QEvent*) ()
 from /usr/lib/libQtGui.so.4
 > #28 0x00007ffff759d8e5 in QgsApplication::notify (this=0x7fffffffded0,
 receiver=0x44b1f80, event=0x7fffffffd0a0)
 >     at /home/timlinux/dev/cpp/qgis/src/core/qgsapplication.cpp:88
 > #29 0x00007ffff654206c in QCoreApplication::notifyInternal(QObject*,
 QEvent*) () from /usr/lib/libQtCore.so.4
 > #30 0x00007ffff59010ae in QApplicationPrivate::sendMouseEvent(QWidget*,
 QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) ()
 >    from /usr/lib/libQtGui.so.4
 > #31 0x00007ffff5980f65 in ?? () from /usr/lib/libQtGui.so.4
 > #32 0x00007ffff597f8ac in QApplication::x11ProcessEvent(_XEvent*) ()
 from /usr/lib/libQtGui.so.4
 > #33 0x00007ffff59ab882 in ?? () from /usr/lib/libQtGui.so.4
 > #34 0x00007ffff19af8c2 in g_main_context_dispatch () from
 /lib/libglib-2.0.so.0
 > #35 0x00007ffff19b3748 in ?? () from /lib/libglib-2.0.so.0
 > #36 0x00007ffff19b38fc in g_main_context_iteration () from
 /lib/libglib-2.0.so.0
 > #37 0x00007ffff656b513 in
 QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
 () from /usr/lib/libQtCore.so.4
 > #38 0x00007ffff59ab46e in ?? () from /usr/lib/libQtGui.so.4
 > #39 0x00007ffff6540992 in
 QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from
 /usr/lib/libQtCore.so.4
 > #40 0x00007ffff6540d6c in
 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from
 /usr/lib/libQtCore.so.4
 > #41 0x00007ffff6544aab in QCoreApplication::exec() () from
 /usr/lib/libQtCore.so.4
 > #42 0x0000000000523ff5 in main (argc=1, argv=0x7fffffffe5d8) at
 /home/timlinux/dev/cpp/qgis/src/app/main.cpp:802
 >
 > }}}
 >
 >
 > Regards
 >
 > Tim

-- 
Ticket URL: <http://trac.osgeo.org/qgis/ticket/2987#comment:12>
Quantum GIS <http://qgis.org>
Quantum GIS is an Open Source GIS viewer/editor supporting OGR, PostGIS, and GRASS formats


More information about the QGIS-trac mailing list