こんにちは
「抽出」としてどんな結果を求めているのかによりますが、もっとも解析結果を
そのままシンプルに得る方法として、プロセシングツールの「属性の空間結合」を使い、
ベースレイヤと結合レイヤをともに対象とする同一レイヤを指定します。
今回の目的の場合、空間関係は touches を選択。
結合のタイプとして「マッチした地物ごとに地物を作成(1対多結合)」を選びます。
処理の結果、マッチした分だけ地物(行)ができるので、地物としては当然
同じ形状のポリゴンが多数作成されます。
このほか、プロセシングツールの GDAL ツリー内の「 SQL の実行」を選択し、
SQL 文として下記のような文を入力します。
SELECT A.geom, A.id, GROUP_CONCAT(B.id) AS "B_ids"
FROM INPUT AS A, INPUT AS B
WHERE st_touches(A.geom, B.geom)
GROUP BY A.id;
SQL の方言は SQLite を選択して実行すると、隣接する地物の ID をカンマ区切りで
得ることができます。ただ、結果を視覚で確認するには適していますが、その後
更に分析を行う場合には(カンマ区切りの文字列状態なので)面倒です。
※ no such table: INPUT というエラーログが出た場合は、 INPUT ではなく
対象レイヤのファイルとしてのレイヤ名(ファイル名)を指定してください。
一時レイヤの場合は、 INPUT という名前で一時ファイルを作成したのちに
処理するため、エラーなく通ります。
※ SQL を実行するツールはほかにもありますが、個人的な経験ではどうも
うまく処理するための使い方がわかっていません。
また SQL や R 、 Python などで GIS 処理可能でしたら、 QGIS 内のツールから
ではなく、直接実行すると安定して処理できるためおすすめです。