---
name: "Geo::GDAL::FFI::Dataset"
section: "3pm"
platform: "linux"
package: "libgeo-gdal-ffi-perl"
version: "0.12-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Geo::GDAL::FFI::Dataset"
---

# Geo::GDAL::FFI::Dataset(3pm)

A GDAL dataset

## NAME

Geo::GDAL::FFI::Dataset - A GDAL dataset

## SYNOPSIS

## DESCRIPTION

A collection of raster bands or vector layers. Obtain a dataset object by opening it with the Open method of Geo::GDAL::FFI object or by creating it with the Create method of a Driver object.

## METHODS

### GetDriver

```
 my $driver = $dataset->GetDriver;
```

### GetWidth

```
 my $w = $dataset->GetWidth;
```

### GetHeight

```
 my $h = $dataset->GetHeight;
```

### GetSize

```
 my @size = $dataset->GetSize;
```

Returns the size (width, height) of the bands of this raster dataset.

### GetBand

```
 my $band = $dataset->GetBand($i);
```

Get the ith (by default the first) band of a raster dataset.

### GetBands

```
 my @bands = $dataset->GetBands;
```

Returns a list of Band objects representing the bands of this raster dataset.

### CreateLayer

```
 my $layer = $dataset->CreateLayer({Name => 'layer', ...});
```

Create a new vector layer into this vector dataset.

Named arguments are the following.

- "Name"

  Optional, string, default is ''.

- "GeometryType"

  Optional, default is 'Unknown', the type of the first geometry field; note: if type is 'None', the layer schema does not initially contain any geometry fields.

- "SpatialReference"

  Optional, a SpatialReference object, the spatial reference for the first geometry field.

- "Options"

  Optional, driver specific options in an anonymous hash.

- "Fields"

  Optional, a reference to an array of Field objects or schemas, the fields to create into the layer.

- "GeometryFields"

  Optional, a reference to an array of GeometryField objects or schemas, the geometry fields to create into the layer; note that if this argument is defined then the arguments GeometryType and SpatialReference are ignored.

### GetLayerCount my $count = $dataset-\>GetLayerCount();

### GetLayer

```
 my $layer = $dataset->GetLayer($name);
```

If `$name` is strictly an integer, then returns the (name-1)th layer in the dataset, otherwise returns the layer whose name is `$name`. Without arguments returns the first layer.

### CopyLayer

```
 my $copy = $dataset->CopyLayer($layer, $name, {DST_SRSWKT => 'WKT of a SRS', ...});
```

Copies the given layer into this dataset using the name `$name` and returns the new layer. The options hash is mostly driver specific.

### ExecuteSQL $dataset-\>ExecuteSQL ($sql, $filter, $dialect);

```
 #  build a spatial index
 $dataset->ExecuteSQL (qq{CREATE SPATIAL INDEX ON "$some_layer_name"});

 #  filter a data set using the SQLite dialect and a second geometry
 my $filtered = $dataset->ExecuteSQL (
   qq{SELECT "$fld1", "$fld2" FROM "$some_layer_name"},
   $some_geometry,
   'SQLite',
 );
```

### Info

```
 my $info = $dataset->Info($options);
 my $info = $dataset->Info(['-json', '-stats']);
```

This is the same as gdalinfo utility. `$options` is a reference to an array.  Valid options are as per the gdalinfo \<https://www.gdal.org/gdalinfo.html\> utility.

### Translate

```
 my $target = $source->Translate($path, $options, $progress, $progress_data);
```

Convert a raster dataset into another raster dataset. This is the same as the gdal\_translate \<https://www.gdal.org/gdal\_translate.html\> utility. `$name` is the name of the target dataset. `$options` is a reference to an array of switches.

### Warp

```
 my $result = $dataset->Warp($args);
```

`$args` is a hashref, keys may be Destination, Input, Options, Progress, ProgressData.

Valid options are as per the gdalwarp \<https://www.gdal.org/gdalwarp.html\> utility.

### VectorTranslate

```
 my $result = $dataset->VectorTranslate($args);
```

`$args` is a hashref, keys may be Destination, Input, Options, Progress, ProgressData.

Valid options are as per the ogr2ogr \<https://www.gdal.org/ogr2ogr.html\> utility.

### DEMProcessing

```
 my $result = $dataset->DEMProcessing($path, $args);
```

`$args` is a hashref, keys may be Processing, ColorFilename, Options, Progress, ProgressData.

See also gdaldem \<https://www.gdal.org/gdaldem.html\>.

### NearBlack

```
 my $result = $dataset->NearBlack($args);
```

`$args` is a hashref, keys may be Destination, Options, Progress, ProgressData.

Valid options are as per the nearblack \<https://www.gdal.org/nearblack.html\> utility.

### Grid

```
 my $result = $dataset->Grid($path, $options, $progress, $progress_data);
```

Valid options are as per the gdal\_grid \<https://www.gdal.org/gdal\_grid.html\> utility.

### Rasterize

```
 my $result = $dataset->Rasterize($args);
 my $result = $dataset->Rasterize({Options => [-b => 1, -at]});
```

`$args` is a hashref, keys may be Destination, Options, Progress, ProgressData.

Valid options are as per the gdal\_rasterize \<https://www.gdal.org/gdal\_rasterize.html\> utility.

### BuildVRT

```
 my $result = $dataset->BuildVRT($path, $args);
```

`$args` is a hashref, keys may be Input, Options, Progress, ProgressData.

## LICENSE

This software is released under the Artistic License. See perlartistic.

## AUTHOR

Ari Jolma - Ari.Jolma at gmail.com

## SEE ALSO

Geo::GDAL::FFI

Alien::gdal, FFI::Platypus, \<http://www.gdal.org\>
