Design rule purpose

This design rule allows the user to specify a buffer around a constraint layer that Optioneer is supposed to avoid entering. The most common use case for this is for pipelines who carry dangerous / explosive materials - keeping minimum distance to buildings, depending on pipeline size (and material properties) is a common requirement.

How to configure

This design rule is fairly simple and uses a couple of common GIS procedures to inform routing. We show this on a short example with three possible alignments for a pipeline.

All alignments avoid buildings (in orange) but pass close to buildings in some instances. Depending on circumstances, the distance by which the option is avoiding a constraint might not be sufficient which means that proximity to constraint has to be checked against requirements. Optioneer calculates distance to given constraint type at every possible point and allows user to define the required buffer (or set of buffers) which Optioneer can take into account.

The example below shows two buffers defined by the user: a critical distance and a risky distance, where brown is an absolute no-go zone while blue requires additional mitigation strategy but poses acceptable risk.

As a result, the dotted alignment will be preferred - it avoids areas of risk (see below).

Important notes

  1. This design rule applies a single 'distance map' calculation to all features in the dataset; all features are treated the same. If you require different treatment for different types of constraints, multiple instances of this design rule can be set up.

  2. The distance calculation might be distorted due to rasterization resolution (default at circa. 30m). Values can have a high percentage error, especially for small buffers. Implementing a small buffer, like 10-20m is better done in GIS software, prior to ingesting data into Optioneer.

  3. This design rule is similar 'Design Rule: Distance-to-nearest'. Both calculate distance to the nearest feature of a given data layer in a given dataset. Key differences are:

    1. This design rule is used in generation, i.e. Optioneer will take the distances / buffers into account when generating options. The other design rule is ran after options are generated and provide useful information to the user (but not affect which options are generated by Optioneer).

    2. This design rule uses a calculation based on rasterized data - it is less accurate and calculates distance to a given set of constraints which are treated as a single layer. The other design rule uses a more precise vector calculation and provides distances to all data layers.

Input / output summary

WIP - need to expand to include multiple buffers / distances.

Input parameters

This design rule requires a dedicated dataset (usually called 'constraints_with_buffers') which contains all features which should be considered in proximity analysis.


Example value


Min. distance to buildings to trigger a constraint break



Output parameters


Example value


Constraint violation for the distance where min. distance is not kept


units of constraint violation (proportional to length)

Did this answer your question?