こんにちは、インフォマティクスの空間情報クラブ編集部です。
今回はGEOS(ジオス)についてご紹介します。
GEOSとは
GEOS(ジオス)とはGeometry Engine - Open Sourceの略で、地理空間情報を処理するためのオープンソースライブラリのことをいいます。OSGeo財団が支援するオープンソースプロジェクトの1つです。
GEOSはJTS Technology Suiteのすべての機能をC++に移植したもので、GISの標準化に取り組んでいる団体「OGC(Open Geospatial Consortium)」が定義している OpenGIS Simple Features for SQLに含まれる空間関数と、JTSの高度なトポロジー関数が実装されています。
こちらに詳細が記載されていますので、ご参照ください。(英文)
ここではGEOSを使用するメリットと、GEOSを使用した場合の空間検索の考え方についてご紹介します。
GEOSのメリット
GEOSは、PostGIS、QGIS、GDAL/OGR、MapServer、FMEなど各種オープンソースのプロジェクトで利用されており、また弊社のGISソフト「SIS」でもバージョン7.1以降利用しています。
GEOSを使用した場合の最大のメリットは処理速度の高速化です。
例えば、以下のサイトでは、ジオメトリ処理にGEOSを使用した場合と使用しない場合でのパフォーマンスが比較されています。https://github.com/phayes/geoPHP/wiki/GEOS/
SISでは、GEOSを使用することで従来バージョンと比べて、空間検索やブール演算などのジオメトリ関連の処理速度が向上しました。
このように、GEOSを使用することで、ジオメトリ処理の高速化が期待できます。
GEOSを使った空間検索
GEOSには、主に以下の機能があります。

上記の「ジオメトリ」と「空間関係」を組み合わせると、空間検索の定義が作成されます。
では、どのように空間検索の定義が作成されるのか具体例を使って見てみましょう。
検索例
図1で「赤色の太線で囲まれた領域に対して、対象のジオメトリを含む」という条件で、家形の図形を検索します。 「赤の網掛けの図形」が検索条件に合致したものです。

GEOSではこの検索を、OGCのDE-9IM(参考:http://en.wikipedia.org/wiki/DE-9IM)を使用して、以下のように実施します。
検索条件
今回使用した条件は以下のとおりです。

Relate式
この条件では、「を含む」という図形どうしの関係を「Relate」という式を使って定義しています。 Relate式は、「交差する」や「一致する」など、「空間関係」の条件に応じて、OGCのDE-9IMで定義されています。
例えば、「交差する」は「not Relate("FF*FF****") 」、「一致する」は「Relate("TFFF*FFF*") 」で表わされます。
空間検索を行う場合、まず検索元の領域や検索対象の図形を「内部」「境界」「外部」の3つに分けて、「表1」の①~⑨の空間関係がどのようになっているかを調べます。

これを、「Relate("①②③④⑤⑥⑦⑧⑨")」となるようにRelate式の引数に当てはめます。①~⑨の値は、以下のいずれかの空間関係になります。
今回使用した条件は以下のとおりです。
今回の検索条件の「を含む:Relate("T*****FF*") 」は、①が「T」、⑦と⑧が「F」で、それ以外は「*」です。
つまり、検索元の領域と検索対象の図形が、以下の空間関係を持っていることになります。
図1で検索された赤の網掛けの図形(検索対象)と赤色の太線で囲まれた領域(検索元)の空間関係を、表1に当てはめたものが「表2」です。

Relate式では「Relate("212FF1FF2")」となり、「を含む:Relate("T*****FF*") 」の条件と合致します。
一方、検索されていない図形は、「Relate("212101212")」(図2)あるいは「Relate("FF2FF1212")」(図3)であるため、 「を含む:Relate("T*****FF*") 」の条件に合致しません。

GEOSを使用した空間検索は、このようにして行われます。
おわりに
GEOSを使用した空間検索をメインにご紹介しましたが、いかがでしたでしょうか?
これ以外の検索条件もRelate式で定義されています。空間検索の結果を確認したい場合は、実際にRelate式に当てはめて検証するとよいでしょう。
GEOSを使用した空間検索の定義はシンプルなので、パズルのように組み合わせて確認するのも楽しいと思います。
GISソフトをお探しなら
GISソフトをお探しの方、現在お使いのGISに課題を感じている方は、ぜひGIS(地理情報システム)製品SISをご利用ください。
SISの資料をダウンロードする