I am trying to make 3D visualization of terrain data and orthophoto using GRASS NVIZ via QGIS. I have been able to import both the DTM and the orthophoto in NVIZ window and successfully draped the image over DTM. But the resolution looks very poor. Is there any way to increase the resolution ? It seems like NVIZ GUI is not so user-friendly. For example, in Arcscene, there is a option to optimize the rendering that can increase the resolution of the 3D draped image. Here is the screeshot from GRASS NVIZ:
2 Answers
I guess your GRASS region/resolution is based on your DTM (which is low).
You should set it based on your orthophoto :
g.region rast=orthophotoLayername
Refresh your 3D viz.
By the way, could you edit your question adding what's is displayed by both g.region -p rast=mnt_layer
and g.region -p rast=orthophotoLayername
? It will be useful to know the resolution of your layers.
-
Hello Simo, thanks for your reply. My DTM has a resolution of 1.6 m whereas orthophoto has 0.1 m. I set region's resolution to taht of orthophoto with the command, "g.region nsres=0.1 ewres=0.1". Now if i run NVIZ, I got the following error, Current region rows: 40288, cols: 49184 ERROR: G_malloc: unable to allocate 3631132672 bytes of memory at gsds.c:575. Do I have to maek a subset of my data ? But I need to visualize an area with 10 km x 10 km. Thanks– ZamanCommented Mar 14, 2014 at 13:23
-
GRASS is looking for 3.4 Gb of memory. It seems your machine has not enough RAM. You can define a smaller region, or crop it : grasswiki.osgeo.org/wiki/Cropping_maps– simoCommented Mar 14, 2014 at 14:42
There are many parameters for the resolution of rasters in Nviz:
the resolution(s) of the raster(s) (parameter Res)
Type of Map: raster
....
Number of Categories: 0
N: 175738.80821982 S: 9070.736 Res: 19.91493275
E: 298336.77386818 W: 62265.161 Res: 19.91493275
....the resolution of the region (as Simo says)
the parameters of resolution in Nviz coarse, when you move the image, and fine, static representation.
- Fine= 1 means that the Nviz resolution is that previously fixed by g.region
(current region resolution) and not the resolution of a specific raster
- MNT seen with Fine= 1 or g.region derived from the MNT
The problem: what happens if you want to drape a raster with a different resolution on the MNT ?
If the current resolution is higher than the resolution of the raster used for topography, the raster is automatically resampled ( nearest neighbor algorithm) leading to a discontinuous surface with "steps".
- Result with the draped raster an g.region = MNT
- Result with the draped raster and g.region = raster
- MNT with g.region = raster
To solve the problem:
1) you can adjust the fine resolution of Nviz (ratio between the two resolutions):
2) but if the only interest is to improve the 3D representation, the solution is to resample one of the rasters (but you can no longer use it in other treatments, so use g.copy) with:
- r.resample.rst: regularized spline with tension and smoothing
- or r.resamp.interp nearest neighbor, bilinear and bicubic interpolation
Draping other raster on the MNT (other resolution):