GDALを使用してラスターデータセットから「タイル画像」を切り取る方法は?


22

特定のラスターデータセットからタイル(jpeg)を作成する必要があるアプリに取り組んでいます。私の最初の傾向はgdal2tiles.pyを使用することでしたが、そのパフォーマンスは改善できるようです。

そこで、次の質問をすることになります。GDALを使用してラスターデータセットから「タイル化された画像」を切り取る最も速い方法は何でしょうか。また、「タイル画像」とは、単純なjpegまたはpngを意味します。

プロトタイプでは、MapServer C#MapScriptバインディングを使用してジョブを実行します。つまり、マップオブジェクトを作成し、カットする必要があるすべてのタイル境界をループし、マップオブジェクトの範囲を設定して、結果の画像を保存します。このアプローチのパフォーマンスはgdal2tiles.pyのパフォーマンスよりも大幅に優れていますが、GDALをさらに高速にできない場合は、GDALを直接使用するのではないかと考えています。GDALメソッドで同様のワークフローを提案できる人はいますか?

編集:本日さらに調査を行ったところ、目の前で答えが見つかりました。FWToolsをダウンロードした場合、csharp \ appsフォルダーには、C#GDALバインディングを示すためのいくつかのクラスが含まれています。私の場合、GDALRead.csとGDALReadDirect.csは私が探していたものでした。


2
@ vadp、@ markusn、@ mapperzおよびその他すべての人-説明してください。リンクに加えて、このツールを検討する価値があると思われる理由と、他のツールとの違いが役立つと思われる理由について、1つか2つの文章が役立ちます。私たちは、答えが将来的にもすぐに役立つことを望んでいます。遅かれ早かれ、リンク腐敗が発生し、URLだけがあれば、プロジェクトが次に転生した場所を見つけるのは困難です。
マットウィルキー

4
こんにちはuser890、質問に対する最終的な解決策を投稿し、終了としてマークを付けることができますか?この場合、言語固有のバインディングを使用すると、必要なパフォーマンスが得られたようです。
scw

一度ソースを単に処理「n」をそれにもかかわらず、いくつかのプラスの効果を:)作る:私は自分の記事にコメントを追加することはできません:(しかしgdal_tiler.pyもマルチプロセッシングサポートしていますが、非常に強引なやり方で。
ヴァディム

回答:


5

誰かがgdal2tiles.pyに複数のプロセッサーを使用させる時間を費やしました:並列gdal

私はこれを使用しましたが、うまくいくようです。4つのコアすべてを100%まで正常に使用し、合計時間を短縮して、タイルを作成する時間を元の時間の1/4にします。


gdal2tiles_parallel.py gitlab.com/GitLabRGI/geopackage-pythonを確認でき ます。私はCOMME好む
GeospatialInformationTech


1

私の会社では、gdal_warpを使用してカスタムpythonスクリプトを作成しました(gdal2tilesが存在することを知る前でした)。特にPythonスレッドプールを使用して多くのコアで実行するように書き直した場合、g2tよりも高速でした。また、高品質のタイルが生成されました(g2tでのランチョス補間は、gdal_warpの結果のタイルが驚異的だったため、うまく機能していないようです)。

スクリプトを書くには少し手間がかかります。結果のバウンディングボックスを手動で計算し、投影のオプションを設定する必要があります。



0

別のオプションは、TileCache(WMS-C)の使用です。私はgdal2tilesを使用したことはありませんが、TileCacheがパフォーマンスの向上をもたらすとは期待していません。

とにかく、次の戦略はタイリングをスピードアップできます:

  • TileCacheを使用する場合のメタタイリング(gdal2tilesに同様の機能があるかどうか疑問です)。
  • ラスターデータが大きなortophotoの場合、ECWなどの形式を使用します。この形式は部分的な解凍を特徴としているため、この形式を使用することにより、パフォーマンスを大幅に向上させることができます。

0

http://code.google.com/p/tilers-toolsの gdal_tiler.pyスクリプトは便利なオプションです。

通常、gdal2tiles.pyと比較して非常に優れたパフォーマンスを示し、GDALソース(データセット)で動作するはずです。特に、ソースデータセットをRGBに変換する必要はありません。


-1

Gdal2tiles_parallel https://gitlab.com/GitLabRGI/erdc/geopackage-python geopackageまたはMBTILESの場合、gdal_translate.EXEでネイティブに実行されるpythonは不要です。また、gdaladdoを実行して複数のズームレベルを追加する必要があります。また、qgisデスクトップにはqtiles / qmetatilesを使用しています。それでも、maptiler pro商用ソフトウェアと競合できるものはありません。タイルのフォルダーが必要な場合は、mbUtil pythonでMBTILESをTMSまたはXYZに変換するだけです


リンクが機能しなくなった
-AndrewHarvey

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.