arcgis SDE for Java


API:http://edndoc.esri.com/arcsde/9.2/api/japi/docs/index.html紹介する
ArcSDE Java APIは、空間情報を処理し、分析するための開放的でハイレベルなプログラミングインターフェースを提供する.これは三つのjavaカバンを含んでいます.Clientカバン、Geometryカバン、そしてProjectionバッグ.
Clientパッケージは、ArcSDEサーバに関する機能を実現するクラスを提供しています.このパッケージで作成されたアプリケーションは、ArcSDEのインスタンスへの接続を確立し、層を照会したり、ArcSDEサーバと通信したりすることができる.
GeometryパッケージはOGC(開源GIS)幾何学的機能インターフェースを実現するクラスを提供します.
Projectionパケットは、座標システムと異なる座標システムで変換される機能を定義するクラスを提供する.
以下のテーマは、ArcSDE Java APIの機能について大まかに紹介しています.
APIの設定
ArcSDEクライアントのインストール時に以下のファイルがインストールされています.
1.      jsde 90_sdk.jar-は、ArcSDEクライアント、幾何学的機能およびSG Java APIのクラスファイルを含んでいます.
2.       j pe 90_sdk.jar–ArcSDE Projection Engine Java APIのクラスファイルを含みます.
3.       concurrent.jar–このファイルはPeCSTrans formationX()を使う時に必ず使わなければならなくて、PeCSTrans formationX()の機能は座標システムを転換するのです.
4.       sdejavautil.dll(Windowsプラットフォームの下)-contains the native code potion of the come.esri.s.sdk.client.SeInstance start function.
5.       libsdejavautil.so(Unix plotforms only、libsdejavautill.slon HP-UX)-contains the native code potion of the cocode.esri.s.s.sdk.client.SeInstance start function.
Java Doc(HTML形式のAPI機能参照文書)は、ArcSDE Developer Helpにリンクされてもよく、この文書は、ArcSDEクライアントにインストールされたCDおよびESRIの技術サポートサイトにおいて見つけることができる.
ArcSDE java APIを使用したアプリケーションを確立するには、Java 2 Standard Edition SDKをシステムにインストールする必要があります.1.4.0バージョン以上です.あなたはまたあなたのCLASSPATH環境変数にjsde 90_を加えなければなりません.sdk.jar,jpe 90_sdk.jar and concurrent.jarのファイルパスです.comp.esri.sd.sdk.client.SeInstanceのStart関数まで使用するなら、あなたはまだあなたのシステムパス(Windowsプラットフォームsystem path;Unixプラットフォームsystem library path)にsdejavautil libraryを追加します.
ArcSDEに接続
ArcSDEソフトウェアを使用する第1のステップは、ArcSDEサーバ接続を確立することである.SeConnection類は接続を作るためのものです.以下は接続を確立する例である.
public static void main (String args[])throws Exception {
        SeConnection conn = null;
        String server     = “sdeserver”;
        int instance      = 5151;
        String database   = “sdedb”;
        String user       = “user”;
        String password   = “passwd”;
        try {
            conn = new SeConnection(server, instance, database, user, password); 
        }catch (SeException e) {
            e.printStackTrace();
        }
    }
注意:instanceパラメータはArcSDEサーバのポート番号です.例えば、5151です.sde
 
 データベース情報と接続
SeConnectionクラスは、サーバのバージョンと接続の情報を含むARcSDEサーバ情報を取得する方法を提供する.SeConnectionクラスを使用して、RDBMSに格納されているデータに関する情報を取得することもできます.以下の例では、ArcSDEデータベース内に格納されているレイヤーリスト情報をどのように取得するか(接続が確立されたと仮定する)を示しています.
    Vector layerList = conn.getLayers();
    for( int index = 0 ; index < layerList.size() ; index++ ) {
        SeLayer layer = (SeLayer)layerList.elementAt(index);
        // Displays the layer’s name
        System.out.println( layer.getName() );
        // Displays the layer’s ID
        System.out.println( layer.getID().longValue() );
        // Displays the layer’s spatial column name
        System.out.println( layer.getSpatialColumn() );
    }
