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

PostGISは、PostgreSQLオブジェクトリレーショナルデータベースの拡張機能で、地理オブジェクトのサポートを追加します。

1
日付変更線上の最も近い点を効率的に見つける方法は?
数十万のPostGIS POINTを持つPostgreSQL 9.1テーブルがあります。これらのそれぞれについて、POINTの別のテーブルで最も近いポイントを見つけたいと思います。2番目の表の点は、全世界のグリッドを表しています。そのため、常に1度以内で一致することがわかります。これは、これまでに使用したクエリで、GISTインデックスを使用しているため、かなり高速です(合計約30秒)。 SELECT DISTINCT ON (p.id) p.id, ST_AsText(p.pos) , ST_AsText(first_value(g.location) OVER (PARTITION BY p.id ORDER BY ST_Distance(p.pos, g.location::geography))) FROM point p JOIN grid g ON ST_DWithin(p.pos::geometry, g.location, 1) 唯一の問題は日付変更線です。グリッドポイントの緯度は180度のみで、-180ではありません。ST_Distanceのジオメトリバージョンを使用する場合、これは日付変更線の反対側のポイントを返しません。例えば。p.posがPOINT(-179.88056 -16.68833)最も近いグリッドポイントである可能性がありますPOINT(180 -16.25)が、上記のクエリはそれを返しません。これを修正する最良の方法は何ですか? 1つのグリッドポイントに2つの座標(-180と+180)を使いたくありません。この特定のケースをチェックする独自の関数を追加しようとしましたが、おそらくインデックスを使用できなくなったため、クエリが5分で返されません。ST_DWithinの地理バージョンも使用してみましたが、そのクエリも5分後に返さ​​れませんでした。

2
PythonでPostGISテーブルをShapefileに変換しますか?
PostGISテーブルをシェープファイルに変換したい(pgsql2shpを使用しない)。 シェープファイルでジオメトリを作成するには、Xmin、YminとXmax、Ymaxを指定する必要があり、PostGISテーブルにあるジオメトリは不規則な形状です(境界ボックスを使用して外部を取得できますが、これには以下が含まれます)不穏な私の領域よりもいくつかの余分な領域)。タスクを完了する方法はありますか? プログラムで、Pythonを使用して実行したいと考えています。
10 python  postgis 

1
Googleマップの特定のポイントで重複するユーザー定義のポリゴンをクエリできますか?
Google Maps APIでの作業の制限と、半複雑な空間比較を行うための可能な解決策を見つける必要があります。 私が達成しようとしているのは、特定のポイント(住宅地の住所)で重複するユーザー定義の空間ポリゴンのクエリを可能にする比較システムです。 基本的に、レストランには特定の配達エリアがあり、そのパラメーターはX地理座標で定義されます。住所は1つのポイント(x、y)で表されます。 これらのタイプの空間比較に最適なバックエンドはpostGISであると言われました。ただし、Google Maps APIによって設定された利用規約を確認しても、Googleが提供する地理座標応答を保存できるかどうかは明確ではありません。 http://code.google.com/apis/maps/terms.html 10.1.3-たとえば、「場所」の独立したデータベースを作成するためにコンテンツを使用してはなりません。...まだ、 ..以下を保存できる場合を除きます。(i)Maps API実装のパフォーマンスを向上させる目的で、一時的、安全に、および外部でのコンテンツの使用を許可しない方法で、限られた量のコンテンツサービス 私の質問は: 空間ポリゴンとGoogle Fusion Tablesを使用した経験はありますか? Google Places APIを使用した経験のある人はいますか?このような種類の比較は可能ですか? Googleマップが表示されるときに地理座標がキャプチャされ、より完全なGoogleマップと組み合わせて使用​​するために保存されるため、これはGoogleが定めた「利用規約」に含まれますか? 私はGoogleマップの使用に非常に熱心で、私のアプリケーションが成功すれば、プレミアムサービスに加入する見込みです。他の誰かがこれらのタイプの計算の経験を持っていますか、私が見逃しているものはありますか?

