シェープファイルの高速移動2014年04月06日 09時11分32秒

先日あるお客さまから相談を受けたのですが、ArcGISでシェープファイルの移動を行いたいが大量の要素数(データ数)の時に長時間かかってしまい困っているとの事。

具体的には固定資産データで30万筆以上分の要素を選択して一気に移動しようとしたら5時間〜6時間くらい返答なし(ノーレスポンス)状態になってそれっきりという事でした。

ESRIさん、こんな事でいいのか?という事で、それだけ大量の要素をGISのビュー上に展開しなおしたらパンクして当然かと思い、解決するツールを開発しました。


内容としてはシフトするパラメータ(X座標及びY座標)を与える事でシェープファイルにダイレクトに変更をかけるものです。例えば全体的に1000km、北側へずらしたいとか。

シェープファイルの構造は、バイナリ形式でエンディアン変換を用いながら行う必要があり、その昔、苦労しましたので今は何とも抵抗がありませんでした。
SHPファイルの座標値に変化を与えると、バイナリファイル上のメインファイルヘッダの中のバウンディングボックスの値を更新する必要があります。

またSHXも同様にヘッダ部分を更新する事となり、更に大変だったのがポリゴンやポリライン個々のバイナリ要素の中にも座標の最大最小値を示すバウンディングボックスがあり、これも要更新。
これらの処理を詰め込んだソリューションとして出来上がった地味ですがマジックでも見ているような感覚になる絶品な一品。

もしかしたら、これを応用する事で系座標の変換や緯度経度の変換なども超高速でできるかも知れません。

処理スピードはダイレクト読み書きしてるだけあって申し分なく速く仕上がりました。
お困りな方がおられましたらご連絡ください。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://tsukasa.asablo.jp/blog/2014/04/06/7268015/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。