# `Meridian.Builder.H3`
[🔗](https://github.com/code-shoily/meridian/blob/v0.1.0/lib/meridian/builder/h3.ex#L1)

Builds graphs from Uber H3 hexagonal grids.

Requires the optional `:h3` dependency.

## Topologies

  * `:rook` — the 6 edge-adjacent neighbors (default)
  * `:queen` — rook + 6 vertex-adjacent neighbors (12 total)

## Examples

    iex> graph =
    ...>   Meridian.Graph.new(kind: :undirected)
    ...>   |> Meridian.Builder.H3.grid(center: {40.7484, -73.9857}, resolution: 9, k_ring: 1)
    iex> Meridian.Graph.node_count(graph)
    7

# `grid`

```elixir
@spec grid(
  Meridian.Graph.t(),
  keyword()
) :: Meridian.Graph.t()
```

Creates a graph from an H3 hexagonal grid centered on a lat/lon point.

## Options

  * `:center` — `{lat, lon}` tuple (required)
  * `:resolution` — H3 resolution, 0–15 (required)
  * `:k_ring` — number of rings outward from center, default `1`
  * `:topology` — `:rook` (default) or `:queen`
  * `:node_data_fn` — function `(h3_index :: integer) -> map` to populate node data

## Examples

    iex> graph =
    ...>   Meridian.Graph.new(kind: :undirected)
    ...>   |> Meridian.Builder.H3.grid(center: {37.7749, -122.4194}, resolution: 5, k_ring: 1)
    iex> Meridian.Graph.node_count(graph) >= 1
    true

---

*Consult [api-reference.md](api-reference.md) for complete listing*
