2

400x400 キロメートルの領域を表すフラットな 400x400 ピクセルの画像があります。この画像を OpenLayers マッピング システムのオーバーレイとして描画する必要があります。OpenStreetMap/Google マップをベース レイヤーとして使用します。イメージ レイヤーを使用してオーバーレイ イメージを描画し、オーバーレイ イメージを特定の緯度/経度ポイントに配置したいと考えています。ベース レイヤーの投影法は EPSG:900913 です。これは実際、OpenStreetMap と Google マップで使用される投影法です。

私が理解していること(間違っている場合は修正してください)は、フラットな「投影されていない」画像を画像レイヤーとして使用することはできませんが、画像を調整するために一種の「再投影」を行う必要があるということですEPSG:900913 である地図の投影法に準拠する必要があります。こことネットを検索すると、これを行うにはGDALというライブラリ/ツールを使用する必要があるようですが、私はこれにまったく慣れていませんが、お願いします:

  • 誰かがそれを使用する方法について私に連絡できますか?
  • 私が今言ったことは正しく、ここで説明した方法が有効かどうか教えていただけますか?
  • gdal を使用して、投影されていないフラットな 400x400 ピクセルの画像を EPSG:900913 で投影された画像に変換し、オーバーレイとして画像レイヤーとして配置するのに適している方法を教えてください。

ありがとう。

ご要望に応じて画像を追加しました。

ここに画像の説明を入力

@capdragon から提供された回答は役に立ち、さらに一歩進めることができました。とにかく、私はまだいくつかの問題を抱えています。これは私がしました:

  1. gdal_translate を使用して、次のように GCP を画像の四隅と中央に設定しました。

gdal_translate -of "GTIFF" -gcp 0 0 8.6923 45.5427 -gcp 400 0 13.8149 45.5427 -gcp 200 200 11.2536 43.771702 -gcp 0 400 8.8413 41.9460 -gcp 400 400 13.6659 41.9460 quadrprod.png quadrprod_gpc.tif

このようにして quadrprod_gcp.tif 出力を取得します。それで。

  1. gdalwarp を使用して、上記の点で設定された GCP を適用し、次のように EPSG:4326 である正しい投影を設定します。

gdalwarp -t_srs EPSG:4326 quadrprod_gcp.tif quadrprod_gcp_warped.tif

このようにして、最終的な quadrprod_gcp_warped.tif を取得します。結果の画像は 400x400 ピクセルではなく、458x331 ピクセルになります。次に、gdalinfo を使用してそれを確認すると、次のことがわかりました。

gdalinfo quadrprod_gcp_warped.tif
Driver: GTiff/GeoTIFF
Files: quadrprod_gcp_warped.tif
Size is 458, 331
Coordinate System is:
GEOGCS["WGS 84",
    DATUM["WGS_1984",
        SPHEROID["WGS 84",6378137,298.257223563,
            AUTHORITY["EPSG","7030"]],
        AUTHORITY["EPSG","6326"]],
    PRIMEM["Greenwich",0],
    UNIT["degree",0.0174532925199433],
    AUTHORITY["EPSG","4326"]]
Origin = (8.768046497499189,45.547291862003739)
Pixel Size = (0.010877474938832,-0.010877474938832)
Metadata:
    AREA_OR_POINT=Area