2
PostGISのリング自己交差
これは前の質問の続きです。私は新しいPostGISユーザーです。 データでトポロジの有効性を確認し、土地被覆(ポリゴン)データセットで約1700のトポロジの問題を見つけました。これらはすべて「Ring Self_intersection」です。 Paul Ramsayによるこのプレゼンテーション(20ページ)のいくつかの有用な情報を使用して、それに応じてデータをバッファーに入れようとしました。 UPDATE schema.data SET the_geom = buffer(the_geom、0.0)WHERE isvalid(the_geom)= false and isvalid(buffer(the_geom、0.0))= true; しかし、私は応答を受け取ります: 通知:ポイントまたはその近くのリングの自己交差(編集)エラー:リレーション "sgm_buffer"の新しい行がチェック制約 "enforce_geotype_the_geom"に違反しています **********エラー********** エラー:リレーション "sgm_buffer"の新しい行がチェック制約 "enforce_geotype_the_geom"のSQL状態に違反しています:23514 私も試してみました: UPDATE csgn.sgm_buffer SET the_geom = buffer(the_geom、0.0) そして得る: エラー:リレーション "sgm_buffer"の新しい行はチェック制約 "enforce_geotype_the_geom"に違反しています **********エラー********** エラー:リレーション "sgm_buffer"の新しい行がチェック制約 "enforce_geotype_the_geom"のSQL状態に違反しています:23514 それで、このバッファテクニックが私の問題で機能しないと思いますか?それとも私は何か間違ったことをしていますか? ラムゼイ氏は同じ文書で、「8の数字」ポリゴンを処理するための追加の手法を提案しています。私はこれをコードで完全に書く方法(またはそれが何をしているか、そしてそれが私を助けるかどうか)を完全に理解していません: SELECT ST_BuildArea(ST_Union( 'LINESTRING EMPTY'、ST_ExteriorRing( 'POLYGON((...))' だから……誰でも手伝ってくれる?これは、PostGISにおける私の厳しいタイムスケールと限られたスキルで、実際の悪夢を証明しています。
10 postgis  topology 

1
Quantum GISを使用してPostGISレイヤーにフィーチャを追加するにはどうすればよいですか?
Quantum GISとPostGIS dbmsを使用しています。PostGISレイヤーをQGISに呼び出すことはできますが、機能を追加できません。機能をシェープファイルに追加する方法を使用していますが、それでもレイヤーに反映されません。また、機能をPostGISレイヤーに追加できる場合、それをPostGISデータベースに保存する方法がわかりません。 何と呼べばいいのかわからないので、この問題には専門用語を使用しなかったかもしれません。自分の言葉で問題を表現しています。
10 postgis  qgis 

1
ポリゴンクエリのポイントのGISTインデックスによるパフォーマンスの向上
2つのテーブルがあります。locations(id、region_id、the_geom)とregions(id、the_geom)です。各ロケーションポイントについて、それが配置されているリージョンを特定します。 UPDATE locations SET region_id = (SELECT id FROM regions WHERE ST_Within(locations.the_geom,regions.the_geom) ); ロケーションポイントにGISTインデックスを作成することには意味がありますか?リージョンポリゴンにインデックスを作成しますが、ポイントについてはわかりません。クエリを高速化できますか?

1
PostGISポリゴンジオメトリのヘルプ-閉じていないリング
私はErik Westraによる超邪悪な本「Python Geospatial Development」(Amazonリンク)のコピーを手に取り、それを調べています。現在、地理空間Webアプリを構築する準備として、GSHHS海岸線データをシェープファイルからPostGISデータベースにロードするように教えています。 私の問題はこれです。GSHHSデータをPostGISにインポートしようとすると、海岸線のポリゴンが「有効」と見なされないために拒否されます。具体的には、海岸線ポリゴンの一部(すべてではない)が「閉じていないリング」であると説明されているエラーメッセージが表示されます。 このエラーは、ポリゴンの最初と最後の点が同じではないことを伝えようとしていることを理解しています。しかし、これは単に真実ではありません。多くのポリゴンのWKT表現を調べましたが、それらは正しいものです。彼らは間違いなく同じ座標で始まり、同じ座標で終わります。 ポリゴンは、OGRライブラリを使用してシェープファイルから抽出され、各ポリゴンフィーチャをWKTにエクスポートします。Shapelyを使用してポリゴンを再構成し、WKBを試しましたが、役に立ちませんでした。私がしている shp2pgsqlとローダーを使用して、MULTIPOLYGONテーブルとPostGISのに同じデータをロードすることができました。 :そこに誰がいた場合、私は思っていた 、おそらく、同じ本を使用()と同じ問題で捕まってしまった、と私のための答えを持っていますか? (b)同様の問題に遭遇し、解決策を見つけましたか? (c)失敗した場合、PostGISにロードする前に有効なジオメトリを確保するための「ベストプラクティス」のアドバイスはありますか? 更新:ある同僚は、「閉じていないリング」の問題は別の問題の兆候である可能性があることを示唆しています。私のPostGIS / PostgreSQL構成にサイズ制限(挿入トランザクション、受信パケット、テキスト文字列など)がある可能性があります。 入力として非常に長いWKTポリゴンを使用しているので、PostGISは、各ポリゴンを完成させるには早すぎる可能性があります。明日テストしてみますが、たぶん聞こえそうです。国境の挿入は、一部のレコードのみを受け入れ、他のレコードは受け入れませんでした。記憶から、受け入れられた形状は、アンティグアなどの小さな島国のものでした(したがって、おそらく短いWKT表現がありました)。 したがって、これは無効なジオメトリスレッドではなく、PostGISデータベース管理スレッドになりかねません。
10 python  postgis  ogr  wkt 

3
PostgreSQLからdxfファイルを取得する
多数のシェープファイルをPostGISデータベースに正常にロードしました。SQLクエリに基づいて、特定のジオメトリとレイヤーをdxfファイルとして取得できるようにしたいと思います。 WindowsのOSGeo4WスイートのPostGIS、GDAL、PostgreSQL、Pythonを使用しています。 私はogr2ogrを次のように少し使用する必要があると想像しています: $ ogr2ogr -sql "SELECT * FROM some_table" -f "dxf" outputfile.dxf -overwrite "PG:dbname=mydb user=dbusername password=dbpassword" しかし、適切な値でそれを行うと、次のような一連のエラーが発生します。 ERROR 1: DXF layer does not support arbitrary field creation, field 'objectid' not created. レイヤー内のすべての属性列でエラーが発生しsome_tableますが、dxfファイルを取得します。 .dxfファイルを既に作成していて、上記のコマンド(-overwriteオプションを含む)を再実行すると、代わりに次のエラーが発生します。 Layer sql_statement not found, and CreateLayer not supported by driver. ERROR 1: Terminating translation prematurely after …
10 postgis  gdal  ogr  dxf 

2
ルーティングの目的でOSMデータをPostgreSQLに変換する方法は?
OpenStreetMapを使用してルーティングアプリケーションを作成しています。現在、私の仕事は、OSMファイルからPostgreSQLにデータを変換することです。 私はosm2pgsqlについて読みましたが、問題はosm2pgsqlがルーティングに適していないということです。私はOsmosisについても読みましたが、Railsポートについて何かがあります。つまり、Ruby in Railsを学ぶ必要があるということです。過去にRoRを勉強してみましたが、学ぶのが難しすぎました。 アプリケーションにPHPを使用しています。OSMファイルからデータを抽出してPostgreSQLにエクスポートする方法を教えてください。私はここで何か不足している可能性があることを知っていますが、マッピングアプリケーションに関しては初心者です。誰かが私を助けてくれることを願っています。ありがとう!:D

3
PostGISの一意の識別子列にシーケンスを追加するQGIS処理スクリプトを作成するにはどうすればよいですか?
PostGISの既存の一意の識別子列(タイプ:整数)にシーケンスを追加するQGIS処理スクリプトの作成を手伝ってくれる人はいますか? これは、たとえばバグ#6798の回避策として非常に役立ちます。残念ながら、私はPythonの経験がありません。 CREATE SEQUENCE /*input_schema*/./*input_table*/_/*uic*/_seq OWNED BY /*input_schema*/./*input_table*/./*uic*/; SELECT SETVAL('/*input_schema*/./*input_table*/_/*uic*/_seq', (SELECT MAX(/*uic*/) FROM /*input_schema*/./*input_table*/)); ALTER TABLE /*input_schema*/./*input_table*/ ALTER COLUMN /*uic*/ SET DEFAULT nextval('/*input_schema*/./*input_table*/_/*uic*/_seq'::regclass);

2
ST_Distanceは空間クエリにインデックスを使用しません
最も単純なクエリでも、PostgreSQL 9.3.5でPostGIS 2.1を実行して空間インデックスを使用できません。データセット全体800万ポイント(ここから人口数グリッド)です。テーブルは次のように作成されます CREATE TABLE points ( population DOUBLE PRECISION NOT NULL, location GEOGRAPHY(4326, POINT) NOT NULL ) CREATE INDEX points_gix ON points USING GIST(location); クエリは取得するのと同じくらい簡単です SELECT SUM(population) FROM points WHERE ST_Distance( location, ST_GeographyFromText('SRID=4326; POINT(0 0)') ) < 1000 PostgreSQLは常にSeqスキャンを使用します。私は10000ポイントのサブセットを試しました-まだSeqスキャンです。何か案は?

5
ポイントに基づいてラインを重複しないサブセットに分割します
ラインジオメトリのテーブルと、別のテーブルでこのラインにスナップされる1つまたは複数のポイントが与えられた場合、ラインがポイントと交差する各位置で1つまたは複数の交差するポイントを使用して各ラインを分割します。 たとえば、ラインLがあり、ラインジオメトリに沿って3つの交点A、B、Cが順番に並んでいます。Lを4つの異なるジオメトリとして返します。Lの最初からAまで、Lに沿ってAからBまで、Lに沿ってBからCまで、そしてCからLの終わりまでです。 過去に私はこのタスクに整形を使用しましたが、これは線形参照の問題です(http://sgillies.net/blog/1040/shapely-recipes/)。ただし、これは、何百万もの線と点があるこの場合には実用的ではありません。代わりに、PostgreSQL / PostGISを使用するソリューションを探しています。 ポイントは直線上にあるように制約されていることに注意してください。さらに、ポイントは有効にラインの開始または終了に置くことができます。その場合、ラインを分割する必要はありません(同じラインの開始または終了ポイントと一致しない他のポイントがない限り)。サブセットラインは方向と属性を保持する必要がありますが、ポイントフィーチャの属性は重要ではありません。

5
PostGISで「細長い」ポリゴンを特定する
私は、都市の近所など、広いエリアを表す一連のポリゴンを持っています。それらの間の大きな重なり合う領域を識別したいと思います。 しかし、問題があります。これらのポリゴンは、周囲に沿ってオーバーラップすることがあります(精度がほとんどないために描画されたため)。これは、私が気にしない長くて狭いオーバーラップを生成します。 ただし、ロバストポリゴンの大きなオーバーラップが発生する場合もあります。これは、近隣のポリゴンが別のポリゴンとオーバーラップする大きな領域を意味します。これらだけを選択したい。 オーバーラップのみの以下の図を参照してください。左下隅の青いポリゴンだけを選択したいと想像してください。 エリアを確認することもできますが、狭いエリアが非常に長く、青いポリゴンと同じ大きさのエリアになることがあります。面積/周長の比率を計算しようとしましたが、それでも結果はまちまちです。 私もを使用してみましST_MinimumClearanceたが、広い領域に狭いパーツがアタッチされていたり、2つの非常に近い頂点がある場合があります。 他のアプローチのアイデアはありますか? 最後に、@ Cyrilと@FGregで提案されているように、ネガティブバッファーを使用するのが最も効果的でした。 私は次のようなものを使用しました: ST_Area(ST_Buffer(geom, -10)) as neg_buffer_area 私の場合、単位はメートルなので、10 mのネガティブバッファーです。 狭いポリゴンの場合、この領域はゼロを返しました(また、ジオメトリは空になります)。次に、この列を使用して狭いポリゴンを除外しました。
10 qgis  postgis  slivers 

1
&_よりst_intersectsの方が速い理由
ポイントの表です。〜1Mレコード SELECT COUNT(*) as value FROM alasarr_social_mv s; Output: 976270 st_intersectsは空間インデックスを強制的に使用するように見えますが、&&は使用しません。 使用例ST_Intersects(282ms) SELECT COUNT(*) as value FROM alasarr_social_mv WHERE ST_Intersects( the_geom_webmercator, ST_MakeEnvelope(-410961,4920492,-402305,4926887,3857) ) Aggregate (cost=34370.18..34370.19 rows=1 width=0) (actual time=282.715..282.715 rows=1 loops=1) -> Bitmap Heap Scan on alasarr_social_mv s (cost=5572.17..34339.84 rows=60683 width=0) (actual time=21.574..240.195 rows=178010 loops=1) Recheck Cond: (the_geom_webmercator && '0103000020110F0000010000000500000000000000441519C1000000002BC5524100000000441519C1000000C069CB524100000000048E18C1000000C069CB524100000000048E18C1000000002BC5524100000000441519C1000000002BC55241'::geometry) …

2
PyQGISで利用可能なPostGIS接続を取得する
PyQGISでPostGISデータベースへの利用可能な接続を取得できますか?利用可能なdb-connectionsのリストを提供し、続いて私のプラグインのui内のテーブルのリストを提供したいと思います。 クックブックをチェックしましたが、これをさらに進める方法が見つかりませんでした。
10 qgis  postgis  pyqgis 

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