2024年10月15日
QGISの座標参照系(Youtube)
2018年09月19日
緯度経度付きJpegから緯度経度付きのCSVを作る
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.Cle
'フォルダ指定
MsgBox "位置情報付きのJpegファイルが保存されているフォルダを指
With Application.FileDialog(msoFile
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_c
Worksheets("JPEG一覧").Cells(D_c
'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_c
Else
Worksheets("JPEG一覧").Cells(D_c
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
Dim D_ws As Worksheet
Set D_ws = ThisWorkbook.Worksheets(2)
MsgBox "CSVファイルの保存先を指定してください。", vbInformation
Dim D_csvFilepath As String
'ファイル指定ダイアログ
D_csvFilepath = Application.GetSaveAsFilename(
'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
2017年12月17日
QGIS3からはGeopackageが使いやすいぞ!脱シェープファイル!
注意!この記事はかなり古い情報です。現在のQGISとは操作方法が違いますので注意してください
この記事は、FOSS4G Adventカレンダー2017に参加した記事です。
2017年の12月中にQGIS3.0がリリースされるという噂があり、毎日のようにQGISのオフィシャルホームページをチェックしていますが、2017年12月17日現在ではまだリリースされていません。12月中にリリースされれば、年末年始はサワサワ触りまくってやるのにと思っていましたが・・・。
そこで、予行演習も兼ねて、OSGeo4wで利用できる開発版の2.99(内容はほぼ3.0と同じと思われる)を最近触ってみています。
(これ以降はQGIS2.99をQGIS3.0として書いていきます。)
QGIS3ではGeopackageがデフォルトになる?
ファイルの入出力や、プロセッシングツールなどを見ていると、いままでは、シェープファイルがデフォルトになっていましたが、QGIS3.0ではGeopackageがデフォルトになっています。
ここからわかるように、QGISもやっと脱シェープファイルを考えているのだと思われます(多分ですよ、多分)。
昨年のFOSS4G AdventカレンダーでもGeopackageの記事がありましたが、QGIS2ではまだまだ使える状況ではありませんでした。
QGIS3からは、GeopackageをQGISのデフォルトのファイル形式としましょうということなのでしょう。
Geopackageってなに?
Geopackageとは、「オープンで標準に準拠したプラットフォームに依存しない、移植性の高い自己記述型のコンパクトなフォーマット」ということで、SQliteデータベースに様々なGISデータを格納できるファイルです。私自身はSpatialiteとどこが違うのかはよくわかっていませんが、Geopackageは、ベクタデータはもちろん、ラスタや、Mbtilesなどさまざまなデータを格納でき、ひとつのファイルにすることができます。
ArcGISでもArcGIS10.2.2からGeopackageをサポートしているとのことです。QGISで作成したものがArcGISで利用できるかは不明ですが、多分大丈夫なような気がします。
Geopackageにデータを追加する
QGIS3では、ブラウザパネルのGeopackageファイルにレイヤパネルからレイヤをドラッグ&ドロップするだけで、Geopackageにデータを追加できます。(Geopackageファイルのパスに2バイト文字が含まれるとエラーになります)
ラスタレイヤもドラッグ&ドロップで追加することができます。
レイヤを名前をつけて保存することでもGeopackageにデータを保存できます。
(名前をつけて保存したレイヤは、ブラウザパネルの「Geopackage」で表示されない場合があるようです)
Geopackageファイルには、様々なGISデータを格納できるので、地図を作るためのファイルの数を非常にコンパクトにすることができます。
今まではシェープファイルやラスタファイルを複数使って地図を作った場合、数十個のファイルを必要としていましたが、Geopackageでは一つでいいのです。
ファイルサイズ自体はそれほど変わらないと思いますが、ファイル数が少なくなるのはいいことです。
Geopackageにはレイヤスタイルも保存できる
Geopackageには、レイヤスタイルを保存することができます。Geopackageから追加したレイヤのレイヤプロパティを表示して「シンボロジー」の「スタイル」ボタン→「スタイルを保存」に「データベースに保存(Geopackage)」があります。
ここでスタイルをGeopackageファイルの保存すると、そのレイヤのデフォルトのスタイルとして登録することもできます。
(QGIS2.99では、スタイルを保存するとQGISが落ちますが、保存はされているようです)
まとめ
QGIS2までは、シェープファイルがデフォルトのようだったので利用していましたが、フィールド名の文字数の縛りや、文字コードの問題、ファイルの数が多いなどいろいろな問題がありました。これが今後はGeopackageで解決していけば、非常に良いことだと思います。
シェープファイルには、安室奈美恵と一緒に引退していただき、新たな世代にその座を譲っていただきましょう。
QGIS2.99では日本語だとうまく行かなかったり、Geopackageにラスタを追加すると、削除できなかったりするようなので、もうすこし熟成が必要かもしれませんが、今後さらに進化していくことが楽しみです。