SeLayerオブジェクトは、レイヤーの関連情報をすべて含むArcSDE Java API関数参照において、他のArcSDE Layerの属性を取得する方法も記載されている.
Fetching data
データはテーブルまたはlayerから検索されます.SeQueryオブジェクトはクエリー操作を準備し実行するためのもので、クエリーを作成し実行するステップは以下の通りです.
      1.SeSql Constructオブジェクトを作成します.このオブジェクトの中に調べたいテーブル/layerの名前があります.SeSql Constructのコンストラクターでwhereクエリ文を指定することもできます.
            Selayer layer=new SeLayer(conn,layer Name,spaial Column)
            SeSql Construct sql Construct=new SeSql Construct(layer.get Name);
      2.クエリーするテーブルの列名を格納するために、String配列を作成します.
            String[]cols=new String[2]
            cols[0]=new String(「ColumnOnee Name」)
            cols[1]=layer.get Spatial Column()
      3.定義し、クエリーを準備し実行します.
           //Create a query stream between the client and server
            SeQuery query=new SeQuery(conn,cols,sql Controuct)
            query.prepareQuery();
            query.execute()
      4.照会結果の最初の行をSeRowオブジェクトに保存します.
            SeRow row=query.fetch()
      5.SeRowのカラム構造を取得します.
            //Get the definitions of all the columns retrieved
            SeColumnDefinition[]colDefs=SeRow.get Columns()
      6.最初の列のデータタイプを取得して、そのユニットのデータを取得する.
           //最初の列のデータタイプを取得します.
            int colNum=0
            int dataType=colDefs[colNum].getType;
           //データタイプはStringとShapeの2種類だけとする.
           //ArcSDE列のすべてのデータタイプをサポートするために、いくつかのステートメントを自分で追加することができます.
           //(See Working with Layers Example)
            switch(dataType){
            case SeColumn Definitions.TYPE_STRING:
                  System.out.println(colDef.get Name()+row.get String(colNum);
                  break;
            case SeColumn Definitions.TYPE HuSHAPE:
                  System.out.println(colDef.get Name);
                  SeShape shape=row.get Shape(colNum)
                 //関数を呼び出して、Shapeのプロパティを取得します.
                  break;
            }
     
      7.クエリーを閉じます
            query.close()
     
注意:クエリ結果のすべての行を取り出すために、SeRowオブジェクトが空の値に戻るまで、query.fetchを繰り返し呼び出すことができます.
データの挿入
SeInsertクラスを使って表またはレイヤーにデータを挿入できます.データを挿入する手順は以下の通りです.
      1.Stringオブジェクトを作成して、データを追加するテーブルの列名を格納します.配列インデックス値に注意してください.これらのインデックス値はSeRow.set*で使用されます.Stringタイプの列のインデックス値は0で、Shapeタイプの列のインデックス値は1です.
               String[]cols=new String[2]
               cols[0]=new String(「ColumnOnee Name」)
               cols[1]=layer.get Spatial Column()
      2.現在の接続ピリオドConnection connを使ってSeInsertオブジェクトを作成します.これはクライアントからサーバまでのInsertデータストリームを作成します.そしてテーブルまたはレイヤーの列名に従ってデータを挿入し、SeInsertオブジェクトを書き込み可能モードに設定します.
               SeInsert insert=new SeInsert(conn)
               insert.intoTable(layer.getName(),cols);
               insert.setWriteMode(true)
      3.SeInsertオブジェクトに追加するSeRowオブジェクトを取得し、挿入するデータを設定します.このステップはSeRow.set*メソッドを使用します.第1ステップで決定したインデックス値をset*メソッドのcolumnPositionパラメータとして利用します.
               SeRow row=insert.getRowToSet()
               row.set String(0、「Shape Number One」);
               row.set Shape(1、shape);
      4.SeInsertオブジェクトのexecuteを呼び出す方法で、前に設定したSeRowオブジェクトをレイヤーに挿入します.最後にInsertデータストリームを閉じて、今回の挿入操作を終了します.接続ハンドルConnection connに使用しない場合は、接続を終了します.
               insert.execute()
               insert.close()
          
ユーザーによって作成され維持された列にのみデータが挿入されます.
SEHuREGISTRATIONUOWUIDUOLU MNUTYPE
この列の値はArcSDEによって自動的に生成され、挿入されます.また、ArcCatalogにテーブルまたはFeature classを作成すると、ArcSDEによって維持され、ユーザーは挿入できません.この列の値を削除または修正します.