一部のメソッドは、ST_Geometryタイプで表わされるサブタイプ専用です。例えば、ST_Pointの値を表わすST_Geometryタイプのみを操作するメソッドがあります。
その他のメソッドでは、地理空間型間での空間リレーションシップを確認します。次に示すテーブルについて考察します。このテーブルではsample_citiesで都市のリストを表わし、sample_streetsで道路のリストを表わします。
CREATE TABLE sample_cities( skey INTEGER, cityName VARCHAR(40), cityShape ST_GEOMETRY); CREATE TABLE sample_streets( skey INTEGER, streetName VARCHAR(40), streetShape ST_GEOMETRY);
次に示すリクエストでは、sample_citiesテーブルにポリゴン値を挿入し、sample_streetsテーブルに折れ線値を挿入しています。
INSERT INTO sample_cities VALUES(0, 'Oceanville', 'POLYGON((1 1, 1 3, 6 3, 6 0, 1 1))'); INSERT INTO sample_cities VALUES(1, 'Seaside', 'POLYGON((10 10, 10 20, 20 20, 20 15, 10 10))'); INSERT INTO sample_streets VALUES(1, 'Main Street', 'LINESTRING(2 2, 3 2, 4 1)'); INSERT INTO sample_streets VALUES(1, 'Coast Blvd', 'LINESTRING(12 12, 18 17)');
次に示す問合わせでは、ST_Withinメソッドを使用して、いずれかの道路が、いずれかの都市の範囲内にあるかどうかを確認します。
SELECT streetName, cityName FROM sample_cities, sample_streets WHERE streetShape.ST_Within(cityShape) = 1 ORDER BY cityName; streetName cityName ---------------------------------------- ---------------- Coast Blvd Seaside Main Street Oceanville