投影法

はじめに

地図上のフィーチャは現実世界を表現する物体の実際の位置を示しています。地球という球体の表面上に位置する物体は地理座標系として知られる、緯度と経度で計測されます。緯度と経度によって地球表面の正確な位置を得ることはできますが、計測においては一定の単位にはなりません(赤道に沿った場合のみ、緯度の1度と経度の1度の距離はおおよそ等しくなる)。計測における問題を克服するため、データは3次元の地理座標系から2次元平面の投影座標系に変換されます。投影座標系は原点を(0,0)とする2つの軸からの距離で表現されます(水平方向のx軸は東西方向、垂直方向のy軸は南北方向に対応します)。

地球は球体で地図は平面なため、曲面から平面へ変換するための地図投影と呼ばれる数式が必須になります。地図投影は緯経度を投影座標系のx, y座標値へ変換します。

Globe Geographic Coordinates
球体上の緯経度による表現と地図上のx, y座標値による表現

地球の平面化の過程では、1つもしくは複数の空間的な要素(距離、面積、形状、方位)の歪みが生じます。投影を行わなければこれら全ての要素を保持できますが、全ての平面地図には結果としてある程度の誤差があります。幸運にも多くの異なった地図投影の中から(希望する投影を)選択することができます。各々は地球表面積に応じた表現をするのに適したものや、保持できる要素(距離、面積、形状、方位)の違いによって区別されます。地図投影は、ある1つの要素についての歪みが最小で他の要素が犠牲になるものや、全ての要素の歪みでバランスをとるものがあります。地図作成者としては、どの要素が最も重要なのかを判断し、必要に応じた地図投影を選択しなければいけません。

Sinusoidal Robinson
Sinusoidal投影(左)とRobinson投影(右)を使用した世界地図の表示

投影座標系を使用する理由

地図投影法の選択

ここでは投影法を選択するときに考慮すべきことを示します。 これらの質問に回答することで、データ表示に使用する地図投影と投影座標系が決定するでしょう。

地図投影は一般的に、保持したい空間属性によって以下のように分類されます。 全体的に歪みを少なくする投影法は、面積、形状、距離、方位の4つの空間属性のどれも完全に保持はしません。例えばRobinson投影法は正角でも正積図法でもないですが、見た目の美しさを要求される一般的な地図で使用されます。

ArcIMSの投影要素

ArcIMSでの投影はArcIMS空間サーバによって処理されます。以下の3つの投影要素が正しい投影座標系でデータを取得するために使用されます。

ArcIMSで座標系は地理座標系と投影座標系の両方を含み、投影に関する情報について記述するために、測地基準系、単位、子午線といった他の特性と同様に使用されます。

それぞれの投影要素は、IDあるいは定義文字列のどちらかで座標系が定義されます。サポートされるIDと定義文字列の完全なリストについては以下をご参照下さい。

COORDSYS

COORDSYSはデータ レイヤについての投影メタデータを定義します。他の座標系へのデータの再変換は行なわず、そのレイヤの投影が何であるかを単に記述します。COORDSYSは以下のデータに対して使用できます。 *.prjファイル、空間参照テーブル、COORDSYSが存在しない場合、レイヤは投影されません。レイヤが期待通りに投影されない場合、レイヤが*.prjファイル、空間参照テーブル、COORDSYSを持っているかどうかを確認して下さい。ArcMapイメージ サービスでは、それぞれのレイヤの座標系はArcMapドキュメント(*.mxd, *.pmf)で扱われます。

FEATURECOORDSYS

FEATURECOORDSYSは、それぞれのレイヤが変換されるべきArcIMSサービスで共通の座標系を指定するために使用されます。ArcIMSサービスでは、FEATURECOORDSYSがサービス全体の投影を表し、デフォルトの座標系として考えることができます。この座標系はレイヤのどの座標系とも異なることができます。

ArcIMSサービスへ投影要素のないリクエストを行なった場合、サービスのデフォルトの座標系でデータを受信します。リクエストはサービスのFEATURECOORDSYSを上書きすることができます。例えば、RobinsonのサービスでリクエストにMollweideのFEATURECOORDSYSが含まれる場合、ArcIMS空間サーバはMollweideでデータを返却します。

