Preface
As software applications become more and more a part of people's lives, the concepts of location and space become more important. Developers are regularly finding themselves having to work with location-based data. Maps, geospatial data, and spatial calculations are increasingly becoming just another part of the everyday programming repertoire.
A decade ago, geospatial concepts and development was limited to experts in the Geographic Information Sciences. These people spent years working with maps and the complex mathematics that underlie them. Often coming from a university background, these specialists would spend years becoming familiar with a particular Geographic Information System (GIS), and would make a career of using that system to draw maps and process geospatial data.
While the ever-popular Google Maps meant that anyone can view and manipulate a map, the more advanced custom display and processing of geospatial data was still limited to those who used a professional GIS system. All this changed with the advent of freely available (and often open source) tools for manipulating and displaying geospatial data. Now, anybody can learn the necessary concepts and start building their own mapping applications from scratch. Rather than being limited to the minimal capabilities and restrictive licensing terms of Google Maps, developers can now build their own mapping systems to meet their own requirements, and there are no limits to what can be done.
While the necessary tools and libraries are freely available, the developer still needs to put them together into a workable system. Often, this is a rather complex process and requires a lot of understanding of geospatial concepts, as well as how to compile the necessary wrappers and configure the tools to work on a particular computer.
Fortunately, now there is an even easier way to include geospatial programming tools and techniques within your Python applications. Thanks to the development of the freely available QGIS system, it is now easy to install a complete geospatial development environment, which you can use directly from within your Python code. Whether you choose to build your application as a plugin for the QGIS system, or write a standalone mapping application using QGIS as an external library, you have complete flexibility in how you use geospatial capabilities within your code.