タグ別アーカイブ: データ管理

Index polygonを作るArcScriptの紹介

以前、複数のラスタの配置図を作るという記事でインデックスポリゴンの作成方法を紹介しましたが、もっと使いやすいArcScriptが公開されていましたのでご紹介します。

Create Raster Index Shapefile

インストールは、インストーラーがついていますので、setup.exeをダブルクリックし、インストール先フォルダを選択するだけです。

ボタンを表示するには、
ツール>カスタマイズ>コマンド>Query Tools>Create Raster Index Shapefile
とすすみ、適当な所にボタンを配置します。

設定は以下の通り、誰でも分かる簡単な内容です。

  • Input Folder:ラスタが入っているフォルダを選択
  • Output Shapefile:保存先及び名前を指定
  • Process Subfolders:サブフォルダも検索してくれます
  • Project polygons WGS84:座標系をWGS84に変換してくれます

あとは、Create Indexボタンを押せば、サブフォルダにあるラスタデータも全て統合した、使いやすいインデックスポリゴンを作成してくれます。進捗率だけではなく、どのファイルを処理中かも表示されますので、本当に作業中なのか不安になることがありません。

で、出来上がるシェイプファイルも扱いやすい。ジオメトリが壊れているのでそのままでは使えなかったり、パス名が長いと途中でパス名が切れてしまうような、困った仕様ではありません。

属性テーブルも扱いやすいです。

  • Shape:当然Polygon
  • NAME:ファイル名
  • PATH:ファイルの保存先(ファイルパス)&ファイル名
  • FORMAT:ファイル形式(TIFFとかJPEG)
  • COMP:圧縮タイプ(無圧縮ならNone)
  • PYRAMID:ピラミッドの有無(作成済みだとTrue)
  • BANDS:バンド数
  • PIXEL_TYPE:画素タイプ(8ビットとか)
  • SP_REF:そのラスタが設定されている空間参照
  • UNIT:単位
  • SIZE_X:ピクセルサイズX(X方向の画素数)
  • SIZE_Y:ピクセルサイズY(Y方向の画素数)
  • COLS:何かを基準にした列数
  • ROWS:何かを基準にした行数
  • X_MIN:X座標の最小値
  • X_MAX:X座標の最大値
  • Y_MIN:Y座標の最小値
  • Y_MAN:Y座標の最大値

これだけの情報がリスト化されていれば、属性で表示すべきラスタをフィルタリングしたり、ハイパーリンクを付けたりが容易ですね。コレは、誰にでもお勧めできて、ぜひ常用したいArcScriptです。

複数のラスタの配置図を作る

ArcGISで地形図やオルソ写真などのラスタを背景に多数配置している場合、動作が遅くなることを避けるために、必要範囲外を非表示にしている事が多いと思います。

ラスタが数枚であれば問題ないのですが、大量の画像があるときに、図郭(配置図・インデックス)があれば便利だなと思いませんか?

そこで、画像ファイルのインデックスを作る事ができるエクステンションを紹介します(このプラグインはArcCatalogで使用します)。

Raste Index Polygonをダウンロード

【Raste Index Polygonのセッティング】

  1. まず、解凍したファイルを適当なフォルダにコピーする。
  2. ArcCatalogを起動する。
  3. ツール>カスタマイズとすすみ、ダイアログの下側にある『ファイルから追加』を選ぶ。
  4. 解凍した【RasterIndexPolys.dll】を選択する。
  5. ボタンを追加できるようになったので、
    ツール>カスタマイズ>コマンドとすすみ【Developer Samples】カテゴリにある【Create Raster Index Polys】をツールバーに配置する。

【Raste Index Polygonの使い方】

  1. ArcCatalogで、座標を関連づけた写真が保存されているフォルダを開く。
    ※フォルダ階層が深い場合など、エラーがおきる可能性があります。
    ソースを見ると、ファイル名+フォルダ名で50文字までしか対応していないようなので、フォルダ名が長い場合は、一時的に移動させておくと良いかと思います。
  2. ArcCatalogのツールバーから【Create Raster Index Polys】をクリック。
    Raster types>『All Types』
           『ESRI GRID』『IMAGINE Image』『TIFF』『JPEG』でも可
    Select raster>インデックスを作りたいラスタを選択
    Shapefile name>なんでもいい
  3. ラスタが保存されているフォルダに、インデックスシェイプファイルが出来ます。
  4. たいてい、作られたshapeファイルのジオメトリが壊れているので、【ジオメトリの修正】を行います。
    Arc Toolboxから、データ管理ツール>フィーチャ>ジオメトリの修正

出来上がったshapeファイルをArcMapに配置して、ラベルを表示すればファイルへのアクセスが格段に楽になります。

1000万行を超える巨大なテキストファイルを扱う

