GIS is a database of geographically referenced data. It contains two closely integrated databases: one spatial (locational) and the other attribute (statistical). The spatial database contains information in the form of digital coordinates, usually from maps or from remote sensing. These can be points, lines, or polygons. The attribute database contains information about the characteristics or qualities of the spatial features.

Many modern GIS implementations, like ESRI Shape Files, use a relational database to store attributes associated with spatial feature information. For example, all cities of the USA will have a common schema record that may include: elevation, population, percentage males and females, etc. By selecting features graphically and then associating each feature with its specific attribute record instance, we are querying for specific attributes values for that feature (forward query). Conversely, if we create a query in which one or more feature fields are constrained by some selection criteria, we can correspond each selected record instance to a particular feature or features geo-referenced on the display (reverse query).

This presentation will detail an approach to query feature attributes in a relational database while maintaining constant association with spatial features regardless of the query direction: forward or reverse. Essential JDBC driver requirements to support efficient and query-independent association of ESRI feature attributes will be defined. Example implementations of both forward and reverse feature attribute queries will be examined and demonstrated using GisQuery adapter and ResultSet decorator components from J/GIStm.