座標系や文字コードの変換


ubuntuで、QGISの動作を速くする方法


デフォルトでは、ubuntuでQGISのシェープファイルを用いると、非常に時間が掛かることがあります。そのため、すぐに画像が必要でない時は、QGISの画面の右下にある、にチェックを外します。しかし、それだけだと、画像を描きたい時は気を長くして画像が表示されるのを待たねばなりません。少しでも早く画像を見たい場合は次のようにしましょう。

  1. ubuntuでQGISを立ち上げます。
  2. 上方のメニューの設定をクリックし、その中のオプションを選択する。更にレンダリングタブをクリックします。
  3. 「上の方の再描画の速度を上げられる場合にレンダのキャッシュを利用します」にチェックを入れます。
  4. OKをクリックします。


これで、シェープファイルの表示速度が格段に上がります。

座標系の変換


次に、先回まで作っていた、Nakiri.qgsを立ち上げます。

実際、QGISで作成した画面を表示する際に、QGISで見る場合は様々な処理がなされるが、HTMLなど、ウェブで見る際にはそうはいきません。そのような時の為、元のデータを適切な形に変換して、そのデータから作り直すことを考えましょう。

レイヤパネルに表示されている、最下層のレイヤから順に扱います。ここでは、最下層は「行政区_面」なので、それから扱っていきます。
  1. レイヤパネルで、最下層の「行政区_面」を選択します。
  2. 上方メニューの「レイヤ」をクリックします。
  3. 「名前を付けて保存」をクリックします。
  4. 出て来る画面の真ん中より上の方にある、CRSの所のをクリックします。
  5. WGS84を選択して、OKをクリックします。

  1. 画面の上の方にある、「名前を付けて保存」のクリックします。
  2. 5-17のワークショップでシェープファイルをコピーしたフォルダの中に、新たにフォルダを作成します。ここでは、ホーム・フォルダのDATAの中に、WGS84の名前のフォルダを作成しました。
  3. ファイル名を「行政区」にして保存します。
  4. OKをクリックします。
きちんとファイルができているかを確認するために、場所→ホーム・フォルダ→DATAとクリックしていき、上記のファイルを保存した、WGS84のフォルダに入ります。そこに、拡張子がdbf, prj, qpj, shp, shxの5種類の行政区のファイルができていることを確認します。
  1. その中のpriファイルをダブルクリックします。
  2. 「アプリケーションの選択」をクリックします。
  3. GNU Emacs23をクリックして、「開く」をクリックします。
  4. 画像のようになっていることを確認します。
すべてのレイヤに対して、上記の作業を繰り返します。

QGISの画面の左上の新規作成をクリックします。
  1. 上方メニュー「設定」をクリックします。
  2. 「プロジェクトのプロパティ」を選択します。
  3. 「オンザフライ座標変換を有効にする」にチェックを入れる。
  4. 「適用」をクリックし、OKを選択する。

今度は世界測地系の緯度経度座標のWGS 84にします。
  1. 先ほど作った、WGS84のフォルダから、シェープファイルをドラッグアンドドロップで持って来ます。
  2. それぞれのレイヤを見易い色にする(センスを働かせて)。
  3. Nakiri.qgsの名で保存(上書き)します。

文字コードの変換


日本語は文字化けしやすいので、文字の入ったものを入れる時は注意します。

まず、WGS84のフォルダにtmpという名のフォルダを作ります。
  1. 端末を起動します。
  2. cdのコマンドを用いてWGS84のフォルダに入ります。
  3. そこにtmpという名のフォルダを作ります
cd mkdir tmp
tmpに入ります。
そこにdbf2csv.tar.gz(ワークショップ中に配布された)を貼り付けます。
それを解凍します。
tar xvfz dbf2csv.tar.gz
中身を読み取ります。
less dbf2csv.rb
Rubyのスクリプトが現れる。
dbfファイルを作ったり、そこからcsvのファイルを作るなどの作業をするライブラリが入っている。

require 'lib/dbf'
require 'nkf' &br()
Dir.mkdir("UTF")  unless File.exist?("UTF")

Dir.foreach(".") do |file_name|
  if /dbf$/i =~ file_name
    puts file_name
    file = "Original/#{file_name}";  out_file = "UTF/#{file_name}"

    field,dbf = DBF.new.dbf_read(file_name)

    dbf_array = dbf.collect do |rec|
      rec_utf = rec.collect{|each_rec|  NKF.nkf("-w", each_rec)}
    end

    ary = DBF.new.make_dbf_array(field,dbf_array)