Image Structure Metadata:
    INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  (   8.7680465,  45.5472919) (  8d46'4.97"E, 45d32'50.25"N)
Lower Left  (   8.7680465,  41.9468477) (  8d46'4.97"E, 41d56'48.65"N)
Upper Right (  13.7499300,  45.5472919) ( 13d44'59.75"E, 45d32'50.25"N)
Lower Right (  13.7499300,  41.9468477) ( 13d44'59.75"E, 41d56'48.65"N)
Center      (  11.2589883,  43.7470698) ( 11d15'32.36"E, 43d44'49.45"N)
Band 1 Block=458x4 Type=Byte, ColorInterp=Red
    Mask Flags: PER_DATASET ALPHA
Band 2 Block=458x4 Type=Byte, ColorInterp=Green
    Mask Flags: PER_DATASET ALPHA
Band 3 Block=458x4 Type=Byte, ColorInterp=Blue
    Mask Flags: PER_DATASET ALPHA
Band 4 Block=458x4 Type=Byte, ColorInterp=Alpha

ご覧のとおり、4 つのコーナーと中央の緯度/経度は、-gcp 値を使用して設定した値とは異なります。私の質問:

  • gdalinfo によって返される緯度/経度の値が、ステップ 1 で -gpc を使用して設定した値と異なるのはなぜですか?
  • それは正常ですか、それとも何か間違ったことをしていますか?
  • 次のステップは何ですか?画像を EPSG:4326 から EPSG:900913 に再度変換する必要がありますか?
  • 画像を openlayers にオーバーレイとして配置するとき、境界オブジェクトを作成するとき、-gcp で使用した値または gdalinfo で表示される最終値を南西および北東の角として使用する必要がありますか?
4

1 に答える 1

1

あなたの言っていることは正しいです。

基本的には、 を使用していくつかの制御点 (基準点) を設定しgdal_translate、 を使用して画像をワープしgdalwarpます。

したがって、大まかな投影の場合は、コーナー座標を使用して 4 つの制御点を設定するだけです。(これらの例では EPSG:4326 を使用していますが、EPSG:900913 を使用することもできます。

4 つの制御点 (コーナー座標) を設定します。

gdal_translate -a_srs EPSG:4326 -gcp 0 0 -89.38939600 30.39282800 -gcp 1024 0 -87.00029400 30.01043900 -gcp 0 1250 -89.99424800 27.37030800 -gcp 1024 1250 -87.67748400 26.98606100 "originalImage.tif" "image_trans.tiff"

上記は、ピクセル x=0 および y=0 が "-89.38939600 30.39282800" ピクセル x=1024 に等しく、y=0 が -87.00029400 30.01043900 などであることを示しています。

画像をワープする:

gdalwarp -dstalpha -t_srs EPSG:4326 image_trans.tiff image_warped.tiff

ワーピングが十分でない場合は、画像にさらにコントロール ポイントを設定する必要があります。

アップデート

私はあなたのイメージをダウンロードし、あなたが持っているコマンドを実行しました。すべてうまくいきました: |

    captDragon@liberatecuba:/media/Data/tmp/orthoTesting$ gdal_translate -of "GTIFF" -gcp 0 0 8.6923 45.5427 -gcp 400 0 13.8149 45.5427 -gcp 200 200 11.2536 43.771702 -gcp 0 400 8.8413 41.9460 -gcp 400 400 13.6659 41.9460 quadrprod.png quadrprod_gpc.tif
    Input file size is 400, 400
    0...10...20...30...40...50...60...70...80...90...100 - done.
captDragon@liberatecuba:/media/Data/tmp/orthoTesting$ gdalinfo quadrprod_gpc.tif 
    Driver: GTiff/GeoTIFF
    Files: quadrprod_gpc.tif
    Size is 400, 400
    Coordinate System is `'
    GCP Projection = 
    GCP[  0]: Id=1, Info=
              (0,0) -> (8.6923,45.5427,0)
    GCP[  1]: Id=2, Info=
              (400,0) -> (13.8149,45.5427,0)
    GCP[  2]: Id=3, Info=
              (200,200) -> (11.2536,43.771702,0)
    GCP[  3]: Id=4, Info=
              (0,400) -> (8.8413,41.946,0)
    GCP[  4]: Id=5, Info=
              (400,400) -> (13.6659,41.946,0)
    Image Structure Metadata:
      INTERLEAVE=PIXEL
    Corner Coordinates:
    Upper Left  (    0.0,    0.0)
    Lower Left  (    0.0,  400.0)
    Upper Right (  400.0,    0.0)
    Lower Right (  400.0,  400.0)
    Center      (  200.0,  200.0)
    Band 1 Block=400x5 Type=Byte, ColorInterp=Red
      Mask Flags: PER_DATASET ALPHA 
    Band 2 Block=400x5 Type=Byte, ColorInterp=Green
      Mask Flags: PER_DATASET ALPHA 
    Band 3 Block=400x5 Type=Byte, ColorInterp=Blue
      Mask Flags: PER_DATASET ALPHA 
    Band 4 Block=400x5 Type=Byte, ColorInterp=Alpha
于 2013-09-23T17:16:56.767 に答える