FC2ブログ

パソコン作業で困った時は「ひろじょう」

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop

MapInfoのラベル拡張

 MapInfoの便利で不便な?機能として「ラベル」があります。

fig01.jpg

fig02.jpg

 この様なポリゴンオブジェクトがあったとして、簡単な操作で

fig03.jpg

 この様に、各オブジェクトに目印(ラベル)を表示できます。



fig04.jpg

fig05.jpg

fig06.jpg

 特定のグループに属するものだけを抽出して表示させる事もできます。
 その時、ラベルの表示方法も自動的に引き継がれます。

 便利なのはココまでで・・・



fig07.jpg

 上部4オブジェクトについて、手動でラベル位置を変更しました(これができるのも、MapInfoの強みです)。
 その後、レイヤ単位でラベルを非表示にしても・・・

fig08.jpg

 おかしい!、上記4オブジェクトのラベルが言う事を聞きません。
 こうなってくるともう泥沼で、何をどうやっても制御不能になってしまいます。



 気を取り直して、何か良い方法はないか考えてみます。
 幸いな事に、MapInfoはテキストを独立したオブジェクトにする事ができますので、ポリゴンオブジェクトとうまく重なるテキストオブジェクトをラベル代わりに使ってやれば良いですね。
 そして更にラッキーな事に、

fig09.jpg

 そのための便利な道具が標準装備されています。チマチマとテキストを入力する必要はありません。
 良いですね。

fig10.jpg

 作ったものが、コレです。4オブジェクトのラベル位置も反映されていますね。

 話がこれだけなら良いのですが、上の方を見て下さい。「特定のグループに属するものだけを抽出して」とありますね。
 つまり、クエリの結果だけを表示させる場合、オブジェクトについては問題ありません。ですが、テキストをどうしましょうか。
 実は、標準ツールで作成したテキストオブジェクトは、

fig11.jpg

 元になったオブジェクトの属性を引き継いでいないのです。
 なので、クエリ結果の上にテキストのレイヤをまとめて被せると・・・、表示させたくないものまで見えてしまいます。
 全テキストにチマチマと元オブジェクトの属性を入力してやるという方法もありますが、数が多いと大変ですよね。



 今回、この種の問題に直面しましたので、「何とかするツール」を作成しました。
 ほぼ自動的に、

fig12.jpg

fig13.jpg

 テキストオブジェクトを作成します(マゼンタのもの)。
 もちろん、元オブジェクトの属性も引き継がれます。

スポンサーサイト

PageTop

ジオリファレンス情報の再利用1

 ArcGISでジオリファレンス作業をすると、「abc.tif.aux.xml」みたいなファイルが作られます。
 中身は、「このピクセル位置は、この座標」といった類いのものが書かれています。

 これ、思わぬ拾いものですよ。
 例えば、ArcGISでラスター300個のジオリファレンス作業をしたとします。
 結構時間かかりますよ。1つ10分として、のべ50時間かかります。
 延々作業して、やっと終わった瞬間に「悪い、ArcGISではなくて、MapInfoで合わせて欲しかったんだ」なんて言われたら、もう仕事をする気がなくなりますよね。
 全部やりなおしですから。

 上記xmlの内容を使えば、この作業を激烈に省力化できます。
 ちょっとしたツール(いずれ作ります)にxmlをまとめて放り込んで、機械的にTABを生成できますね。
 

PageTop

テキストの回転

 何かと比較されるArcGISとMapInfo、実際にはArcGISの一人勝ちみたいなところがありますが、MapInfoにはMapInfoなりに、ちらほらと非常に優れたところがあります。
 その一つが、「CADファイル(dxf、dwg)の扱いやすさ、再現性の高さ」ですね。

 ArcGISでdwgファイルを開くと「うーん、ちょっと見た目が悪い」になりますが、MapInfoでは
org01.png
という具合に、「CADソフトで表示させたものと、ほぼ同じ」画面が再現されます。
 この「テキストオブジェクトの傾き具合」が、何とも絶妙ですね。

 さて、読み込んだdwgファイルは、通常そのままではMapInfoで使えません。それは、
・(GISとしての)座標を持っていない
・上が北になっていない
からです。
 ということは、「座標を与えて回転させてやれば問題ない」という事なのですが、確かに座標を与えるのは慣れると簡単な作業です。
 やっかいなのは、回転、特に「テキストオブジェクトの回転」なのです。

 MapInfoの標準回転機能ですが、一つはMapCADですね。
