タグ付けされた質問 「postgresql」

PostgreSQLは、オープンソースのオブジェクトリレーショナルデータベースシステムです。

4
空間関数による行の制限
以下のクエリのパフォーマンスを改善しようとしています。クエリ(FROM句のサブクエリ、WHERE句のサブクエリ)をどのように記述しても、countery = 24の行が60行しかないにもかかわらず、高価なST_DWITHIN関数ですべての570K行を実行するように要求します。postgresにcounty = 24でフィルターをかけるようにするには、postgis funcを実行する前にどのようにすればよいですか?700msはあまり心配する必要はありませんが、このテーブルが1,000万回以上になると、パフォーマンスが心配になります。 また、p.idは主キー、p.zipcodeはfkインデックス、z.countyはfkインデックス、p.geomはGiSTインデックスです。 クエリ: EXPLAIN ANALYZE SELECT count(p.id) FROM point AS p LEFT JOIN zipcode AS z ON p.zipcode = z.zipcode WHERE z.county = 24 AND ST_DWithin( p.geom, ST_SetSRID(ST_Point(-121.479756008715,38.563236291512),4269), 16090.0, false ) 分析の説明: Aggregate (cost=250851.91..250851.92 rows=1 width=4) (actual time=724.007..724.007 rows=1 loops=1) -> Hash Join (cost=152.05..250851.34 rows=228 …


1
PostgreSQLのQGISでarray []データ型を使用する
私はGISの初心者なので、ここにコメントがあれば嬉しく思います。 QGISに接続したPostgreSQLのテーブルがあります。datatypeのテーブルに列がありますarray[]。しかし、ユーザーが{a、d、c}などのビューを使用して列にデータを挿入するのは簡単ではありません。データを編集する簡単な方法はありますか? 'a、b、c'のようなQGIS triggerにデータを入れ、データをPostgres正しい外観でテーブルに入れるINSERT / UPDATE BEFOREをオンにするというアイデアがあります。しかし、それも最善の方法ではないようです。

2
あるテーブルのフィーチャを別のテーブルのフィーチャでST_Splitする方法は?
閉じたラインストリングと閉じていないラインストリング(レイヤー 'lin')の両方でポリゴン(レイヤー 'pol')を分割する必要があります。 残念ながら、次のクエリを実行しても適切な結果が得られません。 CREATE VIEW splitted_pol AS SELECT g.path[1] as gid, g.geom::geometry(polygon, SRID) as geom FROM (SELECT (ST_Dump(ST_Split(pol.geom, lin.geom))).* FROM pol, lin ) as g; 私の例では、ST_Splitは6つのポリゴンを作成する必要があります(レイヤー 'splitted_pol')。 QGIS / PostGISでST_Splitを使用する方法を知っている人はいますか?

1
アーカイブテーブルを含むSDEジオデータベースを複製できますか?
一方向のレプリケーションを使用して別の場所にレプリケートするデータベースを1つの場所に持っています。テストでは、アーカイブテーブルを複製できませんでした。これらの履歴バージョンを両方の場所に保持する必要があるため、残念です。 DEFAULTデータベース全体(アーカイブテーブルを含む)を単純に複製することは可能ですか? そうでない場合、これを回避する方法はありますか?

3
等値線をpostgisで等値ポリゴンに変換する方法は?
私は次のように定義されたisolinesのpostgisテーブルを持っています: CREATE TABLE myisolines ( gid serial NOT NULL, isotime timestamp without timezone, val numeric(10,4), geom geometry(LineString,4326) ); 視覚的には、このラインストリングオブジェクトは次のようになります。 データの空間範囲がわかっているので、Bboxを追加して、LineStringを閉じているようにすることができます。 重複しないが連続したサーフェスを作成し、ポリゴンが形成された最低の等値線を持つ列を持つ、ポリゴンmyisopolygonsを含むmyisolinesテーブルから、アイソポリゴンのテーブルを作成します。セルフクローズドアイソライン(アイランド)またはbboxでクローズされたアイソラインから形成できることを理解しています。その場合、その特定のアイソラインからを取得する必要があります。視覚的には次のようになります。valvalval どういうわけかトポロジーを作ってから面をポリゴンに変換できると思ったのですが、どうしたらいいのかわかりません。これはどのように行うことができますか? もう1つのオプションは、bboxと作成された各ポリゴンの間の差分関数を再帰的に使用することですが、これは正しい方法ではなく、まったく高速ではありません。

2
PostGISでマンハッタン距離を計算するにはどうすればよいですか?
ST_Distance関数を使用して、2つのジオメトリ(駅と建物)間の距離を計算しています。すべての建物とすべての駅がシカゴにあり、優れた完全なストリートグリッドがあるため、マンハッタンを使用したいと思います。(またはタクシー)距離。 これの一般的な式は、Xの違いとYの違いを足したものです。したがって、Abs(X1-X2)+ Abs(Y1-Y2)になります。 これを機能させるPostgreSQLクエリは何ですか?

1
球の可視性グラフを計算する
いくつかのポリゴンを含むPostGISテーブルがあります(geographyデータタイプを使用して保存されています)。それらは球形の地球上の領域を表しています。 すべてのポリゴンの中から選択した頂点のペアごとに、これらの2つの頂点が互いに「見える」かどうかを計算します。(n *(n -1)/ 2のペアがあります。ここで、nはテーブル内のすべてのポリゴンにわたる一意の頂点の総数です。 "お互いに見える"とは、 2つの頂点がテーブル内のどのポリゴンとも交差していません。 その計算を実行する最も速い方法は何ですか(できればPostgreSQL / PostGISで)。 うまくいくものを持っていますが、遅いです。私は単純にすべてのペアを反復処理し、それらの間のLineStringがポリゴンと交差するかどうかを確認します。(PostGISのgeographyデータ型は、球体に関するすべての難しい計算を処理します。)それで、速度を上げるかもしれない巧妙なデータ構造またはアルゴリズムがあるかどうか疑問に思います。

2
Ubuntu 12.04にPostGISとTIGERデータをインストールする
誰かがPostgisをインストールし、ubuntuに全国のTigerデータをロードするための馬鹿のガイドを理解していなくても、簡単に書くことができますか?私はいくつかのガイド、つまりhttp://wiki.bitnami.com/@api/deki/pages/302/pdfを試しましたが、あまりうまくいきません。この質問の自由な性質をお詫び申し上げます。

2
PostgreSQL / PostGISには、どの空間認識GUI管理ソフトウェアが存在しますか?
私のPostgreSQLでの経験のほとんどはpgAdminIIIとpsqlでしたが、他の人が何を使っているか知りたいです。 SQL Server Management Studio(SSMS)に相当するPostgreSQLと、限られた方法で、ジオメトリ(無料または有料)を含む結果を表示する機能はありますか? または、この質問はPostgreSQL / PostGIS用のGUIツールですか?? PostgreSQLソフトウェアカタログを調べましたが、何も見つかりませんでした(リンク切れ以外)。

1
PostGISでのラスター統計計算のパフォーマンス
PostgreSQL / PostGISを使用して、ベクターレイヤーの各ポリゴンのラスター統計(最小、最大、平均)を計算しようとしています。 このGIS.SEの回答は、ポリゴンとラスター間の交差を計算し、次に加重平均を計算することにより、これを行う方法を説明しています:https : //gis.stackexchange.com/a/19858/12420 私は次のクエリを使用しています(demはラスター、topo_area_su_regionはベクターでtoid、一意のIDです: SELECT toid, Min((gv).val) As MinElevation, Max((gv).val) As MaxElevation, Sum(ST_Area((gv).geom) * (gv).val) / Sum(ST_Area((gv).geom)) as MeanElevation FROM (SELECT toid, ST_Intersection(rast, geom) AS gv FROM topo_area_su_region,dem WHERE ST_Intersects(rast, geom)) foo GROUP BY toid ORDER BY toid; これは機能しますが、遅すぎます。私のベクターレイヤーには2489kのフィーチャがあり、各フィーチャの処理には約90msかかります- レイヤー全体の処理には数日かかります。(ST_Areaへの呼び出しを回避する)最小値と最大値のみを計算する場合、計算速度は大幅に向上しないようです。 Python(GDAL、NumPy、PIL)を使用して同様の計算を行うと、(ST_Intersectionを使用して)ラスターをベクトル化する代わりに、ベクトルをラスター化する場合に、データの処理にかかる時間を大幅に削減できます。ここのコードを参照してください:https://gist.github.com/snorfalorpagus/7320167 私は本当に加重平均を必要としません-「それに触れるなら、それは入っている」アプローチで十分です-そしてこれが物事を遅くしているものであると合理的に確信しています。 質問:PostGISをこのように動作させる方法はありますか?つまり、正確な交差ではなく、ポリゴンが接触するラスターからすべてのセルの値を返します。 私はPostgreSQL / PostGISに非常に慣れていないので、私が正しく行っていないことが他にあるかもしれません。私はPostgreSQL 9.3.1とPostGIS …


3
PostGISエラー:ライブラリ「/usr/lib/postgresql91/lib64/postgis-2.0.so」をロードできませんでした
OSはopenSUSE 12.1、PostgreSQL-9.1、PostGIS-2.0です。Postgre / PostGISはApplication:Geoリポジトリからインストールされます。 最近の更新後、データベースに接続しようとすると、次のエラーが発生します。 ERROR: could not load library "/usr/lib/postgresql91/lib64/postgis-2.0.so": /usr/lib/postgresql91/lib64/postgis-2.0.so: undefined symbol: pj_get_spheroid_defn 私はこのエラー(hint-1、hint-2)をWebで検索しましたが、ld.so.config(またはldconfigコマンド)と関係があるようです。しかし、私は私の場合に何をしなければならないのか理解できません。

2
オープンソースのPython / PostGISプロトタイプに最適な設計
Apacheを介して配信されるデータ集約型のWebアプリケーションを作成しています。私の質問は、複数のオプションがある場合に、処理を最適に配置する方法についてです。 私は自由にOpenLayers / JQuery / Javascript、PostGIS / Postgresql(pgsql付き)、python / psycopg2、phpを持っています。 データベースには約300万行が含まれており、プロトタイプは現在次のように実行されます。 ユーザーがOpenLayersウィンドウのポイントをクリックした 座標はAJAXリクエストとしてサーバー上のPython関数に送信されます 現在、私のアプリケーションはステートレスです Pythonのpsycopg2を使用してpgsqlストアドプロシージャを呼び出し、大量のWKT値(およびデータフィールド)がpythonモジュールに返されます。 データフィールドは、PythonでWKTレコードを次のように分類するために使用されます。すべてのWKT値は、5つのグループのいずれかに分類されます。WKT値の約1%が実際に変更されます。 WKTの5つのセット/グループは、5つの異なるポリゴンを作成するためにバッファリングされます。現在、データベース内のストアドプロシージャを呼び出してこれを行っています。これは今度はST_BUFFERを使用するだけです。(私はShapelyの使用を検討しましたが、どちらの場合にもGEOSライブラリが使用されるため、パフォーマンス上の利点があるかどうかはわかりません...) 最後に、5つのWKTテキスト値がJSON文字列にラップされ、OpenLayersに返されて5つのレイヤーとしてレンダリングされます。 ボトルネックは、最初の空間検索と最後のバッファリング段階であることがわかりました。 質問は次のとおりだと思います: 物事を整理するより良い方法はありますか?たとえば、すべてのデータ処理をPostgreSQLで(たとえばカーソルを使用して)実行する必要がありますが、これはメンテナンスとパフォーマンスの点で優れているでしょうか?長いWKT文字列をWebクライアントに渡さないようにするには、タイルサーバーを使用する方がよいでしょうか。どのように対処しますか?

1
PostGISに保存されている155 MBのラスターを表示するにはどうすればよいですか?
次のコマンドを使用して、ラスタをpostgresデータベースにロードしています。 raster2pgsql -I -C -e -Y -F -s 3086 -I -C -M myraster.tif myraster -F -t 30x30 | psql -U postgres -d database -h localhost -p 5432 myraster.tif155Mです。QGISでラスタープラグインを使用しようとすると、ロードに非常に長い時間がかかります(15〜20分)。これをスピードアップするために私にできることがあるか、またはラスターを表示する別のアプローチがあるかどうかはわかりません。私ができることは、ラスターをすばやく表示して、データベースに格納されているベクターデータと正しく一致することを確認することだけです。(対照的に、ベクトルデータは非常に速く表示されます。)現時点では、QGISはフリーズし、ラスターを表示します。黒い四角形が表示されるだけで、相互作用によってプログラムがフリーズするため、カラースケールを変更することはできません。 私はラスターの読み込みに関連する微妙な点に精通していないので、おそらく使用する必要のあるさまざまなフラグと引数があるでしょう。これは大きなラスターであることを理解しているので、表示のためだけに再サンプリングしたり、同様に処理したりできます(どうすればよいかわかりません)。 wktrasterQGISでプラグインの最新バージョンを使用しています。リモートサーバーに接続してデータを表示しています。QGIS 1.8でOSXを使用しています。任意のプログラムを使用して、任意のOSでラスターを表示できます。

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