Subject: [ts-mag:00114] OpenGIS Mail Magazine for T.S.U 【第 106号】 Date: Fri, 04 Jul 2003 18:26:15 +0900 From: Taichi FURUHASHI OpenGIS Mail Magazine for Technical Support Users 2003/7/4 Keywords: OpenGIS,TNTmips,POLYSTAT,Ellipse,Group View,stack,JPEG オープンGIS テクニカル・サポート専用メールマガジン 第106号「 必 要 な 数 値 は 自 力 で 求 め る ... 」 ################################################################# 株式会社 オープンGIS 面積とか、長さとか... 基本的なポリゴンやラインの情報は、TNTmips が自動的に計算してくれま すが、それ以外に必要な情報は、人それぞれ違います。 すべての情報を、TNTmips が用意できるわけではありませんので、場合に よっては、自分で計算式を作成する必要があるのですが、では一体、用意 した計算式をどのように組み込めばよいのか... がわからないと、その先 へ進めませんね。 そこで、今週はポリゴンの属性テーブルを用いて、計算式を入力するテク ニックをご紹介いたしましょう。 ● ターゲットは「楕円」です。 TNTmips の データ作成機能(Edit/Spatial Data...)にて、作成した楕円 ポリゴンは、そのままでは、「長半径」や「短半径」が計算されておりま せん。POLYSTAT という標準属性テーブルをいくら見回しても、そのよう な値は用意されていないのです。なぜならば、ポリゴンといっても、ある ときは長方形であり、あるときは楕円であり、あるときは三角形であり、 またあるときは星型かもしれません。そのすべてに共通する値のみしか、 TNTmips は自動的に求めてくれないのです[GeoToolbox 機能を使うと、個 別での楕円情報は取得できますが、複数ポリゴンでは利用できません]。 そこで、今回は、自分で求めた計算式を用いて、たくさんの楕円ポリゴン から「長半径」と「短半径」を求めてみましょう。 さて、まず TNTmips で求まる情報はといいますと、よく使われるのが、 「面積」と「ポリゴンの周囲の長さ」です。そして、この2つの値が関わ る楕円図形の公式としましては、 ☆面積(S) = PI * a * b ☆周囲の長さ(BL) = PI * √( 2 * ( a^2 + b^2 )) : 但し近似式です。 (本当はさらに -(a-b)^2 / 2.2 が付くのですが、今回は省略しました) S: 面積 BL: 周囲長 a: 長半径 b: 短半径 PI: 3.141592...(円周率) という2つの式が知られています。 未知数が2つ( a と b )で、式も2つありますので方程式を解くことで、 それぞれ、a と b の式が求められますね。 ● さて、方程式を解く作業はさすがにメルマガでは詳しくご紹介しませんが、 式が求められましたら、いよいよ本題に移りましょう。 大きくは次の作業を行います。 [1]新しいテーブルの作成: MS-EXCEL のワークシートみたいなものと想像してください [2]計算フィールドの作成: MS-EXCEL の縦方向のセルの集合体(列)みたいなものと想像してください。 [3]計算式の入力 MS-EXCEL のセルの中に埋め込む計算式みたいなものと想像してください。 ● 順を追ってご紹介いたします。 [1]新しいテーブルの作成: ▽メインメニューより、Edit/Spatial Data... を選択します。 ▽Spatial Data Editor ウィンドウのメニューより File/Open... を選択 ▽すでに入力済みの、楕円ポリゴン・ベクタデータを選択して開きます。 ▽Spatial Data Editor ウィンドウのベクタレイヤにあります右向きの 青矢印(Show Details)マークをクリックして下に向けます。 ▽Polygon 要素の行にあります Make Table/Form ボタンをクリックして、 New Table... を選択します。 ▽新しいテーブルの名前をつけます。 ■テーブルの設定を行う New Table ウィンドウにて String Encording... を Japanese (Shift-JIS)、Attachment Type: を Implied One-To-One に 切り替えます。これで、テーブルの作成はほぼ完了です。 [2]計算フィールドの作成: ▽次に、New Table ウィンドウにて、左上の Add Field ボタンを2回押 して、それぞれのフィールド名を変更します。 ▽Field Info タブへ移動して、Field Type: を Computed に、Width: を 10 に、Places: を 3、Unit Type: を Distance に切り替えます。この作 業は、2つのフィールドともに行っておきます。 ■最後に Edit Expression ボタンを押すと、いよいよ計算式の入力です。 [3]計算式の入力: ▽Query Editor ウィンドウが現れますので、まずは、1行目に書いてあ ります $warnings 3 # Set warning level 3 という行は、邪魔ですので 消してしまいましょう。とくに消さなくてもいいのですが、今回は見易さ を重視します。 ▽では、あらかじめ求めておいた式を入力しましょう。ここで基本的な ルールですが、★最終的に得られた値を return()文で記します。★また、 変数は前もって定義しなくても大丈夫です。★行の終わりはセミコロン(;) を付けておきましょう。★ポリゴンの面積は POLYSTATS.Area と記します。 ★ポリゴンの周囲の長さは POLYSTATS.BoundLen と記します。★円周率は pi と表記します。★四則演算や条件式は C++ 言語に準拠しています。 例えば、長半径を求める式(簡易的な近似式を使っていますので、精度は 悪いです)はこのように Query Editor に入力します。 niyari1 = (POLYSTATS.BoundLen)^2 + 4*pi*POLYSTATS.Area; niyari2 = (POLYSTATS.BoundLen)^2 - 4*pi*POLYSTATS.Area; niyari = ( niyari1 * niyari2 ) ^ (1/2); a1 = abs(( (POLYSTATS.BoundLen)^2 + niyari )^(1/2) / (2 * pi)); a2 = abs(( (POLYSTATS.BoundLen)^2 - niyari )^(1/2) / (2 * pi)); if (a1 > a2){ a = a1; }else{ a = a2; } return(a); ▽入力後は 右下の OK ボタンをクリックします。(エラーがでましたら、 どこか記述が間違っていますので、じっくり見返しましょう) ▽同じように、短半径フィールドを選択しまして、Edit Expression ボ タンを押し、Query Editor に、短半径を求める次の式を入力します。 niyari1 = (POLYSTATS.BoundLen)^2 + 4*pi*POLYSTATS.Area; niyari2 = (POLYSTATS.BoundLen)^2 - 4*pi*POLYSTATS.Area; niyari = ( niyari1 * niyari2 ) ^ (1/2); b1 = abs( 2*POLYSTATS.Area / ( (POLYSTATS.BoundLen)^2 + niyari )^(1/2)); b2 = abs( 2*POLYSTATS.Area / ( (POLYSTATS.BoundLen)^2 - niyari )^(1/2)); if (b1 < b2){ b = b1; }else{ b = b2; } return(b); ▽入力できましたら、右下の OK ボタンを押します。(やはり、エラーが でましたらどこか記述が間違っていますので、じっくり見返しましょう) ▽New Table ウィンドウの OK ボタンを押しますと、計算が行われます。 ▽Spatial Data Editor ウィンドウの中の、さらに Polygon 要素の Show Tables ボタンを押しますと、作成しましたテーブルのボタンが現れます のでクリックしましょう。 ■このように、各ポリゴンごとの、簡易計算式による「長半径」と「短 半径」の計算結果がテーブルに表示されます。もし、何も表示されてい ない場合は、テーブルウィンドウの View All Record ボタンをクリック してください。 ● いかがですか? どうも、計算結果が違うぞとか、式を変更したい場合は、メニューより Table/Edit Definition... を選択しますと、見覚えのある New Table ウィンドウが現れますので、再度 Edit Expression ボタンを押して修 正し直して下さい。 これで、もうどんな式でも怖くありませんね。 今週の新プチ・テクニック """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " " できるかぎり View ウィンドウで作業したい... " " TNTmips は、データを表示する際でも、Group Controls ウィンドウ " と Group View ウィンドウの2つが現れ、どこにどの機能があるのか、 " わからなくなってしまうことがあります。とくに、データが表示され " ていない Group Controls ウィンドウは、普段、後ろのほうに隠れて " いて、見つけづらい... " " そんなときは、できる限りの操作を Group View ウィンドウ側で行っ " てしまいましょう。 " " ● " " まず、GIS データの追加は、Group View ウィンドウ左上にあります " Add Layer ボタンが便利です。 " " " " ここから辿りますと、全てのデータ形式はもちろん、カタログファイ " ルからの選択も可能になります。(カタログファイルについては、メ " ルマガ第26号をご参照ください) " " ● " " また、各レイヤごとのデフォルト設定などを行う Layer Controls " ウィンドウは、通常左側に表示されています凡例の上で右クリック " することで、Controls メニューがでてきます。 " " " " この2つの機能だけを覚えておくだけで、相当、Group View ウィン " ドウの使い勝手がよくなりますよ。 " " """" 隔 週 で 新 / 過 去 テ ク ニ ッ ク を 交 互 に 発 信 """" New Things 最新情報 ================================================================= = = SML 実行時の out of stack space エラー修正【TNT 修正パッチ】 = http://www.opengis.co.jp/htm/patch/patch.htm#THIRD = = JPEG 出力時のコントラスト利用機能追加【TNT 修正パッチ】 = http://www.opengis.co.jp/htm/patch/patch.htm#THIRD = ================================================================= ■■■■■■ 今 年 も テ キ ス ト 販 売 中 !! ■■■■■■ 昨年部数限定でご提供しました「リモートセンシングテキスト」の改訂版を 今年も作りました!! しかも、値段は安く、中身は濃くなりお買い得です!! 同時に、TNTlite の日本語解説セットも、オープンGIS 独自パッチや、 北海道地図さんの GISMAPTerrain サンプルデータと共にリリースしました。 詳しい内容はこちらをご覧ください。 http://www.opengis.co.jp/htm/info/book.htm ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ バグ・トラブル情報 ??? ??? ??? 例えば、数値地図画像などを、JPEG 形式で出力するとき、 ??? 色合いがおかしくなることがたまにあります。 ??? ??? 例えばこんな具合に... ??? ??? ??? ??? ● ??? ??? 調べてみますと、どうやらコントラスト・サブオブジェクトがある ??? 場合に、自動的に最後に設定したコントラストを当てはめているよ ??? うです。 ??? 他の出力形式(TIFF, GIF など)では、Display 機能で表示された ??? 際のイメージどおりの色合いで出力されます。 ??? ??? 例えばこんな色合いです。 ??? ??? ??? ??? ● ??? ??? コントラストが有効になること自体は、便利でもあるのですが、す ??? べて自動的にコントラスト設定を使われるのも不便です。そこで、 ??? この選択をユーザー側で決定できるように、JPEG 出力設定のウィン ??? ドウにて、最後のコントラスト設定を使用するかどうかのチェックが ??? 追加されました(Use Most Recent Contrast Table チェック)。 ??? ??? ??? ??? ( Process/Import-Export... 機能の JPEG Export ウィンドウ内です) ??? ??? この機能を追加する場合は、マイクロイメージ社のサイトより、最 ??? 新のパッチ(27Jul03)をダウンロードして充ててください。 ??? http://www.microimages.com/freestuf/tntpatch/ ??? 詳しい、パッチの充て方につきましては、こちらをご覧ください。 ??? http://www.opengis.co.jp/htm/patch/patch.htm ??? ??? ● ??? ??? □チェックをオフにすると、通常のカラーマップだけが採用されますが、 ??? ??? ??? ??? □チェックをオンにしますと、コントラスト設定も採用されてきます。 ??? (サンプルは、わざとコントラストを極端に変更しています) ??? ??? ??? ??? ??? コントラスト設定をオフにしても、チェックをオンにしておきます ??? と、自動的にサブオブジェクトを見つけ出してしまいますので、ご ??? 注意ください。普段は、オフ(デフォルトはオフです)にしておけば ??? 問題ありません。 ??? ??? ??? ??? 今週の話題 on メーリングリスト ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ 今週は特にありませんでした。 ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ メーリングリストに参加されたい方は、 info@opengis.co.jp までご連絡ください。 弊社からの対応は バグ対応と、新製品告知のみですが、 ユーザーさまの間での情報交換の場として 多くの方に利用されています。 ■■■■■■■ 現 在 の T N T m i p s の 価 格 ■■■■■■■ ・TNTmips シングルライセンス 840,000円(税別・送料別) ・年間バージョンアップ(2回分) 140,000円(税別) ・年間テクニカルサポート 90,000円(税別) 普段より、元価格にあまり上乗せしていない分、 円相場に応じて価格が変動いたしますことを ご理解よろしくお願いいたします。 わからない点などありましたら、 info@opengis.co.jp までご連絡ください。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ ############# このメールマガジンの配信について ################ このメールマガジンは、 年間テクニカル・サポートに加入されている、 ユーザーさまのみを対象としております。 基本的には、登録アカウント1つに対して 1ユーザーを配信対象としておりますが、 例えば、研究室の予算で加入された場合などは、 ご購入いただいた指導教官と、実際に TNTmips で作業を行う学生1名の、 計2ユーザーを対象として配信させていただきます。 1アカウントに対して合計3名以上の配信は行いません。 学生さん2名が同じくらい使用する場合は、 申し訳ありませんが、じゃんけん等で1人に決めてください。 また、テクニカル・サポートの期限を半年以上過ぎてしまった場合は、 メールマガジンの配信を停止させていただきます。 メールマガジンが配信されなくなった時は、 サポート期限が半年過ぎたとお考えください。 転勤、ドメイン変更などでメールアドレスが変わった場合は、 お手数ですが、弊社までご連絡ください。 テクニカル・サポート活用案内 >サービスその1:緊急なバグ情報はすぐにメール配信します。 >サービスその2:TNTmips に関するどんな質問にも TEL/e-mail/FAX で対応。 >サービスその3:対応は最優先で行います。 >サービスその4:専用FAX質問用紙をお送りします。 >サービスその5:週に1回メールマガジンを配信します。 >サービスその6:展示ブースへご来場の方には特製オリジナルグッズを進呈。 >サービスその7:サポート対応で FTP サイトを 20MB まで利用できます。 >サービスその8:メルマガ・バックナンバー・サイトも利用できます。 >サービスその9:現在計画中です... 「これで年間9万円は安い!!」と感じていただけるような サービスを提供していきたいと考えております。 よろしくお願いいたします。 ============ おことわり ============= ※OpenGIS Mail Magazine for T.S.Uでは、 TNTmipsに関わる新しいニュースを、 毎週金曜日に、皆さまへご提供させていただきます。 ※このメールマガジンの転載・転送はご遠慮ください。 ================================