Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Heatmap Plugin #93

Closed
wants to merge 8 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions resources/context_help/HeatmapGui-en_US
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<h1>Heatmap Plugin Help</h1>
<p>Heatmap Plugin creates a heatmap raster for the input point vector layer. The heatmap is generated based on the number of points in a given location. The higher the number of points, the higher will be the corresponding pixel(s) value in the raster.</p>

<h2>The Dialog Parameters</h2>

<h3>Input Point Vector</h3>
<p>The input is always a vector layer of point type. All the point vector layers that are currently loaded in the window are automatically populated in the input layer drop-down list. Click the Dropdown button and select the required layer.</p>

<h3>Output Ratser</h3>
<p>The output raster location and filename can be set by clicking the <label>...</label> button next to the output raster textbox.<br/>
<b>Note:</b>The file format is automatically added depending upon the output format selected, if not explicitly given.</p>

<h3>Output Format</h3>
<p>All the file creation supporting GDAL formats are available in the drop down list. Click and select the required output format for your file.<br/>
<b>Note:</b> GeoTiff and ERDAS Imagine .img formats are recommended. Some formats makes the application crash. Kindly stick to the recommended formats until the crash issue is resolved or Use other formats if you know about its GDAL support completely.</p>

<h3>Heatmap Point Attributes</h3>
<h4>Buffer Radius</h4>
<p>The buffer radius specifies the number of <b>pixels or cells</b> around a point where the heat(influence) of the point will be felt. Smaller values give you clear distinction between points and bigger values gives you nicely merged heatmap regions. This is the spatial parameter of the heat region of a point.<br/>
<b>Note:</b> The value is always a whole number.</p>
<h4>Decay Ratio</h4>
<p>The decay ratio defines amount of heat(influence) that should reach the outermost pixel in the Buffer Radius. It is the direct measure of the outer most value.<br/>
<b>Example:</b> If Buffer Ratio is set as 0 and Radius as 10, then the centre pixel of a point will have value and the pixel away by a distance of 10 units will have the value 0, a pixel which is 5 units away will have a value of 0.5 and so on. Here distance is measure not by pixel count rather using sqrt( xOffset^2 + yOffset^2 ), so you always get a circular heat region.</p>

<h2>Further Details</h2>
<p>Contact the author through aruntheguy at gmail dot com</p>

2 changes: 2 additions & 0 deletions src/plugins/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,5 @@ IF (WITH_GLOBE)
ENDIF (WITH_GLOBE)

# headers installed in qgis_core target

SUBDIRS (heatmap)
53 changes: 53 additions & 0 deletions src/plugins/heatmap/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@

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

SET (heatmap_SRCS
heatmap.cpp
heatmapgui.cpp
)

SET (heatmap_UIS heatmapguibase.ui)

SET (heatmap_MOC_HDRS
heatmap.h
heatmapgui.h
)

SET (heatmap_RCCS heatmap.qrc)

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

QT4_WRAP_UI (heatmap_UIS_H ${heatmap_UIS})

QT4_WRAP_CPP (heatmap_MOC_SRCS ${heatmap_MOC_HDRS})

QT4_ADD_RESOURCES(heatmap_RCC_SRCS ${heatmap_RCCS})

ADD_LIBRARY (heatmapplugin MODULE ${heatmap_SRCS} ${heatmap_MOC_SRCS} ${heatmap_RCC_SRCS} ${heatmap_UIS_H})

INCLUDE_DIRECTORIES(
${CMAKE_CURRENT_BINARY_DIR}
${GEOS_INCLUDE_DIR}
${GDAL_INCLUDE_DIR}
../../core
../../core/raster
../../gui
../../analysis/raster
..
)

TARGET_LINK_LIBRARIES(heatmapplugin
qgis_core
qgis_gui
)


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

INSTALL(TARGETS heatmapplugin
RUNTIME DESTINATION ${QGIS_PLUGIN_DIR}
LIBRARY DESTINATION ${QGIS_PLUGIN_DIR})

97 changes: 97 additions & 0 deletions src/plugins/heatmap/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
Welcome to your automatically generated plugin!
-------------------------------------------------------------

This is just a starting point. You now need to modify the code to make it do
something useful....read on for a more information to get yourself started.

Documentation:
-------------------------------------------------------------

You really need to read the QGIS API Documentation now at:

http://qgis.org/api/

In particular look at the following classes:

QGisInterface : http://qgis.org/api/classQgisInterface.html
QgsMapCanvas : http://qgis.org/api/classQgsMapCanvas.html
QgsMapTool : http://qgis.org/api/classQgsMapTool.html
QgisPlugin : http://qgis.org/api/classQgisPlugin.html

QGisInterface is an abstract base class (ABC) that specifies what publicly
available features of QGIS are exposed to third party code and plugins. An
instance of the QgisInterface is passed to the plugin when it loads. Please
consult the QGIS development team if there is functionality required in the
QGisInterface that is not available.

QgsPlugin is an ABC that defines required behaviour your plugin must provide.
See below for more details.

What are all the files in my generated plugin directory for?
-------------------------------------------------------------

CMakeLists.txt
This is the generated CMake file that builds the plugin. You should add you
application specific dependencies and source files to this file.

heatmap.h
heatmap.cpp
This is the class that provides the 'glue' between your custom application
logic and the QGIS application. You will see that a number of methods are
already implemented for you - including some examples of how to add a raster or
vector layer to the main application map canvas. This class is a concrete
implementation of QgisPlugin (which defines required behaviour for a plugin).
In particular, a plugin has a number of static methods and members so that the
QgsPluginManager and plugin loader logic can identify each plugin, create an
appropriate menu entry for it etc. Note there is nothing stopping you creating
multiple toolbar icons and menu entries for a single plugin. By default though
a single menu entry and toolbar button is created and its pre-configured to
call the run() method in this class when selected. This default implementation
provided for you by the plugin builder is well documented, so please refer to
the code for further advice.

heatmapgui.ui
This is a Qt designer 'ui' file. It defines the look of the default plugin
dialog without implementing any application logic. You can modify this form to
suite your needs or completely remove it if your plugin does not need to
display a user form (e.g. for custom MapTools).


heatmapgui.cpp
heatmapgui.h
This is the concrete class where application logic for the above mentioned
dialog should go. The world is your oyster here really....

heatmap.qrc
This is the Qt4 resources file for your plugin. The Makefile generated for your
plugin is all set up to compile the resource file so all you need to do is add
your additional icons etc using the simple xml file format. Note the namespace
used for all your resources e.g. (":/Heatmap/"). It is important to use
this prefix for all your resources. We suggest you include any other images and
run time data in this resurce file too.

heatmap.png
This is the icon that will be used for your plugin menu entry and toolbar icon.
Simply replace this icon with your own icon to make your plugin disctinctive
from the rest.

README
This file contains the documentation you are reading now!


Getting developer help:
-------------------------------------------------------------

For Questions and Comments regarding the plugin builder template and creating
your features in QGIS using the plugin interface please contact us via:

* the QGIS developers mailing list, or
* IRC (#qgis on freenode.net)

QGIS is distributed under the Gnu Public License. If you create a useful plugin
please consider contributing it back to the community.

Have fun and thank you for choosing QGIS.

The QGIS Team
2007
Loading