Fact-checked by Grok 2 weeks ago

Simple Features

Simple Features, officially known as Simple Feature Access, is an Open Geospatial Consortium (OGC) and (ISO) standard that defines a common architecture for the storage, access, and manipulation of simple two-dimensional geometric features and their associated attributes in geographic information systems (GIS). It specifies a set of basic geometry types—including Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, and GeometryCollection—along with spatial reference systems to enable across software applications, databases, and file formats for vector-based spatial data. Originally approved as OGC's first implementation standard in 1997, Simple Features emerged from early efforts to standardize geospatial data handling amid growing needs for compatible GIS technologies. In November 2025, the OGC proposed restructuring the standard into multiple parts for improved modularity, with comments open until December 2025. It was formalized internationally through ISO 19125 in 2004, divided into Part 1 (Common Architecture), which outlines the and terminology, and Part 2 (SQL Option), which provides an SQL schema for database storage, retrieval, querying, and updating of feature collections. This dual structure ensures compatibility with relational database systems via standards like SQL/MM Part 3 (Spatial). The standard's key strength lies in its focus on simplicity and portability, restricting geometries to and excluding complex curves or representations in its core model, though extensions for measured geometries and ongoing updates address advanced needs like coordinates. Widely implemented in open-source and commercial GIS tools—such as for and libraries like GEOS—it underpins modern spatial data exchange, enabling seamless integration in applications ranging from mapping software to systems. As of 2025, the ISO 19125 working group continues revisions to align with evolving geospatial requirements, including enhanced support for dynamic and multi-dimensional data.

History and Development

Origins

In the early , the geographic information systems (GIS) sector grappled with fragmentation caused by proprietary data formats and software architectures from leading vendors, including ESRI's and Intergraph's MGE, which restricted data sharing and integration across platforms. This lack of impeded the broader adoption of GIS in enterprise environments, as organizations struggled to exchange vector-based geographic features without custom conversions or vendor-specific tools. To address these challenges, the Open GIS Consortium (later renamed the Open Geospatial Consortium, or OGC, in 2004) was established in 1994 as a voluntary organization dedicated to fostering open standards for geospatial data and services. In 1996, the OGC issued a Request for Technology (RT) under its Open Geodata Model Working Group, soliciting proposals from industry stakeholders to define a common abstract model for simple vector geometries. Submissions from key players, including ESRI, Intergraph, MapInfo, and others, culminated in the approval of the first Simple Features specification in August 1997, marking OGC's inaugural standard and establishing a foundational framework for 2D vector geometry representation. The primary motivations for Simple Features were to standardize the , retrieval, and manipulation of geographic features—such as points, lines, and polygons—in relational databases and applications, thereby promoting vendor-neutral and reducing dependency on systems. This approach enabled seamless data exchange in corporate information infrastructures, aligning GIS with mainstream computing paradigms like SQL-based databases while minimizing disruptions to existing vendor implementations. From the outset, the specification emphasized planar, non-curved geometries with basic topological relationships, deliberately limiting scope to essential 2D vector elements to ensure rapid adoption and practicality in diverse GIS workflows.

Standardization Process

The standardization of Simple Features began with the Open Geospatial Consortium (OGC) in 1999, when it released the Simple Features Specification for SQL, Revision 1.1 (OGC 99-049). This document defined an abstract model for representing and accessing geospatial features and their associated geometries, emphasizing across software systems and databases. In 2004, the (ISO) adopted and formalized this model through ISO 19125-1: Geographic information — Simple feature access — Part 1: Common architecture. This standard established a unified framework for simple feature geometry, including the (DE-9IM) for spatial relationships and integration with spatial referencing systems as defined in ISO 19111. Concurrently, ISO 19125-2: Geographic information — Simple feature access — Part 2: SQL option was published, specifying a SQL schema for storing, retrieving, querying, and updating simple geographic feature collections in relational databases. The OGC refined the standard in 2011 with the release of OpenGIS Simple Features Access, Part 1: Common Architecture. This update superseded prior versions and incorporated enhancements to the model while maintaining compatibility with ISO 19125. This update facilitated broader adoption by addressing implementation details for environments. Although the core Simple Features model focuses on linear geometries, revisions aligned with broader ISO spatial schemas (such as ISO 19107) enabled support for curved geometries like CircularString in extended implementations. In the 2020s, the ISO/OGC Simple Features Standards Working Group (SWG) has been actively revising ISO 19125 to enhance . As of November 2025, efforts include a to restructure the standard into a multipart format, with parts covering common architecture, Well-Known Text (WKT), and Well-Known Binary (WKB) representations, to improve modularity and alignment with modern geospatial technologies while preserving . These updates build on the foundational model to support evolving technologies. Simple Features maintains a close relationship with ISO/IEC 13249-3 (SQL/MM Part 3: Spatial), an international standard for spatial extensions in SQL databases that extends the Simple Features model with additional subtypes, routines, and functions for advanced spatial management.

