I'm fairly new to GRASS, and only recently discovered the r.external and v.external functions.

I'm used to working with R and QGIS where all the data is "external". Typically I keep vector data in PostGIS and rasters in the filesystem. But it seems the GRASS paradigm is to import this data into mapsets (with r.in.* and v.in.*).

So, what are the advantages of switching to that paradigm, vs. using r.external/v.external? Is one or the other faster, or easier to keep organized, or more bug-prone or error prone? Are there formats that can't be handled by linking?

  • 2
    Excellent question. I've always wondered about this too. Commented Nov 8, 2013 at 7:24

1 Answer 1


GRASS 6.x:

vectors (v.external()):

  • they are virtually linked into the current mapset in read-only mode.

from v.external():

The simple feature data model used by OGR is very different from the topological format used by GRASS. Instead of true topology, so called 'pseudo topology' is created for data linked by v.external. User should learn the difference between those to formats, because some modules working correctly with GRASS native data, can produce wrong results with input layers created by v.external.

rasters (r.external)

  • r.external just register the files rather than physically importing them. The native GRASS format (r.in.gdal import) has many advantages for processing.

I use them only as background maps.


  • Perhaps we should expand and discuss the advantages and disadvantages of "internal" vs "external". This answer appears to be more descriptive of what is what and not how one performs differently than the other. Commented Feb 1, 2019 at 11:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.