2018年09月19日

緯度経度付きJpegから緯度経度付きのCSVを作る

注意!この記事はかなり古い情報です。現在のQGISとは操作方法が違いますので注意してください

QGISのPhoto2Shapeがうまく動かないという時があるようで、いざ使おうとしたときに使えなかったら困りますね。
そこで、Excelで緯度経度付きのJpegファイルを読み込んで、緯度経度付きのCSVファイルを作るExcelファイルを作成しました。
このファイルで、Jpegを保存しているフォルダを指定すると、写真のExif情報を読み込んで一覧を作成します。
その一覧表をCSVに保存します。
作成された緯度経度付きのCSVは、QGISのデリミティッドテキストレイヤで読み込めば、ポイントレイヤが作成されます。
Jpegファイルのフォルダ名、ファイル名も記録されているので、eVisプラグインで写真を表示することも可能です。
もしPhoto2shapeプラグインがうまく動かないというときは活用していただければと思います。


以下、VBAのコードも記録しておきます。
このコードを作成するのに、参考にしたサイトはここです。先人の知恵に感謝します。

Option Explicit

Sub wiaImage()
    'ファイル一覧取得
    Dim D_fileName As String
    Dim D_count As Long
    Dim D_folderName As String
    Dim x As Object 'WIA.ImageFile
    Dim p As Variant
    Dim i As Integer
    Dim D_id As Long

    D_count = 0

    Worksheets("JPEG一覧").Cells.ClearContents  'セルの内容消去

    'フォルダ指定
    MsgBox "位置情報付きのJpegファイルが保存されているフォルダを指定してください。", vbInformation
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = True Then
            D_folderName = .SelectedItems(1)
        End If
    End With
    'ファイル一覧を取得
    D_fileName = Dir(D_folderName & "\*.jpg")

    '列名を入力
    Worksheets("JPEG一覧").Cells(1, 1) = "FolderName"
    Worksheets("JPEG一覧").Cells(1, 2) = "FileName"

    Do While D_fileName <> ""
        i = 0
        D_count = D_count + 1
        Worksheets("JPEG一覧").Cells(D_count + 1, 1) = D_folderName & "\"  'フォルダ名を記入
        Worksheets("JPEG一覧").Cells(D_count + 1, 2) = D_fileName    'ファイル名を記入

        'exif情報をコピー
        Set x = CreateObject("Wia.ImageFile")
        x.LoadFile D_folderName & "\" & D_fileName

        On Error Resume Next

        'Exif情報を記入
        For Each p In x.Properties
            i = i + 1
            D_id = p.propertyid
            Worksheets("JPEG一覧").Cells(1, i + 2).Value = p.Name  '列名を記入
            If p.propertyid = 2 Or p.propertyid = 4 Then
                Worksheets("JPEG一覧").Cells(D_count + 1, i + 2).Value = getGPS(p)  'GPS情報の場合、度分秒を結合して10進数に変更
            Else
                Worksheets("JPEG一覧").Cells(D_count + 1, i + 2).Value = p.Value
            End If
        Next
        On Error GoTo 0

        Set x = Nothing

        D_fileName = Dir() 'ファイル名をクリア

    Loop

    Worksheets("JPEG一覧").Select

    Call CSV出力

     Worksheets("メイン").Select

End Sub
’==================

Function getGPS(p As Variant) As Double
  getGPS = p.Value(1) + p.Value(2) / 60 + p.Value(3) / 3600
End Function
’==================

Sub CSV出力()

Dim D_ws As Worksheet
Set D_ws = ThisWorkbook.Worksheets(2)

MsgBox "CSVファイルの保存先を指定してください。", vbInformation

Dim D_csvFilepath As String
'ファイル指定ダイアログ
D_csvFilepath = Application.GetSaveAsFilename(Title:="CSVファイルの保存先", Filefilter:="CSVファイル,*.csv")

'CSVファイルを作成
Open D_csvFilepath For Output As #1

Dim gyou As Long
Dim retu As Long
Dim D_Data

