xmsinterp  1.0
xmsinterp

xmsinterp

Introduction

xmsinterp is a spatial interpolation library used in xms libraries and products.

Aquaveo_Logo.png

License

The code is distributed under the FreeBSD Software License. (See accompanying file LICENSE or copy at http://www.aquaveo.com/bsd/LICENSE.txt).

Python

This library is available as a python module. See Python Documentation

Features

The library supports both 2D (x,y) and 3D (x,y,z) interpolation. Supported 2d interpolation methods include: linear, natural neighbor, clough tocher, and inverse distance weighted (IDW). IDW also supports 3D interpolation. IDW and natural neighbor support modeling data trends using gradient plane and quadratic nodal functions. See the following tutorial for example code.

Testing

The code has numerous unit tests which use the CxxTest framework. A good way to see how to use the code is to look at the unit tests. Unit tests are located at the bottom of .cpp files within a "#if CXX_TEST" code block. Header files that are named with ".t.h" contain the test suite class definitions.

The Code

Namespaces

  • "xms" - Most code is in this namespace. The use of other namespaces is kept to a minimum. Two-letter prefixes are used as "pseudo-namespaces" in code modules. Preprocessor macros typically start with "XM_" to prevent name collisions.
  • "xmt" - Testing code will be put into this namespace once CXX_TEST is upgraded such that it will find the testing code in this namespace.

Interface pattern

Many classes follow the interface pattern. An abstract base class is used to define the interface and a concrete implementation class is used to implement the functionality. The implementation class will be named the same as the interface class but will end in "Impl" and will only be found in the .cpp file. For example: xms::InterpIdw and xms::InterpIdwImpl. The Doxygen documentation will be for the Impl class.

More about the interface pattern can be found at the following resources:

  • The C++ Programming Language, Stroustroup, p 318 - 322
  • Effective C++ Third Edition, Meyers, items 31 and 40
  • More Effective C++, Meyers, item 33
  • Large-Scale C++ Software Design, Lakos, 6.4.1

"xmsinterp" Name

The name "xmsinterp" comes from the "XMS" (GMS, SMS, WMS) water modeling software created by Aquaveo.