- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
Quantum GIS (qgis) 是一款开源 GIS 软件。 qgis 的功能可以通过用 python 或 c++ 编写的插件来扩展。这个问题与 DTClassifier 有关这是基于 C++ 的。 DTClassifier 使栅格 map 的自动化分类成为可能,例如基于遥感数据的森林分类自动化。
我想在 qgis 1.8.0(Ubuntu 12.04 64 位)上安装插件,这是通过将已编译的 linux DTClassifier plugin file进入
/usr/lib/qgis/plugins
但是,这是一个使用 OpenCV 2.3.1 在 32 位 Slackware 13.1 下编译的 32 位二进制文件,而我的操作系统是 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:
我找到了这个 (forum message)这指向 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 失败了很多提示:
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
最佳答案
在 Quantum GIS (qgis) 版本 1.8.0 Ubuntu 64 位上编译 DTClassifier c++ 插件。
这是我如何在 Ubuntu 12.04 64 位上编译 DTClassifier 插件的简短说明。这可能不是最佳做法,但它确实有效!
获取源代码
找出与该插件兼容的 qgis 版本。在 DTClassifier 的文档中,它已使用 OpenCV 2.3.1 在 32 位 Slackware 13.1 上的 qgis 1.8 上进行了编译和测试。我的出发点是首先让 qgis 在我的系统上编译。所以我找到了这个 excellent guide在编译 qgis 时,我遵循了指南中的步骤 1 - 3.7,只是我没有使用步骤 3.6 中建议的来源
git://github.com/qgis/Quantum-GIS.git
这是 qgis 1.9 但这里我们需要 qgis 1.8。因此,请下载我从 "7 Sources and Sample Datase" 下载的 qgis 1.8 版的源代码1.8 Final Release。(如何编译的说明也在源代码存档中作为文件“INSTALL”提供。)
我编译qgis的经验笔记
我在使用 proj 和/或 gdal 库时遇到了一些问题。起初我有一个更高版本的 gdal 库但是有 gdal 1.7.3 和 proj 4.8(由 synaptic 报告但 proj 命令报告版本 4.7)在解决 proj/gdal 问题后编译成功并且可以尝试 qgis。
如果您在尝试执行已编译的 qgis 文件时遇到错误,这可能会对您有所帮助:加载共享库时出错:libqgis_core.so.1.8.0: cannot open shared object file: No such file or directory
关于编译 DTClassifier
DTClassifier 依赖于 OpenCV 库。我按照这个优秀的指南安装并测试了 OpenCv 2.4.1 installing-opencv-2-4-1-ubuntu-12-04-lts .
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。但是我在 qgis 1.8.0 的 ubuntu apt-get 版本中运行插件。所以生成的编译 DTClassifier 文件
qgis-1.8.0/build-master/output/lib/qgis/plugins/libclassifierplugin.so
需要放在qgis plugins目录下(通常是“/usr/lib/qgis/plugins”)。
它对我有用,希望对你也有用!
注意:如果您尝试针对 qgis 1.9 编译 DTClassifier,那么您很可能会得到类似于以下的错误列表:
classifierdialog.cpp:328:13: error: ‘class QgsVectorDataProvider’ has no member named ‘select’
那是因为 qgis 类的 API 在 1.9 版本发生了变化?
关于c++ - 编译 quantum gis dtclassifier c++ 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15007317/
我有一个状态|Q>的n位并想要测量位数 i 。是否有一个矩阵可以应用于状态,所以状态 Q最终为Q' ,比如 Hadamard 或 X 门? 或者我应该应用测量矩阵 |x>
我的 Firefox 刚刚更新到 Quantum,看起来用户代理不正确。现在是: Mozilla/5.0(Windows;U;Windows NT 5.0;rv:1.8.0.3)Gecko/20060
我有一个状态|Q>的n位并想要测量位数 i 。是否有一个矩阵可以应用于状态,所以状态 Q最终为Q' ,比如 Hadamard 或 X 门? 或者我应该应用测量矩阵 |x>
我正试图开始研究量子处理和量子算法,有什么资源可以从中获得这方面的知识? 有推荐的SDK吗? 有在线环境吗?(IBM也许会提供一个真正的量子处理器?) 在量子计算环境中,Hello World!会是什
正如标题所说,如何在 Q# 中实现 Grover 的扩散算子?我知道它被定义为 2 ⟨s|s⟩ - I哪里|s⟩是任意数量的量子比特的统一状态。这可以进一步定义为夹在一对 H 门之间的 Z0(看到它称
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 2 年前。 Improve t
在 Chrome 和 Firefox 中 const myWorker = new SharedWorker( "sharedWorkerChat.js" ); const port
我正在编写一个网站,该网站在 Bootstrap 4 之上使用了丰富的 Material Design 主题。到目前为止,我已经能够使所有浏览器 chrome 至少在某种程度上与该网站匹配(Chrom
今天,我将我的 Firefox 浏览器更新为 Firefox Quantum。但是当我想调试我的网络应用程序时,开发工具字体非常小。有什么办法可以调整吗??? firefox dev tool fon
我注意到新的 Firefox Quantum 上的动画有问题。 当您第一次加载包含一些动画元素 display: none; 的页面时,当脚本将其切换为 .display = "block"; 时,您
我想根据以下矩阵制作一个量子电路。 matrix to be transformed into qubit operations如何将此矩阵分解为 Rotation Y、Control-NOT 等量子
我刚刚安装了 Kony Studio 。我尝试在 Android 模拟器上运行 HelloWorld 应用程序,总是出现此错误: Failurerm failed for /sdcard/profil
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7 个月前关闭。 Improve t
当我深入研究所有可用文献时,我一遍又一遍地阅读,在量子计算中,最小的值(value)单位——量子比特——必须保持“ secret ”或未知,直到它被测量为止。在 StackOverflow 中,我什至
我正在使用适用于 Python 的 Microsoft Quantum Development Kit。我可以在真正的量子计算机上运行代码吗? 感谢您的回答。 最佳答案 本周早些时候,我们有 anno
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 11 个月前关闭。 Improve this que
我多久可以得到一台量子计算机?有什么方法可以建立一个简单的吗?对于早期采用者来说,它们还有多少年? 我想从高层次上了解 QBit 是什么,它可以有多少状态,以及哪些类型的算法可以在这个领域很好地工作。
是否可以使用不超过 2 个 Toffoli 门来实现或门? 我已经使用 3 个 Toffoli 门实现了它,但是找不到任何方法来使用 2 个 Toffoli 门实现它。 最佳答案 我假设您指的是两个量
是否可以使用不超过 2 个 Toffoli 门来实现或门? 我已经使用 3 个 Toffoli 门实现了它,但是找不到任何方法来使用 2 个 Toffoli 门实现它。 最佳答案 我假设您指的是两个量
我正在尝试在 Win 7 上通过 SSLKEYLOGFILE(将其放入 Wireshark)从 Firefox Quantum SSL 通信中提取预主 key ,如描述的那样在 https://www
我是一名优秀的程序员,十分优秀!