1. TCLEXGAUとは
  2. プラットホーム
  3. マップ
  4. フレームワーク(version 3.x)
  5. アプリケーションフォルダ

TCLEXGAU技術情報

TCLEXGAUについての技術情報を掲載しています。

TCLEXGAUとは

TCLEXGAU(ティクレックスガウ)は、WebGISアプリケーション構築ツールであり、 WebGISアプリケーションのフレームワークです。 デスクトップ環境、LAN環境、イントラネット/インターネット環境に対応しています。 これらの環境を移動するときに、ソフト、データの修正作業は原則的に必要ありません。それぞれのフレームワークが共通だからです。

TCLEXGAUは.NETやJava仮想マシン環境などの、第3者のミドルウエアを必要としません。 データベースについても同様です。

TCLEXGAUTclインタプリタとブラウザアドオン(プラグイン)を含んでいます。 最下層部分はC++で記述されたネィティブコードにて実装されています。 そして、その上の階層はTclスクリプトで記述されたオブジェクト群という構造になっており、 最上層はJavaScriptによるブラウザとのインターフェース層になっています。

TCLEXGAUアプリケーションのユーザーインターフェースは、 TCLEXGAUが提供するオブジェクトのメソッドをJavaScriptを介してコールする方式で構築します。 HTMLで画面を設計し、アイコンがクリックされたらTCLEXGAUが提供する オブジェクトのメソッドをコールするのです。 主要なメソッドコールはJavaScript関数としてラッピングされています。

■「地物・施設オブジェクト」の設計はxmlファイルへの記述により行います。 例えば「建物」オブジェクトのレイヤーや属性項目を「建物.xml」というファイルに記述する方式になっています。 xmlファイルにはイベント処理も埋め込めます。例えば建物オブジェクトの属性がユーザーにより修正されたときに、 値のチェックや他のオブジェクトとの整合性を取るための処理などを記述することができます。 これらのxmlファイルは、プロパティやメソッドなどの一般的なクラス定義に加え、表示スタイル、クエリなども記述できるという大きな特長を持っています。 メソッドの記述はTclスクリプトにより行います。

TCLEXGAUが主要なターゲットとするアプリケーションは施設管理システムです。 都市計画、上下水道、ガス、土地管理、公園管理などのパッケージを提供しています。 これらのアプリケーションは統合することもできます。 それぞれのアプリケーションをそのままにした状態で統合できます。統合環境でも個別環境でも同時運用できます。 統合のための作業では、ユーザー管理とセキュリティに関する設定が重要になります。 これらの具体な作業のほとんどはxmlファイルへの記述作業です。 ユーザー認証において各ユーザーに権限が割り振られ、そのユーザーの権限によって、見れる地図、修正できる地図、 使用できる機能を定義することができます。

TCLEXGAUアプリケーションを導入するとアプリケーションライセンスを取得できます。 アプリケーションライセンスはクライアントPCに対して閲覧、データ修正を許諾します。 統合型へ発展すべく、サーバーライセンスを導入すると、無制限のクライアントPCでの閲覧が可能になります。 更に、無制限のクライアントPCでデータ修正も行えるように発展させるにはWeb-C/Sライセンスを導入します。 Web-C/Sライセンスは、イントラネット/インターネット環境でのクライアント/サーバーシステムも提供します。

■一般的なWebGISは画像地図を表示しますが、TCLEXGAUは、ブラウザプラグインにより、ベクトルデータを表示します。 プラグイン方式は「セキュリティの問題がある」との理由から敬遠されがちですが、高度なWebアプリケーションはブラウザ拡張なしには実現しません。 出所不明なActive-Xコントロールをインストールしないことと、悪意あるプログラムの踏み台にされない配慮がプラグインになされている限り、問題ありません。プラグインはリッチクライアントを実現する上で不可欠であり、リッチクライアントは分散処理を実現し、サーバーの負荷を著しく軽減してくれます。

