koordinates / kart

Distributed version-control for geospatial and tabular data
https://kartproject.org
Other
515 stars 39 forks source link

[WIP] point-clouds: generate virtual point cloud (.vpc) #955

Open rcoup opened 7 months ago

rcoup commented 7 months ago

Proof of concept generating a Virtual Point Cloud (VPC) file for datasets based on tiles present in the current working copy. The VPC can be opened in eg: QGIS rather than loading individual tiles, and works similarly to VRT files for rasters.

  1. Currently uses pdal_wrench to generate the files, and we're not building/distributing that, needs to be in the PATH.
  2. You also need to set KART_POINT_CLOUD_VPCS=1

Still need to decide either to bundle pdal_wrench, or write minimal VPC files ourselves.

Related links:

Checklist:

hamishcampbell commented 7 months ago

At some point we expect to support generating STAC indexes for datasets in Kart. Given VPCs are based on STAC, and the relative simplicity of the format, maybe we should generate them ourselves.

olsen232 commented 7 months ago

At some point we expect to support generating STAC indexes for datasets in Kart. Given VPCs are based on STAC, and the relative simplicity of the format, maybe we should generate them ourselves.

I was going to say the opposite - let's just bundle pdal-wrench, seems simpler (unless we hit some difficulty with that approach). We can always switch approach later if none of the tools we already bundle / are okay to bundle do everything we want them to.

hamishcampbell commented 7 months ago

Two things left to do

* make this actually work by bundling pdal_wrench, or some other solution. We can still leave it turned off by default if we're not confident about it yet, but better to have a feature you can turn on and test rather than something where we have to install it to test it and then who knows if it's working the same for everyone (like we had with PDAL for a while)

* add a test - there's two very basic tests for VRTs:
  `test_working_copy_vrt`, `test_working_copy_vrt_disabled`

Ok, if bundling is straight forward that seems like a sensible step. It has a few other useful functions we might want in future too.