書式
SDO_UTIL.SIMPLIFYVW( geometry IN SDO_GEOMETRY, vertex_threshold IN NUMBER, tolerance IN NUMBER DEFAULT 0.0000005, remove_loops IN NUMBER DEFAULT 0 ) RETURN SDO_GEOMETRY;
説明
Visvalingham-Whyattアルゴリズムを使用して、しきい値に基づいて入力ジオメトリを簡略化します。
パラメータ
簡略化するジオメトリを指定します。
ジオメトリの簡略化に使用するしきい値を指定します(0から100までの割合の値として表します)。値が小さくなると、戻されるジオメトリは入力ジオメトリにより近くなり、値が大きくなると、戻されるジオメトリの点は少なくなります。
異なる値を試して、必要な簡略化レベルを決定することができます。
許容差(「許容差」を参照)。値を指定しない場合のデフォルト値は、0.0000005です。
一部の線ジオメトリでは、線を簡略化すると、途中で自己交差するループとなることがあります。これは(線としては)有効なジオメトリですが、場合によっては、簡略化操作の結果にこれらのループが存在することは望ましくないことがあります。0
の値(デフォルト)を指定すると、このようなループは除去されません。1
の値(または、他の任意の正の数)を指定すると、このようなループはすべて除去され、単純な線セグメントが常に戻されます。
使用上の注意
SDO_UTIL.SIMPLIFYファンクションの「使用上の注意」を参照してください(同じように入力ジオメトリを簡略化していますが、異なるアルゴリズム(Douglas-Peucker)を使用しています)。
例
次の例では、SDO_UTIL.SIMPLIFYの例で使用されている線ストリング・ジオメトリと同じものを簡略化します。
SELECT SDO_UTIL.SIMPLIFYVW( SDO_GEOMETRY( 2002, -- line string, 2 dimensions (X,Y) NULL, NULL, SDO_ELEM_INFO_ARRAY(1,2,1), -- one line string, straight segments SDO_ORDINATE_ARRAY( 2,2, -- Starting point 2,4, 8,4, 12,4, 12,10, 8,10, 5,14) -- Ending point ), 80, -- threshold "percentage" value for geometry simplification 0.5 -- tolerance ) FROM DUAL; SDO_UTIL.SIMPLIFYVW(SDO_GEOMETRY(2002,--LINESTRING,2DIMENSIONS(X,Y)NULL,NULL,SDO -------------------------------------------------------------------------------- SDO_GEOMETRY(2002, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY( 2, 2, 12, 4, 5, 14))
この場合(vertex_threshold
値として80を使用)に結果として生成されるジオメトリには、SDO_UTIL.SIMPLIFYの例と同じ点が含まれますが、メジャー次元情報は含まれません(つまり、頂点は2,2、12,4および5,14です)。vertex_threshold
値を大幅に低く設定すると、結果としてより多くの頂点を含むジオメトリが生成される可能性があります。