[GRASS-dev] [GRASS GIS] #2433: v.patch doesn't preserve 3D when input 3D points have not built topology

#2433: v.patch doesn't preserve 3D when input 3D points have not built topology
-------------------------+-------------------------------------------------
  Reporter: annakrat | Owner: wenzeslaus
      Type: defect | Status: new
  Priority: normal | Milestone: 7.1.0
Component: Vector | Version: svn-releasebranch70
Resolution: | Keywords: lidar, v.patch, topology,
       CPU: | z-coordinates
  Unspecified | Platform: Unspecified
-------------------------+-------------------------------------------------
Changes (by wenzeslaus):

* owner: grass-dev@… => wenzeslaus
* keywords: lidar, v.patch, topology => lidar, v.patch, topology,
     z-coordinates
* milestone: 7.0.0 => 7.1.0

Comment:

> When I import for example lidar data with v.in.lidar -t (do not build
topology) and then patch them, the new vector is not 3D anymore. Is it
really necessary to build topology of maps before passing them to v.patch?

It is strange that that it worked at all without topology as the v.patch
code required opening at level 2. From the history, I was not able to
determine why exactly was the code done in this way but the
topology/index/whatever (level 2) is now required for info if the vector
map is 3D or not. Perhaps something changed in the library in the past
since I had to put building of topology to v.lidar.mcc addon to make
v.patch happy (but this is possibly unrelated).

Anyway, in r66822 I added two new flags, one for opening on level one,
i.e. not requiring the topology, and the other for forcing reading of z
coordinate since the library reports "without z" when on level 1 (as far
as I tested that). This is the naming and the description (open for
discussion):

{{{
   -n Do not expect input with topology
         Applicable when input is points without topology
   -z Expect z coordinate even when not using topology
         Applicable when input is points with z coordinate but without
topology
}}}

Basic tests done for new and old functionality but no automated tests.
Documentation is missing as well. Please help.

> This is quite inconvenient in case of huge lidar data.

Lidar data and other point clouds can be now merged using (-b is now the
standard flag for not building topology):

{{{
v.patch input=tile_1,tile_2,tile_3 output=points_all -nzb
}}}

--
Ticket URL: <https://trac.osgeo.org/grass/ticket/2433#comment:1&gt;
GRASS GIS <https://grass.osgeo.org>