rec = DBF.new.out_dbf(field,ary)
    out = open(out_file,"wb")
    out.write(rec);  out.close
  end
end

emacsを立ち上げます。
emacs &

  1. Ctrlキーを押しながらXとFのキーを押す。
  2. /DATA/WGS84/tmp/dbf2csv.rb で入力して、Enterを押す。
  3. 真ん中辺りの、file = "Original/#{file_name}"; out_file = "UTF/#{file_name}"のOriginalのOにカーソルを持って来る。
  4. Original/#{file_name}"; の文字を消す(CTrl + Dのキーを用いながら)。
  5. Ctrl + X, Sで保存する。

tmpの所に、変換したdbfファイルを全部持って来ます。
端末で文字のものがほしいので、
cp ../../8138_学校建物名_注記.dbf .
cp ../../8131_一般建物名_注記.dbf .
(上記二つのファイルが無い場合はOドラから読み取って下さい)

次に、端末で以下のように打ち込みます。
ruby dbf2csv.rb

もし、まだRubyがインストールされていない場合は、赤枠で囲ったような、インストール用のコマンドが現れるので、その文字を打ち込みます。
その際に設問があればYを入力します。インストールしたら改めてruby dbfcsv.rbを入力します。
もしここでエラーが出た場合、画面にエラーのある場所が表示されるので、その表示を参考にしてdbfcsv.rbを修正します。
例えば、dbf2csv.rb: 14:という表示があった場合は、14行目辺りにエラーがあるので、余分な文字や、不要な文字が無いか確認しながら修正します。

8131_一般建物名_注記.dbf
8138_学校建物名_注記.dbf

が出ればエラーはありません。
これで文字化けしないようになります。

8131_一般建物名_注記.dbfおよび8138_学校建物名_注記.dbfの二つのファイルの名前を変更します。
mv 8131_一般建物名_注記.dbf 一般建物.dbf
mv 8138_学校建物名_注記.dbf 学校.dbf

cp *dbf ..
dbfファイルを上の階層のフォルダにコピーします。

cd ..
上の階層のフォルダに移ります。

この状態でリストを取ります。
ls

QGISの方で座標変換する

  1. メニューの「レイヤ」の中の「ベクタレイヤの追加」をクリックします。
  2. 「ブラウズ」をクリックします。
  3. 8131_一般建物名_注記.shpをクリックし、「開く」をクリックします。
  4. 「オープン」をクリックします。
  5. 前の方でしたのと同様に、メニューの「レイヤ」の中の「名前を付けて保存」をクリックします。
  6. CRSのをクリックし、WGS 84の座標系を選択します。
  7. OKをクリックします。
  8. 名前を付けて保存のをクリックし、今回作成したWGS84のフォルダ内に「建物名」の名で保存します。
  9. 8138_学校建物名_注記についても同様にshpファイルを持って来てWGS84へ座標変換し、「学校」の名で保存します。
  10. QGISの8131_一般建物名_注記と8138_学校建物名_注記のレイヤを削除します。
ls -alのコマンドでリストを取って、「建物名」と「学校」のファイルがあることを確認します。

cp tmp/UTF/8138_学校建物名_注記.dbf 学校.dbf
cp tmp/UTF/8131_一般建物名_注記.dbf 建物名.dbf
二つのファイルをコピーして、WGS84のフォルダに上書き保存します。

QGISに戻る
  1. 「ベクタレイヤの追加」のアイコンをクリックし、「ブラウズ」からWGS84のフォルダ内の「学校.shp」のファイルをQGISに持って来ます。
  2. 同様に、「建物名.shp」のファイルも持って来ます。
  3. レイヤパネル内で、「学校」をダブルクリックし、レイヤプロパティを表示します。
  4. ラベルタブをクリックし、「ラベルを表示」にチェックを入れます。
  5. 「ラベルが含まれているフィールド」でNAMEを選択します。
  6. フォントサイズを11ポイントにします。
  7. 配置は上にします。
  8. 「ラベルの縁取り」にチェックを入れます。
  9. OKをクリックします。
  10. 文字化けせずに学校名が表示されます

nkfのインストール

今回のワークショップでは直接関係ありませんが、将来使う可能性もあるので、古くからある漢字コード変換プログラムであるnkfをインストールします。
コマンドで、以下のように入力します。
nkf
すると、nkfがインストールされていない場合、下記の画面が現れます。画像で赤枠で囲った部分(もちろん、実際の画面には赤枠は表示されません)をコピーして貼り付け、インストールします。

タグ:

+ タグ編集
  • タグ:
最終更新:2011年07月04日 13:30