名前

ST_LargestEmptyCircle — ジオメトリとオーバラップ市内最大の円を計算します。

概要

(geometry, geometry, double precision) ST_LargestEmptyCircle(geometry geom, double precision tolerance=0.0, geometry boundary=POINT EMPTY);

説明

障害物となるポイント集合またはライン集合に重ならない最大の円を探します (ポリゴンジオメトリは障害物として取り込まれますが、境界線しか使われません)。円の中心はポリゴン境界の内側に存在するという制約があります。ポリゴン境界は、デフォルトでは入力ジオメトリの凸包です。円の中心は、障害物から最も遠い距離を持つ境界の内部の点です。円自体は中心点と、円半径を決める障害物上にある点の最近傍点から決まります。

円の中心は、反復的なアルゴリズムを使って、距離許容値で指定された精度に決定されます。精度距離が指定されていな場合には、妥当なデフォルトが使われます。

次のフィールドを含むレコードを返します:

  • center - 円の中心点

  • nearest - 中心に最も近い、ジオメトリ上のポイント

  • radius - 円の半径

ポリゴン内部において最大の空の円を見つけるには、ST_MaximumInscribedCircleをご覧下さい。

Availability: 3.4.0.

GEOS 3.9.0以上が必要です。

SELECT radius,
       ST_AsText(center) AS center,
       ST_AsText(nearest) AS nearest
  FROM ST_LargestEmptyCircle(
        'MULTILINESTRING (
          (10 100, 60 180, 130 150, 190 160),
          (20 50, 70 70, 90 20, 110 40),
          (160 30, 100 100, 180 100))');

ラインの集合の中で最大の空の円。

SELECT radius,
       ST_AsText(center) AS center,
       ST_AsText(nearest) AS nearest
  FROM ST_LargestEmptyCircle(
         St_Collect(
           'MULTIPOINT ((70 50), (60 130), (130 150), (80 90))',
           'POLYGON ((90 190, 10 100, 60 10, 190 40, 120 100, 190 180, 90 190))'),
         'POLYGON ((90 190, 10 100, 60 10, 190 40, 120 100, 190 180, 90 190))'
       );

ポリゴン内に存在する制約を課されたポイント集合内の最大の空の円。制約ポリゴンの境界は障害物として含めるとともに、円の中心の制約としても指定しなければなりません。

関連情報

ST_MinimumBoundingRadius