#### NOTE
This is a **Hugging Face dataset**. For large datasets, ensure `huggingface_hub>=1.1.3` to avoid rate limits. Learn more in the <a href="https://docs.voxel51.com/integrations/huggingface.html#loading-datasets-from-the-hub" target="_blank">Hugging Face integration docs</a>.

<a href="https://huggingface.co/datasets/Voxel51/VineLiDAR" target="_blank">![Hugging Face](https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Dataset-yellow)</a>

# Dataset Card for VineLiDAR

![image/png](https://huggingface.co/datasets/Voxel51/VineLiDAR/resolve/main/vinelidar.gif)

This is a FiftyOne dataset with 10 samples.

## Installation

If you haven’t already, install FiftyOne:

```bash
pip install -U fiftyone
```

## Usage

```python
import fiftyone as fo
from huggingface_hub import snapshot_download

# Download the dataset snapshot to the current working directory
snapshot_download(
    repo_id="Voxel51/VineLiDAR",
    local_dir=".",
    repo_type="dataset",
)

# Load dataset from current directory using FiftyOne's native format
dataset = fo.Dataset.from_dir(
    dataset_dir=".",  # Current directory contains the dataset files
    dataset_type=fo.types.FiftyOneDataset,  # Specify FiftyOne dataset format
    name="VineLiDAR",  # Assign a name to the dataset for identification
)

# Launch the App
session = fo.launch_app(dataset)
```

## Dataset Details

### Dataset Description

VineLiDAR is a collection of ten high-density, RGB-colored 3D LiDAR point clouds acquired by UAV over two commercial vineyard blocks (Vitis vinifera cv. Loureiro, blocks B7 and B9) in Tomiño, Pontevedra, Galicia, Spain. Flights were flown at 20, 30, and 50 meters above ground level (AGL) over two years (2021-2022), across three data-capture phases timed to the vines’ vegetative growth and harvest stages (September 16, 2021; July 14, 2022; September 8, 2022), using a DJI M300 multi-rotor platform equipped with a DJI Zenmuse L1 LiDAR sensor. The data provides a spatiotemporal record of vineyard canopy and terrain structure, intended as a public benchmark for Precision Agriculture / Precision Viticulture research on woody crops, a domain where public UAV LiDAR datasets are otherwise scarce.

- **Curated by:** Sergio Vélez, Mar Ariza-Sentís, João Valente (Information Technology Group, Wageningen University & Research)
- **Funded by:** European Commission, H2020 program, FLEXIGROBOTS project (contract number 101017111)
- **Shared by:** Sergio Vélez, Mar Ariza-Sentís, João Valente, via Zenodo
- **Language(s):** en (documentation/metadata); the data itself is geometric/spectral LiDAR point clouds, not text
- **License:** CC BY 4.0

### Dataset Sources

- **Repository:** [Zenodo record 8113105](https://doi.org/10.5281/zenodo.8113105)
- **Paper:** Vélez, S., Ariza-Sentís, M., & Valente, J. (2023). VineLiDAR: High-resolution UAV-LiDAR vineyard dataset acquired over two years in northern Spain. *Data in Brief*, 109686. https://doi.org/10.1016/j.dib.2023.109686

## Uses

### Direct Use

- 3D reconstruction and analysis of vineyard canopy and terrain morphology across altitudes and growth stages.
- Generating high-precision digital elevation models (DEMs), digital surface/terrain models (DSM/DTM), and canopy height models (CHM) from raw point clouds.
- Serving as “ground truth” to validate satellite-derived vineyard models (e.g., Sentinel-2 time series) or to build digital twins.
- Providing detailed terrain/canopy geometry for developing and testing UAV/UGV flight paths and navigation algorithms in agricultural robotics.
- Studying vineyard development over time by comparing point clouds from the three capture phases (2021 vs. 2022).

### Out-of-Scope Use

- The dataset contains no object detections, semantic/instance segmentation, or other annotations (e.g., individual vine, trunk, or grape-bunch labels), so it is not directly usable for supervised detection/segmentation training without additional labeling.
- Not intended for real-time onboard navigation without further downstream processing (the released point clouds are post-flight, RTK-corrected products, not live sensor streams).
- RGB values were captured during afternoon flights and may show over-exposure or shadowing effects from sunlight; not suitable as a source of calibrated radiometric/reflectance measurements.

## Dataset Structure

This is a flat (non-grouped) FiftyOne point-cloud dataset: `media_type="point-cloud"`, 10 samples, one sample per UAV flight. There are no label fields (no detections, segmentations, or classifications) — each sample is a raw, unlabeled geometric point cloud enriched with flight/acquisition metadata.

**Media.** Each sample’s `filepath` points to a voxel-downsampled `.pcd` file (~5M points, `pcd_view/<name>.pcd`) rather than the original full-resolution point cloud, so that flights load quickly and remain responsive in the FiftyOne App’s interactive 3D viewer. Voxel size was chosen per-flight (`voxel_size_m`) so that downsampling targets roughly 5,000,000 points regardless of the flight’s footprint or original density; `num_points_view` records the actual point count after downsampling, and `num_points_full` records the original point count in the source `.laz` file for reference. The original full-resolution `.pcd` files (up to ~1.1 GB, tens of millions of points each) and the source `.laz` files are kept alongside the parsed dataset but are not referenced by any sample field.

**Coordinate handling.** The source `.laz` files use a mix of coordinate systems: the two 2021 flights (`epsg_code` is `null`) are stored in a local/relative frame, while the eight 2022 flights are in absolute UTM coordinates (EPSG:32629). To keep point coordinates small and float32-safe for 3D rendering while remaining internally consistent per flight, every point cloud was re-centered on its own bounding-box minimum before being written to `.pcd`. That per-flight offset (the original bounding-box minimum, in the source CRS) is preserved in the `offset_x`/`offset_y`/`offset_z` fields so the point cloud can be mapped back to its original coordinate system if needed. `bounds_min_*`/`bounds_max_*` record the pre-centering bounding box (i.e. `bounds_min_* == offset_*` by construction), and `extent_x`/`extent_y`/`extent_z` are the derived footprint/height dimensions of each flight’s point cloud. Bounding-box and offset coordinates are stored as flat per-axis scalar fields rather than list fields, consistent with FiftyOne 3D best practices for geometric attributes.

**Tags.** Each sample is tagged with its capture `phase` (`First`, `Second`, `Third`) and its `vineyard_block` (`B7`, `B9`) for quick filtering in the App sidebar, in addition to being stored as regular fields.

**Field descriptions.** Every custom field listed below also carries a FiftyOne `description` attribute (set via `field.description = "..."; field.save()`), so the meaning of each field — especially the geometry-related `bounds_`/`offset_`/`extent_` fields — is visible directly as a tooltip in the App’s field/sidebar UI, not just in this card.

| Field                                            | FiftyOne type   | Description                                                                                                                |
|--------------------------------------------------|-----------------|----------------------------------------------------------------------------------------------------------------------------|
| `filepath`                                       | `StringField`   | Path to the downsampled `.pcd` point cloud used for viewing (`pcd_view/<name>.pcd`)                                        |
| `tags`                                           | `ListField`     | `[phase, vineyard_block]`, e.g. `["Second", "B7"]`                                                                         |
| `filename`                                       | `StringField`   | Original source `.laz` filename (verbatim from Zenodo), encodes date/sensor/altitude/speed/block                           |
| `flight_id`                                      | `IntField`      | Flight identifier 1–10, matching Table 1 of the source paper                                                               |
| `phase`                                          | `StringField`   | Capture campaign: `First` (Sep 2021), `Second` (Jul 2022), or `Third` (Sep 2022)                                           |
| `capture_date`                                   | `StringField`   | Flight date (`YYYY-MM-DD`)                                                                                                 |
| `capture_time_utc`                               | `StringField`   | Flight time (UTC, from Table 1 of the source paper)                                                                        |
| `vineyard_block`                                 | `StringField`   | Vineyard block flown: `B7` or `B9` (Vitis vinifera cv. Loureiro)                                                           |
| `vineyard_ref_x` / `vineyard_ref_y`              | `FloatField`    | Reference UTM coordinates (EPSG:32629, WGS 84 / UTM zone 29N) of the vineyard block, from the source paper                 |
| `altitude_agl_m`                                 | `IntField`      | Flight altitude above ground level, in meters (20, 30, or 50)                                                              |
| `flight_speed`                                   | `StringField`   | Programmed flight speed, verbatim from filename (e.g. `4MS` = 4 m/s)                                                       |
| `point_format_id`                                | `IntField`      | LAS point data record format ID of the source `.laz` file (3 or 7)                                                         |
| `epsg_code`                                      | `StringField`   | CRS parsed from the source `.laz` header, or `null` if the file used a local/relative frame (both 2021 flights)            |
| `num_points_full`                                | `IntField`      | Number of points in the original full-resolution point cloud                                                               |
| `num_points_view`                                | `IntField`      | Number of points in the downsampled `pcd_view` file referenced by `filepath`                                               |
| `voxel_size_m`                                   | `FloatField`    | Voxel edge length (meters) used to downsample this flight to `num_points_view`                                             |
| `file_size_mb`                                   | `FloatField`    | Size of the original source `.laz` file, in MB                                                                             |
| `bounds_min_x` / `bounds_min_y` / `bounds_min_z` | `FloatField`    | Minimum XYZ bounding-box coordinate of the point cloud, in the source CRS (pre-centering)                                  |
| `bounds_max_x` / `bounds_max_y` / `bounds_max_z` | `FloatField`    | Maximum XYZ bounding-box coordinate of the point cloud, in the source CRS (pre-centering)                                  |
| `offset_x` / `offset_y` / `offset_z`             | `FloatField`    | Offset subtracted from every point so the stored `.pcd` coordinates are centered near the origin (equal to `bounds_min_*`) |
| `extent_x` / `extent_y` / `extent_z`             | `FloatField`    | Derived footprint width, length, and height of the flight’s point cloud (`bounds_max_* - bounds_min_*`), in meters         |

## Dataset Creation

### Curation Rationale

Public UAV LiDAR datasets for woody crops/vineyards are rare, despite growing interest in using LiDAR for vineyard morphology assessment, precision viticulture management, and as ground truth for satellite-derived models. This dataset was curated to fill that gap by providing a temporal series (2021–2022, three phases) of high-density, RGB-colored point clouds over two vineyard blocks at multiple flight altitudes.

### Source Data

#### Data Collection and Processing

Data were collected over three flight campaigns — September 16, 2021; July 14, 2022; and September 8, 2022 — chosen to capture the vines during vegetative growth (July) and near harvest (September). Flights were flown at 20, 30, and 50 meters AGL over two commercial vineyard blocks (B7 and B9, Vitis vinifera cv. Loureiro, trained in vertical shoot positioning with spontaneous cover-crop vegetation between rows), owned by Bodegas Terras Gauda S.A. and located in Tomiño, Pontevedra, Galicia, Spain (Vineyard B7: X 517186.7, Y 4645072.3; Vineyard B9: X 516987.9, Y 4644817.7; WGS 84 / UTM zone 29N, EPSG:32629).

The UAS consisted of a DJI M300 RTK multi-rotor platform carrying a DJI Zenmuse L1 LiDAR sensor (point rate up to 240,000 pts/s single-return / 480,000 pts/s multi-return, ranging accuracy 3 cm RMS @ 100 m, 20 MP RGB mapping camera for real-time point cloud coloring). Flights were planned along the vineyard rows with DJI Pilot 2 + UgCS software at a programmed speed of 4 m/s, 50% side overlap, and 80% frontal overlap, flown autonomously with RTK positioning for precision navigation. Ten `.laz` (compressed LAS) point clouds with per-point RGB were produced, one per flight/altitude/block combination (see Table 1 of the source paper).

For this FiftyOne dataset, each source `.laz` file was parsed with `laspy`, and its XYZ + RGB point data converted to `.pcd` with `open3d`: a full-resolution version was written unmodified (aside from re-centering, see Dataset Structure), and a voxel-downsampled “view” version (~5M points) was written for interactive use in the FiftyOne App. Per-flight metadata (flight phase/date/time, vineyard block and reference coordinates, altitude, point counts, bounding box, CRS, etc.) was compiled from the source paper’s Table 1/Table 2 and from the parsed `.laz` headers, then attached to each FiftyOne sample as scalar fields.

#### Who are the source data producers?

The data were produced by researchers at the Information Technology Group, Wageningen University & Research, as part of the H2020 FLEXIGROBOTS project, flying UAV LiDAR surveys over commercial vineyard blocks owned and operated by Bodegas Terras Gauda, S.A.

### Annotations

#### Annotation process

None. This dataset consists solely of raw, unlabeled geometric point clouds with embedded per-point RGB color captured by the onboard mapping camera; no manual or automated annotation (e.g., object detection, segmentation) was performed by the dataset authors or during FiftyOne parsing.

#### Who are the annotators?

Not applicable — no annotations are included.

#### Personal and Sensitive Information

None. The dataset contains only aerial LiDAR point clouds and RGB imagery of vineyard vegetation and terrain; no personal or sensitive information is present.

## Citation

**BibTeX:**

```bibtex
@article{velez2023vinelidar,
  title   = {{VineLiDAR}: High-resolution {UAV}-{LiDAR} vineyard dataset acquired over two years in northern {Spain}},
  author  = {V{\'e}lez, Sergio and Ariza-Sent{\'i}s, Mar and Valente, Jo{\~a}o},
  journal = {Data in Brief},
  pages   = {109686},
  year    = {2023},
  issn    = {2352-3409},
  doi     = {10.1016/j.dib.2023.109686},
  url     = {https://doi.org/10.1016/j.dib.2023.109686},
  publisher = {Elsevier}
}
```

**APA:**

Vélez, S., Ariza-Sentís, M., & Valente, J. (2023). VineLiDAR: High-resolution UAV-LiDAR vineyard dataset acquired over two years in northern Spain. *Data in Brief*, 109686. https://doi.org/10.1016/j.dib.2023.109686

## More Information

- Original data (Zenodo): [High resolution LiDAR dataset acquired using UAV over two vineyards and two years located in ‘Tomiño’, Pontevedra, Spain](https://doi.org/10.5281/zenodo.8113105)
- Related datasets from the same vineyard site, referenced by the source paper as candidates for multimodal combination with VineLiDAR:
  - Ariza-Sentís, M., Vélez, S., & Valente, J. (2023). Dataset on UAV RGB videos acquired over a vineyard including bunch labels for object detection and tracking. *Data in Brief*, 46, 108848. https://doi.org/10.1016/j.dib.2022.108848
  - Vélez, S., Ariza-Sentís, M., & Valente, J. (2023). Dataset on unmanned aerial vehicle multispectral images acquired over a vineyard affected by Botrytis cinerea in northern Spain. *Data in Brief*, 46, 108876. https://doi.org/10.1016/j.dib.2022.108876

## Dataset Card Authors

This dataset card was generated with the FiftyOne dataset-card skill.

## Dataset Card Contact

Created by [Harpreet Sahota](https://huggingface.co/harpreetsahota)
