geotrellis / geotrellis-pointcloud

GeoTrellis PointCloud library to work with any pointcloud data on Spark
Apache License 2.0
26 stars 10 forks source link

Entwine overlapping bounds tiles read #54

Open pomadchin opened 4 years ago

pomadchin commented 4 years ago

The task is to check out https://github.com/PDAL/PDAL/commit/a2a08f0f44bb39323158c55bcce140b990e0668f behavior;

Ref: https://github.com/PDAL/PDAL/issues/2959

echeipesh commented 4 years ago

Outcome: Test the PDAL created no-cull option to see the effect on degenerate case.

jpolchlo commented 4 years ago

This test is pending on two events: (1) locating a test example with a gap, and possibly (2) adding a parameter to ReaderEpt (in a branch) to access the no-cull option. The second can be eliminated in favor of providing a text pipeline.

Once a gap is found, we would need to find an extent that crosses into the gap but does not cover it. That is, find an extent that interacts with the gap like so:

 * ** *** *** * *  *  * *   *
* * * *  **  * * * ** *** * *
* **          * **  ** * *  **
+------------+   * ** * * * *
|*  *        |   * * * * * * *
| **         |   *** *** * **
|* ***       |    * * *** *  *
+------------+   **  ** *  * *
* * * *  * *   * * *** * * **
  ** * ***  * * * *  ** * * **

The resulting triangulation won't fill in the gap values without the no-cull option.

There is an alternative suggested to the no-cull option, which is to manually build a sample via multiple readers. The first reader will grab the requested region at full resolution, the last reader will grab the entire 0-0-0-0 node by requesting the full EPT extent at very large resolution. Any number of intermediate reads can be performed with extent sizes/cell sizes between the top- and bottom-level queries.

In any event, these nested reads can be benchmarked without finding a data void, but the performance penalty can only be assessed for merit once a problematic region is located.

jpolchlo commented 4 years ago

A Dockerfile to provide the branch of PDAL:

FROM debian:sid
MAINTAINER Grigory Pomadchin <daunnc@gmail.com>

RUN set -ex && \
    apt update -y && \
    apt install \
      openjdk-8-jdk \
      ca-certificates-java -y

ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk-amd6
RUN update-alternatives --set java `update-alternatives --list java | grep java-8`

# https://tracker.debian.org/pkg/pdal
RUN apt-get -y install bash gcc g++ cmake wget git libgdal-dev liblaszip-dev
RUN git clone https://github.com/pdal/pdal.git && \
    cd pdal && \
    git checkout a2a08f0 && \
    mkdir build && \
    cd build && \
    cmake -DCMAKE_BUILD_TYPE=Release .. && \
    make && \
    make install && \
    cd ../.. && \
    rm -rf pdal