C++ 编译quantum gis DTC++;插件

C++ 编译quantum gis DTC++;插件,c++,plugins,gis,qgis,C++,Plugins,Gis,Qgis,Quantum GIS(qgis)是一种开源GIS软件。QGIS的功能可以通过Python或C++编写的插件来扩展。这个问题与基于C++的问题有关。DTClassifier使光栅地图的自动分类成为可能,例如根据遥感数据自动对森林进行分类 我想在qgis 1.8.0(Ubuntu 12.04 64位)上安装这个插件,这是通过将编译好的linux放入 然而,这是一个32位二进制文件,在32位Slackware 13.1下使用OpenCV 2.3.1编写,而我的操作系统是Ubuntu 12.04 64

Quantum GIS(qgis)是一种开源GIS软件。QGIS的功能可以通过Python或C++编写的插件来扩展。这个问题与基于C++的问题有关。DTClassifier使光栅地图的自动分类成为可能,例如根据遥感数据自动对森林进行分类

我想在qgis 1.8.0(Ubuntu 12.04 64位)上安装这个插件,这是通过将编译好的linux放入

然而,这是一个32位二进制文件,在32位Slackware 13.1下使用OpenCV 2.3.1编写,而我的操作系统是Ubuntu 12.04 64位。将文件放入

/usr/lib/qgis/plugins
qgis无法识别。可能是因为我有64位操作系统和OpenCV 2.4.1。因此,我试图编译提供的源代码,但未能做到这一点有谁能为我提供编译插件或提供已编译文件的帮助吗?

这就是我迄今为止所取得的成就:

我安装了OpenCV 2.4.1和Qt4,并下载了DTClassifier的源代码

svn co http://svn.gis-lab.info/dtclassifier/trunk dtclassifier
该源被放入qgis-1.8.0源中。然后使用CMakeLists.txt运行cmake:

我发现这是指向Ubuntu 11.04的64位版本,但我无法让它工作

到目前为止,我尝试过的方法的详情如下:

~/qgis-1.8.0/src/plugins/dtclassifier cmake .
CMakeLists.txt文件

# set path to additional CMake modules
cmake_minimum_required (VERSION 2.6)
SET(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules ${CMAKE_MODULE_PATH})

FIND_PACKAGE(OpenCV REQUIRED)
FIND_PACKAGE(Qt4)
INCLUDE(${QT_USE_FILE})

########################################################
# Files

SET (CLASSIFIER_SRCS
 classifier.cpp
 classifierdialog.cpp
 classifierutils.cpp
 rasterfileinfo.cpp
 layerselectordialog.cpp
)

SET (CLASSIFIER_UIS
 classifierdialogbase.ui
 layerselectordialogbase.ui
)

SET (CLASSIFIER_MOC_HDRS
 classifier.h
 classifierdialog.h
 layerselectordialog.h
)

SET (CLASSIFIER_RCCS  classifier.qrc)

########################################################
# Build

QT4_WRAP_UI (CLASSIFIER_UIS_H  ${CLASSIFIER_UIS})
QT4_WRAP_CPP (CLASSIFIER_MOC_SRCS  ${CLASSIFIER_MOC_HDRS})
QT4_ADD_RESOURCES(CLASSIFIER_RCC_SRCS ${CLASSIFIER_RCCS})

ADD_LIBRARY (classifierplugin MODULE
${CLASSIFIER_SRCS}
${CLASSIFIER_MOC_SRCS}
${CLASSIFIER_RCC_SRCS}
${CLASSIFIER_UIS_H}
)

INCLUDE_DIRECTORIES(
 ${CMAKE_CURRENT_BINARY_DIR}
 ${GDAL_INCLUDE_DIR}
 ${OpenCV_INCLUDE_DIR}
 ../../core/raster
 ../../core/renderer
 ../../core/symbology
 ../../core
 ../../gui
 ..
 .
 #/usr/include/opencv2
 )

TARGET_LINK_LIBRARIES(classifierplugin
 qgis_core
 qgis_gui
 ${OpenCV_LIBS}
 #/usr/lib/libopencv_core.so
 #/usr/lib/libopencv_ml.so
 #/usr/lib/libopencv_highgui.so
 #/usr/lib/libopencv_imgproc.so
)


########################################################
# Install

INSTALL(TARGETS classifierplugin
RUNTIME DESTINATION /usr/lib/qgis/plugins
LIBRARY DESTINATION /usr/lib/qgis/plugins
)
它没有给出任何错误

-- Configuring done
-- Generating done
-- Build files have been written to: qgis-1.8.0/src/plugins/dtclassifier
。但是,我经常抱怨:

make
[  6%] Building CXX object CMakeFiles/classifierplugin.dir/classifier.cpp.o
In file included from /qgis-1.8.0/src/plugins/dtclassifier/../../gui/qgisinterface.h:40:0,
from /qgis-1.8.0/src/plugins/dtclassifier/classifier.cpp:23:
/qgis-1.8.0/src/plugins/dtclassifier/../../core/qgis.h:30:19: error: variable ‘CORE_EXPORT QGis’ has initializer but incomplete type
/qgis-1.8.0/src/plugins/dtclassifier/../../core/qgis.h:30:19: warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x [enabled by default]
/qgis-1.8.0/src/plugins/dtclassifier/../../core/qgis.h:32:3: error: expected primary-expression before ‘public’
/qgis-1.8.0/src/plugins/dtclassifier/../../core/qgis.h:32:3: error: expected ‘}’ before ‘public’
/qgis-1.8.0/src/plugins/dtclassifier/../../core/qgis.h:32:3: error: expected ‘,’ or ‘;’ before ‘public’
/qgis-1.8.0/src/plugins/dtclassifier/../../core/qgis.h:38:22: error: uninitialized const ‘QGIS_VERSION_INT’ [-fpermissive]
/qgis-1.8.0/src/plugins/dtclassifier/../../core/qgis.h:77:47: error: storage size of ‘qgisVectorGeometryType’ isn’t known
/qgis-1.8.0/src/plugins/dtclassifier/../../core/qgis.h:80:41: error: storage size of ‘qgisFeatureTypes’ isn’t known
/qgis-1.8.0/src/plugins/dtclassifier/../../core/qgis.h:108:25: error: uninitialized const ‘DEFAULT_IDENTIFY_RADIUS’ [-fpermissive]
/qgis-1.8.0/src/plugins/dtclassifier/../../core/qgis.h:109:1: error: expected declaration before ‘}’ token
make[2]: *** [CMakeFiles/classifierplugin.dir/classifier.cpp.o] Error 1
make[1]: *** [CMakeFiles/classifierplugin.dir/all] Error 2
make: *** [all] Error 2

<强>编译dtCuffer-C++插件在量子GIS(QGIS)1.1.0 Ubuntu 64位.<强> < /P> 这是我如何在Ubuntu 12.04 64位上编译DTClassifier插件的简短说明。这可能不是最好的做法,但它奏效了

获取源代码

找出哪个版本的qgis与插件兼容。在DTClassifier的文档中,使用OpenCV 2.3.1在32位Slackware 13.1上的qgis 1.8上对其进行了编译和测试。我的出发点是首先让qgis在我的系统上编译。因此,我在编译qgis时发现了这一点,我遵循了指南中的步骤1-3.7,只是我没有使用

git://github.com/qgis/Quantum-GIS.git
这是qgis 1.9,但这里我们需要qgis 1.8。因此,请下载我从1.8最终版本下载的qgis版本1.8的源代码。(如何编译的说明也在源代码归档文件“INSTALL”中提供。)

关于我编译qgis经验的说明。

我在proj和/或gdal库方面遇到了一些问题。起初,我有一个更高版本的gdal库,但有了gdal 1.7.3和proj 4.8(由synaptic报告,但proj命令报告版本4.7),在解决了proj/gdal问题后,编译成功了,可以尝试qgis

如果您在尝试执行已编译的qgis文件时出错,这可能会帮助您: 加载共享库时出错:

继续编译DTClassifier

DTClassifier依赖于OpenCV库。我按照这个优秀的指南安装并测试了OpenCv 2.4.1

DTClassifier的源被放入

qgis-1.8.0/src/plugins/dtclassifier
然后转到plugins目录中的cmakelist文件,该文件还需要构建DTClassifier的信息:

qgis-1.8.0/src/plugins/CMakeLists.txt
增加了这一行

ADD_SUBDIRECTORY(dtclassifier)
然后重复qgis的编译过程。请记住在安装指南的步骤3.7中运行“ccmake..”,以便更新配置信息。现在,配置应该有包含OpenCV库配置的行。由于前面的编译,这次“make”运行得更快

在qgis中,DTclassifier插件现在应在qgis插件管理器中显示为DTclassifier。但是我在UbuntuApt-get版本的qgis 1.8.0中运行了这个插件。因此,生成的编译DTF分类器文件

qgis-1.8.0/build-master/output/lib/qgis/plugins/libclassifierplugin.so
需要放在qgis插件目录中(通常为“/usr/lib/qgis/plugins”)

它对我有用,希望对你也有用

注意:如果您试图根据qgis 1.9编译DTClassifier,那么您很可能会得到一个类似以下内容的错误列表:

 classifierdialog.cpp:328:13: error: ‘class QgsVectorDataProvider’ has no member named ‘select’

这是因为QGIS类的API在1.9版上发生了变化,

< P>强>编译dtCalor C++插件,在量子GIS(QGIS)版本1.80.Ubuntu 64位。>P/> 这是我如何在Ubuntu 12.04 64位上编译DTClassifier插件的简短说明。这可能不是最好的做法,但它奏效了

获取源代码

找出哪个版本的qgis与插件兼容。在DTClassifier的文档中,使用OpenCV 2.3.1在32位Slackware 13.1上的qgis 1.8上对其进行了编译和测试。我的出发点是首先让qgis在我的系统上编译。因此,我在编译qgis时发现了这一点,我遵循了指南中的步骤1-3.7,只是我没有使用

git://github.com/qgis/Quantum-GIS.git
这是qgis 1.9,但这里我们需要qgis 1.8。因此,请下载我从1.8最终版本下载的qgis版本1.8的源代码。(如何编译的说明也在源代码归档文件“INSTALL”中提供。)

关于我编译qgis经验的说明。

我在proj和/或gdal库方面遇到了一些问题。起初,我有一个更高版本的gdal库,但有了gdal 1.7.3和proj 4.8(由synaptic报告,但proj命令报告版本4.7),在解决了proj/gdal问题后,编译成功了,可以尝试qgis

如果您在尝试执行已编译的qgis文件时出错,这可能会帮助您: 加载共享库时出错:

继续编译DTClassifier

DTClassifier依赖于OpenCV库。我按照这个优秀的指南安装并测试了OpenCv 2.4.1

DTClassifier的源被放入

qgis-1.8.0/src/plugins/dtclassifier
然后转到plugins目录中的cmakelist文件,该文件还需要DTS的信息