Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

raster: feature request: allow a GRASS GIS region to be taken into account #49

Open
florisvdh opened this issue Jun 17, 2024 · 0 comments

Comments

@florisvdh
Copy link

florisvdh commented Jun 17, 2024

It seems that exporting a raster layer from the GRASS GIS database disregards the mapset's region (see example below). Accessing this important GRASS GIS feature would be very convenient, e.g. in aligning multiple raster layers that were accessed with the GDAL driver.

Would it be possible to add a 'dataset open' option that sets a GRASS GIS region? Various options of g.region might be used for this purpose; the most useful probably being region (sufficient to use a GRASS GIS region) and the manual settings n, s, e, w and res.

Example of mismatching region settings between r.out.gdal and gdalwarp
$ grass
Starting GRASS GIS...

          __________  ___   __________    _______________
         / ____/ __ \/   | / ___/ ___/   / ____/  _/ ___/
        / / __/ /_/ / /| | \__ \\_  \   / / __ / / \__ \
       / /_/ / _, _/ ___ |___/ /__/ /  / /_/ // / ___/ /
       \____/_/ |_/_/  |_/____/____/   \____/___//____/

Welcome to GRASS GIS 8.3.2
GRASS GIS homepage:                      https://grass.osgeo.org
This version running through:            Bash Shell (/bin/bash)
Help is available with the command:      g.manual -i
See the licence terms with:              g.version -c
See citation options with:               g.version -x
Start the GUI with:                      g.gui wxpython
When ready to quit enter:                exit

GRASS nc_basic_spm_grass7/PERMANENT:~ > g.region region=state_500m
GRASS nc_basic_spm_grass7/PERMANENT:~ > 
GRASS nc_basic_spm_grass7/PERMANENT:~ > g.region -p
projection: 99 (Lambert Conformal Conic)
zone:       0
datum:      nad83
ellipsoid:  a=6378137 es=0.006694380022900787
north:      320000
south:      8000
west:       120000
east:       934000
nsres:      500
ewres:      500
rows:       624
cols:       1628
cells:      1015872
GRASS nc_basic_spm_grass7/PERMANENT:~ > 
GRASS nc_basic_spm_grass7/PERMANENT:~ > r.out.gdal input=elevation output=elevation_grass.tif 2> /dev/null
GRASS nc_basic_spm_grass7/PERMANENT:~ > 
GRASS nc_basic_spm_grass7/PERMANENT:~ > gdalwarp /home/floris/grassdata/nc_basic_spm_grass7/PERMANENT/cellhd/elevation elevation_gdal.tif 2> /dev/null
Copying color table from /home/floris/grassdata/nc_basic_spm_grass7/PERMANENT/cellhd/elevation to new file.
Creating output file that is 1500P x 1350L.
Processing /home/floris/grassdata/nc_basic_spm_grass7/PERMANENT/cellhd/elevation [1/1] : 0Using internal nodata values (e.g. nan) for image /home/floris/grassdata/nc_basic_spm_grass7/PERMANENT/cellhd/elevation.
Copying nodata values from source /home/floris/grassdata/nc_basic_spm_grass7/PERMANENT/cellhd/elevation to destination elevation_gdal.tif.
...10...20...30...40...50...60...70...80...90...100 - done.
GRASS nc_basic_spm_grass7/PERMANENT:~ > 
GRASS nc_basic_spm_grass7/PERMANENT:~ > 
GRASS nc_basic_spm_grass7/PERMANENT:~ > gdalinfo -nomd elevation_grass.tif | tail -11
Origin = (120000.000000000000000,320000.000000000000000)
Pixel Size = (500.000000000000000,-500.000000000000000)
Corner Coordinates:
Upper Left  (  120000.000,  320000.000) ( 84d28' 4.38"W, 36d30'46.34"N)
Lower Left  (  120000.000,    8000.000) ( 84d16'57.51"W, 33d42'16.78"N)
Upper Right (  934000.000,  320000.000) ( 75d22'30.17"W, 36d34'51.69"N)
Lower Right (  934000.000,    8000.000) ( 75d29'52.75"W, 33d46'13.90"N)
Center      (  527000.000,  164000.000) ( 79d54'26.85"W, 35d13'30.03"N)
Band 1 Block=1628x1 Type=Float32, ColorInterp=Gray
  Description = elevation
  NoData Value=nan
GRASS nc_basic_spm_grass7/PERMANENT:~ > 
GRASS nc_basic_spm_grass7/PERMANENT:~ > 
GRASS nc_basic_spm_grass7/PERMANENT:~ > gdalinfo -nomd elevation_gdal.tif | tail -11
Data axis to CRS axis mapping: 1,2
Origin = (630000.000000000000000,228500.000000000000000)
Pixel Size = (10.000000000000000,-10.000000000000000)
Corner Coordinates:
Upper Left  (  630000.000,  228500.000) ( 78d46'27.41"W, 35d48'34.59"N)
Lower Left  (  630000.000,  215000.000) ( 78d46'28.63"W, 35d41'16.54"N)
Upper Right (  645000.000,  228500.000) ( 78d36'29.89"W, 35d48'33.08"N)
Lower Right (  645000.000,  215000.000) ( 78d36'32.01"W, 35d41'15.03"N)
Center      (  637500.000,  221750.000) ( 78d41'29.49"W, 35d44'54.91"N)
Band 1 Block=1500x1 Type=Float32, ColorInterp=Palette
  NoData Value=nan
GRASS nc_basic_spm_grass7/PERMANENT:~ > 
exit
Done.

Goodbye from GRASS GIS

Motivation:

In R the GRASS GIS interface is provided by package {rgrass}, which in turn uses the {terra} package for reading & writing with GDAL. In the {rgrass} package we intend to (re-)implement the GDAL-GRASS driver to access layers in order to avoid the extra r.out.gdal or v.out.ogr steps that cause extra overhead. (rsbivand/rgrass#75)

System specs:

$ ogrinfo --version
GDAL 3.8.4, released 2024/02/08
$ 
$ apt policy libgdal-grass
libgdal-grass:
  Installed: 1:1.0.2-7+jammy3
  Candidate: 1:1.0.2-7+jammy3
  Version table:
 *** 1:1.0.2-7+jammy3 500
        500 http://ppa.launchpad.net/ubuntugis/ubuntugis-unstable/ubuntu jammy/main amd64 Packages
        100 /var/lib/dpkg/status
     3.4.1-3 500
        500 http://ftp.belnet.be/ubuntu jammy/universe amd64 Packages
$ 
$ inxi -Sxxx
System:
  Host: xxx Kernel: 5.15.0-112-generic x86_64 bits: 64 compiler: gcc
    v: 11.4.0 Desktop: Cinnamon 6.0.4 tk: GTK 3.24.33 wm: muffin vt: 7
    dm: LightDM 1.30.0 Distro: Linux Mint 21.3 Virginia
    base: Ubuntu 22.04 jammy
florisvdh added a commit to rsbivand/rgrass that referenced this issue Jun 18, 2024
, 4389249) *

In the course of this fiddling with mapsets, it was seen (by accident) that the mapset
region settings are not respected by the GDAL driver.

This only affects raster.

This is a no-go for the GDAL-GRASS raster driver as long as it doesn't expose an option to
respect the mapset's current region, or at least to set a region.

A feature request has been made at the driver's repo
(OSGeo/gdal-grass#49). As long as it's not implemented, we
cannot consider using the driver for rasters since results with and without using the
driver must of course have the same extent and resolution.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant