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

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

1
QGISおよびArcGISでPostgreSQLを使用しますか?
QGISおよびArcGISでPostgreSQLを使用することは可能ですか?つまり、異なるクライアント用の1つのデータベース。 2つの異なるソフトウェアからDBMSを使用するのに心配や問題はありますか? PostGISとArcSDEが必要であり、QGISからPostgreSQLのPostGIS 1.5でラスターデータを操作または保存できないことはわかっています。 あなたは何を勧めますか、何を避けますか?

1
postgis DBの既存のテーブル(新しいスキーマを適用)からテーブルを作成する方法は?
地理空間的に有効になっているテーブルがあります。世界の国境が含まれています。それを異なるスキーマ(グローバル、ヨーロッパなど)に分解したいと思います。私の考えは、次のようなものを使用することです。 CREATE TABLE europe.borders AS (SELECT * FROM wo_borders WHERE admin_lvl2='eu' ); //just an example! 新しいスキーマを考慮し、それらを地理空間的に有効にするために、既存のテーブルからテーブルを作成するのは正しいですか?デフォルトのpostgisテンプレートを使用して新しいテーブルを事前に作成する必要がありますか?

1
Postgisで近接検索を実行するにはどうすればよいですか?
Geonamesデータベース(cities1000)をダウンロードして、テーブルにインポートするための小さなRubyプログラムを作成しました(geo_cities)。次に、という地理列を追加しましたgeog。 次に、緯度/経度のすべてをgeog列に変換しました。 update public.geo_cities set geog = st_GeogFromText('SRID=4326;POINT(' || longitude || ' ' || latitude || ')'); 物事はよく見えています。今、私がやりたいのは、プラハから100マイル以内にあるすべての都市を見つけます。 だから私はプラハを次のように得ることができます: select * from geo_cities where asciiname = 'Prague' and countrycode = 'CZ'; 私はまだGISとPostgresを学んでいるので、誰かが簡単なクエリで私を助けてくれませんか?

4
PostGIS ST_Intersectsのパフォーマンスの問題を修正する方法は?
私はpostgisの初心者で、クエリのパフォーマンスに問題があります。 この私のクエリ: SELECT DISTINCT ON (userid) userid ,ST_AsText(position), timestamp FROM table1 WHERE ST_Intersects ( ST_GeomFromText('a multiypolygon geom goes here',4326),position) ORDER BY userid, timestamp desc 問題は、私のマルチポリゴンに非常に大きなポリゴン(単語のドキュメントでは600ページの長さです)が含まれていて、実行に2時間以上かかったことです。 クエリを最適化する方法または別の方法を使用する方法はありますか? どうぞよろしくお願いします!

4
postGISテーブルの名前を変更し、GeoServerを更新しますか?
postGISテーブルの名前を変更したい。ただし、これを単純な ALTER TABLE old_name RENAME TO new_name; 私が理解しているように、空間データは新しい名前で更新されません。まず、これらの参照を関数を実行して修正できますか? SELECT probe_geometry_columns() この後、テーブル自体は大丈夫ですか?それとも他の対策を講じるべきでしょうか?次に、GeoServerを更新してこの新しいテーブルを見つけるにはどうすればよいですか?今のところ、上記のコマンドを実行し、GeoServerのレイヤー情報を編集して新しい名前を指すようにすると、エラーが発生します(GeoServerはまだ古い名前でそれを見つけようとします)。正確に、GeoServerのレイヤー名はどこで変更する必要がありますか?

1
PostGISでの複数のレイヤーの交差
複数のレイヤーの共通部分を計算するために、PL / pgSQLストアドプロシージャを記述する必要があります。たとえば、3つのレイヤーA、B、Cの場合、この関数はABCジオメトリを返します。 関数は、交差する必要のあるレイヤーのIDを入力として受け取ります。誰かがこの機能を構築するためのアドバイスをくれますか?これについての私の考えは、最初のレイヤーと交差する必要があり、次にこの交差の結果が3番目のレイヤーと交差するなどです。

1
OpenStreetMapでコントリビューターを取得する方法
osm2pgsqlのおかげで、osmファイルをベースに配置しました。コントリビュータリストを取得する方法を探しています。私はデータベースを検索しましたが、あまり見つかりませんでした...そしてosm2pgsqlスキーマに関するosm wikiには多くの詳細が含まれていません... 出来ますか?

3
PostGIS:ST_Intersection = 100%のジオメトリの場合、ST_Equals false?
地籍の小包データで構成される2つのデータセットがあり、それぞれ約125,000行です。ジオメトリ列は、区画の境界を表すWKBポリゴンです。すべてのデータは幾何学的に有効です(ポリゴンが閉じているなど)。 いくつかの最近のデータは、比較ジョブに使用されているベースデータとは異なる投影法で到着しました。そのため、新しいデータを再投影しました(ベースは4326でした。もう1つは、900914としてPostGISに取り込まれたWGA94でした... 4326に再投影しました)。 。 分析の最初の段階は、一致しない区画を見つけて保存することでした。その一部は、同一のジオメトリを持つ区画を識別して保存することです。 だから私は非常に標準的なクエリを実行しました(以下のコードブロックはスキーマの詳細などを抽象化しています): create table matchdata as select a.* from gg2014 a, gg2013 b where ST_Equals(a.g1,b.g1) 結果はゼロです。 「おかしい…」と思った。「おそらく、再投影によって引き起こされた小さな頂点シフトがありました。それは煩わしいことであり、実際には起こらないはずです。」 幸いにも、空間的に同一である必要がある区画を確立できるようにする豊富な空間データ(5つの識別子列)があります。2014年のテーブルの変更日が2013年のデータの最大変更日より前である同じ識別子を持つものです。これは、120,086の個別の行になります。 識別子とジオメトリを別のテーブル(match_id)に保存し、次のクエリを実行しました。 select apid, bpid, ST_Area(ag::geometry) as aa, ST_Area(bg::geometry) as ab, ST_Area(ST_Intersection(ag,bg)::geometry)/ST_Area(ag::geometry) as inta, ST_Area(ST_Intersection(ag,bg)::geometry)/ST_Area(ag::geometry) as intb from match_id order by inta 最初の16の値についてintaとintb同様にゼロであった、次の456であった0.99999999っぽい(最小0.99999999999994、最大0.999999999999999)、以降1た473行-交差の面積があった行120050まで、より大きいいずれかの幾何学的形状(最大値intaとはintb)まだ1.00000000000029だったが、。 だからここに私の難問があります:2つのジオメトリがそれぞれの領域の99.999999999994%から100.000000000029%の間で空間的に交差する場合、「ST_Equals」に「そうです...それを与えます。十分に近い」と言ってもらいたいのです。 結局のところ、これは16兆分の1の割合で減少していることに相当します。 地球の周囲(約40,000 km)のコンテキストでは、0.0000000025 kmの頂上から離れているようなものです(面積の差が小さくなるため、頂点のシフトはさらに小さくする必要があります)。 TFD(私がR'dを持っています)によると、許容値ST_Intersects()は概念的に0.00001m(1mm)であるため、頂点の暗黙の変更(私が確認していないことを告白します:ST_Dump()それらを変更するので)は小さくなるようです。公差より。(私はそれを理解していますがST_Intersects …

3
QGISを使用して既存のデータベースエントリにGIS機能を追加する
ジオメトリ列を含むテーブルを含むpostgreSQLでデータベースを構築しました。非ジオメトリ列にデータを追加すると、postgisを使用してデータベースに接続したときに、QGISでそれらのデータを表示できます。次に、QGISの編集ツールを使用して、既存のエントリにポリゴンを追加します。つまり、QGISでジオメトリ列を埋めます。 これどうやってするの?シェープファイル全体をデータベースに追加することだけを聞いたことがありますが、単一の機能を単一の列に追加することは聞いていません。 例...次の表があります(自治体): id smallint NOT NULL, name varchar(50) NOT NULL, mun_geom geometry(Polygon, 31468) データベースに接続しているときに、(1、 'municipality1')のように、postgresqlに列のidとnameを入力できます。自治体をpostgisレイヤーとして追加した後、ポリゴンフィーチャを追加してエントリを補完します。

1
ほとんどのポイントがポリゴン内にある場合、何百万ものポイントに対してポイントインポリゴンクエリを最適化するにはどうすればよいですか?
ポイントテーブルに1億5,000万のポイントがあり、特定のポリゴンジオメトリの外側にあるいくつかのポイントを見つけたいと考えています。ポイントの99.9%がポリゴンジオメトリ内にあることを知っています。ポリゴンの外側にあるいくつかのポイントを見つけることに興味があります。 インデックス付きのPostGISテーブルを使用した現在の最良のクエリは、完了するまでに約30分かかります。ほとんどのポイントがポリゴン(境界線)内にあることを知っている次のクエリを最適化する方法はありますか? SELECT COUNT(*) FROM italy_points pt JOIN borders poly ON ST_WITHIN (pt.the_geom, poly.geom) WHERE poly.iso3 = 'ITA'; ポリゴンは基本的にイタリアの管理0境界です。頂点-405,000。パーツ-510。エンベロープはポリゴンよりもはるかに大きい(ポリゴンはエンベロープの24%をカバーしています)

3
Postgisの内部結合でインデックスを使用する方法は?
2つの異なるテーブルで2セットのポイントを取得しました。Table_aは100kポイント、table_bは300kポイントを獲得しました。関係で最も近いポイントを見つけようとすると、tabla_aから50メートル以内にあるtable_bからポイントが見つかります。その秋の列を計算した後、それらをtable_a a_id列でグループ化し、最高値を返します。 私はこの批評家を満たす次のクエリを書きました SELECT DISTINCT ON (a_id) * FROM ( SELECT table_b.b_id, table_b.height - st_3ddistance(table_b.geom, table_a.geom) fall, table_b.geom, table_a.a_id FROM table_a INNER JOIN table_b ON _st_3ddwithin(table_a.geom, table_b.geom, 50)) a WHERE fall >= 0 ORDER BY a_id, fall DESC; 3Dジオメトリインデックスを追加しました。 CREATE INDEX table_a_geom ON table_a USING GIST (geom gist_geometry_ops_nd); CREATE INDEX …

1
QGISでPostGISパーテ​​ィションテーブルをロードできません
次のステートメントを使用して、PostgreSQLデータベースのテーブル(1300万を超える地理的ポイントデータ)をパーティション化しました。 CREATE TABLE data.data_fusion ( id BIGINT NOT NULL, source TEXT, id_source VARCHAR, id_vn INTEGER, taxref_id INTEGER, ... geom GEOMETRY(Point, 2154), equipe VARCHAR, exp_excl BOOLEAN ) PARTITION BY LIST (equipe); そして、子テーブルごとに、この例のように主キーとインデックスを作成しました。 CREATE TABLE data.data_fusion_lpo07 PARTITION OF data.data_fusion FOR VALUES IN ('lpo07'); ALTER TABLE data.data_fusion_lpo07 ADD PRIMARY KEY (id); CREATE INDEX …

1
PostGisとOracle Spatial 11gのパフォーマンス
63,000,000ポイントをWKT形式に変換しているときに、Oracle Spatial 11Gのテーブルを更新するとパフォーマンスの問題が発生します。Postgresとも比較しました。PostgresとOracleはどちらも、同じサーバーでホストされている2つの仮想マシンで実行されます。 Postgres:プロセッサ12、RAM 64GB create table alldata(geom geometry(Point, 4326)); alter table alldata add column wkt4326 varchar(100); update alldata set wkt4326 = St_AsText(geom) -- 25 minutes Oracle 11G:プロセッサー12、RAM 40GB、pga + sga =最大8GB create table alldata(geom sdo_geometry); -- e.g.: SDO_GEOMETRY(2001, 4326, SDO_POINT_TYPE(aLon, aLat, null), null, null) alter table alldata add (wkt4326 …

1
PostGISでラスターからポリゴンの平均値を計算していますか?
まず、同僚から提供された英国のNetCDF .griおよび.grdラスターファイルから始めました。私はそれをRでロンドンだけになるようにクリップし、エクスポートしてASCファイルに変換してから、Rで次のコマンドを使用してPostGISにインポートしました。 library(raster) uk_raster <- raster("AnnMean2011.grd") london_area <- extent(-720000.0,-630000.0,-50000.0,25000) london_raster <- crop(uk_raster, london_area) writeRaster(london_raster, filename="AnnMean2011.asc", format="ascii") そして、Ubuntuコマンドラインで: raster2pgsql -I -C -s 10001 -t 20x20 AnnMean2011.asc annualmean | psql -d james_traffic PostGISにラスターテーブルができました。ちなみに、10001のSRIDは次のとおりです。 INSERT INTO spatial_ref_sys(srid, auth_name, auth_srid, proj4text) VALUES (10001,'CMAQ_Urban',10001,'+proj=lcc +a=6370000 +b=6370000 +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=000000 +y_0=00000'); 同じデータベースに、ロンドンをカバーするポリゴンファイルSRID 27700があります。ラスターから各ポリゴン内の平均値を計算したいと思います。 私はこのようなことを試みていますが、それは正しくありません: …

2
源流ポリゴンを見つける
これは、この質問のフォローアップ質問です。 河川網(複数線)といくつかの排水ポリゴンがあります(下の画像を参照)。私の目標は、源流ポリゴン(緑)のみを選択することです。 ジョンのソリューション私は簡単に川の開始点(星)を抽出することができます。ただし、ポリゴンに始点がある状況(赤いポリゴン)がある場合がありますが、ポリゴンは河川を通って飛んでいるため、源流ポリゴンではありません。源流ポリゴンだけが必要です。 ポリゴンと川の交差点の数を数えてそれらを選択しようとしました(理由:源流ポリゴンには川との交差点が1つだけである必要があります) SELECT polyg.* FROM polyg, start_points, stream WHERE st_contains(polyg.geom, start_points.geom) AND ST_Npoints(ST_Intersection(poly.geom, stream.geom)) = 1 ここで、poylgはpoylgonsであり、johnsのstart_pointsは答え、streamは私の河川ネットワークです。 しかし、これは永遠にかかり、私はそれを実行しませんでした: "Nested Loop (cost=0.00..20547115.26 rows=641247 width=3075)" " Join Filter: _st_contains(ezg.geom, start_points.geom)" " -> Nested Loop (cost=0.00..20264906.12 rows=327276 width=3075)" " Join Filter: (st_npoints(st_intersection(ezg.geom, rivers.geom)) = 1)" " -> Seq Scan on ezg_2500km2_31467 …

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