FEATURECOORDSYSが存在する場合、マップ単位はArcIMS空間サーバによって自動的に計算されます。MAPUNITSが存在する場合、それは無視されます。LAYERSCALEDEPENDENTRENDEREROBJECTでの縮尺依存が正しく計算されるためにも、正しいマップ単位を保持することは重要です。

FILTERCOORDSYS

FILTERCOORDSYSはリクエストするクライアントの座標系を指定するために使用されます。COORDSYSによく似て、FILTERCOORDSYSはクライアントのメタデータとして考えることができます。リクエストでは、データ範囲と空間フィルタの座標値はFILTERCOORDSYSの座標系です。

FEATURECOORDSYSがある場合、FILTERCOORDSYSはマップ設定ファイルに含まれている必要があります。サービスでは、FILTERCOORDSYSとFEATURECOORDSYSは同じID、あるいは文字列値である必要があります。リクエストでは、2つの要素は異なる値を持つことができます。

投影要素の使用方法

この次のセクションは投影要素の使用方法について、場面ごとに議論します。

重要:ArcIMSクライアントは投影をサポートしません。すべての投影はArcIMS空間サーバによって処理される必要があります。加えて、ArcIMSビューアを使用する場合、FILTERCOORDSYSとFEATURECOORDSYSは同じIDである必要があります。ArcIMS HTMLビューアはFEATURECOORDSYSとFILTERCOORDSYSに異なるIDを適用するようにカスタマイズすることができます。ArcIMS Javaビューアはこのようなカスタマイズはできません。

FILTERCOORDSYSとFEATURECOORDSYSのないマップ設定ファイル

以下の例は、FILTERCOORDSYSあるいはFEATURECOORDSYSを使用しないが、レイヤにCOORDSYSを使用するマップ設定ファイルを示します。2つのレイヤは両方とも世界地図のシェープファイル レイヤです。1つはWorld Mollweide(id="54009")で、もう1つはWorld Robinson(id="54030")です。シェープファイルに関連付けられた*.prjファイルがある場合、COORDSYSを含める必要がないことを思い出してください。*.prjファイルもCOORDSYSもない場合、レイヤは投影されません。

マップ設定ファイルでCOORDSYSを使用する場合
<?xml version="1.0" encoding="UTF-8"?>
<ARCXML version="1.1">
  <CONFIG>
    <ENVIRONMENT>
      <LOCALE country="US" language="en" variant="" />
      <UIFONT color="0,0,0" name="Arial" size="12" style="regular" />
    </ENVIRONMENT>
    <MAP>
      <PROPERTIES>
        <ENVELOPE minx="-14628440.851850007" miny="-9020047.848073646" maxx="15705351.712200116" maxy="8748562.401522137" name="Initial_Extent" />
        <MAPUNITS units="meters" />
      </PROPERTIES>
      <WORKSPACES>
        <SHAPEWORKSPACE name="shp_ws-12" directory="c:\data" />
      </WORKSPACES>
      <LAYER type="featureclass" name="Ocean" visible="true" id="22">
        <DATASET name="WORLD30" type="polygon" workspace="shp_ws-12" />
        <SIMPLERENDERER>
          <SIMPLEPOLYGONSYMBOL fillcolor="240,255,255" />
        </SIMPLERENDERER>
      </LAYER>
      <LAYER type="featureclass" name="Robinson" visible="true" id="0">
        <DATASET name="cntry94_Robinson" type="polygon" workspace="shp_ws-12" />
        <COORDSYS id="54030" />
        <SIMPLERENDERER>
          <SIMPLEPOLYGONSYMBOL filltype="solid" fillcolor="0,153,102" />
        </SIMPLERENDERER>
      </LAYER>
      <LAYER type="featureclass" name="Mollweide" visible="true" id="1">
        <DATASET name="Cntry94_Mollweide" type="polygon" workspace="shp_ws-12" />
        <COORDSYS id="54009" />
        <SIMPLERENDERER>
          <SIMPLEPOLYGONSYMBOL filltransparency="0.0" boundarywidth="3" boundarycolor="27,27,127" />
        </SIMPLERENDERER>
      </LAYER>
    </MAP>
  </CONFIG>
</ARCXML>

マップを参照するため、このイメージ サービスにGET_IMAGEリクエストを送信できます。以下のリクエストは投影要素を含んでいません。