Core Model

Feature Definition

In the Simple Features standard, a feature represents an abstraction of real-world phenomena, restricted to two-dimensional with between vertices, and consisting of both spatial and non-spatial attributes. This combination forms a tuple-like structure where the geometry provides the locational aspect, while attributes capture descriptive properties such as identifiers, measurements, or categorical . The model emphasizes by standardizing how these elements integrate to model geographic entities like buildings, roads, or natural features. The abstract feature model establishes a root class, typically denoted as , which serves as the base for all feature types in a . This root class includes a mandatory geometry attribute of type , enabling the association of spatial information with non-spatial properties defined by the feature type. Feature attributes are characteristics with specified names, data types (e.g., , , or real), and value domains, allowing for extensible schemas tailored to application needs. Features support both single geometries and multi-geometries through the type, which can be a primitive object or a GeometryCollection aggregating multiple elements, all sharing the same spatial context. A prerequisite for interpreting feature geometries is their association with a (SRS), which defines the coordinate space and ensures consistent positioning relative to a datum or . Without an SRS, geometries lack unambiguous real-world reference, rendering spatial operations unreliable. For instance, a feature might employ a LineString geometry to delineate its path, paired with attributes such as name (), length (real), and surface type (enumerated), forming a complete representation for mapping or analysis.

Geometry Model

The Simple Features geometry model defines an abstract hierarchy for representing spatial objects in geographic information systems, with serving as the root class. This hierarchy includes instantiable subclasses restricted to zero-, one-, and two-dimensional geometric objects embedded in two-, three-, or four-dimensional coordinate space. The primary primitive subclasses are Point (0D), (1D), and Surface (2D), while aggregates such as MultiPoint, MultiCurve, MultiSurface, and GeometryCollection allow composition of multiple elements. Each geometry object is associated with a , ensuring consistent positioning and measurement across datasets. Topological invariants form the core of the model, emphasizing the structure and relationships within and between geometries. is a key , classifying objects as 0D (points with no extent), 1D ( with length but no area), or 2D (surfaces with area). The model defines each geometry in terms of three topological components: the interior (the main body), the (the perimeter or edges), and the exterior (the surrounding ). Geometries are topologically closed, meaning they include their , which supports consistent computation of relationships; for example, the of a closed is empty, while aggregates like MultiCurve apply a mod-2 rule for boundaries. Empty geometries represent null or absent spatial extent, such as an empty Point or the boundary of a MultiPoint, which has no elements. Validity rules ensure geometries are "simple," prohibiting self-intersections except at endpoints for curves and requiring connected interiors for surfaces without cut lines, spikes, or punctures. For aggregates like MultiPolygon, interiors must not overlap, though boundaries may touch at discrete points. These rules maintain topological integrity. The model's emphasis on interior, boundary, and exterior components provides the foundational primitives for spatial predicates defined in the Dimensionally Extended Nine-Intersection Model (DE-9IM), enabling queries like intersection or containment.

Geometry Types

Primitive Types

The primitive types in the Simple Features specification form the foundational geometric objects for representing spatial data in a vector model, consisting of atomic, non-composite elements that capture basic locations, paths, and areas without aggregation. These types adhere to a hierarchical geometry model where each primitive is defined by coordinates in a 2D or optionally 3D space, ensuring interoperability across geospatial systems. They are designed for simplicity, with linear interpolation between points, and serve as building blocks for more complex structures like multi-geometries. The Point is a zero-dimensional primitive representing a single location, defined by a pair of coordinates (x, y), optionally extended with z for altitude and m for measures like time or distance. It has no boundary and is used to model discrete positions, such as the coordinates of cities or landmarks. Validity for a Point requires only that its coordinates are provided, with no simplicity rules beyond the absence of anomalous values. The LineString is a one-dimensional consisting of a sequence of at least two Points connected by straight-line segments, forming a continuous with between vertices. It models linear features like roads or rivers, where the sequence defines the direction from start to end Point. For validity, a LineString must be simple, meaning it does not intersect itself except possibly at endpoints if closed (where the first and last Points coincide), and it should avoid duplicate consecutive Points. A closed LineString with these properties constitutes a LinearRing, which serves as the boundary for areal primitives. The is a two-dimensional representing a bounded planar surface, composed of one exterior LinearRing and zero or more interior LinearRings (holes) that do not intersect each other or the exterior. It is used for features like land parcels or lakes, where the exterior ring encloses the area and interior rings define exclusions. Orientation follows the : the exterior ring is traversed counterclockwise when viewed from above, while interior rings are , ensuring consistent . Validity requires no self-intersections in any ring, closure of all rings (first and last Points identical), and that interior rings lie fully within the exterior without touching or crossing it. Extensions in the 2011 revision of the specification introduced abstract supertypes and specialized primitives to support non-linear geometries while maintaining compatibility with core types. The Curve is an abstract one-dimensional type generalizing LineString, allowing for continuous paths that may include curved segments, with simplicity defined by no self-intersections except at endpoints for closed instances. Similarly, the Surface is an abstract two-dimensional type generalizing Polygon, comprising one exterior boundary and optional interior boundaries formed by closed Curves, requiring non-intersecting interiors for validity. A concrete extension is the CircularString, a Curve subtype defined by a sequence of at least three Points that form circular arc segments between them, enabling representation of rounded features like arcs without linear approximation. These extensions preserve the validity principles of no self-intersections and proper closure for rings.

