QGISで国土基盤地図データの簡単な活用
様々な地域の業務でQGISを用いているが、基盤地図情報のshpを全て取り込み、項目別に色設定をするのは結構大変な作業である。
手順毎の合理的な方法について記載する。
①ダウンロード
ダウンロードサイトにて、2次メッシュを設定する。
事前に、必要な範囲を、国土数値情報のN03市区町村界、W12流域界、A11浸水想定区域等、メッシュ分割レイヤを重ねてtxtに記載しておく。
ダウンロードサイトでメッシュ番号を書き込んで、まとめてPackDL。
これは比較的容易。対角線の2次メッシュから、メッシュリストの取得は、下式で。(2019/10/21追加)
#corner diagonal LeftBttm-RightTop or LeftTop-RightBtm
ch2c=["543915","554054"] #example
ch2ci=ch2c.map{|ch2| ch2.unpack("a2 a2 a1 a1").map(&:to_i)}
ics=ch2ci.map{|i1,j1,i2,j2| i1*8+i2}.sort
jcs=ch2ci.map{|i1,j1,i2,j2| j1*8+j2}.sort
chs=Range.new(*ics).map{|i| i1=i/8;i2=i%8;
Range.new(*jcs).map{|j| j1=j/8;j2=j%8;"%02d%02d%1d%1d" % [i1,j1,i2,j2]}}
print *chs.flatten*"," #for download service
②解凍
2次メッシュ単位のzipに分けて、レイヤ別にするため、さらに解凍し、レイヤ別のxmlに解凍する。
cygwin-bashで、 for z in *.zip;do unzip -o $z;done #-o:overwrite no prompt
③レイヤ別のフォルダ分け
レイヤ名フォルダに、全メッシュのデータを集める。
次のようなrubyで自動化。
typs=%w[AdmArea AdmBdry AdmPt ALL BldA BldL Cntr CommBdry CommPt Cstline
ElevPt GCP RailCL RdCompt RdEdg WA WL WStrA WStrL SBAPt SBBdry]
typs.each{|typ|
fs=Dir.glob("kiban_2500/PackDLMap/*-#{typ}-*.xml")
odir="kiban_2500/#{typ}"
FileUtils.makedirs(odir)
fs.each{|fb|
f=File.basename(fb)
File.rename(fb,"#{odir}/#{f}")
}
}
④レイヤ別に、Vectorデータ統合
pythonマクロの使い方を知らないので、手作業で。
あらかじめ、作成するshpファイル名を入力しないで、ファイル選択できるように、
レイヤ名(上のtyps).shpという名の空ファイルを作成しておく。
⑤レイヤ別にスタイル設定
業務ごとに、作成するファイル名は共通のため、別の業務で設定した基盤地図用のレイヤスタイル設定されたqgzファイルをそのまま使う。