投影要素のないGET_IMAGEリクエスト
<?xml version="1.0" encoding="UTF-8" ?>
<ARCXML version="1.1">
  <REQUEST>
    <GET_IMAGE>
      <PROPERTIES>
      </PROPERTIES>
    </GET_IMAGE>
  </REQUEST>
</ARCXML>

返却されるイメージでは、2つのレイヤが同じ座標系でないために、正しく重なりません。

凡例 COORDSYSの使用方法

次のGET_IMAGEリクエストでは、World Sinusoidal(id="54008")に設定されたFEATURECOORDSYSとFILTERCOORDSYSが含まれています。

FILTERCOORDSYSとFEATURECOORDSYSを使用したGET_IMAGEリクエスト
<?xml version="1.0" encoding="UTF-8" ?>
<ARCXML version="1.1">
  <REQUEST>
    <GET_IMAGE>
      <PROPERTIES>
        <FILTERCOORDSYS id="54008" />
        <FEATURECOORDSYS id="54008" />

      </PROPERTIES>
    </GET_IMAGE>
  </REQUEST>
</ARCXML>

返却されるイメージでは、2つのレイヤがSinusoidal投影で重なっています。

凡例 FILTERCOORDSYSとFEATURECOORDSYSの使用方法

最後のGET_IMAGEサンプルは、2つのレイヤが同様の最小/最大のx, y範囲の座標系を持つため、正しく動作します。実際には、ENVELOPEがリクエストに通常含まれています。ENVELOPEとSPATIALFILTER内で使用される座標値は、FILTERCOORDSYSの座標系でなければいけません。次のサンプルでは、ENVELOPEがリクエストに含まれています。マップ単位はFEATURECOORDSYSで選択されたIDに基づいて、ArcIMS空間サーバによって計算されます。したがって、MAPUNITSはリクエストには必要ありません。

ENVELOPEのあるGET_IMAGEリクエスト
<?xml version="1.0" encoding="UTF-8" ?>
<ARCXML version="1.1">
  <REQUEST>
    <GET_IMAGE>
      <PROPERTIES>
        <ENVELOPE minx="-14628440.851850007" miny="-9020047.848073646" maxx="15705351.712200116" maxy="8748562.401522137" />
        <FILTERCOORDSYS id="54008" />
        <FEATURECOORDSYS id="54008" />
      </PROPERTIES>
    </GET_IMAGE>
  </REQUEST>
</ARCXML>

上記のリクエストで、返却されるENVELOPEは正確であることが保証されます。

ENVELOPEのあるIMAGEレスポンス
<?xml version="1.0" encoding="UTF8"?>
<ARCXML version="1.1">
  <RESPONSE>
    <IMAGE>
      <ENVELOPE minx="-14628440.85185" miny="-11510914.9347945" maxx="15705351.7122001" maxy="11239429.488243" />
      <OUTPUT file="C:\ArcIMS\output\proj_paper_MYCOMPUTER79217360.jpg" url="http://mycomputer.esri.com/output/proj_paper_MYCOMPUTER79217360.jpg" />
    </IMAGE>
  </RESPONSE>
</ARCXML>

返却されるイメージは前回のイメージと同じです。

凡例 ENVELOPEの使用方法

FILTERCOORDSYSとFEATURECOORDSYSのあるマップ設定ファイル

FILTERCOORDSYSとFEATURECOORDSYSは次のサンプルで示すように、マップ設定ファイルに含めることができます。両方の要素は、座標系IDがWorld Sinusoidal(id="54008")に設定されています。MAPUNITSが含まれていますが、FEATURECOORDSYSがある場合は無視されます。

