タグ付けされた質問 「postgis-raster」

3
PostGISに大きなラスターを保存し、QGISで視覚化するとパフォーマンスが低下する
私の質問は、PostgreSQL、PostGIS、QGIS、およびGDALなど、いくつかのソフトウェアツールを組み合わせて使用​​およびパフォーマンスすることに関するものです。 私は、ArcGIS、Python、Rの長年のユーザーであり、無料のオープンソースGISエコシステムとLinuxへの多様化にも関心があります。最近、QGIS(ver 2.8)をPostgreSQL(ver 9.4)およびPostGIS(ver 2.1)と一緒に使用することに非常に興味があり、Windows 8.1 x64を搭載したコンピューターにコンピューターにソフトウェアをインストールしました(コンピューターの仕様:ThinkPad 2.1GHzコア2、8GB RAM、および240GB SSDを搭載したX200)。空間データ(〜100GB相当)の管理方法を学んだら、このマシンでUbuntuを実行したいと思います。 現時点では、シェープファイルとラスターを確実に保存および取得しようとしています。これまでのところ、シェープファイルをPostGISに読み込むことに成功していますが、ラスターはより問題が多いことが判明しています。小さなgeoTIFFおよびGRIDファイルの単一およびバッチインポートを正常に完了しましたが、大きなラスター(たとえば、ディスク上のサイズが156MBの15619x14655セルIMGまたはTIFFファイル)がPostGISにロードされるまでに時間がかかります。空間インデックスを構築し、これらのパラメーターを使用してタイルによってラスターを読み込むために、raster2pgsqlツールを読んで構成しました。 raster2pgsql -s 3161 -C -I D:\PostGIS_data\dem.img -t auto raster.dem | psql -h localhost -U postgres -p 5432 -d postgres インポートのパフォーマンスは依然として非常に低く、ハードウェアは問題ではありません。QGISでのPostGISラスターの視覚化はさらに悪く、せいぜい小さなラスターをゆっくりロードするか、完全にフリーズします。私が述べたような大きなラスターは、QGISで視覚化することは不可能です。ドキュメントとフォーラムの議論から、この欠点はQGIS自体ではなく、GDALのPostGISラスタードライバーによるものと思われます。フォーラムでの議論ではこの問題について簡単に言及しており、ラスタをPostGISに保存すべきではないと示唆する人もいます(ラスタをスムーズに処理できない空間データベースのポイントは何ですか?)。それでも、私は日常的にESRIのファイルジオデータベースを使用して、非常に大きな(〜70GB)ラスターをすばやく簡単に保存、視覚化、分析し、ArcGIS 10.1はそのような日常的な操作によってフリーズまたはスローダウンすることはありません。 ここで不足しているもの、対処していないボトルネックはありますか?PostGISのパフォーマンス上の利点を実現するために、PostgreSQLをチューニングする必要がありますか?探してコンパイルする必要があるGDALのバージョンがありませんか?特に、QGISでのシェープファイルとラスターのPostGISパフォーマンスと視覚化を改善するにはどうすればよいですか?Linuxターミナルを使用して、包括的かつ迅速な空間データ管理の栄光を享受するにはどうすればよいですか?この問題に関する助けを歓迎します! Duncan Golicherがこのガイドに従いました:https ://duncanjg.wordpress.com/2012/11/20/the-basics-of-postgis-raster/ 私は元々自動設定のタイルを使用していましたが、タイルを行ごとに100x100セルにリセットし、ガイドに示されているようにピラミッドを含めました。 raster2pgsql -s 3161 -d -C -I -M -l 4 D:\PostGIS_data\dem.img -t 100x100 raster.dem100 …

1
PostGISラスター合計(マップ代数)
特定の日の旅行時間の等時線を表すポリゴンのテーブルがあります。各原点には、5つのアイソクロネジオメトリがあります(別々の行に格納されます)。各原点について、5つのアイソクロナス(バイナリNULLまたは1)をラスタライズし、それらを1つのラスタレイヤーに結合します。このラスターレイヤーには単純なマップ代数sum / 5が必要です。そのため、各原点は、最終的に[NULL、0.2、0.4、0.6、0.8、1]の値を持つ単一のラスターレイヤーに関連付けられます。構成レイヤーはオーバーラップします。それは確率曲面です。 私のデータはすべてPostgres 9.3(PostGISを使用)に保存されます。私の問題は、PostGISラスタの使用方法を学びたいが、非常に急な学習曲線を持っているように思え、すべての例が単一のラスタレイヤに対処できることです。例では、このレイヤーはポリゴンオーバーレイの一部として使用され、各ポリゴンのラスターの値を平均化しています。以下を組み合わせた複製可能な例は見つかりませんでした。a)ベクトル->ラスターb)マップ代数。およびc)最初の段落ごとのGROUP BY属性。 このタスクを実行するために必要な場合、GDALまたはGRASSを使用しても問題ありませんが、これはPostGISが処理できるもののようです。入力データがすでにPostGISジオメトリである場合、そうするのが便利です。そして、私は本当に PostGISラスターに同意したいと思っています。 サンプルデータ構造: areaid time date isogeom (polygon) 1000 07:15:00 2014-05-05 xxx 1000 07:15:00 2014-05-06 xxy ... 1006 07:15:00 2014-05-05 zzz ラスタライズし、areaidでグループ化し、マップ代数演算を実行して次のことを行います。 areaid isorast (raster) 1000 aaa 1006 bbb 私はこれをPostGISに含めることに成功していません。私のアプローチは、ベクターをラスターに変換し、ラスターを配列にダンプし、psycopg2を介してnumpy配列との組み合わせを実行してから、GeoTIFFに書き込む(PostGISに戻す)ことです。理想的ではありませんが、実行可能です。

2
psycopg2を使用してラスターデータをpostgisからPythonにダウンロードする
pythonにnumpy配列として取得したいpostgresテーブルにラスターデータがあります。データベースに接続するためにpsycopg2を使用しています。データをダウンロードすることはできますが、文字列(おそらくシリアル化されたバイナリ)として返されます。 この文字列を取得してnumpy配列に変換する方法を知っている人はいますか? st_astiffを使用してhexファイルをダウンロードしてxxdを使用するなど、ラスターをダウンロードする他のオプションを検討しましたが、うまくいきませんでした。「rt_raster_to_gdal:出力GDALドライバーを読み込めませんでした」というエラーが表示され続け、ドライバーを有効にできる環境変数を設定する権限がありません。 TL、DR:ラスターデータをnumpy配列にインポートする(Pythonを使用)。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.