[API](/solutions/geotoolkit/geotoolkit_js/apis/readme) / [geotoolkit3d](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d) / [gigagrid](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.gigagrid) / [data](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.gigagrid#data) / [HttpDataSource](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.gigagrid#httpdatasource) / HttpDataSource

# Class: HttpDataSource

[data](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.gigagrid#data).[HttpDataSource](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.gigagrid#httpdatasource).HttpDataSource

Base HTTP client data source for GigaGrid remote data access.<br>

Frontend usage starts with [HttpDataSource](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.httpdatasource.httpdatasource) to load
[GigaGridResult](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.gigagridresult.gigagridresult).
After a [ReservoirGrid](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.reservoirgrid.reservoirgrid) instance is created,
internally fetch node, cell, and property data from the same server endpoints.

Users can implement their own GigaGrid backend by following the API routes below.

Routing table:

- QueryMode.resQuery (/reservoirquery)
Returns overall GigaGrid metadata as a JSON object (`GigaGridResult`).
Request params: `HttpDataSource.ResQueryParam`
Response: GigaGridResult as JSON object
- QueryMode.nodeQuery (/reservoirnodequery)
Returns octree node information for a specific level, with enough data
for the client to construct `GridNode` objects.
Request params: `HttpDataSource.NodeQueryParam`
Response: JSON object
- QueryMode.cellQuery (/reservoircellquery)
Returns cell geometry for a node, including vertex positions and cell IJK indices.
Request params: `HttpDataSource.CellQueryParam`
Response: binary (ArrayBuffer) Content-Type: application/octet-stream
- Response header: `Cell-Binary-Format: cell-data-v1` (must be exposed via CORS)
- dtype: Float32
- stride: 27 (8 vertices × 3 floats = 24 + 3 IJK indices)
v0.x, v0.y, v0.z, v1.x, v1.y, v1.z,..., v7.x, v7.y, v7.z, i, j, k)
- Byte length: cellCount * sizeof(dtype) * stride = cellCount * 4 * 27
- QueryMode.propQuery (/reservoirpropquery)
Returns property values for all cells within a node.
Request params: `HttpDataSource.PropQueryParam`
Response: binary (ArrayBuffer) Content-Type: application/octet-stream
- Response header: `Property-Binary-Format: multi-property-v1` (must be exposed via CORS)
- Layout: see `PropertyBinaryPayloadFormat.MultiPropertyV1` in HttpDataSource


See the Carnac3D/ReservoirGrid/GigaGridWithBackend/gigaGridWithBackend tutorial documentation for a complete description of request
formats, response layouts, and implementation details.

## Hierarchy

- [`AbstractDataSource`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource)
↳ **`HttpDataSource`**


## Table of contents

Constructors
- [new HttpDataSource(options)](/solutions/geotoolkit/GeoToolkit_JS/apis/classes/geotoolkit3d.gigagrid.data-9.httpdatasource.httpdatasource.md#new httpdatasource(options))


Methods
| [abortGrid](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.httpdatasource.httpdatasource#abortgrid) | [abortPendingRequests](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.httpdatasource.httpdatasource#abortpendingrequests) | [dispose](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.httpdatasource.httpdatasource#dispose) |
|  --- | --- | --- |
| [getCells](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.httpdatasource.httpdatasource#getcells) | [getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.httpdatasource.httpdatasource#getclassname) | [getNodes](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.httpdatasource.httpdatasource#getnodes) |
| [getValues](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.httpdatasource.httpdatasource#getvalues) | [load](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.httpdatasource.httpdatasource#load) | [getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.httpdatasource.httpdatasource#getclassname-1) |


## Contents

Constructors
#### new HttpDataSource(options)

• **new HttpDataSource**(`options`)

Creates an HTTP-backed GigaGrid data source.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `options` | [`Options`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.gigagrid#httpdatasource#options) | connection, timeout, and reservoir file options |


#### Overrides

AbstractDataSource.constructor

Methods
#### abortGrid

▸ **abortGrid**(`level`, `idNode`): `void`

Cancels in-flight cell and property queries for a specific node.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `level` | `number` | octree level of the node |
| `idNode` | `number` | node identifier within the level |


#### Returns

`void`

#### Overrides

[AbstractDataSource](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource).[abortGrid](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource#abortgrid)

#### abortPendingRequests

▸ **abortPendingRequests**(): `void`

Cancels all in-flight cell and property query requests.

#### Returns

`void`

#### Overrides

[AbstractDataSource](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource).[abortPendingRequests](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource#abortpendingrequests)

#### dispose

▸ **dispose**(): `void`

Disposes of the data source.

#### Returns

`void`

#### Inherited from

[AbstractDataSource](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource).[dispose](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource#dispose)

#### getCells

▸ **getCells**(`level`, `idNode`, `filters?`): `Promise`<[`CellsGeometry`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.gigagrid#abstractdatasource#cellsgeometry)&gt;

Load cell geometry for a node at the given level.
Issues a binary [QueryMode.cellQuery](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.gigagrid#data-9#httpdatasource#querymode#cellquery) request and decodes the `cell-data-v1` payload.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `level` | `number` | octree level of the node |
| `idNode` | `number` | node identifier within the level |
| `Optional` `filters` | [`BooleanFilter`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.filter.booleanfilter.booleanfilter) | optional server-side filters |


#### Returns

`Promise`<[`CellsGeometry`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.gigagrid#abstractdatasource#cellsgeometry)&gt;

promise resolved with decoded vertex positions, IJK indices, and bounding box

#### Overrides

[AbstractDataSource](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource).[getCells](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource#getcells)

#### getClassName

▸ **getClassName**(): `string`

#### Returns

`string`

#### Overrides

[AbstractDataSource](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource).[getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource#getclassname)

#### getNodes

▸ **getNodes**(`level`): `Promise`<[`GridNode`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.gigagrid#abstractdatasource#gridnode)[]&gt;

Load AbstractDataSource.GridNode data at a specific octree level.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `level` | `number` | level of the nodes to query |


#### Returns

`Promise`<[`GridNode`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.gigagrid#abstractdatasource#gridnode)[]&gt;

promise resolved with grid nodes for the level

#### Overrides

[AbstractDataSource](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource).[getNodes](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource#getnodes)

#### getValues

▸ **getValues**(`level`, `idNode`, `propertyUid`, `additionalDataUids?`, `filters?`): `Promise`<[`CellsProperties`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.gigagrid#abstractdatasource#cellsproperties)&gt;

Load property values for all cells in a node.
Issues a binary [QueryMode.propQuery](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.gigagrid#data-9#httpdatasource#querymode#propquery) request and decodes the `multi-property-v1` payload.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `level` | `number` | octree level of the node |
| `idNode` | `number` | node identifier within the level |
| `propertyUid` | `string` | uid of the primary property to query |
| `Optional` `additionalDataUids` | `string`[] | optional uids of additional properties to include in the same request |
| `Optional` `filters` | [`BooleanFilter`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.filter.booleanfilter.booleanfilter) | optional server-side filters |


#### Returns

`Promise`<[`CellsProperties`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.gigagrid#abstractdatasource#cellsproperties)&gt;

promise resolved with primary and additional property value arrays

#### Overrides

[AbstractDataSource](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource).[getValues](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource#getvalues)

#### load

▸ **load**(): `Promise`<[`GigaGridResult`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.gigagridresult.gigagridresult)&gt;

Load [GigaGridResult](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.gigagridresult.gigagridresult) from the server.
Grid metadata from this call is required to create [ReservoirGrid](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.reservoirgrid.reservoirgrid).

#### Returns

`Promise`<[`GigaGridResult`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.gigagridresult.gigagridresult)&gt;

promise resolved with parsed grid metadata

#### Overrides

[AbstractDataSource](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource).[load](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource#load)

#### getClassName

▸ `Static` **getClassName**(): `string`

#### Returns

`string`

#### Overrides

[AbstractDataSource](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource).[getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.gigagrid.data-9.abstractdatasource.abstractdatasource#getclassname-1)