マップ設定ファイルでFILTERCOORDSYSとFEATURECOORDSYSを使用する場合
<?xml version="1.0" encoding="UTF-8"?>
<ARCXML version="1.1">
  <CONFIG>
    <ENVIRONMENT>
      <LOCALE country="US" language="en" variant="" />
      <UIFONT color="0,0,0" name="Arial" size="12" style="regular" />
    </ENVIRONMENT>
    <MAP>
      <PROPERTIES>
        <ENVELOPE minx="-14628440.851850007" miny="-9020047.848073646" maxx="15705351.712200116" maxy="8748562.401522137" name="Initial_Extent" />
        <MAPUNITS units="meters" />
        <FEATURECOORDSYS id="54008" />
        <FILTERCOORDSYS id="54008" />
      </PROPERTIES>
      <WORKSPACES>
        <SHAPEWORKSPACE name="shp_ws-12" directory="c:\data" />
      </WORKSPACES>
      <LAYER type="featureclass" name="Ocean" visible="true" id="22">
        <DATASET name="WORLD30" type="polygon" workspace="shp_ws-12" />
        <SIMPLERENDERER>
          <SIMPLEPOLYGONSYMBOL fillcolor="240,255,255" />
        </SIMPLERENDERER>
      </LAYER>
      <LAYER type="featureclass" name="Robinson" visible="true" id="0">
        <DATASET name="cntry94_Robinson" type="polygon" workspace="shp_ws-12" />
        <COORDSYS id="54030" />
        <SIMPLERENDERER>
          <SIMPLEPOLYGONSYMBOL filltype="solid" fillcolor="0,153,102" />
        </SIMPLERENDERER>
      </LAYER>
      <LAYER type="featureclass" name="Mollweide" visible="true" id="1">
        <DATASET name="Cntry94_Mollweide" type="polygon" workspace="shp_ws-12" />
        <COORDSYS id="54009" />
        <SIMPLERENDERER>
          <SIMPLEPOLYGONSYMBOL filltransparency="0.0" boundarywidth="3" boundarycolor="27,27,127" />
        </SIMPLERENDERER>
      </LAYER>
    </MAP>
  </CONFIG>
</ARCXML>

もう1度、投影要素のないGET_IMAGEリクエストがサービスに送信されます。

投影要素のないGET_IMAGEリクエスト
<?xml version="1.0" encoding="UTF-8" ?>
<ARCXML version="1.1">
  <REQUEST>
    <GET_IMAGE>
      <PROPERTIES>
      </PROPERTIES>
    </GET_IMAGE>
  </REQUEST>
</ARCXML>

この時、返却されるイメージでは、2つのレイヤがSinusoidal投影(サービスのデフォルト)で重なります。

凡例 Sinusoidal投影

サービスの座標系に関わらず、リクエストはサービスを上書きする投影要素を常に含むことができます。アクセスしているサービスの投影を知りたい場合、FEATURECOORDSYSとFILTERCOORDSYSが使用されているかを捜すために、GET_SERVICE_INFOリクエストを送信することができます。

GET_SERVICE_INFOリクエスト
<?xml version="1.0" encoding="UTF-8"?>
<ARCXML version="1.1">
  <REQUEST>
    <GET_SERVICE_INFO fields="false" envelope="false" renderer="false" extensions="false" />
  </REQUEST>
</ARCXML>

ArcIMSサービスでFILTERCOORDSYSとFEATURECOORDSYSが設定されている場合、レスポンスはFILTERCOORDSYSとFEATURECOORDSYSを含みます。

SERVICEINFOレスポンス
<?xml version="1.0" encoding="UTF8"?>
<ARCXML version="1.1">
  <RESPONSE>
    <SERVICEINFO>
      <ENVIRONMENT>
        <LOCALE language="en" country="US" />
        <UIFONT name="Arial" color="0,0,0" size="12" style="regular" />
        <SEPARATORS cs=" " ts=";"/>
        <CAPABILITIES forbidden="" disabledtypes=""/>
        <SCREEN dpi="96"/>
        <IMAGELIMIT pixelcount="1048576" />
      </ENVIRONMENT>
      <PROPERTIES>
        <FEATURECOORDSYS id="54008" />
        <FILTERCOORDSYS id="54008" />

        <ENVELOPE minx="-14628440.85185" miny="-9020047.84807364" maxx="15705351.7122001" maxy="8748562.40152213" name="Initial_Extent" />
        <MAPUNITS units="meters" />
      </PROPERTIES>
      <LAYERINFO type="featureclass" visible="true" name="Ocean" id="22">
        <FCLASS type="polygon"></FCLASS>
      </LAYERINFO>
      <LAYERINFO type="featureclass" visible="true" name="Robinson" id="0">
        <FCLASS type="polygon"></FCLASS>
      </LAYERINFO>
      <LAYERINFO type="featureclass" visible="true" name="Mollweide" id="1">
        <FCLASS type="polygon"></FCLASS>
      </LAYERINFO>
    </SERVICEINFO>
  </RESPONSE>