Aggregate and Collection Types

In the Simple Features model, aggregate types extend the primitive geometry types by combining multiple instances into cohesive structures, enabling the representation of complex spatial features without imposing strict topological relationships beyond basic simplicity rules. These aggregates serve as building blocks for modeling real-world phenomena that consist of multiple disconnected or loosely related components, such as clusters of points or disjoint areas. MultiPoint is a zero-dimensional aggregate consisting of a collection of Point instances, where the points are neither connected nor ordered. It forms a specialized GeometryCollection restricted to points, with no topological constraints between members other than the requirement for simplicity, meaning no two points coincide. The boundary of a MultiPoint is an , as it lacks edges. This type is commonly used to represent discrete locations, such as a set of cities or positions, allowing efficient and querying of multiple points as a single feature. MultiLineString aggregates multiple LineString primitives into a one-dimensional collection, modeling sets of linear features that may touch at endpoints but whose interiors do not overlap. For simplicity, each LineString must be , and any intersections between them occur only at points, with the overall computed as the (mod 2 rule) of the individual boundaries. This structure supports representations like road networks or river systems, where individual segments form a route without requiring . MultiPolygon combines multiple Polygon instances into a two-dimensional , suitable for areas composed of disjoint components with non-intersecting interiors. Boundaries of the polygons may touch at finite points or edges, ensuring the collection is topologically closed, and simplicity requires that no anomalous overlaps or self-intersections occur within or between polygons. Typical applications include archipelagos or fragmented land parcels, where each polygon represents a separate but related area, facilitating unified management in geographic information systems. GeometryCollection provides a heterogeneous and recursive container for mixing primitive and aggregate geometries, such as Points, LineStrings, and Polygons, without dimensional restrictions. All elements must share the same , but no inherent is enforced beyond the simplicity of individual components; it can nest other collections. This type is ideal for complex features requiring diverse geometric elements, like urban planning datasets combining buildings (Polygons), roads (LineStrings), and landmarks (Points).

Spatial Operations and Queries

DE-9IM Model

The Dimensionally Extended 9-Intersection Model () is a topological framework used in the Simple Features specification to define and query spatial relationships between two geometric objects by examining the intersections of their interiors, boundaries, and exteriors. It builds on the original 9-Intersection Model (9IM) by incorporating information to handle relationships in planar space more precisely, allowing for distinctions based on the highest of intersection points, lines, or areas. This model is essential for implementing robust spatial queries that capture topological invariants, independent of coordinate transformations or rotations. The core of DE-9IM is a 3x3 matrix that represents the pairwise intersections between the topological components of two geometries, a and b. Each geometry is decomposed into its interior (I), boundary (B), and exterior (E), where the interior is the open set of points strictly inside the geometry, the boundary consists of the closure points, and the exterior encompasses all other space. The matrix entries denote the dimension of these intersections, using the following codes: 0 for point-like (0-dimensional), 1 for line-like (1-dimensional), 2 for area-like (2-dimensional), F for false (empty intersection), and * for "don't care" (any dimension or empty). The structure of the matrix is as follows:
I(b)B(b)E(b)
I(a)I(a) ∩ I(b)I(a) ∩ B(b)I(a) ∩ E(b)
B(a)B(a) ∩ I(b)B(a) ∩ B(b)B(a) ∩ E(b)
E(a)E(a) ∩ I(b)E(a) ∩ B(b)E(a) ∩ E(b)
This dimensionally extended approach, originally proposed by Clementini, Di Felice, and van Oosterom, enables the model to differentiate relationships that the basic 9IM (which only checks for emptiness) cannot, such as distinguishing between touching and crossing based on dimensionality. In practice, the matrix is computed by overlaying the geometries in a and evaluating the maximum of each set. DE-9IM supports a set of standard topological predicates, each defined by a specific pattern in the matrix that must match for the relationship to hold; these patterns use * to ignore irrelevant entries and specify exact dimension codes where needed. The predicates include:
  • Equals: The geometries are topologically identical, sharing the same interior, boundary, and exterior points. Matrix pattern: TF**FFF (for area geometries, often fully specified as 212212212).
  • Disjoint: No points in common between the geometries. Matrix pattern: FFFF***.
  • Intersects: The geometries share at least one point (negation of Disjoint). This is a composite predicate derived from other patterns, such as any non-FF* in relevant positions.
  • Touches: The geometries share boundary points but not interior points. Matrix patterns vary by dimension, e.g., FT******* for area-area or line-line cases.
  • Crosses: The interiors intersect in a way that neither geometry is fully contained in the other, typically producing lower-dimensional intersections along boundaries. Matrix patterns include TT***** for point-line, line-area, or point-area cases, and 0******** for line-line cases.
  • Within: Geometry a is completely inside b, with a's boundary possibly touching b's but a's exterior disjoint from b's interior. Matrix pattern: TFFFF**.
  • Contains: The inverse of Within, where b is inside a. Matrix pattern: TFFFF** (symmetric application).
  • Overlaps: The interiors intersect in the same dimension, but neither contains the other. Matrix patterns include TTT for point-point or area-area, or 1T*T for line-line.