TCLEXGAUプラットホーム

クライアントPC
OSはWindows8.1(推奨)/8/7、ブラウザはIE11(推奨)/10/9となります。
サーバー

LAN環境での運用におけるサーバーOSはWindows8.1/8/7・WindowsServer2008以上(2012R2推奨)となります。

イントラネット/インターネット運用においては、閲覧だけならサーバーのOS(Windows/linux)、およびWebサーバの種類(IIS/Apache)は問いません。 しかし、クライアント/サーバーシステムとしてデータの入力修正も行いたいのであれば、サーバーにはWindows機が必要になります。 Webサーバーのバックエンドシステム(GAU-RMDB)がWindowsマシン限定となっているからです。 WebサーバーとGAU-RMDBサーバーを分ければ、Webサーバー側の制限はなくなります。その場合、WebサーバーとGAU-RMDBはTCPポートで通信します。

マップ

マップクラスとマップタイプ
地物・施設オブジェクトは「マップクラス」として分類定義されます。 地物・施設オブジェクトはマップクラスのインスタンスですのでマップオブジェクトとも呼ばれます。 マップクラス定義はxmlファイルに記述します。プロパティやレイヤが主な定義項目になります。 レイヤは地理情報標準での空間型のプロパティに相当します。
マップクラスはデータベース用語のテーブルに相当します。 複数のテーブルの集合がデータベースになりますが、 TCLEXGAUでは、データベースに相当するものはマップタイプです。 マップタイプはマップクラスのグループ名であり、 同じマップタイプ属するクラスのオブジェクトは同じマップファイルに格納するのが原則です。
例を挙げます。下水道施設管理システムには、マップタイプとしてgesuiがあります。 マップタイプ名がgesuiと定義されたクラスには、人孔、管渠、取付管、ます、などがあります。 つまりgesui下水道施設データベースを表しているのです。
マップファイルとタイルマップ

地物・施設オブジェクトを格納したデータファイルがマップファイルです。 デフォルトの拡張子は.mapです。 マップファイルは、格納オブジェクトの種類を表す名称を付けて保存することが推奨されます。 例えば「行政界.map」などです。 名称が格納オブジェクトの種類を表すのであれば、その名称とはクラス名であるべきです。 「行政界.map」は「行政界クラス」のオブジェクトを格納したものであるので、大字界や小字界 などのオブジェクトが格納されている、と予想できます。

このように、マップファイル名はクラス名を表すことが自然ですが、これは最少単位です。一方の最大単位は、前述の「マップタイプ」になります。 これ以外の単位での格納(複数のマップタイプのオブジェクトを格納)はバックアップ用であると言えます。

マップファイルにはこのような格納単位がありますが、ファイルサイズにも留意する必要があります。 巨大なサイズを避けるためには分割保存が必要になります。 サイズを小さくするため分割されたマップファイルを「タイルマップ」と呼び、「マップファイル」と区別します。 小縮尺のオブジェクト群は、ひとつのマップファイルにすべてが格納される傾向がありますが、これらは空間が広い割にデータ量が小さいからです。 マップファイルには小縮尺の地物オブジェクトを格納し、大縮尺の地物オブジェクトはタイルマップに格納するのが原則です。タイルマップはマップファイルから自動生成することができます。

タイルマップとサーバーマップ

サーバーマップとは「構造化されたタイルマップの集合」です。 タイルマップの構造化は、フォルダ名やファイル名の命名規則によって行われています。 構造化は、オブジェクトを格納する時や検索するとき、個々のタイルマップファイルの存在を隠ぺいし、データベースと同じように扱うことを目的にしています。 構造化によりデータベースの性格を獲得したことを強調してサーバーマップと呼んでいます。(「マップDB」と呼んだほうが適切かも知れません。)

サーバーマップは表示範囲を埋め尽くすように自動ロードされます。 そして、表示スケールごとにそれらのダウンロードの有無が制御されます。 表示ON/OFFの制御だけではなく、ダウンロード自体を制御できることはインターネットで利用する時に、大きな利点になります。 このような制御のためには、タイルマップ群を地理情報レベルによって分類できなければなりません。 そこで、サーバーマップはマップタイプごとに分ける仕様になっています。 これは「マップタイプ=データベース」の関係を表しています。

TCLEXGAUフレームワーク(version 3.x)

ここではWebGISアプリケーションを構築するために提供されているTCLEXGAUフレームワークについて解説します。フレームワークとは「アプリケーションのための土台構造」、という意味です。TCLEXGAUシステムでは、サーバーにTCELEXGAUのすべてのコンポーネント(ファイル)を配置し、クライアントPCには一切のファイルを置かない構成が可能です(シンクライアント)。これらのサーバーコンポーネントはあらかじめ名前と階層構造が決められたフォルダの中に配置されています。

TCLEXGAUルートフォルダ

TCLEXGAUコンポーネントを格納したフォルダの最上部フォルダを「TCLEXGAUルートフォルダ」と呼びます。デフォルトでは"gau31"になります。LAN運用ではこのフォルダを共有公開します。イントラネット/インターネット運用では、このルートフォルダを仮想フォルダとして公開します。

このフォルダの下に2種類のフォルダが存在します。クライアンツフォルダアプリケーションフォルダがあります。

クライアンツフォルダ(gau31/clients)

各クライアントの情報が格納されているフォルダです。このフォルダは1つしかありません。このフォルダの下には"plugin"フォルダ、"lic"フォルダ、そして「アプリケーションユーザーフォルダ」が必ず存在します。"plugin"と"lic"フォルダは1つですが「アプリケーションユーザーフォルダ」はアプリケーション数だけあります。

  • gau31
    • clients
      • lic
      • plugin
      • webfiling
        • user1
        • user2

gau31/clients/licフォルダにはクライアントライセンスファイルが格納されています。クライアントライセンスファイルの拡張子は.licです。ファイル名は「アプリケーション名+クライアントPC名」になっています。クライアントライセンスはアプリケーションごと、クライアントPCごとに必要です。尚、GAU-SVRとWeb-C/Sのライセンスファイルであるserver.licwebserver.licファイルはgau31直下に格納されます。これらはアプリケーション共通のライセンスファイルだからです。

gau31/clients/pluginフォルダにはIEに機能を追加するためのActiveXコントロールとdllファイル群が格納されています。(ActiveXコントロールはクライアントPC側で走るため、clientsと命名されたこのフォルダに格納されています。)

gau31/clients/webfilingなどのように「アプリケーションユーザーフォルダ」にはアプリケーション名が付けられており、その下にログインしたユーザーごとにサブフォルダが存在します。これらのフォルダは(アプリケーションによって、ではなく)システムによって自動的に作成されます。

Web環境とLAN環境の相違

  • LAN運用では、クライアントPCはサーバーのclients/pluginフォルダからプラグインファイルをメモリにロードします。
  • イントラネット/インターネット運用では、clientsフォルダはWebサーバーには不要です。その代わり、クライアントPC側にclientsフォルダがGAU_USERSフォルダとしてインストールされている必要があります。

アプリケーションフォルダ

TCLEXGAUアプリケーションのコンポーネントはgau31の直下にサブフォルダを作成して一式格納します。例えば下図のサブフォルダのうち、commonwebfilingwebgesuiがアプリケーションフォルダです。

  • gau31
    • clients
    • common
    • webfiling
    • webgesui

アプリケーションには「一般アプリケーション」と「ビルトインアプリケーション」があります。commonビルトインアプリケーションです。

commonビルトインアプリケーションは「基底クラス」の意味を持っており、webfilingwebgesuiアプリケーションはその「拡張クラス」、という関係になります。

この他、「ビルトインアプリケーション」にはgau-svrgau-rmdbなどがあります。それぞれGAU-SVRWeb-C/Sのコンポーネントです。

アプリケーションフォルダの内部構造はTCLEXGAUアプリケーションフォルダをご参照ください。

TCLEXGAUアプリケーションフォルダ

TCLEXGAUアプリケーションのコンポーネントは、TCLEXGAUルートフォルダ直下のサブフォルダ(アプリケーションフォルダ)にインストールします。アプリケーションフォルダの下にはアプリケーションメインHTMLファイルを配置し、そして、TCLEXGAUによりあらかじめ名称が定められたサブフォルダを作成して、そこに該当するコンポーネントをインストールします。
commonなどのビルトインアプリケーションの場合も、当然のこととして、同じサブフォルダ構成になっています(必ずしもすべてのサブフォルダが存在するとは限りません)。

下記例におけるapplicationは、具体的にはwebgesuiなどのアプリケーション名を表すフォルダ名になります。

  • gau31
    • application
      • gadget
      • dbms
      • html
      • php
      • locale
      • map
      • tclet

アプリケーションフォルダ名称は任意です。しかし、サブフォルダ名は原則的に固定名称であることにご注意ください。

以下、サブフォルダごとに解説します。

gau31/application/gadget

gadgetフォルダにはガジェットを配置します。commonビルトインアプリケーションの場合には、TCLEXGAUが提供するコマンドを呼び出すためのガジェットが配置されています。

  • gau31/common/gadget
    • $mouse.js
    • $menu.js
    • $tool.js
    • ........

これらのガジェットをカスタマイズしたり、あるいは新しいガジェットをアプリケーションが提供する場合は自分のgadgetフォルダに置きます。

gau31/application/dbms

検索インデックスファイルが格納されます。また、排他制御に関連した一時的なファイルが作成される場合もあります。

indexフォルダに検索インデックスファイルが格納されます。検索インデックスファイルはサーバーマップの検索スピードを上げるためのファイル群であり、「エクスポート」→「検索インデックス」コマンドで作成、更新されます。下記の例のようにクラス名と属性項目名を連結したファイルが作成されています。作成されるファイルの種類はアプリケーションが設定します。

  • dbms
    • index
      • 管渠.dat
      • 管渠_施番.dat
      • 管渠_処区.dat
      • 管渠_処分.dat
      • ............

gau31/application/html

アプリケーションのサブページを記述したHTMLファイルを格納します。サブページとはアプリケーションメインHTMLから参照されるページです。一般的に、これらはフレームに割り付けられます。

commonビルトインアプリケーションフォルダのhtmlフォルダの直下には、プラグイン登録画面やバージョンアップ画面などの、「クライアントセットアップ」に関係するhtmlファイルが格納されています。また、GAU-SVRがインストールされると、gau-svrビルトインアプリケーションフォルダのhtmlフォルダの直下に、イントラネット/インターネット運用時にクライアントPCにプラグインをインストールするためのtclexgau30.exeファイルが格納されます。

オンラインマニュアルもこのフォルダに格納するのが一般的です。下記の例では"gauge-man"がオンラインマニュアル格納フォルダです。

  • html
    • gauge-man
    • image
      • symbol

image/symbolフォルダにはTCLEXGAUシステムが利用する「ラスタシンボル画像ファイル」が格納されています。

gau31/application/php

Web公開するphpファイルが格納されています。commonビルトインアプリケーションフォルダのphpフォルダの直下には、WEB-C/SをインストールするとGAU-RMDBサーバーと通信するためのphpファイル群がインストールされます(gau-rmdb/phpフォルダではなくcommon/phpフォルダにインストールされるのは、gau-rmdbフォルダはWebサーバーには置かないフォルダだからです)。またgau-svrビルトインアプリケーションフォルダのphpフォルダの直下には、ログを記録したり、MySQLと通信するためのphpファイル群があります。ただし、自明の事としてphpフォルダはGAUサーバーがWebサーバーの場合にだけ必要です。

gau31/application/locale

localeフォルダは最もTCLEXGAUシステムと結合したフォルダです。このフォルダにアプリケーションコンポーネントのほとんどを集中格納することになっています。

  • locale
    • allusers
    • form
    • layout
      • plot
      • report
    • xml
      • class
      • menu
      • schema

gau31/application/locale/allusers

allusersフォルダには全ユーザー共通の設定ファイルが格納されます。例えば各種クエリ(検索)などです。

  • allusers
    • profile.txt
    • layerview.txt
    • target.txt
    • query.txt
    • ........

ユーザーは独自の検索機能などを定義することができます。それらはgau31/clients/application/usernameフォルダにファイルとして保存されます(usernameは具体的なユーザー名です)。しかし、rootという特別なユーザーが定義した各種設定は、このallusersに格納される仕組みになっています。allusersフォルダに格納されている設定ファイルは全ユーザーに適用され、gau30/clients/application/usernameに格納されている設定ファイルは、そのユーザーにしか適用されない、という仕組みになっています。

gau31/application/locale/form

formフォルダは旧バージョンとの互換性維持を目的に残されているフォルダです。オブジェクトのプロパティウインドウをhtmlファイルとして独自に作成するような場合、そのファイルをこのフォルダに格納します。

gau31/application/locale/layout

layoutフォルダにはページレイアウトファイル?を格納します。帳票用と図面用を分けて格納するように、それぞれreportplotサブフォルダが用意されています。

  • layout
    • report
      • 集計調書.layout
      • 工事個別調書.layout
      • ............
    • plot
      • 下水台帳図(A1).layout
      • 下水台帳図(A2).layout
      • ............

commonビルトインアプリケーションのlayoutフォルダには、アプリケーションが共通に利用する任意図などのレイアウトファイルが格納されています。

gau31/application/locale/xml

xmlフォルダにはxmlファイルが格納されています。xmlファイルには2種類あります。ひとつはマップオブジェクトのクラスを定義するマップクラスxmlです。もうひとつはメニューを定義するメニューxml?です。それぞれclassmenuサブフォルダに格納されています。

  • application
    • locale
      • xml
        • class
          • 下水道.xml
          • 下水人孔.xml
          • ...........
        • menu
          • webgesui_menu.xml
        • schema
          • mcl_6.xsd
          • config_6.xsd

また、schemaサブフォルダにはマップクラスxmlの構造を定義したmcl_6.xsdファイルと、コンフィグxmlの構造を定義したconfig_6.xsdファイルが格納されています。

commonビルトインアプリケーションのxml/classフォルダには、アプリケーションが共通に利用するマップクラスxmlがたくさん格納されています。

  • common
    • locale
      • xml
        • class
          • 参考図書.xml
          • オルソ画像マップ.xml
          • zmap.xml
          • dm.xml
          • .........

gau31/application/tclet

tcletフォルダにはアプリケーション固有のプログラムファイルを格納します。これらのプログラムファイルはTcl言語によって記述されたもので、配布用にパックされた、拡張子を.plug-inとするファイルです。

  • application
    • tclet
      • gesui.plug-in
      • x3dview.plug-in

commonビルトインアプリケーションのtcletフォルダにはおびただしい数の.plug-inファイルが格納されています。これらのファイル群が、アプリケーションから利用できるオブジェクトを提供しています。ファイル名がオブジェクト名になっています。例えばdmファイルインポートは、dm.plug-inファイルが提供するdm.openメソッドで行う事ができます(dmオブジェクトはgwinオブジェクトにプラグインされていますので、実際には$gwin.dm.open と記述します)。

  • common
    • tclet
      • tclexgau.plug-in
      • dm.plug-in
      • shape.plug-in
      • draw.plug-in
      • .........

TLEXGAUフレームワークに戻る