</ARCXML>

リクエストのFEATURECOORDSYSとFILTERCOORDSYSを上書きすることができます。リクエストとレスポンスでの投影要素の関係を要約します。 次のGET_IMAGEリクエストでは、FEATURECOORDSYSとFILTERCOORDSYSの両方が地理座標系(id="4326")に設定されています。クライアントが(FILTERCOORDSYSで表現されるように)地理座標系であるため、ENVELOPEは地理座標系である必要があります。

FILTERCOORDSYSとFEATURECOORDSYSを使用したGET_IMAGEリクエスト
<?xml version="1.0" encoding="UTF-8" ?>
<ARCXML version="1.1">
  <REQUEST>
    <GET_IMAGE>
      <PROPERTIES>
        <ENVELOPE minx="-180" miny="-90" maxx="180" maxy="90" />
        <FILTERCOORDSYS id="4326" />
        <FEATURECOORDSYS id="4326" />

      </PROPERTIES>
    </GET_IMAGE>
  </REQUEST>
</ARCXML>

返却されるイメージでは、2つのレイヤが地理座標系で重なります。

凡例 十進緯経度

リクエストでの投影変換

クライアント ビューアが現在は地理座標系("4326")であるが、返却される地図をRobinson("54030")にしたいと仮定します。この場合、クライアントの現在の投影であるFILTERCOORDSYSはid="4326"に設定されます。ENVELOPEで使用されるようなリクエストの座標も、地理座標系である必要があります。

FEATURECOORDSYSはクライアントに返却される地図の座標系を定義します。この場合、FEATURECOORDSYSはid="54030"に設定されます。

FILTERCOORDSYSとFEATURECOORDSYSを使用したGET_IMAGEリクエスト(十進緯経度のENVELOPE)
<?xml version="1.0" encoding="UTF-8" ?>
<ARCXML version="1.1">
  <REQUEST>
    <GET_IMAGE>
      <PROPERTIES>
        <ENVELOPE minx="-180" miny="-90" maxx="180" maxy="90" />
        <FILTERCOORDSYS id="4326" />
        <FEATURECOORDSYS id="54030" />
      </PROPERTIES>
    </GET_IMAGE>
  </REQUEST>
</ARCXML>

レスポンスでは、ENVELOPEはRobinson座標系です。

IMAGEレスポンス(Robinson座標系のENVELOPE)
<?xml version="1.0" encoding="UTF8"?>
<ARCXML version="1.1">
  <RESPONSE>
    <IMAGE>
      <ENVELOPE minx="-16986727.8564406" miny="-12740045.8923304" maxx="16986727.8564406" maxy="12740045.8923304" />
      <OUTPUT file="C:\ArcIMS\output\proj_paper_MYCOMPUTER79217360.jpg" url="http://mycomputer.esri.com/output/proj_paper_MYCOMPUTER79217360.jpg" />
    </IMAGE>
  </RESPONSE>
</ARCXML>

返却されるイメージでは、2つのレイヤはRobinson投影です。

凡例 Robinson投影

座標系の定義

座標系はあらかじめ定義された座標系IDの使用、あるいは座標系定義文字列の使用という2つの方法で定義することができます。あらかじめ定義されたIDは、単一の参照番号を使用して座標系を参照する迅速な方法です。座標系定義文字列は投影の全てのパラメータを記述する文字列を使用します。定義文字列を使用する利点は、文字列中のパラメータが修正できることです。

サポートされるIDと定義文字列については以下を参照してください。 例として、World Robinsonの座標系IDは54030です。

World Robinsonの座標系定義文字列は以下の通りです。

World Robinson,54030
PROJCS["World_Robinson",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Robinson"],PARAMETER["False_Easting",0],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",0],UNIT["Meter",1]]