For example, a LineString crosses a if the line's interior intersects the polygon's interior (dimension 1 or 0), but the line does not lie entirely within the polygon, resulting in a matrix pattern like TT*****. This is particularly useful for detecting traversals, such as a road crossing a without being fully enclosed.

SQL/MM Spatial Functions

The SQL/MM spatial functions, defined in ISO 19125-2, provide a standardized set of SQL-invoked routines prefixed with "ST_" for creating, manipulating, and querying Simple Features geometries within relational database management systems (RDBMS). These functions enable the storage, retrieval, and analysis of spatial data in tables where geometry columns are explicitly typed as ST_Geometry or subtypes, with metadata tracked in system tables such as GEOMETRY_COLUMNS and SPATIAL_REF_SYS to specify geometry types, dimensions, and spatial reference systems (SRID). Basic accessor and measurement functions support inspection and quantification of . ST_GeometryType returns the specific type of a given as a text string, such as "ST_Point" or "ST_Polygon". ST_Area computes the measure of a surface , like a or MultiPolygon, in the units of the . Similarly, ST_Length calculates the measure of a , such as a LineString, also in reference system units. For , ST_AsText outputs a in its Well-Known Text (WKT) representation, facilitating human-readable export without including SRID metadata. Spatial relationship predicates evaluate topological interactions between geometries, implementing the Dimensionally Extended Nine-Intersection Model (DE-9IM) through standardized SQL functions. Key examples include ST_Intersects, which returns true if two geometries have at least one point in common; ST_Contains, which checks if the second geometry is completely inside the first with shared interior points; and ST_Within, which verifies if the first geometry is entirely within the second under similar conditions. Additional predicates cover relations like ST_Touches, ST_Crosses, and ST_Overlaps, enabling efficient spatial joins and filtering in queries. Constructor functions allow programmatic creation of geometries from scalar values or text inputs. ST_Point constructs a Point geometry from x and y coordinates, optionally including an SRID. ST_LineFromText builds a LineString (or subtype) by parsing a WKT string, with an optional SRID parameter. ST_MakePolygon creates a Polygon from a LinearRing shell and optional interior rings for holes, ensuring valid topology. Aggregation functions support combining multiple geometries into composite types for analysis. ST_Collect aggregates a set of geometries into a GeometryCollection or Multi-geometry, preserving distinct elements without resolving overlaps. In contrast, ST_Union merges a collection of geometries into a single by computing their point-set , dissolving boundaries where they overlap. These are typically used with SQL GROUP BY clauses on geometry columns to summarize spatial data across rows.

Data Representations

Well-Known Text

Well-Known Text (WKT) is a human-readable textual format for representing Simple Features , enabling the exchange and visualization of spatial data in a portable, platform-independent manner. Defined in the Open Geospatial Consortium (OGC) Simple Feature Access standard (Part 1: Common Architecture), WKT uses a structured string syntax that specifies the geometry type followed by its coordinate components enclosed in parentheses. This format supports all core Simple Features geometry types, including points, linestrings, polygons, and their multi-part and collection variants, while restricting geometries to 2D coordinate space with optional measures. The basic syntax begins with the geometry type name in upper camel case (e.g., POINT, LINESTRING), which is case-insensitive but conventionally capitalized for , followed by an opening parenthesis, the coordinate data, and a closing parenthesis. Coordinates are pairs of numeric values (x y) separated by spaces, with decimal numbers permitted and no units specified in the core format. For linear rings in polygons, the syntax requires explicit closure by repeating the first coordinate at the end of each ring. Empty geometries are represented by appending EMPTY to the type name, such as POINT EMPTY. This structure ensures topological closure for all valid instances, including boundaries. Examples of primitive geometry types in WKT include:
  • A point: POINT (10 10)
  • A linestring: LINESTRING (0 0, 1 1, 2 2, 3 3)
  • A with one exterior : POLYGON ((0 0, 10 0, 10 10, 0 10, 0 0)) (interior rings, if any, follow separated by commas)
