Quantum GIS (qgis) は、オープン ソースの GIS ソフトウェアです。qgis の機能は、python または c++ で書かれたプラグインによって拡張できます。この質問は、c++ ベースのDTClassifierに関連しています。DTClassifier を使用すると、リモート センシング データで森林の分類を自動化するなど、ラスター マップの分類を自動化できます。
qgis 1.8.0 (Ubuntu 12.04 64 ビット) にプラグインをインストールしたいのですが、これは、コンパイルされた Linux DTClassifier プラグイン ファイルを
/usr/lib/qgis/plugins
ただし、これは 32 ビットの Slackware 13.1 で OpenCV 2.3.1 を使用してコンパイルされた 32 ビットのバイナリですが、私の OS は Ubuntu 12.04 64 ビットです。ファイルを入れる
/usr/lib/qgis/plugins
qgisによって認識されません。たぶん、64ビットOSと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 は多くの不平を言って失敗します。
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