5.10 地図的モデリング

ラスター代数は、地図的モデリングに広く使用され、GISシステムの必須の構成要素と考えられます。PL/SQLとラスター代数の式およびファンクションを使用して、事実上無制限のサイズの多数のラスターおよびイメージを対象に地図的モデリングを実行できます。

たとえば、山火事の評価の地図的モデリング・プロセスでは、標高、傾斜、方位、温度、湿度などの情報を一連のラスター・レイヤーから取得し、1つずつセルを評価して結果のラスター地図を作成できます(この地図はさらに主題地図を作成するために分類できます)。ラスター・レイヤーのオーバーレイ技術を使用した変更分析、用地選定、適合性分析、気候モデリングおよび油田評価は、他の典型的な地図的モデリング・プロセスです。これらの場合、状況に応じて算術、関係および論理演算子を組み合せる必要があります。

架空の地図的モデルに7つの異なるラスター・レイヤーが含まれ、次のような式があり、モデリングの結果はセル値として0および1を持つラスター地図であると仮定します。

output = 1 if ( (100 < layer1 <= 500) 
                & (layer2 == 3 or layer2 == 10) 
                & ( (layer3+layer4) * log(Layer5) / sqrt(layer5) ) >= layer6) 
                || (layer7 != 1) ) 
                is TRUE and
         0 if otherwise

例5-24は、GeoRasterで前述の地図的モデルを実行してその結果をビットマップとして格納する方法を示しています。

例5-24 地図的モデリング

DECLARE 
  geor       SDO_GEORASTER;
  geor1      SDO_GEORASTER;
  mycursor   sys_refcursor;
  expr       varchar2(1024);
BEGIN
  --7 source GeoRaster objects, each of which contains one source layer in the order of 1 to 7
  OPEN mycursor FOR
    select georaster from georaster_table where georid >0 and georid <=7 order by georid;
  --Output GeoRaster object to contain the result
  insert into georaster_table (georid, georaster) values (8, sdo_geor.init('RDT_1',8))
    returning georaster into geor1;
  --Modeling using arithmeticExpr, booleanExpr, and rasterMathOp 
  expr := 
   'condition(
         ( (100<{0,0}) & ({0,0}<=500) )
           & ( ({1,0}=3) | ({1,0}=10) )
           & ( ( ( ({2,0}+{3,0}) * log({4,0} ) / sqrt({4,0}) ) >= {5,0} ) | ({6,0}!=1) 
         ),
         1,
         0)';
  sdo_geor_ra.rasterMathOp(mycursor, sdo_string2_array(expr), 
                           'celldepth=1BIT', geor1, 'true', 0, 'parallel=4');
  update georaster_table set georaster = geor1 where georid = 8;
  commit;
END;
/

例5-24のプロセスでは、NODATAを考慮し、1つ以上のソース・レイヤーのNODATAセルである任意のセルに0(ゼロ)を割り当てます。これは、データベース・サーバーの複数のCPUを利用してパフォーマンスを向上するために、4つのプロセスにパラレル化されます。