For aggregate types, the syntax prefixes the type with MULTI- and encloses individual member geometries in double parentheses, separated by commas. A multipoint example is MULTIPOINT ((10 10), (20 20)), while a multilinestring might be MULTILINESTRING ((0 0, 1 1), (2 2, 3 3)), and a MULTIPOLYGON (((0 0, 10 0, 10 10, 0 10, 0 0)), ((5 5, 7 5, 7 7, 5 7, 5 5))) for one exterior and one interior . GeometryCollection allows heterogeneous nesting, as in GEOMETRYCOLLECTION (POINT (10 10), LINESTRING (0 0, 1 1)), where each element is a full WKT-tagged subgeometry separated by commas. These formats facilitate and manual inspection of geometries during development and data interchange. An extension to WKT, known as Extended Well-Known Text (EWKT), incorporates information via a SRID prefix in the format SRID=;, allowing geometries to specify their explicitly. For instance, SRID=4326;POINT(0 0) denotes a point in the WGS 84 . EWKT is not part of the core Simple Features specification but is widely adopted in implementations for enhanced . Well-Known Binary serves as a compact counterpart to WKT for efficient and .

Well-Known Binary

The Well-Known Binary (WKB) format provides a compact, platform-independent binary encoding for Simple Features geometries, enabling efficient storage, transmission, and exchange between systems. It consists of a sequence of bytes representing the geometry type, followed by the coordinates or sub-geometries, prefixed by a byte order indicator to ensure consistent interpretation across different architectures. The structure begins with a single byte specifying the byte order: 0 for big-endian (XDR) or 1 for little-endian (NDR). This is followed by a 4-byte unsigned indicating the type, which may include flags in extended variants for dimensions (Z for , M for measure) and identifier (SRID). Coordinates are encoded as 8-byte double-precision floating-point values, with 16 bytes per 2D point (X and Y); additional dimensions add 8 bytes each if flagged. For aggregate geometries like MultiPoint or , the encoding includes a count of elements (4-byte ) followed by the WKB representations of each component. Geometry type codes are assigned as follows: 1 for Point, 2 for LineString, 3 for , 4 for MultiPoint, 5 for MultiLineString, 6 for MultiPolygon, and 7 for GeometryCollection; codes 13 and above are reserved for curve types in extended profiles. SRID embedding is optional and indicated by a (e.g., 0x20000000 in little-endian) within the type field, followed by a 4-byte signed integer for the SRID value if present; this allows geometries to carry coordinate reference system information directly. For example, the simple 2D Point at coordinates (0, 0) in little-endian byte order is encoded as the 21-byte sequence 0101000000000000000000000000000000000000, where the first byte is 01 (little-endian), the next four bytes are 01000000 (type 1), and the remaining 16 bytes represent the zero doubles for X and Y. WKB's advantages include its compactness—reducing data size compared to textual formats—and streamlined parsing without string processing, making it ideal for database storage and network transmission. An extension known as Extended WKB (EWKB) builds on this by mandating SRID, Z, and M support via dedicated flags, as implemented in systems like PostgreSQL's for enhanced interoperability.

Implementations

Database Systems

PostGIS, an extension for the relational database management system, provides full support for the ISO 19125-2 standard, which defines the Simple Features for SQL specification. It implements a native data type that encompasses all required primitive and aggregate types, along with a comprehensive suite of spatial functions prefixed with ST_, such as ST_Intersects and ST_Buffer, enabling operations like intersection and buffering. For efficient querying, PostGIS utilizes Generalized Search Trees (GiST) for R-tree-based spatial indexing, which accelerates operations on large datasets by supporting bounding box and exact searches. Oracle Spatial and Graph, integrated into the , offers a native SDO_GEOMETRY that stores Simple Features-compliant geometries, including points, lines, polygons, and collections, with support for both planar and geodetic coordinate systems. Its SDO_ functions, such as SDO_GEOM.SDO_INTERSECTION and SDO_BUFFER, align closely with the SQL/MM spatial standard while extending OGC Simple Features for SQL functionality, ensuring compatibility for tasks like geometric union and distance calculations. Oracle's implementation includes advanced indexing via secondary spatial indexes, which optimize performance for spatial joins and proximity queries in enterprise environments. MySQL's spatial extensions, first introduced in version 4.1 and significantly enhanced starting from version 5.7, support basic Simple Features types through its geometry data type family, including POINT, LINESTRING, and , but are restricted to planar coordinate systems without support for curved geometries like CIRCULARSTRING. Spatial functions such as ST_Intersects and ST_Area, derived from Boost.Geometry, allow for fundamental operations like containment and area computation, with indexing available for and storage engines to enhance query speed on moderate datasets. While compliant with core OGC Simple Features for basic use cases, MySQL's implementation lacks full ISO 19125-2 coverage, particularly for advanced and features. Microsoft SQL Server incorporates geometry and geography data types to handle Simple Features, where geometry supports planar Euclidean operations and geography enables ellipsoidal earth-model calculations for latitude-longitude data. These types partially align with OGC Simple Features for SQL version 1.1.0 through methods like STIntersects and STBuffer, facilitating spatial queries such as overlap detection and buffering, though full ISO 19125-2 compliance is not achieved due to omissions in certain aggregate operations. Performance is bolstered by spatial indexes using a grid-based approximation, which supports efficient filtering for large-scale applications. SpatiaLite, an extension for the embedded database, provides comprehensive support for the OGC Simple Features specification, including all primitive and aggregate types, spatial functions compliant with SQL/MM, and spatial indexing using R-trees for efficient querying in lightweight applications such as mobile GIS and desktop tools. It enables storage, retrieval, and manipulation of vector data in a file-based format, ensuring portability and interoperability with standards like Well-Known Text and . Recent advancements post-2020 have extended Simple Features compatibility to databases through specialized extensions, notably MongoDB's native support for formats that adhere to the core Simple Features geometry model, including points, lines, and polygons for geospatial indexing and aggregation. These adapters enable geoWithin and geoIntersects operators for spherical queries, bridging relational standards with document-oriented storage while maintaining for hybrid data architectures.