秀丸エディタが扱えるテキストの最大行数1000万行を越えるCSVデータを扱う必要があったため、巨大なデータを扱えるテキストエディタを調べてみました。

高価な有料ソフトを視野に入れればMIFESなどがあるのでしょうが、低価格でできればフリーソフトという観点で選ぶと、EmEditorフリー版かTeraPadという選択が良さそうです。

秀丸(シェアウェア)の上限値は1000万行です。
普段は重宝しているのですが、今回行いたい作業では使えません。
http://hide.maruo.co.jp/software/hidemaru.html

さくらエディタ(フリーウェア)は、メモリに依存するとの事でしたが、自分の環境では読めませんでした。
http://ringonoki.net/tool/ed/sakuraeditor.html

QXエディタ(シェアウェア)もダメでした。
ただし、部分的にファイルを読み込む機能により、ファイルを高速に開くことができたため、数十メガ程度のファイルであれば、良い選択かもしれません。 
http://www2k.biglobe.ne.jp/~araken/

TeraPad(フリーウェア)は、1000万行を超えるテキストファイルを扱えました。
http://www5f.biglobe.ne.jp/~t-susumu/library/tpad.html

EmEditor(フリー版)は、1000万行を超えるテキストファイルを扱えました。
http://www.vector.co.jp/soft/winnt/writing/se047993.html
プロフェッショナル版(シェアウェア) の場合、最大 248 GB (または21億行) という非常に大きなファイルも扱えるようです。

【番外】鈴川エディタ(シェアウェア)は、作者のホームページによると300Gのテキストをサクサク扱えるということでしたが、あやしいので試しませんでした。
http://www.szkwjp.com/
http://comment.vector.co.jp/comment.php/367901

複数のポリゴンを1つにするには?

同じシェイプファイル内であれば、エディタツールバーの中にあるマージを使います。

複数のシェイプファイルから1つのポリゴンを作成するには、ArcToolbox(赤いアイコン)にあるマージを使います。

ArcToolbox > データ管理ツール > 一般 > マージ

ただ、マージしただけだと元々のファイルの境界線が残ってしまいます。すこしでもスッキリさせたい場合には、さらにArcToolboxにあるディゾルブを使うとよいでしょう。

ArcToolbox > データ管理ツール > ジェネラライズ > ディゾルブ

ディゾルブコマンドでは、複数のシェイプを何も考えずに1つのポリゴンにしてしまう事も可能ですし、もし元々のポリゴンに属性を持たせているのであれば、その属性値をもとにくっつけることもできます。例えば同じ市町村名ごとに結合させるとか、地目ごとに合成させる等が可能です。

フォルダ内のテキストファイルを全て結合する方法

複数のTEXTファイルやCSVファイルを結合するためのフリーソフトが多数ありますが、なかなか良いものが見つからなかったため、私が普段行っている、処理速度が速くかつ簡単な方法を紹介してみます。

といっても、コマンドプロンプト(DOS窓)を開き、
copy c:\data/*.csv c:\data2/output.csv 
と入力するだけです。

そうすると、c:\dataにあるcsvファイルを全て結合して、同じフォルダにoutput.csvというファイル名で出力することが可能です。

ただ、上記のようにフォルダ名を指定するのが面倒なので、任意のフォルダをベースにDOS窓を開いてくれるソフト、たとえばFolderPrompt(http://www.vector.co.jp/soft/winnt/util/se421559.html)などをインストールします。

そのようなソフトをインストールしてあると、フォルダを選択→右クリックでコマンドプロンプトを表示して、
copy *.csv output.csv
という短いコマンドを入力するだけでファイルを結合できてしまいますので、結合するためのフリーソフト等を立ち上げるよりも手っ取り早いです。

新たなフィールドを追加できない場合の対処法

ArcGISで、あるレイヤの属性テーブルに新たなフィールドを追加しようとしたときに、下記のエラーが出てフィールドを追加できない事があります。

○フィールドを追加できませんでした。
他のアプリケーション/ユーザにより使用されているため、選択テーブル/フィーチャクラスにフィールドを追加できません。

○フィールドを削除できませんでした。
他のアプリケーション/ユーザにより使用されているため、選択フィールドを選択テーブル/フィーチャクラスから削除できません。

ほとんどの場合、エディタツールバーより編集の開始をすれば、状態が解除され普通にフィールドを追加できるようになります。

「トポロジが正しくありません。」というエラーが出たときの対処法

ArcGIS以外のソフトで作ったshpファイルを使ってマージ等を行うと、表記のエラーが出る場合がありました。
言われたとおりトポロジが正しくないようなので、ジオメトリの修正を行います。

Arc Toolboxから、データ管理ツール>フィーチャ>ジオメトリの修正

これで、正常な?シェープファイルになり、マージ等が可能になります。