org01_cad30.png
 時計回りに30度回転させました。見てのとおり、テキストオブジェクトそのものは回転していません。場所も背景とは完全に食い違ってしまっています。
 これは・・・とても使い物にならないですね。

 別観点の対策として「マップの回転」というのがあります。
org01_map30.png
 こちらも、だめですねぇ。

 さて、今の課題は、
org01_text_only.png
このテキストオブジェクト達を、いかに美しく回転させるかなのですが、実は標準機能以外の道具を使うと
org01_cmif30.png
という具合に、あっさり実現できてしまったりします。

 さて、成果品納入時に「MapInfo?、ArcGIS形式で納品して下さい」というのもよくある話で、こうなってくると更にやっかいです。せっかく調整したテキストオブジェクト達は、ArcGIS形式に変換すると「横水平」になってしまいます。
 MapInfoのテキストオブジェクトは、ArcGISとは別世界ですね。
(そもそも、GISで「テキスト」という事自体に無理があるのでしょうが。)

 一つの解決策は、
org01_text_only_pline.png
これですね。テキストオブジェクトを折線でトレースしてポリゴン化してしまいます。
 もちろん、手作業でやると無限に時間がかかるので、ソフトウェア的に処理します。
 こうしてしまえば、ArcGISにも簡単に持っていけるでしょう。

 気になるソフトウェア的トレースの精度ですが、
org01_text_only_pline2.png
 重ねてみました。黒が本来のテキストオブジェクト、緑がトレースで作成した疑似テキストオブジェクトです。
 まだまだ微調整は可能ですが、既に実用上問題ない精度が出ていると思います。


PageTop

ノードの右回り・左回り

 MapInfoでポリゴン(ドーナツポリゴンを含む)を作る時、ノード(頂点)の並び順は右回り・左回りのどちらでも構いません。これは、イラストレータ等のベクトル系お絵かきソフトでも同様でしょう。
------------
 GISシェアNo.1なArcGISでも、もちろんポリゴンを作ることができますが、描画方法というか操作スタイルがMapInfoとはちょっと違いますね。
------------

 MapInfo上の「ユニバーサル・トランスレータ」というツールで、TAB(MapInfoの標準ファイル形式)からShapefile(ArcGISの標準ファイル形式)を作る事ができるのですが、ある時これが結構な騒動の原因となりました。
 MapInfoで作ったポリゴン数個が、ArcGIS側で「不正なポリゴン!」と弾かれてしまったのです。
 ArcGISには「ノードは右回り」という規則があったのですが、MapInfoで作ったポリゴンの中に左回りが混じっていたのでした。

 そこら辺の細かい仕組みは、ユニバーサル・トランスレータが上手い具合に処理してくれれば良いのでしょうが・・・

・不正なポリゴンを、あきらめて作り直す
・GISの内部に潜り込む
どちらにするか悩んだ結果、後者つまり専用ツール(MapInfo用)を作って対応しました。

PageTop

ワークスペースの書き換え

 MapInfoというGISは、
・こんなファイル(テーブル)を開いている
・各テーブルを、この様に表示している
という作業環境を、「ワークスペース」として保存しておく事ができます。

 このワークスペースには、それこそありとあらゆる状態を書き込んでおく事ができるので、非常に強力と言えば強力なのですが、これを逆に言うと「ありとあらゆる条件がそろわないと、元の作業環境を再現できない」という事でもあります。
 例えば、ワークスペース中で10個のファイルを読み込む事になっているとして、そのうちの1個が別の場所に動かされていたら、あるいはファイルの構造がほんの少し変わっていたら、もうそのワークスペースは使えません。

 先日、
・過去に作ったワークスペースが、約500個ある
・元になったファイルはそろっているが、全体のフォルダ構成を大きく変更したところ、ワークスペースを開けなくなった
・また、古いファイルを新しい情報で更新したい
・更に、状況を見て新規のファイルを追加したい
という依頼がありました。

 ワークスペースの再構築は、少なくとも1ファイルにつき5分はかかりますから、ざっと2500分(約42時間)かかります。
 単にファイルを追加する作業だけでも、1ファイルに1分はかかりますから、約8時間かかります。
 42時間かけて再構築し、ファイルを1つ追加して8時間かかり、一息入れていると別のファイルを追加する事になって更に8時間かかり、これで終わりではなくて更に追加するファイルが出てきて・・・、依頼者様は「考えただけで、消耗してしまう」という事でした。

PageTop
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。