# Class MortonCode

Encodes points as the index along the planar Morton (Z-order) curve.

The planar Morton (Z-order) curve is a continuous space-filling curve. The Morton curve defines an ordering of the points in the positive quadrant of the plane. The index of a point along the Morton curve is called the Morton code.

A sequence of subsets of the Morton curve can be defined by a level number. Each level subset occupies a square range. The curve at level n Mₙ contains 2ⁿ⁺¹ points. It fills the range square of side 2ˡᵉᵛᵉˡ. Curve points have ordinates in the range [0, 2ˡᵉᵛᵉˡ - 1]. The code for a given point is identical at all levels. The level simply determines the number of points in the curve subset and the size of the range square.

This implementation represents codes using 32-bit integers. This allows levels 0 to 16 to be handled. The class supports encoding points and decoding the point for a given code value.

The Morton order has the property that it tends to preserve locality. This means that codes which are near in value will have spatially proximate points. The converse is not always true - the delta between codes for nearby points is not always small. But the average delta is small enough that the Morton order is an effective way of linearizing space to support range queries.

##### Inherited Members

**Namespace**: NetTopologySuite.Shape.Fractal

**Assembly**: NetTopologySuite.dll

##### Syntax

`public static class MortonCode`

### Fields

| Improve this Doc View Source#### MaxLevel

The maximum curve level that can be represented.

##### Declaration

`public static readonly int MaxLevel`

##### Field Value

Type | Description |
---|---|

Int32 |

### Methods

| Improve this Doc View Source#### Decode(Int32)

Computes the point on the Morton curve for a given index.

##### Declaration

`public static Coordinate Decode(int index)`

##### Parameters

Type | Name | Description |
---|---|---|

Int32 | index | The index of the point on the curve. |

##### Returns

Type | Description |
---|---|

Coordinate | The point on the curve. |

#### Encode(Int32, Int32)

Computes the index of the point (x,y) in the Morton curve ordering.

##### Declaration

`public static int Encode(int x, int y)`

##### Parameters

Type | Name | Description |
---|---|---|

Int32 | x | The x ordinate of the point. |

Int32 | y | The y ordinate of the point. |

##### Returns

Type | Description |
---|---|

Int32 | The index of the point along the Morton curve. |

#### Level(Int32)

The level of the finite Morton curve which contains at least the given number of points.

##### Declaration

`public static int Level(int numPoints)`

##### Parameters

Type | Name | Description |
---|---|---|

Int32 | numPoints | The number of points required. |

##### Returns

Type | Description |
---|---|

Int32 | The level of the curve. |

#### MaxOrdinate(Int32)

The maximum ordinate value for points in the curve for the given level. The maximum ordinate is 2ˡᵉᵛᵉˡ - 1.

##### Declaration

`public static int MaxOrdinate(int level)`

##### Parameters

Type | Name | Description |
---|---|---|

Int32 | level | The level of the curve. |

##### Returns

Type | Description |
---|---|

Int32 | The maximum ordinate value. |

#### Size(Int32)

The number of points in the curve for the given level. The number of points is 2²ˡᵉᵛᵉˡ.

##### Declaration

`public static int Size(int level)`

##### Parameters

Type | Name | Description |
---|---|---|

Int32 | level | The level of the curve |

##### Returns

Type | Description |
---|---|

Int32 | The number of points. |