ホーム » GPS
「GPS」カテゴリーアーカイブ
spatialiteにイメージをimport(rasterlite2 その1 失敗編)
某自治体全域の航空写真をタイル画像にしてGIS上で使用する為にspatialiteにインポートの記録(失敗談)。
当初はブログ「waigani’s diary」を参考にrasterliteを使用する予定だったが、windows版のバイナリがなくなっていたために断念。
※「waigani’s diary」は合同会社MIERUNEの方が書かれているとのことなので朝日さんでしょうか
rasterliteの後継「rasterlite2」を使用。
今回インポート対象の画像はGIOTIFFをJPEGに変換したファイル。(もちろんワールドファイルもあり)
JPEGもGEOTIFFを同様にgdalinfo.exeでファイルの詳細情報を確認できる。
gdalinfo 2135.jpg
[code]
Driver: JPEG/JPEG JFIF
Files: 2135.jpg
2135.jgw
Size is 5000, 3750
Coordinate System is `’
Origin = (-42400.000000000000000,-48000.000000000000000)
Pixel Size = (0.160000000000000,-0.160000000000000)
Metadata:
EXIF_BitsPerSample=8 8 8
EXIF_ColorSpace=65535
EXIF_Compression=1
EXIF_DateTime=2016:02:26 13:56:17
EXIF_Orientation=1
EXIF_PhotometricInterpretation=2
EXIF_PixelXDimension=5000
EXIF_PixelYDimension=3750
EXIF_PlanarConfiguration=1
EXIF_ResolutionUnit=2
EXIF_SamplesPerPixel=3
EXIF_Software=Adobe Photoshop CS5.1 Windows
EXIF_XResolution=(72)
EXIF_YResolution=(72)
Image Structure Metadata:
COMPRESSION=JPEG
INTERLEAVE=PIXEL
SOURCE_COLOR_SPACE=YCbCr
Corner Coordinates:
Upper Left ( -42400.000, -48000.000)
Lower Left ( -42400.000, -48600.000)
Upper Right ( -41600.000, -48000.000)
Lower Right ( -41600.000, -48600.000)
Center ( -42000.000, -48300.000)
Band 1 Block=5000×1 Type=Byte, ColorInterp=Red
Overviews: 2500×1875, 1250×938, 625×469
Image Structure Metadata:
COMPRESSION=JPEG
Band 2 Block=5000×1 Type=Byte, ColorInterp=Green
Overviews: 2500×1875, 1250×938, 625×469
Image Structure Metadata:
COMPRESSION=JPEG
Band 3 Block=5000×1 Type=Byte, ColorInterp=Blue
Overviews: 2500×1875, 1250×938, 625×469
Image Structure Metadata:
COMPRESSION=JPEG
[/code]
rasterlite2のサイトhttps://www.gaia-gis.it/fossil/librasterlite2から以下をダウンロード。
- mod_rasterlite2.dll
- rl2tool.exe
http://www.gaia-gis.it/gaia-sins/rasterlite2-win-x86/mod_rasterlite2-1.0.0-rc0-win-x86.7z
mod_rasterlite2.dllはsqliteにラスタ機能を追加する拡張モジュール。
※SQLITEは関数:sqlite3_create_functionを利用してSQLから呼べる関数を登録できる。
例)SQLITE内にCoverageを作成する「SELECT RL2_CreateCoverage(): 」の「RL2_CreateCoverage」はmod_rasterlite2.dllが提供する。
http://www.gaia-gis.it/gaia-sins/rasterlite2-win-x86/rl2tool-1.0.0-rc0-win-x86.7z
rl2tool.exeはラスタファイルをDBに追加するためのツール。
※rl2tool.exeはmod_rasterlite2.dllが提供する関数をコールするためのラッパー。
作業用のディレクトリにmod_rasterlite2.dllとその関連dll、rl2tool.exe、sqlite3.exe、mod_spatialite.dllを配置。
環境変数に「SPATIALITE_SECURITY=relaxed」を設定
以降はRasterlite2のドキュメント「Tutorial: building and testing the Planet Earth sample」を参考に作業
インポート対象のDB「test.sqlite」を作成してsqliteを起動
[code]
sqlite3 work.sqlite
[/code]
拡張DLLを呼び出し
[code]
sqlite> select load_extension(‘mod_rasterlite2’);
sqlite> select load_extension(‘mod_spatialite’);
[/code]
空間データを使うために必要なテーブルを作成
[code]
sqlite> select initSpatialMetadata(1);
1
sqlite> select CreaterasterCoveragesTable();
1
sqlite> select CreateStylingTables();
[/code]
Coverage作成
[code]
C:\work\pasco>rl2tool CREATE -db work.sqlite -src 2135.jpg -ext .jpg -cov test -srid 2451 -smp UINT8 -pxl RGB -cpr JPEG -res 0.0138888889
rl2_tool: request is CREATE
===========================================================
DB path: raster.sqlite
Coverage: test
Sample Type: UINT8
Pixel Type: RGB
Number of Bands: 3
Compression: JPEG (lossy)
Compression Quality: 80
Tile size (pixels): 512 x 512
Srid: 2451
Pixel base resolution: X=0.0138888889 Y=0.0138888889
===========================================================
SQLite version: 3.8.5
SpatiaLite version: 4.2.0
RasterLite2 version: 1.0.0-rc0
sqlite3_step() error: INSERT INTO raster_coverages "NOT NULL constraint failed: raster_coverages.strict_resolution"
restoring the DB to its previous state (ROLLBACK)
[/code]
※上記で指定した解像度は間違っている
raster_coveragesテーブルの項目「strict_resolution」にはnullは設定できないとエラーが発生。
raster_coveragesの定義を確認すると、確かにstrict_resolutionはNOT NULLになっている。
※raster_coveragesテーブルは先ほど実行したCreaterasterCoveragesTableで作成しており、mod_spatialite.dllが提供する関数
※「rl2tool CREATE」は内部では mod_rasterlite2.dllのRL2_CreateCoverageを呼んでいる。
関数RL2_CreateCoverageの実装を確認すると確かにstrict_resolutionには何も設定していない。
よってエラーは避けられない
GPS(eTrex10J)を持って西新宿を歩いてみた
株式会社カーネルでは、GPS(eTrex10J)を使用した商圏等の計測を行うサービスを提供しています。
高層ビル街でのeTrext10Jの精度を計測するために西新宿を徒歩で計測してみました。
※GPS、GLONASS、みちびきを有効にしています。