[GIS] How to draw lines, dashed lines, routes and add images to the QGIS mapcanvas

apiqgis

I need to draw a rectangle in a map canvas and inside it draw routed dashed lines and add small images to it. These actions are to be performed using the QGIS API.

Is there any place with examples that I can start with? All that I need is a direction of implementing this.

Best Answer

Marco, there are not a lot of example resources for using the QGIS API, per se. You can find some snippets at plugins.qgis.org and in the PyQGIS Cookbook, and online tutorials like QGIS Workshop v1.0.0.

However, your best resource for examples are in existing, working plugins. Load up a bunch of plugins that seem to do what your wanting and do multi-file searches for QGIS API calls.

For example, searching the core plugins and user-installed plugins directories for QgsFeature, depending on your installed plugins, will bring up lots of examples of how to add/edit/manipulate features. Specifically look to fTools for good examples on working with vector features. (Best to learn from the masters than re-invent the wheel here.)

Concerning the pictures you want to add: are they just photos with EXIF data or they georeferenced rasters? With georef'd rasters, you can use the API to add it to the map canvas in QGIS (see this snippet). For getting a shape file of points for your EXIF-with-GPS data photos, look to the photo2shape plugin.

If your photos are just to be placed on print output, you will want to manipulate the Print Composer. Look to plugins that already do similar things with Composer for examples, like Atlas or EasyPrint. You'll want to work with addComposerPicture() in the QgsComposition class.