Software Libraries

GDAL/OGR is a C++ library that provides robust support for reading and writing Simple Features data across over 80 formats, including native handling of Well-Known Text (WKT) and Well-Known Binary (WKB) representations for geometry encoding. In R, the package implements Simple Features as data frames augmented with simple feature geometry (sfc) columns, enabling seamless integration of spatial data into workflows, and has achieved full compliance with the OGC Simple Features standard since its initial release in 2017. The Java Topology Suite (JTS) offers a comprehensive object model for planar geometries conforming to the OGC Simple Features specification, including implementation of the for topological relationships such as and . GeoTools builds on JTS to provide a standards-compliant toolkit for geospatial data processing and web services, including support for Simple Feature types in applications like implementations. In , Shapely delivers efficient geometric operations on Simple Features types, drawing from JTS via the GEOS library, while extends DataFrames with spatial capabilities, using for input/output operations on vector formats to facilitate and . Recent developments in the include the geo-types crate, part of the GeoRust ecosystem, which defines performant primitive types like Point, LineString, and Polygon adhering to OGC Simple Features standards for high-efficiency geospatial computations. Additionally, FlatGeobuf, updated through 2025, serves as a binary storage format for collections of Simple Features, leveraging for fast, random-access reading of large vector datasets while maintaining compatibility with OGC geometry types.

Extensions and Profiles

Legacy Interfaces

The Simple Features for OLE/COM specification, released in revision 1.1 on May 18, 1999, provided a binding of the core Simple Features model to Microsoft's (COM) and (OLE) technologies, enabling geospatial data access within Windows-based applications. This interface leveraged for data access and Data Objects (ADO) for manipulation, with geometry objects implementing the IDispatch interface to support scripting in languages like and , thus facilitating integration into enterprise environments without deep low-level programming. In parallel, the Simple Features for CORBA specification, also in revision 1.1 and published on June 2, 1999, defined a model using the (CORBA) to enable client-server interactions in geographic information systems (GIS). It specified interfaces for feature collections, geometry types, and spatial operations, allowing platform-independent access to geospatial data across heterogeneous networks, which was particularly suited for multi-vendor GIS deployments in the late . These legacy interfaces lacked formal ISO standardization, unlike the SQL counterpart, and offered only limited support for curved geometries, restricting them to between vertices in 2D space. They have been largely superseded by modern web services such as (WFS) for distributed access and the unified ISO 19125 Simple Feature Access standard for broader interoperability. Today, both are considered deprecated, with minimal active use after 2010, though remnants persist in legacy codebases of older GIS systems that relied on for custom extensions.

Modern Adaptations

GeoSPARQL, an OGC standard adopted in 2012, extends the Simple Features specification to the by providing an RDF/OWL for representing and querying geospatial data. It incorporates Simple Features geometries, such as points, lines, and polygons, encoded as WKT literals within RDF triples, enabling semantic queries via extensions for both qualitative spatial relations (e.g., topological) and quantitative computations. This integration facilitates applications where spatial features are reasoned over alongside non-spatial ontologies, supporting advanced queries in domains like . The GML Simple Features Profile, published by OGC in 2006, defines a simplified XML encoding schema for Simple Features data, constraining the full (GML) to basic geometries and attributes for enhanced interoperability. Designed primarily for web services like (WFS), it allows efficient exchange of vector data in service-oriented architectures, reducing complexity while maintaining compatibility with core Simple Features types such as lines and polygons. This profile has been foundational for XML-based geospatial web integrations, enabling standardized feature retrieval and manipulation. In non-relational databases, Simple Features principles have been adapted with partial compliance; , for example, natively supports objects—aligned with Simple Features geometry types like Point, LineString, and —through 2dsphere indexes that enable spherical geospatial queries such as geoWithin and geoIntersects for proximity and containment operations. incorporates spatial extensions via frameworks like GeoMesa, which provide distributed indexing and querying for Simple Features data using accumulo-backed storage. These adaptations prioritize efficient storage and retrieval over full topological compliance, suiting applications. Simple Features interfaces with 3D enhancements through alignment with ISO 19107 Spatial Schema (2019 edition), which extends the 2D core to include volumetric primitives like , defined as bounded manifolds in three-dimensional coordinate reference systems for representing complex geographic entities such as buildings or terrains. This standard supports spatial operations on 3D geometries, including intersections and unions, but core Simple Features implementations remain limited to 2D, treating 3D as optional extensions without mandatory validation. As of 2025, Simple Features underpins modern applications in real-time navigation, where standardized geometries enable and location services across platforms, and systems, facilitating rapid integration of data for hazard mapping and evacuation planning. Complementing these, FlatGeobuf serves as an efficient binary encoding for Simple Features collections, supporting all OGC geometry types including curves and enabling packed indexing for fast spatial filtering in vector tile streaming, with performance benchmarks showing up to 0.46x faster reads than Shapefiles for large datasets.

