GISI Foundation study materials
GISI Foundation study resources

GISI Foundation: Spatial Data Models, Structures, and Database Concepts

GISI Foundation · Work through your exam, one topic at a time.

All guide sections

Spatial Data Models, Structures, and Database Concepts

This domain tests how spatial data is actually stored and queried: file formats and their limits, relational structure, spatial indexing, and the SQL predicates that implement spatial relationships. Expect questions that contrast two formats or ask what a query returns.

Formats and their constraints

  • Shapefile: a multi-file format (shp, shx, dbf, prj). Limits include 2 GB per file, 10-character field names, one geometry type per file, no true curves, no null values in the dbf, and dates without time.
  • File geodatabase and enterprise geodatabases add domains, subtypes, relationship classes, topology rules and true curves.
  • PostGIS and other spatial databases store geometry as a typed column and expose OGC Simple Features functions such as ST_Intersects, ST_Contains, ST_Buffer and ST_Area.

Relational foundations

Features live in tables; a primary key uniquely identifies a row and a foreign key references another table. Attribute joins rely on matching key values and are many-to-one or one-to-one; spatial joins rely on a spatial relationship and can be one-to-many, which silently duplicates rows. Normalisation reduces redundancy but adds join cost.

Spatial indexing

The index does not store exact shapes; it stores bounding boxes in a tree (R-tree, GiST, quadtree). A query first filters candidates by bounding box, then runs the exact geometry test. That two-stage design explains both why a missing index is slow and why an indexed query can still return surprising candidates before the exact test.

Worked example

A query counts parcels that contain a well point using ST_Contains(parcel.geom, well.geom). Two errors appear: the argument order is reversed (ST_Contains(A,B) is true when A contains B, so the parcel must come first), and no spatial index exists, so a full scan runs. Reasoning: fix the argument order, create a GiST index on each geometry column, and confirm that a point exactly on a shared boundary is not returned by ST_Contains (use ST_Intersects if boundary cases count).

Traps that cost marks

  • Confusing ST_Contains with ST_Within - they are inverses with swapped arguments.
  • Confusing ST_Touches (boundaries meet, interiors do not overlap) with ST_Overlaps (interiors partly overlap).
  • Forgetting that a one-to-many join inflates row counts and corrupts summary statistics.
  • Assuming a shapefile can store mixed geometry types or long field names.