'CSVへ書きだし
gyou = 1
Do While D_ws.Cells(gyou, 1).Value <> ""
    retu = 1
    Do While D_ws.Cells(1, retu + 1).Value <> ""
        D_Data = D_ws.Cells(gyou, retu).Value
        Print #1, D_Data & ","; 'データを記入
        retu = retu + 1
    Loop
    Print #1, D_ws.Cells(gyou, retu).Value & vbCrLf; '改行コードを記入
    gyou = gyou + 1
Loop

Close #1

MsgBox "CSVファイルを保存しました。確認してください。"

End Sub

posted by kouichi at 23:43| Comment(0) | QGIS | このブログの読者になる | 更新情報をチェックする

【市町村向け】北海道オープンデータジオデータベースを作りました

都道府県や市町村がオープンデータを作るときに、施設の一覧などには緯度経度をつけると、地図上に位置が表示されるようになり、オープンデータを便利に利用できるようになります。
オープンデータを利用したアプリを作るときにも、位置情報があると、地図と連携しやすくなります。

しかし、オープンデータを作る担当者にしてみたら、地図から緯度経度を取得して、一覧表に記録するのは結構な手間です。
10個くらいならいいですが、それが100個もあると嫌になります。
そのため、面倒くさくて、オープンデータが進まないということもあるかもしれません。

そこで、北海道限定ですが、施設名称から緯度経度を検索できるCSVファイル「北海道施設位置情報データベース」を作成しました。

おもに国土数値情報を利用して施設の位置を作りましたが、すでに公開されている北海道内の市町村のオープンデータも使っています。

緯度経度データの結合は「CSVJOIN」というフリーソフトや、ExcelのVlookup関数、QGISのフィールド結合などで行なえます。

道内市町村のオープンデータ担当者に使っていただき、オープンデータを簡単に公開できるようにしていただければと思います。
道内のオープンデータが更に進めば良いと思います。



posted by kouichi at 00:00| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2018年09月09日

平成30年北海道胆振東部地震 厚真町 正射画像の崩壊地をトレースしました

平成30年(2018)9月6日に北海道胆振地方東部で震度7の大地震が発生しました。
私自身も被災しましたが、札幌市内は一部を除いて復旧は早かったのですが、
この地震で被害に合われた方、亡くなられた方がたくさんいらっしゃいます。
心からお見舞いを申し上げます。


国土地理院の空中写真

震源に近い厚真町周辺では、大きな地震動によって大規模な山腹崩壊がおこり、大量の土砂が流出し、被害が拡大しています。
国土地理院は、素晴らしく早い対応で、9月7日に厚真町を中心とした空中写真オルソ画像を公開しました。
この画像データは政府標準利用規約(第2版)に準拠しており、実質オープンデータとして公開され、出典明示さえ行えば自由に利用できます。
そこで、崩壊地をトレースしGISデータ化をすることにしました。

image01.png
背景地図は「平成30年北海道胆振東部地震 厚真川地区 正射画像(2018年9月6日撮影)」


トレースしたGISデータはGitHubで公開

トレースしたGISデータはGitHubで公開しています。
上にアクセスできない場合はこちら(https://koukita.github.io/2018_09_06_atumatyou/

トレースしながら感じたことは、今は土砂が下流まで流出していなくても、沢の中に大量の土砂が堆積している「土砂ダム」がかなりの数あることです。そしてその下流には人家が点在しています。
今後すべての土砂を撤去するのなどは不可能でしょうから、土砂ダムの位置をきちんと把握し、大雨や雪解けなどで被害が出ないようにしていただければと思います。


現地調査の利用してください

今後、北海道庁や国の調査、研究機関の調査など現地調査が盛んに行われるでしょう。
現地は携帯の電波が届かない山の中ですので、スマホやタブレットでオフラインで使える地図データを準備しています。
また、GARMINハンディGPS用のIMGファイルも置いてありますので、ぜひご活用ください。


印刷物、Webで公開する場合には出典明示

作成した地図を、印刷物やインターネットで公開する場合には、確実な出典明示を行ってください。
明示方法は、公開ページに書いてあります。

posted by kouichi at 23:37| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。