QGIS - Tvorba zásuvného modulu krok za krokem: Porovnání verzí
mBez shrnutí editace |
mBez shrnutí editace |
||
Řádek 3: | Řádek 3: | ||
Stránka obsahuje poznámky pro tvorbu vlastního [http://cs.wikipedia.org/wiki/Plugin zásuvného modulu] pro aplikaci [[QGIS]]. Navržený modul má na vstupu dvě vektorové vrstvy - bodovou a polygonovou. Na výstupu vytvoří novou vektorovou vrstvu obsahující pouze body ležící uvnitř polygonů (viz [[Programování s knihovnou OGR#Prostorové predikáty|příklad pro knihovnu OGR]]). | Stránka obsahuje poznámky pro tvorbu vlastního [http://cs.wikipedia.org/wiki/Plugin zásuvného modulu] pro aplikaci [[QGIS]]. Navržený modul má na vstupu dvě vektorové vrstvy - bodovou a polygonovou. Na výstupu vytvoří novou vektorovou vrstvu obsahující pouze body ležící uvnitř polygonů (viz [[Programování s knihovnou OGR#Prostorové predikáty|příklad pro knihovnu OGR]]). | ||
== Minimální kód == | |||
Projekt obsahuje tři soubory: | |||
; Soubor projektu sampleplugin.pro | |||
<source lang="cpp"> | |||
# cesta k adresari se zdrojovymi texty QGISu | |||
QGIS_DIR = /home/martin/src/qgis_trunk | |||
TEMPLATE = lib | |||
CONFIG = qt | |||
QT += xml \ | |||
qt3support | |||
unix:LIBS += -L/$$QGIS_DIR/lib \ | |||
-lqgis_core \ | |||
-lqgis_gui | |||
INCLUDEPATH += $$QGIS_DIR/src/ui \ | |||
$$QGIS_DIR/src/plugins \ | |||
$$QGIS_DIR/src/gui \ | |||
$$QGIS_DIR/src/raster \ | |||
$$QGIS_DIR/src/core \ | |||
$$QGIS_DIR | |||
SOURCES = qgssampleplugin.cpp | |||
HEADERS = qgssampleplugin.h | |||
DEST = sampleplugin.so | |||
DEFINES += GUI_EXPORT= \ | |||
CORE_EXPORT= | |||
</source> | |||
; Hlavičkový soubor pluginu qgssampleplugin.h | |||
<source lang="cpp"> | |||
#ifndef QGSSAMPLEPLUGIN_H | |||
#define QGSSAMPLEPLUGIN_H | |||
#include "qgisplugin.h" | |||
/* Testovaci plugin pro QGIS - prostorove predikaty */ | |||
class QgsSamplePlugin: public QgisPlugin | |||
{ | |||
public: | |||
QgsSamplePlugin(QgisInterface *); | |||
~QgsSamplePlugin(); | |||
void initGui(); | |||
void unload(); | |||
private: | |||
QgisInterface *mIface; | |||
}; | |||
#endif // QGSSAMPLEPLUGIN_H | |||
</source> | |||
; C++ soubor qgssampleplugin.cpp | |||
<source lang="cpp"> | |||
#include "qgssampleplugin.h" | |||
#ifdef WIN32 | |||
#define QGISEXTERN extern "C" __declspec( dllexport ) | |||
#else | |||
#define QGISEXTERN extern "C" | |||
#endif | |||
QgsSamplePlugin::QgsSamplePlugin(QgisInterface* iface): mIface(iface) | |||
{ | |||
} | |||
QgsSamplePlugin::~QgsSamplePlugin() | |||
{ | |||
} | |||
// Zobrazit elementy GUI nastrojove listy a menu pluginu | |||
void QgsSamplePlugin::initGui() | |||
{ | |||
} | |||
// Odstranit alokovane GUI elementy | |||
void QgsSamplePlugin::unload() | |||
{ | |||
} | |||
// generator pluginu | |||
QGISEXTERN QgisPlugin* classFactory(QgisInterface* iface) | |||
{ | |||
return new QgsSamplePlugin(iface); | |||
} | |||
QGISEXTERN QString name() | |||
{ | |||
return "Within"; | |||
} | |||
QGISEXTERN QString description() | |||
{ | |||
return "Prostorovy predikat within"; | |||
} | |||
QGISEXTERN QString version() | |||
{ | |||
return "0.00001"; | |||
} | |||
// Typ pluginu (UI nebo MapLayer plugin) | |||
QGISEXTERN int type() | |||
{ | |||
return QgisPlugin::UI; | |||
} | |||
// Odstranit plugin | |||
QGISEXTERN void unload(QgisPlugin* theQgsSamplePluginPointer) | |||
{ | |||
delete theQgsSamplePluginPointer; | |||
} | |||
</source> | |||
{{GFOSS}} | {{GFOSS}} | ||
{{Programování}} | {{Programování}} | ||
{{C++}} | {{C++}} |
Verze z 7. 12. 2010, 16:31
Stránka obsahuje poznámky pro tvorbu vlastního zásuvného modulu pro aplikaci QGIS. Navržený modul má na vstupu dvě vektorové vrstvy - bodovou a polygonovou. Na výstupu vytvoří novou vektorovou vrstvu obsahující pouze body ležící uvnitř polygonů (viz příklad pro knihovnu OGR).
Minimální kód
Projekt obsahuje tři soubory:
- Soubor projektu sampleplugin.pro
# cesta k adresari se zdrojovymi texty QGISu
QGIS_DIR = /home/martin/src/qgis_trunk
TEMPLATE = lib
CONFIG = qt
QT += xml \
qt3support
unix:LIBS += -L/$$QGIS_DIR/lib \
-lqgis_core \
-lqgis_gui
INCLUDEPATH += $$QGIS_DIR/src/ui \
$$QGIS_DIR/src/plugins \
$$QGIS_DIR/src/gui \
$$QGIS_DIR/src/raster \
$$QGIS_DIR/src/core \
$$QGIS_DIR
SOURCES = qgssampleplugin.cpp
HEADERS = qgssampleplugin.h
DEST = sampleplugin.so
DEFINES += GUI_EXPORT= \
CORE_EXPORT=
- Hlavičkový soubor pluginu qgssampleplugin.h
#ifndef QGSSAMPLEPLUGIN_H
#define QGSSAMPLEPLUGIN_H
#include "qgisplugin.h"
/* Testovaci plugin pro QGIS - prostorove predikaty */
class QgsSamplePlugin: public QgisPlugin
{
public:
QgsSamplePlugin(QgisInterface *);
~QgsSamplePlugin();
void initGui();
void unload();
private:
QgisInterface *mIface;
};
#endif // QGSSAMPLEPLUGIN_H
- C++ soubor qgssampleplugin.cpp
#include "qgssampleplugin.h"
#ifdef WIN32
#define QGISEXTERN extern "C" __declspec( dllexport )
#else
#define QGISEXTERN extern "C"
#endif
QgsSamplePlugin::QgsSamplePlugin(QgisInterface* iface): mIface(iface)
{
}
QgsSamplePlugin::~QgsSamplePlugin()
{
}
// Zobrazit elementy GUI nastrojove listy a menu pluginu
void QgsSamplePlugin::initGui()
{
}
// Odstranit alokovane GUI elementy
void QgsSamplePlugin::unload()
{
}
// generator pluginu
QGISEXTERN QgisPlugin* classFactory(QgisInterface* iface)
{
return new QgsSamplePlugin(iface);
}
QGISEXTERN QString name()
{
return "Within";
}
QGISEXTERN QString description()
{
return "Prostorovy predikat within";
}
QGISEXTERN QString version()
{
return "0.00001";
}
// Typ pluginu (UI nebo MapLayer plugin)
QGISEXTERN int type()
{
return QgisPlugin::UI;
}
// Odstranit plugin
QGISEXTERN void unload(QgisPlugin* theQgsSamplePluginPointer)
{
delete theQgsSamplePluginPointer;
}