References

  1. [1]
    SFA Standard | Simple Features Access | OGC
    This part of Simple Features Access (SFA), also called ISO 19125, describes the common architecture for simple feature geometry.
  2. [2]
    ISO 19125-1:2004 - Geographic information — Simple feature access
    In stockISO 19125-1:2004 establishes a common architecture for geographic information and defines terms to use within the architecture.
  3. [3]
    Simple Feature Standard (SFS) | OGC Publications
    Discover OGC's Simple Feature Standard (SFS), enabling interoperability for the storage, access, and sharing of geospatial vector data.
  4. [4]
    OGC History | Shaping the Future of Geospatial Standards
    1994: OGC was founded on September 25th with 8 charter members ; 1995: OGC reaches 20 members ; 1997: OGC's First Standard – Simple Features Approved ; 1999: First ...
  5. [5]
    ISO 19125-2:2004 - Geographic information — Simple feature access
    This part of ISO 19125:2004 specifies an SQL schema that supports storage, retrieval, query and update of simple geospatial feature collections.
  6. [6]
    [PDF] OpenGIS Project Document 99-050 - OGC Portal
    OpenGIS Project Document 99-050, OpenGIS Simple Features Specification for OLE/COM Revision 1.1. “OLE DB is a set of OLE interfaces that provide applications ...
  7. [7]
    SFS 1.1 Conformance Test Suite - OGC
    Apr 12, 2024 · Verifies conformance to OpenGIS Simple Features Specification For SQL, Revision 1.1 (OGC 99-049, 1999-05-09)[1].
  8. [8]
    [PDF] Simple feature access - Part 1 - OGC Portal
    May 28, 2011 · This version supersedes all previous versions of OpenGIS® Simple Features Implementation Standard for SQL, including portions of OGC 99-049 " ...Missing: 1999 | Show results with:1999
  9. [9]
    1. Simple Features for R • sf - r-spatial
    Simple features or simple feature access refers to a formal standard (ISO 19125-1:2004) that describes how objects in the real world can be represented in ...
  10. [10]
    [PDF] ISO 19125-1 - iTeh Standards
    Aug 1, 2004 · ISO 19125-1 is an international standard for geographic information, simple feature access, part 1: common architecture.
  11. [11]
  12. [12]
  13. [13]
    PostGIS 3.5.5dev Manual
    This method implements the SQL/MM specification. SQL-MM ISO/IEC 13249-3: 8.5. This function supports 3d and will not drop the z-index. This function supports ...
  14. [14]
    Spatial Data Types and Metadata - Oracle Help Center
    The spatial features in Oracle Spatial and Graph consist of a set of object data types, type methods, and operators, functions, and procedures that use ...
  15. [15]
    [PDF] Spatial and Graph Analytics with Oracle Database 12c Release 2
    Nov 2, 2016 · Multiple versions of Oracle Spatial and Graph comply with the OGC Simple Features Specification for SQL, Revision. 1.1, Types and Functions ...<|separator|>
  16. [16]
    Spatial Concepts - Oracle Help Center
    Oracle Spatial and Graph is an integrated set of functions, procedures, data types, and data models that support spatial and graph analytics.
  17. [17]
    MySQL 8.4 Reference Manual :: 13.4 Spatial Data Types
    MySQL spatial extensions enable the generation, storage, and analysis of geographic features: Data types for representing spatial values. Functions for ...Optimizing Spatial Analysis · 13.4.10 Creating Spatial Indexes · Documentation
  18. [18]
    SQL Server data types supported in ArcGIS—ArcMap | Documentation
    Conforms to the Open Geospatial Consortium (OGC) Simple Features for SQL Specification version 1.1. 9, and compliant with SQL MM, an ISO standard.
  19. [19]
    GeoJSON Objects - Database Manual - MongoDB Docs
    MongoDB supports the GeoJSON object types listed on this page. To specify GeoJSON data, use an embedded document with: a field named type that specifies the ...Missing: Simple compliance post- 2020
  20. [20]
    Geospatial Queries - Database Manual - MongoDB Docs
    MongoDB supports spherical surface calculations on legacy coordinate pairs by using a 2dsphere index if you manually convert the data to the GeoJSON Point type.Missing: Simple compliance post- 2020
  21. [21]
    GDAL/OGR — OSGeoLive 16.0 Documentation
    GDAL supports over 140 raster formats, and OGR over 80 vector formats. ... The OGR vector data model is compliant with the OGC Simple Features specification.
  22. [22]
    GDAL — GDAL documentation
    The NEWS page describes the November 2025 GDAL/OGR 3.12.0 release. This documentation is also available as a PDF or a ZIP of individual HTML pages for offline ...API · Raster drivers · Vector drivers · Software using GDAL
  23. [23]
    Simple Features for R • sf - r-spatial
    Support for simple feature access, a standardized way to encode and analyze spatial vector data. Binds to GDAL for reading and writing data, to GEOS for ...
  24. [24]
    Simple Features for R • sf - r-spatial
    Simple features is an open (OGC and ISO) interface standard for access and manipulation of spatial vector data (points, lines, polygons). It includes a ...The Problem · The Plan · How Can The Isc Help
  25. [25]
    Simple Features Tutorial in R - Rob Wiederstein
    Mar 28, 2022 · The simple features package was first released in January 2017. Its design and philosophy mirror other packages included in the “tidyverse”.
  26. [26]
    JTS | Features
    Support for all Geometry types defined in the OGC Simple Features for SQL specification, including: Point and MultiPoint · LineString and MultiLineString ...
  27. [27]
    JTS Topology Suite - OSGeo
    JTS Topology Suite provides an object model for planar geometry together with a set of fundamental geometric functions. JTS conforms to the Simple Features ...
  28. [28]
    Point Set Theory and the DE-9IM Matrix - GeoTools Documentation
    The 9-Intersection Matrix lists the intersection of the interior, boundary and exterior of each geometry with the other (for a total of nine combinations).
  29. [29]
    Feature — GeoTools 35.x User Guide
    A “simple” feature is an object that can be drawn on a map (i.e. a feature) that does not contain any complicated internal structure. A SimpleFeature is “flat” ...Missing: deegree WFS
  30. [30]
    GeoTools - OSGeo
    An open source Java library providing a standards compliant approach for visualization and processing of geospatial data and web services.
  31. [31]
    Data structures — GeoPandas 1.1.1+0.ge9b58ce.dirty documentation
    GeoPandas has three basic classes of geometric objects (which are actually Shapely objects): Points / Multi-Points. Lines / Multi-Lines.Geoseries · Overview Of Attributes And... · GeodataframeMissing: O | Show results with:O
  32. [32]
    1 The Fiona User Manual
    It is a Python wrapper for vector data access functions from the GDAL/OGR library. A very simple wrapper for minimalists.
  33. [33]
    Crate geo - Rust - Docs.rs
    geo geometries ( Point , Line , LineString , Polygon , MultiPolygon ) can be used with the rstar R*-tree crate for fast distance and nearest-neighbour queries.Missing: performant | Show results with:performant
  34. [34]
    geo_types - Rust - Docs.rs
    The geo-types library defines geometric types for the GeoRust ecosystem. In most cases, you will only need to use this crate if you're a crate author.Missing: performant | Show results with:performant
  35. [35]
    flatgeobuf/flatgeobuf: A performant binary encoding for ... - GitHub
    A performant binary encoding for geographic data based on flatbuffers that can hold a collection of Simple Features including circular interpolations.
  36. [36]
    FlatGeobuf - Cloud-Optimized Geospatial Formats Guide
    FlatGeobuf is a binary file format for geographic vector ... FlatGeobuf supports any vector geometry type defined in the OGC Simple Features specification.Missing: 2025 | Show results with:2025
  37. [37]
    FlatGeobuf — GDAL documentation
    This driver implements read/write support for access to features encoded in FlatGeobuf format, a performant binary encoding for geographic data.
  38. [38]
    [PDF] OpenGIS Simple Features Specification for CORBA - OGC Portal
    Jun 2, 1999 · Document Number 96-021): Item 3 Simple Feature API for CORBA: ... Figure 2.2 Abstract Model of OpenGIS geometry Interfaces. A Spatial ...
  39. [39]
  40. [40]
  41. [41]
    ISO 19107:2019
    ### Summary of ISO 19107:2019
  42. [42]
    OGC Simple Features: Powering Modern Geospatial Systems
    May 15, 2025 · Developed by OGC as its first Standard, Simple Features defines how spatial data – such as points, lines, and polygons – should be structured ...
  43. [43]
    FlatGeobuf | flatgeobuf
    A performant binary encoding for geographic data based on flatbuffers that can hold a collection of Simple Features including circular interpolations.