これまではサンプルでは座標系IDのみが使用されてきました。これらのIDは定義文字列に置き換えることができます。次のサンプルは、FEATURECOORDSYSとFILTERCOORDSYSにWorld Robinsonの定義文字列を適用したイメージ サービスです。定義文字列中のダブル クォーテーション記号(")は、&quot;に置き換えられる必要があることに注意してください。

PROJCS[&quot;World_Robinson&quot;,GEOGCS[&quot;GCS_WGS_1984&quot;,DATUM[&quot;D_WGS_1984&quot;,SPHEROID[&quot;WGS_1984&quot;,6378137,298.257223563]],PRIMEM[&quot;Greenwich&quot;,0],UNIT[&quot;Degree&quot;,0.017453292519943295]],PROJECTION[&quot;Robinson&quot;],PARAMETER[&quot;False_Easting&quot;,0],PARAMETER[&quot;False_Northing&quot;,0],PARAMETER[&quot;Central_Meridian&quot;,0],UNIT[&quot;Meter&quot;,1]]

マップ設定ファイルでFILTERCOORDSYSとFEATURECOORDSYSに投影定義文字列を使用する場合
<?xml version="1.0" encoding="UTF-8"?>
<ARCXML version="1.1">
  <CONFIG>
    <ENVIRONMENT>
      <LOCALE country="US" language="en" variant="" />
      <UIFONT color="0,0,0" name="Arial" size="12" style="regular" />
    </ENVIRONMENT>
    <MAP>
      <PROPERTIES>
        <ENVELOPE minx="-14628440.851850007" miny="-9020047.848073646" maxx="15705351.712200116" maxy="8748562.401522137" name="Initial_Extent" />
        <MAPUNITS units="meters" />
        <FEATURECOORDSYS string="PROJCS[&quot;World_Robinson&quot;,GEOGCS[&quot;GCS_WGS_1984&quot;,DATUM[&quot;D_WGS_1984&quot;,SPHEROID[&quot;WGS_1984&quot;,6378137,298.257223563]],PRIMEM[&quot;Greenwich&quot;,0],UNIT[&quot;Degree&quot;,0.017453292519943295]],PROJECTION[&quot;Robinson&quot;],PARAMETER[&quot;False_Easting&quot;,0],PARAMETER[&quot;False_Northing&quot;,0],PARAMETER[&quot;Central_Meridian&quot;,0],UNIT[&quot;Meter&quot;,1]]" />
        <FILTERCOORDSYS string="PROJCS[&quot;World_Robinson&quot;,GEOGCS[&quot;GCS_WGS_1984&quot;,DATUM[&quot;D_WGS_1984&quot;,SPHEROID[&quot;WGS_1984&quot;,6378137,298.257223563]],PRIMEM[&quot;Greenwich&quot;,0],UNIT[&quot;Degree&quot;,0.017453292519943295]],PROJECTION[&quot;Robinson&quot;],PARAMETER[&quot;False_Easting&quot;,0],PARAMETER[&quot;False_Northing&quot;,0],PARAMETER[&quot;Central_Meridian&quot;,0],UNIT[&quot;Meter&quot;,1]]" />
      </PROPERTIES>
      <WORKSPACES>
        <SHAPEWORKSPACE name="shp_ws-12" directory="c:\data" />
      </WORKSPACES>
      <LAYER type="featureclass" name="Ocean" visible="true" id="22">
        <DATASET name="WORLD30" type="polygon" workspace="shp_ws-12" />
        <SIMPLERENDERER>
          <SIMPLEPOLYGONSYMBOL fillcolor="240,255,255" />
        </SIMPLERENDERER>
      </LAYER>
      <LAYER type="featureclass" name="Robinson" visible="true" id="0">
        <DATASET name="cntry94_Robinson" type="polygon" workspace="shp_ws-12" />
        <COORDSYS id="54030" />
        <SIMPLERENDERER>
          <SIMPLEPOLYGONSYMBOL filltype="solid" fillcolor="0,153,102" />
        </SIMPLERENDERER>
      </LAYER>
      <LAYER type="featureclass" name="Mollweide" visible="true" id="1">
        <DATASET name="Cntry94_Mollweide" type="polygon" workspace="shp_ws-12" />
        <COORDSYS id="54009" />
        <SIMPLERENDERER>
          <SIMPLEPOLYGONSYMBOL filltransparency="0.0" boundarywidth="3" boundarycolor="27,27,127" />
        </SIMPLERENDERER>
      </LAYER>
    </MAP>
  </CONFIG>
</ARCXML>

このサービスにGET_IMAGEリクエストが送信された場合、返却されるイメージにはRobinson投影の2つのレイヤが表示されます。

凡例 定義文字列

次のサンプルでは、定義文字列中の属性が変更されます。FEATURECOORDSYSとFILTERCOORDSYSの定義文字列の「中央子午線」は0から180に変更されています。

投影定義文字列の中央子午線を変更した場合
<?xml version="1.0" encoding="UTF-8"?>
<ARCXML version="1.1">
  <CONFIG>
    <ENVIRONMENT>
      <LOCALE country="US" language="en" variant="" />
      <UIFONT color="0,0,0" name="Arial" size="12" style="regular" />
    </ENVIRONMENT>
    <MAP>
      <PROPERTIES>
        <ENVELOPE minx="-14628440.851850007" miny="-9020047.848073646" maxx="15705351.712200116" maxy="8748562.401522137" name="Initial_Extent" />
        <MAPUNITS units="meters" />
        <FEATURECOORDSYS string="PROJCS[&quot;World_Robinson&quot;,GEOGCS[&quot;GCS_WGS_1984&quot;,DATUM[&quot;D_WGS_1984&quot;,SPHEROID[&quot;WGS_1984&quot;,6378137,298.257223563]],PRIMEM[&quot;Greenwich&quot;,0],UNIT[&quot;Degree&quot;,0.017453292519943295]],PROJECTION[&quot;Robinson&quot;],PARAMETER[&quot;False_Easting&quot;,0],PARAMETER[&quot;False_Northing&quot;,0],PARAMETER[&quot;Central_Meridian&quot;,180],UNIT[&quot;Meter&quot;,1]]" />
        <FILTERCOORDSYS string="PROJCS[&quot;World_Robinson&quot;,GEOGCS[&quot;GCS_WGS_1984&quot;,DATUM[&quot;D_WGS_1984&quot;,SPHEROID[&quot;WGS_1984&quot;,6378137,298.257223563]],PRIMEM[&quot;Greenwich&quot;,0],UNIT[&quot;Degree&quot;,0.017453292519943295]],PROJECTION[&quot;Robinson&quot;],PARAMETER[&quot;False_Easting&quot;,0],PARAMETER[&quot;False_Northing&quot;,0],PARAMETER[&quot;Central_Meridian&quot;,180],UNIT[&quot;Meter&quot;,1]]" />
      </PROPERTIES>
      <WORKSPACES>
        <SHAPEWORKSPACE name="shp_ws-12" directory="c:\data" />
      </WORKSPACES>
      <LAYER type="featureclass" name="Ocean" visible="true" id="22">
        <DATASET name="WORLD30" type="polygon" workspace="shp_ws-12" />
        <SIMPLERENDERER>
          <SIMPLEPOLYGONSYMBOL fillcolor="240,255,255" />
        </SIMPLERENDERER>
      </LAYER>
      <LAYER type="featureclass" name="Robinson" visible="true" id="0">
        <DATASET name="cntry94_Robinson" type="polygon" workspace="shp_ws-12" />
        <COORDSYS id="54030" />
        <SIMPLERENDERER>
          <SIMPLEPOLYGONSYMBOL filltype="solid" fillcolor="0,153,102" />
        </SIMPLERENDERER>
      </LAYER>
      <LAYER type="featureclass" name="Mollweide" visible="true" id="1">
        <DATASET name="Cntry94_Mollweide" type="polygon" workspace="shp_ws-12" />
        <COORDSYS id="54009" />
        <SIMPLERENDERER>
          <SIMPLEPOLYGONSYMBOL filltransparency="0.0" boundarywidth="3" boundarycolor="27,27,127" />
        </SIMPLERENDERER>
      </LAYER>
    </MAP>
  </CONFIG>
</ARCXML>

このサービスにGET_IMAGEリクエストが送信された場合、返却されるイメージには太平洋を中心にしたRobinson投影の2つのレイヤが表示されます。

凡例 新しい中央子午線

定義文字列についての上記のサンプルはマップ設定ファイルを使用しますが、定義文字列はリクエストでも使用することができます。

測地基準系変換の使用方法

測地基準系は回転楕円体と地球の中心からの回転楕円体の相対位置によって定義される参照フレームです。測地基準系は回転楕円体の表面上のポイントの位置を定義するために、緯経度あるいは地理座標系を使用します。

測地基準系変換は2つの地理座標系間のデータを変換する方法です。共通の地理座標系はWGS 1984とNAD 1983です。WGS 1984を介した測地基準系変換のみがサポートされます。

測地基準系変換中に何が起こっているのかを4つのステップで示します。以下の図では、NAD 1927のState Plane座標系からNAD 1983のUTM座標系へレイヤを変換しようとしています。すべての測地基準系変換がWGS 1984を介して行われるため、いくつかの中間ステップがあります。
測地基準系

測地基準系変換の情報が必要な場合、属性datumtransformiddatumtransformstringは投影要素で使用されます。
NAD 1927(datumtransformid="8073") State Plane座標系(id="26745")からNAD 1983(datumtransformid="8088") UTM座標系(id="26911")への変換
<?xml version="1.0" encoding="UTF-8"?>
<ARCXML version="1.1">
  <CONFIG>
    <ENVIRONMENT>
      <LOCALE country="US" language="en" variant="" />
      <UIFONT color="0,0,0" name="Arial" size="12" style="regular" />
      <SCREEN dpi="96" />
    </ENVIRONMENT>
    <MAP>
      <PROPERTIES>
        <ENVELOPE minx="51508.9214" miny="3429418.0119" maxx="948491.0785" maxy="4102154.6297" name="Initial_Extent" name="Initial_Extent" />
        <MAPUNITS units="feet" />
        <FEATURECOORDSYS id="26911" datumtransformid="8088" />
        <FILTERCOORDSYS id="26911" datumtransformid="8088" />

      </PROPERTIES>
      <WORKSPACES>
        <SHAPEWORKSPACE name="shp_ws-2" directory="<path to data>" />
      </WORKSPACES>
      <LAYER type="featureclass" name="California" visible="true" id="1">
        <DATASET name="calif" type="polygon" workspace="shp_ws-2" />
        <COORDSYS id="26745" datumtransformid="8073" />
        <SIMPLERENDERER>
          <SIMPLEPOLYGONSYMBOL color="0,0,255" />
        </SIMPLERENDERER>
      </LAYER>
    </MAP>
  </CONFIG>
</ARCXML>

サポートされる測地基準系変換の完全なリストは測地基準系変換のリストに含まれています。

データの高密度化

レイヤが投影される前に、データ高密度化の処理は仮想のポイントをレイヤへ追加します。データが投影された場合、ラインのジオメトリは変わります。例えば、ある投影での正方形は他の投影では台形になるかもしれません。場合によっては、オリジナルのレイヤでジオメトリを定義しているポイントの数は、投影されたレイヤで正しくジオメトリを記述するのに不十分です。以下の図では、高密度化がない場合には、Projection 1での正方形がProjection 2で見られるような台形に投影されます。Projection 1のデータが高密度化された場合、Projection 2のジオメトリはより詳細になります。
高密度化

DENSIFYはレイヤが投影される前に、どの程度データを高密度化する必要があるのか定義するために、レイヤに対して使用することができます。リクエストしたマップ画像のレイヤからフィーチャがなくなっている場合は(通常は周縁部)、レイヤに対してDENSIFYを使用してみてください。

注意:toleranceの値が小さすぎる場合、ArcIMS空間サーバの処理速度は大幅に低下します。最初は大きなtolerance値で始めた方が良いでしょう。目安としては、現在のマップ範囲の幅の約20〜30パーセントの値で始めることです。

処理時間

投影要素が使用される場合は常に、ArcIMS空間サーバでのリクエストの処理時間は、投影要素が使用されない場合よりも大幅に長くなります。パフォーマンスの問題を考慮する場合、これは重要です。FILTERCOORDSYSとFEATURECOORDSYSが使用される場合、データ変換にかかる時間は、データの複雑さに依存する要素を使用しない場合に比べて膨大なものになります。高密度化を使用する場合、各レイヤがどれだけ高密度化されるかに依存して、データの処理時間はさらに長くなります。理想的には、データを取り扱う場合、投影要素を使用する必要性を最小限にするため、すべてのデータとサービスは同じ投影と測地基準系にするべきです。