Learning Geospatial Analysis with Python
上QQ阅读APP看书,第一时间看更新

Chapter 3. The Geospatial Technology Landscape

The geospatial technology ecosystem consists of hundreds of software libraries and packages. This vast array of choices is overwhelming for newcomers to geospatial analysis. The secret to learning geospatial analysis quickly is to understand the handful of libraries and packages that really matter. Most software, both commercial and open source, is derived from these critical packages. Understanding the ecosystem of geospatial software and how it's used allows you to quickly comprehend and evaluate any geospatial tool.

The major categories for geospatial software are:

  • Data access
  • Computational geometry (including data reprojection)
  • Visualization
  • Metadata tools

These categories contain core capabilities, which are widely used by most geospatial software. Another important category is image processing; however, this category is very fragmented, containing dozens of software packages which are rarely integrated into derivative software if at all. Most image processing software for remote sensing is based on the same data access libraries with custom image processing algorithms.

These libraries are mostly written in either C or C++ for speed and cross-platform compatibility. Speed is important due to the commonly large sizes of geospatial data sets. However, you will also see many packages written in Java. Well written, pure Java can approach speeds acceptable for processing large vector or raster data sets and are usually acceptable for most applications.

The following concept map shows the major geospatial software libraries and packages and how they are related. The libraries in bold represent root libraries that are actively maintained and not significantly derived from any other libraries. These root libraries represent geospatial operations, which are sufficiently difficult to implement, that the vast majority of people choose to use one of these libraries rather than create a competing one. As you can see, a handful of libraries make up a disproportionate amount of geospatial analysis software. And the following diagram is by no means exhaustive:

The libraries GDAL, OGR, GEOS, and PROJ.4 are the heart and soul of the geospatial analysis community on both the commercial and open-source side. It is important to note these libraries are all written in C or C++. There is also significant work done in Java in the form of the GeoTools and JTS core libraries, which are used across a range of desktops, servers, and mobile software. Given there are hundreds of geospatial packages available and nearly all relying on these libraries to do anything meaningful, you begin to get an idea of the complexity of geospatial data access and computational geometry. Compare this software domain to that of text editors, which return over 5,000 options when searched on the open-source project site SourceForge.net.

Geospatial analysis is a truly worldwide community with significant contributions to the field coming from every corner of the globe. But as you learn more about the heavy-hitting packages at the center of the software landscape, you'll see that these programs tend to come from Canada or are contributed heavily by Canadian developers. Credited as the birthplace of modern GIS, geospatial analysis is a matter of national pride. Also, the Canadian government and the public-private GeoConnections program have invested heavily in research and companies both to fuel the industry for economic reasons and out of necessity, to better manage the country's vast natural resources and the needs of its population.

In this chapter we examine the packages which have had the largest impact on geospatial analysis and also those which you are likely to frequently encounter. However, as with any filtering of information, you are encouraged to do your own research and draw your own conclusions. The following websites offer more information on software not included in this chapter: