TCLEXGAU技術情報
TCLEXGAUについての技術情報を掲載しています。
TCLEXGAUとは
■TCLEXGAU(ティクレックスガウ)は、WebGISアプリケーション構築ツールであり、 WebGISアプリケーションのフレームワークです。 デスクトップ環境、LAN環境、イントラネット/インターネット環境に対応しています。 これらの環境を移動するときに、ソフト、データの修正作業は原則的に必要ありません。それぞれのフレームワークが共通だからです。
■TCLEXGAUは.NETやJava仮想マシン環境などの、第3者のミドルウエアを必要としません。 データベースについても同様です。
■TCLEXGAUはTclインタプリタとブラウザアドオン(プラグイン)を含んでいます。 最下層部分はC++で記述されたネィティブコードにて実装されています。 そして、その上の階層はTclスクリプトで記述されたオブジェクト群という構造になっており、 最上層はJavaScriptによるブラウザとのインターフェース層になっています。
■TCLEXGAUアプリケーションのユーザーインターフェースは、 TCLEXGAUが提供するオブジェクトのメソッドをJavaScriptを介してコールする方式で構築します。 HTMLで画面を設計し、アイコンがクリックされたらTCLEXGAUが提供する オブジェクトのメソッドをコールするのです。 主要なメソッドコールはJavaScript関数としてラッピングされています。 JavaScript関数としてラッピングされていない機能もTclスクリプトを実行してくれるJavaScript関数(appobj.method)を介して実行することができます。
■「地物・施設オブジェクト」の設計はxmlファイルへの記述により行います。 例えば「建物」オブジェクトのレイヤーや属性項目を「建物.xml」というファイルに記述する方式になっています。 xmlファイルにはイベント処理も埋め込めます。例えば建物オブジェクトの属性がユーザーにより修正されたときに、 値のチェックや他のオブジェクトとの整合性を取るための処理などを記述することができます。 これらのxmlファイルは、プロパティやメソッドなどの一般的なクラス定義に加え、表示スタイル、クエリなども記述できるという大きな特長を持っています。 メソッドの記述はTclスクリプトにより行います。
■TCLEXGAUが主要なターゲットとするアプリケーションは施設管理システムです。 都市計画、上下水道、ガス、土地管理、公園管理などのパッケージを提供しています。 これらのアプリケーションは統合することもできます。 それぞれのアプリケーションをそのままにした状態で統合できます。統合環境でも個別環境でも同時運用できます。 統合のための作業では、ユーザー管理とセキュリティに関する設定が重要になります。 これらの具体な作業のほとんどはxmlファイルへの記述作業です。 ユーザー認証において各ユーザーに権限が割り振られ、そのユーザーの権限によって、見れる地物/施設、修正できる地物/施設、 使用できる機能を定義することができます。
■TCLEXGAUアプリケーションを導入するとアプリケーションライセンスを取得できます。 アプリケーションライセンスはクライアントPCに対して閲覧、データ修正を許諾します。 統合型へ発展すべく、サーバーライセンスを導入すると、無制限のクライアントPCでの閲覧が可能になります。 更に、無制限のクライアントPCでデータ修正も行えるように発展させるにはWeb-C/Sライセンスを導入します。 Web-C/Sライセンスは、イントラネット/インターネット環境でのクライアント/サーバーシステムも提供します。
■一般的なWebGISは画像地図を表示しますが、TCLEXGAUは、ブラウザプラグインにより、ベクトルデータを表示します。
プラグイン方式は「セキュリティの問題がある」との理由から敬遠されがちですが、高度なWebアプリケーションはブラウザ拡張なしには実現しません。
出所不明なActive-Xコントロールをインストールしないことと、悪意あるプログラムの踏み台にされない配慮がプラグインになされている限り、問題ありません。
プラグインはリッチクライアントを実現する上で不可欠であり、リッチクライアントは分散処理を実現し、サーバーの負荷を著しく軽減してくれます。
もちろん画像地図も表示することができます。WMTS画像地図も表示することができますので、地理院地図やOpenStreetMap、GoogleMap、GEOSPACE CDS等を表示することができます。
Active-Xコントロールを使用しないWeb閲覧システムも提供しています(Gau-Andy)。
Gau-Andyでは画像地図に加えベクトルデータも表示することができます(GeoJSON)。
TCLEXGAUプラットホーム
- クライアントPC
- OSはWindows10/11、ブラウザはEdge(IEモード)、IE11となります。
- サーバー
-
LAN環境での運用におけるサーバーOSはWindows10/11、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種類のフォルダが存在します。クライアンツフォルダ(clients)とアプリケーションフォルダがあります。
クライアンツフォルダ(gau31/clients)
このフォルダは1つしかありませんが、下記のように多くのサブフォルダがあります。
- gau31
- clients
- lic
- plugin
- appusers
- webfiling
- user1
- user2
- webfiling
- clients
gau31/clients/licフォルダにはクライアントライセンスファイルが格納されています。クライアントライセンスファイルの拡張子は.licです。ファイル名は「アプリケーション名+クライアントPC名」になっています。クライアントライセンスはアプリケーションごと、クライアントPCごとに必要です。尚、GAU-SVRとWeb-C/Sのライセンスファイルであるserver.licとwebserver.licファイルはgau31直下に格納されます。これらはアプリケーション共通のライセンスファイルだからです。
gau31/clients/pluginフォルダにはIEに機能を追加するためのActiveXコントロールとdllファイル群が格納されています。(ActiveXコントロールはクライアントPC側で走るため、clientsと命名されたこのフォルダに格納されています。)
gau31/clients/appusersは「アプリケーションユーザーフォルダ」であり「webfiling」などのアプリケーション(ライセンス名)ごとのサブフォルダがあり、さらにその下にログインしたユーザーごとのサブフォルダが存在します。 appusers下のサブフォルダはユーザーがアプリケーションを起動するとシステムによって自動的に作成されます。 user1、user2サブフォルダは実際にはクライアントPC名か、ユーザー認証を行った場合のログインユーザー名になります。
Web環境とLAN環境の相違
- LAN運用では、クライアントPCはサーバーのclients/pluginフォルダからプラグインファイルをメモリにロードします。
- イントラネット/インターネット運用では、clientsフォルダはWebサーバーには不要です。その代わり、クライアントPC側にTCLEXGAUフォルダとしてインストールされている必要があります。
アプリケーションフォルダ
TCLEXGAUアプリケーションのコンポーネントはgau31の直下にサブフォルダを作成して一式格納します。 例えば下図のサブフォルダのうち、common、gau-gesui、〇〇市下水道がアプリケーションフォルダです。
- gau31
- clients
- common
- gau-gesui
- 〇〇市下水道
アプリケーションには「一般アプリケーション」と「ビルトインアプリケーション」があります。 common、gau-gesuiはビルトインアプリケーションです。 ビルトインアプリケーション」は「基底クラス」の意味を持っており、「一般アプリケーション」はその「拡張クラス」、という関係になります。 common、gau-gesuiの拡張クラスが〇〇市下水道という関係です。 あるいは〇〇市水道というアプリケーションがあれば、それはcommon、gau-josuiの拡張クラスです。 gau-gesuiとgau-josuiはそれぞれFSNが提供するGAUGE、GAUWAのコンポーネントです。
この他、「ビルトインアプリケーション」にはgau-svrやgau-rmdbなどがあります。 それぞれGAU-SVR、Web-C/Sのコンポーネントです。「ビルトインアプリケーション」は修正禁止です。
アプリケーションフォルダの内部構造はTCLEXGAUアプリケーションフォルダをご参照ください。
TCLEXGAUアプリケーションフォルダ
TCLEXGAUアプリケーションのコンポーネントは、TCLEXGAUルートフォルダ直下のサブフォルダ(アプリケーションフォルダ)にインストールします。アプリケーションフォルダの下にはアプリケーションメインHTMLファイルを配置し、そして、TCLEXGAUによりあらかじめ名称が定められたサブフォルダを作成して、そこに該当するコンポーネントをインストールします。
commonなどのビルトインアプリケーションの場合も、当然のこととして、同じサブフォルダ構成になっています(必ずしもすべてのサブフォルダが存在するとは限りません)。
下記例におけるapplicationは、具体的にはgau-geuiなどのアプリケーション名を表すフォルダ名になります。
- gau31
- application
- gadget
- dbms
- html
- php
- locale
- map
- tclet
- application
拡張アプリケーションフォルダ名称は任意です。しかし、サブフォルダ名は原則的に固定名称であることにご注意ください。
以下、サブフォルダごとに解説します。
gau31/application/gadget
gadgetフォルダにはガジェットを配置します。commonビルトインアプリケーションの場合には、TCLEXGAUが提供するコマンドを呼び出すためのガジェットが配置されています。
- gau31/common/gadget
- $mouse.js
- $menu.js
- $tool.js
- ........
これらのガジェットをカスタマイズしたり、あるいは新しいガジェットをアプリケーションが提供する場合は自分のgadgetフォルダに置きます。
gau31/application/dbms
検索インデックスファイルが格納されます。また、排他制御に関連した一時的なファイルが作成される場合もあります。
indexフォルダに検索インデックスファイルが格納されます。検索インデックスファイルはサーバーマップの検索スピードを上げるためのファイル群であり、「エクスポート」→「検索インデックス」コマンドで作成、更新されます。下記の例のようにクラス名と属性項目名を連結したファイルが作成されています。作成されるファイルの種類はアプリケーションが設定します。
- gau31/appplication/dbms
- index
- 管渠.dat
- 管渠_施番.dat
- 管渠_処区.dat
- 管渠_処分.dat
- ............
- index
gau31/application/html
アプリケーションのサブページを記述したHTMLファイルを格納します。サブページとはアプリケーションメインHTMLから参照されるページです。一般的に、これらはフレームに割り付けられます。
commonビルトインアプリケーションフォルダのhtmlフォルダの直下には、プラグイン登録画面やバージョンアップ画面などの、「クライアントセットアップ」に関係するhtmlファイルが格納されています。また、GAU-SVRがインストールされると、gau-svrビルトインアプリケーションフォルダのhtmlフォルダの直下に、イントラネット/インターネット運用時にクライアントPCにプラグインをインストールするためのtclexgau30.exeファイルが格納されます。
オンラインマニュアルもこのフォルダに格納するのが一般的です。下記の例では"gauge-man"がオンラインマニュアル格納フォルダです。
- gau31/appplication/html
- gauge-man
- image
- symbol
image/symbolフォルダにはTCLEXGAUシステムが利用する「ラスタシンボル画像ファイル」が格納されています。
gau31/application/locale
localeフォルダは最もTCLEXGAUシステムと結合したフォルダです。このフォルダにアプリケーションコンポーネントのほとんどを集中格納することになっています。
- gau31/appplication/locale
- allusers
- layout
- plot
- report
- xml
- class
- menu
- schema
gau31/application/locale/allusers
allusersフォルダには全ユーザー共通の設定ファイルが格納されます。例えば各種クエリ(検索)などです。
- gau31/application/allusers
- profile.txt
- layerview.txt
- target.txt
- query.txt
- ........
ユーザーは独自の検索機能などを定義することができます。それらはgau31/clients/appusers/usernameフォルダにファイルとして保存されます(usernameは具体的なユーザー名です)。 しかし、rootという特別なユーザーが定義した各種設定は、このallusersに格納される仕組みになっています。allusersフォルダに格納されている設定ファイルは全ユーザーに適用され、一方のgau30/clients/appusers/usernameに格納されている設定ファイルはそのユーザーにしか適用されない、という仕組みになっています。
gau31/application/locale/layout
layoutフォルダにはページレイアウトファイル?を格納します。帳票用と図面用を分けて格納するように、それぞれreport、plotサブフォルダが用意されています。
- gau31/application/layout
- report
- 集計調書.layout
- 工事個別調書.layout
- ............
- plot
- 下水台帳図(A1).layout
- 下水台帳図(A2).layout
- ............
- report
commonビルトインアプリケーションのlayoutフォルダには、アプリケーションが共通に利用する任意図などのレイアウトファイルが格納されています。
gau31/application/locale/xml
xmlフォルダにはxmlファイルが格納されています。xmlファイルには2種類あります。ひとつはマップオブジェクトのクラスを定義するマップクラスxmlです。もうひとつはメニューを定義するメニューxmlです。 それぞれclass、menuサブフォルダに格納されています。
- gau31/gau-gesui
- locale
- xml
- class
- 下水道.xml
- 下水人孔.xml
- ...........
- menu
- webgesui_menu.xml
- class
- xml
- locale
commonビルトインアプリケーションのxml/classフォルダには、アプリケーションが共通に利用するマップクラスxmlがたくさん格納されています。
- gau31/common
- locale
- xml
- class
- 参考図書.xml
- オルソ画像マップ.xml
- zmap.xml
- dm.xml
- .........
- class
- xml
- locale
○○市下水道などの拡張アプリケーションフォルダ下のxml/classフォルダにxmlファイルがあれば、それらはcommonやgau-gesuiなどの基底アプリケーションをカスタマイズしたファイルです。 GAU2.9とは異なり、基底クラスと同じ内容のxmlファイルを置いてはいけません。またカスタマイズした場合も「○○市_参考図書.xml」などと名称を変えてもいけません。
gau31/application/tclet
tcletフォルダにはアプリケーション固有のプログラムファイルを格納します。これらのプログラムファイルはTcl言語によって記述されたもので、配布用にパックされた、拡張子を.plug-inとするファイルです。 「common]、「gau-gesui」などの基底アプリケーションの場合にはtcletフォルダ下に沢山のplug-inファイルが存在しますが「○○市下水道」などの拡張アプリケーションの場合にはほとんど空です。基底アプリケーションのplug-inファイルを参照するからです。
- gau31/common
- tclet
- tclexgau.plug-in
- dm.plug-in
- shape.plug-in
- draw.plug-in
- .........
- tclet