DBFとCSVの相互変換ツールをWebアプリとして公開しました
更新5/15
エクセルファイル(.xls,.xlsx)のDBFへの変換に対応 ※現状、日本語が含まれていると正常に動作しません
はじめに
結構前に、シェープファイルのプロパティであるDBFファイルとCSVファイルを相互に変換するPythonスクリプトを紹介しました。
でも使うためには環境構築が必要で面倒くさいだろうなぁと思っていました。 実行ファイルにする事も考えましたが、今風にウェブアプリとして公開する事にしました。
使用した技術
- Anaconda
- Python2.7.15
- Flask
実際にやってみた
一切データを保存しないので安心して利用できます。 CSVかDBFを相互に変換します(今後エクセルファイルにも対応予定)。 CSVは1行目がフィールド名で、2行目以降がレコードになっているもののみ対応しています。想定している使い方は、編集したいDBFをCSVに変換し、何らの処理を行ったのちDBFに戻すという手順です。おそらくテキトーなCSVを突っ込んでもDBFにはなると思いますが、意味はないのでやめておきましょう。 また見た目は全くこだわっていません。一応Bootstrapを読み込んではいます。 ※使用は自己責任で、バックアップをお忘れなきよう
詰まった点
冒頭で紹介したスクリプトは、ローカルのファイルを直接読み書きしていましたが、ウェブアプリだとそうも行かず、メモリ上での処理が必要でした。 そんな訳でPythonのIOstreamについてちょこっと理解が深まったと思います。あとはライブラリを読む重要性を実感しました。。。この辺は別記事にします。
感想
すでに存在するスクリプトをウェブアプリに実装するだけなので、もうちょい簡単にできると思っていたのですが丸1日かかってしまいました。またライブラリがPython2版だったので、Python3に書き直したいなぁなんて思いました。枯れた技術であるDBFですが、未だGISデータにはシェープファイルが多く使用されているので、こういったアプリにも需要があるんじゃないかなぁなんて思っています。あとはこのレベルの個人開発だとFlaskが本当にサイコーです、Djangoはちょっと規模がでかすぎる。Anacondaもまじ便利でもう手放せない、結局GUIが一番いいってそれ。
豆知識
LibreOfficeでもDBFファイルは直接読み書き出来るのですが、いかんせん使い勝手がMicrosoftOfficeに比べよろしくないので、みなさんこのアプリを使ってMSOfficeでぜひDBFをカスタムしてください。
豆知識2
DBFをCSVにした後の編集ですが、以下のようなルールがあります。このルールを守らないとシェープファイルとして使えません。
- 列の追加は可能だが、1行目はフィールド名(プロパティのタイトル)になり、文字数は10文字以内(半角英数)です。
- 行は追加してはいけない(図形と行データが一対一で対応)
- 行の順番は変えてはいけない