便利機能(Shapefileをkmlファイルに変換)

これはオマケ(私自身の備忘録)です。皆さんの圃場登録に当たり、農協さんから預かっているデータからフィルターをかけて抜き出してデータを取得しています。その方法を示します。
大抵はShapefileを預かっているので、QGISを使用して抽出、変換している手順となります。

(Shapefileの確認)

シェープファイルは複数のファイルから構成されています。必須のファイルは 3 つあり、このうち 1 つでも欠けると GIS アプリケーション上でシェープファイルと認識することができませんので、そろっていることを確認してください。これらのファイルを同じ階層に保存しておきます。
  .shp : 図形の情報を格納する主なファイル。(必須)
  .shx : 図形のインデックス情報を格納するファイル。(必須)
  .dbf  : 図形の属性情報を格納するテーブル。(必須)
  .txt   : 座標系の情報を格納するテーブル。(任意)
もし.txtのファイルがある場合、ダブルクリックすると中身が見えます。十勝、斜網の場合、大抵下記の2種類のどちらかです。
「13系/北海道(帯広,釧路,網走,根室)」
「旧13系/北海道(帯広,釧路,網走,根室)」

(QGISのインストールおよび起動)

https://www.qgis.org/ja/site/forusers/download.html#
にアクセスしてお使いの環境にあったQGISをダウンロードしてください。
2022年3月時点で最新版はQGIS3.24.0ですが、QGIS3.22.4の方が安定して良いようです。
ダウンロード後、指示に従ってインストールしてください。
インストールすると「最近追加されたもの」にQGIS-LTRのアイコンがあるので、それをディスクトップに移動すると便利です。そのアイコンをダブルクリックするとQGISが立ち上がります。

(QGISでのステップ1;座標系を決める)

まず、①の「EPSG:4326」と書いてある部分をクリックします。

 
そうすると「世界中の空間参照システム」が選べるようになるので、
「13系/北海道(帯広,釧路,網走,根室)」の場合、
 ③;JGD2000/Japan Plane Rectangular CS XIII  EPSG:2455
「旧13系/北海道(帯広,釧路,網走,根室)」の場合、
 ④;Tokyo/Japan Plane Rectangular CS XIII  EPSG:30173
をクリックして青く選択してから⑤;OKボタンを押します。

(QGISでのステップ2;Shapefileの読み込み)

上のメニューバーにある⑥「レイヤ」ボタンを押します。するとサブメニューが現れるので、⑦「レイヤを追加」ボタンを押し⑤「ベクタレイヤを追加」を押します。

そうするとファイルを選べる画面が開くので、文字コードを確認します。通常「自動」となっているので良いですが、文字化けする場合は⑨▼を押して現れるメニューからShiftJISまたはsjisを選びます。
⑩・・・を押すとファイルを選択できる画面が開くので、 目的のファイルの.shpを選びます。

正しく読み込まれると図のように表示が変わります。⑪「追加」を押すことでデータをQGISに取り込むことができます。
その後⑫「閉じる」を押してこのメニューを閉じます。

読み込まれた形状が表示されます。ホイールを使って拡大縮小も可能です。ここまでで、ShapefileをQGISに読み込むことが出来ました。

(QGISでのステップ3;読み込むデータの整理)

まず座標系を合わせる必要があります。レイヤパネルのファイル名⑬を右クリックしてポップアップメニューを表示させて、 ⑭「レイヤのCRS」を押すと右に座標系一覧が出ます。一番上が現状設定されている座標系なので、それがステップ1で設定した座標系になるように⑮「EPSGXXXXに設定」を選択します。

次に属性データを確認する必要があります。レイヤパネルのファイル名⑬を右クリックしてポップアップメニューを表示させて、 ⑯「属性テーブルを開く」を押すと属性テーブルが開きます。文字化けしていないか確認します。文字化けしている場合は「文字コード」があっていないので、⑨に戻ってやり直します。

スペースアグリ画面で圃場名はこの属性テーブルで“FarmerName”_”SerialNo”-”BranchNo”と表示されるので、必要に応じて「フィールド計算機」を使って編集します。
また、面積は”PlantedAre”の値を読み込みますので、これも必要に応じて「フィールド計算機」を使って編集します。
次にフィルターをかけて必要情報のみを選択します。先と同様にレイヤパネルのファイル名⑬を右クリックしてポップアップメニューを表示させて、 ⑰「フィルター」を押すとクエリビルダという画面が開きます。

⑱「プロバイダ特有フィルタ式」の欄にフィルタ式を書き込むことで、特定の条件に合致した情報のみを抜き出すことが出来ます。
例えば “FarmerID” = ‘000xxxxx’ 等です。(実際にはこのxには数字が入ります)

(QGISでのステップ4;kmlファイルの書き出し)

レイヤパネルのファイル名⑬を右クリックしてポップアップメニューを表示させて、 ⑲「エクスポート」⑳「新規ファイルに地物を保存」を選択します。

「ベクタレイヤに名前をつけて保存する」というメニューが開きます。
この一番上の「形式」の欄で右の㉑▼を押すといろいろな形式を選べるようになるので、㉒「Keyhole Markup Language [KML]」を選択します。

ファイル名の右の㉓・・・を押すとフォルダフォルダが表示されるので、保存したいフォルダを選択し、ファイル名を記入します。
ファイル名には()/-+等の特殊記号は使わないでください。
エラーで保存出来ない場合があります。

座標参照系で「不正な投影法」等になっている場合は㉔▼を押して表示されるメニューからステップ1で選択した座標系㉕を選択します。

File nameをインプットしたら、OKボタンを押す前に必ず「エクスポートするフィールドとエクスポートオプションの選択の㉖▼を押してください。

そうすると選択できる画面が開きますので、㉗「全て選択する」をクリックしてください。そうすると左端のチェックボックスに☑が入ります。
これは、スペースアグリのアプリでKMLファイルを読み込む際、属性データを必要とするためです。ここでこの処理をしていないと、形状のみしか読み込めず、
後の処理が大変になるので、忘れずに選択してください。
それを確認してから㉘OKボタンを押してください。

するとサブメニューが表示されます。
㉙「すべて選択」㉚「レイヤを追加」を押すと.kmlという書式でファイルが保存されます。

以上で指定したフォルダに.kmlファイルが作成されます。