Web Map Server リーダー

OpenGIS® Web Map Service (WMS 標準) Implementation Specification は、空間参照されたデータの地図を地理情報から動的に作成します。この国際規格は、コンピューター画面での表示に適したデジタル・イメージ・ファイルとして地理情報の描画となる地図を定義している。OpenGIS 規格は、3 つの操作 (GetCapabilitiesGetMap、および GetFeatureInfo) を提供して、複数のリモート・ソース、異なるソースから同時に派生した情報について、登録済みの重なった地図のようなビューを作成して表示します。OpenGIS 規格の詳細については、http://www.opengeospatial.org/ を参照してください。
Web Map Server (WMS) からイメージを読み込むのには、2 つの方法があります。
  • IlvWMSReader インスタンスを直接使用する。この場合、WMS 機能をグラフィック・オブジェクトにレンダリングするのに必要なコードをすべて書いて、それをマネージャーに追加する必要があります。
  • IlvWMSDataSource. これは、一時に上記操作をすべて実行する便利な方法で、地図のデータ・モデルにより統合されています。
このセクションで説明されているコードをすべて含む Map Builder のデモ用ソース・コードについては、 <installdir> /jviews-maps89/samples/mapbuilder/index.html をご覧ください。
IlvWMSReader クラスは、指定された Web Map Server URL からイメージ機能を読み込みます。また読み込み機能で反復処理を行う IlvMapFeatureIterator インターフェースが実装されます。
IlvWMSDataSource クラスは、マネージャーの Web Map Server から取得されたイメージを含む 1 組のレイヤーを作成する便利な方法を提供しています。
IlvWMSReader クラスを使用して、Web Map Server から WMS 機能を読み込んでラスター・データを作成するには、以下の手順に従います。
  1. サーバー URL から IlvWMSReader インスタンスを作成します。WMS サーバーの URL には、機能に対する完全な http WMS 要求、または最低限、このサーバーに対する WMS 要求 URL を使用できます。この情報はサーバーごとに異なり、通常はサーバーのマニュアルに記載されています。例えば、以下のようになります。
    URL url = new URL("http://wms.jpl.nasa.gov/wms.cgi?request=GetCapabilities"); // "http://wms.jpl.nasa.gov/wms.cgi" will work as well
    IlvWMSReader reader = new IlvWMSReader(url);
    
  2. レンダリングするレイヤーの名前を設定します。レイヤー名はサーバー機能から取得できます。
    String[] layers = reader.getAvailableLayers();
    reader.setLayerNames(new String[]{layers[0]});
    
  3. 例えば、WMS イメージをレンダリングするのに使用する変換を設定します。
    IlvCoordinateSystem cs = IlvCoordinateSystemProperty.
       GetCoordinateSystem(manager);
    reader.setTransformation(IlvCoordinateTransformation.CreateTransformation
       (cs, IlvGeographicCoordinateSystem.KERNEL));
    
  4. 機能を反復し、適切な IlvFeatureRenderer でレンダリングして、マネージャーに割り当てます。
    IlvMapFeature feature = reader.getNextFeature();
    IlvFeatureRenderer renderer = reader.getDefaultFeatureRenderer();
    while(feature != null) {
      // Render the map feature into a graphic object.
      IlvGraphic graphic = renderer.makeGraphic(feature,null);
      // Add this object to the first layer of the manager.
      manager.addObject(graphic, 0, false);
      feature = reader.getNextFeature();
    }
    
IlvWMSDataSource クラスを使用して WMS 機能を読み取るには、次の手順に従います。
  1. サーバー URL から IlvWMSDataSource インスタンスを作成します。WMS サーバーの URL には、機能に対する完全な http WMS 要求、または最低限、このサーバーに対する WMS 要求 URL を使用できます。この情報はサーバーごとに異なり、通常はサーバーのマニュアルに記載されています。例えば、以下のようになります。
    URL url = new URL("http://wms.jpl.nasa.gov/wms.cgi?request=GetCapabilities"); // "http://wms.jpl.nasa.gov/wms.cgi" will work as well
    IlvWMSDataSource source = new IlvWMSDataSource(url);
  2. 取得するレイヤーを設定します。
    IlvWMSReader reader = source.getReader();
    String[] layers = reader.getAvailableLayers();
    source.setLayers(new String[]{layers[0]});
    
  3. オプションとして、タイリング・パラメーターを設定し、ロード・オンデマンドを有効にしたり、拡大時のイメージ解像度を向上させたりすることもできます。
    source.setTilingParameters(true,5,5);
  4. このデータ・ソースをビューのマネージャーに接続します。
    source.setManager(manager);
    
  5. 最後に、WMS データ・ソースをスタートします。
    source.start();