Simple Feature Access
Simple Feature Access ist eine Spezifikation des Open Geospatial Consortium, welche eine allgemein gültige Architektur für geografische Daten und deren Geometrien definiert.
Die Spezifikation beschreibt einerseits die Speicherung und den Zugriff auf Geometrien und andererseits verschiedene räumliche Operatoren.
Geometrie-Klassenmodell
Folgende instanziierbare Klassen beinhaltet das Modell:
- Punkte (Point)
- Linien (LineString)
- Polygone (Polygon)
- Hierbei sind die Punkte des äußeren Ringes entgegengesetzt dem Uhrzeigersinn (linksdrehend) sortiert.
- Die Punkte des inneren Ringes (Loch) im Uhrzeigersinn (rechtsdrehend) sortiert
- Mehrere Punkte (MultiPoint)
- Mehrere Linien (MultiLineString)
- Mehrere Polygone (MultiPolygon)
- Sammlung dieser Geometrien (GeometryCollection)
Sämtliche Geometrien leiten sich von der abstrakten Klasse Geometry ab.
Methoden auf Geometrieobjekte
Die Simple Feature Access Spezifikation unterscheidet drei verschiedene Gruppen von Methoden:
- Die erste Gruppe stellt verschiedene grundlegende Methoden zur Verfügung wie z. B. die Abfrage des Geometrietyps (GeometryType), die Abfrage der Ausdehnung (Envelope) oder die Rückgabe der Geometrie als Text (AsText).
- In der zweiten Gruppe werden Methoden zusammengefasst, welche räumliche Beziehungen zwischen geometrischen Objekten beschreiben. Zu diesen Methoden gehören z. B. ob Objekte gleich sind (Equals), sich schneiden (Intersects) oder sich berühren (Touches).
- Die letzte Gruppe schließlich beinhaltet Methoden zur räumlichen Analyse wie z. B. Pufferzone (Buffer), Verschneidung (Intersection) oder Differenz (Difference).
Repräsentation der Geometrie
Ein weiterer Teil der Spezifikation umfasst die Repräsentation der Geometrie. Dazu gehören das sogenannte Well-known-Text- (WKT) bzw. das Well-known-Binary(WKB)-Format.
Well-known Text
Die Well-known-Text-Repräsentation wird vor allem dazu verwendet, um die Geometrie alphanumerisch darstellen zu können. Beispiele für Well-known Text:
- Punkt
Point(10 10)
- LineString (Linie mit "Knickpunkten")
LineString(10 10, 20 20, 30 40)
- Polygon (Fläche)
ein Polygon wird von zwei Klammern umschlossen. Polygon ohne Loch:
Polygon((10 10, 10 20, 20 20, 20 15, 10 10))
mit einem äußeren Ring und einem inneren Ring (Loch)
Polygon((0 0, 0 20, 20 20, 20 0, 0 0),(5 5, 5 15, 15 15, 15 5, 5 5))
- Mehrfachpolygon
zwei Polygone
MultiPolygon(((10 10, 10 20, 20 20, 20 15, 10 10)),((60 60, 70 70, 80 60, 60 60 )))
zwei Polygone, erstes Polygon mit Loch:
MultiPolygon(((0 0, 0 20, 20 20, 20 0, 0 0),(5 5, 5 15, 15 15, 15 5, 5 5)),((30 30, 30 40, 40 40, 40 30, 30 30)))
Die erste Klammer umhüllt das komplette Multipolygon. Die folgenden zwei Klammern umschließen das jeweilige Polygon. Ist in diesem Polygon ein Loch, so wird eine Klammer geschlossen, und durch ein Komma das zweite Polygon abgetrennt. Liegt das zweite Polygon geometrisch innerhalb des ersten, so stellt dieses ein Loch dar, liegt es geometrisch außerhalb des Polygons, so handelt es sich bei diesem um eine Exklave.
Well-known Binary
Die Well-known-Binary-Repräsentation ist eine übertragbare Repräsentation der Geometrien als eine kontinuierliche Byte-Datenkette. Als Datentypen verwendet WKB Integer ohne Vorzeichen aus einem bzw. vier Byte und Zahlen doppelter Genauigkeit aus acht Byte. Beispiel für Well-known-Binary:
- Punkt mit Koordinate 1,1
0101000000000000000000F03F000000000000F03F
Diese Datenkette bedeutet in Teile zerlegt folgendes:
01 : Byte-Reihenfolge 01000000 : Geometrietyp 000000000000F03F : X 000000000000F03F : Y
Repräsentation von Koordinatensystemen
Simple Feature Access standardisiert ebenfalls die Repräsentation von geodätischen Systemen mit geografischen, projizierten oder geozentrischen Koordinaten in einer alphanumerischen Form als Well-known-Text. Beispiele für die Repräsentation von Koordinatensystemen:
PROJCS["UTM Zone 10, Northern Hemisphere",
GEOGCS["clark66",
DATUM["North_American_Datum_1927",
SPHEROID["clark66",6378206.4,294.9786982]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",-123],
PARAMETER["scale_factor",0.9996],
PARAMETER["false_easting",500000],
PARAMETER["false_northing",0],
UNIT["Meter",1]]
- Geografisches Koordinatensystem WGS84
GEOGCS["wgs84",
DATUM["WGS_1984",
SPHEROID["wgs84",6378137,298.257223563],
TOWGS84[0.000,0.000,0.000]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433]]
Verwendung
Die Simple Feature Access Spezifikation hat in der Geoinformatik sowohl in Open-Source-Projekten als auch in proprietären Programmen eine weite Verbreitung. Zwei bekannte LGPL lizenzierte Programmbibliotheken sind die JTS Topology Suite und GEOS. JTS stellt dabei eine API für Java bereit, GEOS ist hingegen eine API für C++. Durch die Verwendung von GEOS in PostGIS kann WKT/WKB direkt in der Datenbank PostgreSQL verwendet werden.
Weblinks
- Simple Feature Access Spezifikation des Open Geospatial Consortium (englisch)