# `index` - Data Stores

The `index` submodule provides efficient storage containers for preprocessed OSM data.

## Node Location Storage

Node location can be cached in a `LocationTable`. There are different implementations available which should be choosen according to the size of data and whether or not the cache should be permanent. See the Osmium manual for a detailed explaination. The compiled in types can be listed with the `map_types` function, new stores can be created with `create_map`.

`osmium.index.``map_types`() → list

  Return a list of strings with valid types for the location table.

`osmium.index.``create_map`(map_type: str) → osmium.index.LocationTable

  Create a new location store. The string parameter takes the type and, where required, additional arguments separated by comma. For example, to create an array cache backed by a file `foo.store`, the map_type should be `dense_file_array,foo.store`.

class `osmium.index.``LocationTable`

  A map from a node ID to a location object. This implementation works only with positive node IDs.

  `clear`(self: osmium.index.LocationTable) → None

    Remove all entries from the location table.

  `get`(self: osmium.index.LocationTable, id: int) → osmium.osm._osm.Location

    Return the location for a given id.

  `set`(self: osmium.index.LocationTable, id: int, loc: osmium.osm._osm.Location) → None

    Set the location for a given node id.

  `used_memory`(self: osmium.index.LocationTable) → int

    Return the size (in bytes) currently allocated by this location table.