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

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

2
インデックスが欠落しているPostGISテーブルを見つけますか?
最近私は周りを見回していましたpg_stat_user_tablesが、いくつかの空間テーブルで多数の順次スキャンが見られたことに驚きました。案の定、これらのテーブルには空間インデックスがありませんでした。 インデックスのないジオメトリ列を持つすべてのテーブルを見つけるにはどうすればよいですか?

1
PostGISで中心線に沿って平行線を計算する
PostgreSQLデータベースに通り(道路の中心線)とポリゴンテーブルを作成しています。サンプルシナリオは次のとおりです。 問題: 通りの周りの50メートルのバッファーと両側の最も近い建物のポリゴンの交点で、通りに沿った平行線を計算する必要があります。望ましい出力シナリオは次のとおりです。 私が試したこと: 私のアプローチは: 1) Generate 50m buffer around street layer 2) get the intersection of buffer and polygons 3) Compute the distance 4) Draw offset curves (parallel lines) at both sides of street layer 5) Merge both curves to get parallel lines at the intersection これが私の試みです: WITH street_buffer …

3
マルチジオメトリからディゾルブバッファーを作成(共有属性と空間的交差による結合)
マルチポイント入力機能から溶解バッファーを作成する必要があります。以下の例では、入力テーブルに4つのフィーチャが含まれています。フィーチャ#2は2つのポイントジオメトリで構成されています。バッファを作成した後、4つのポリゴンジオメトリを取得します。 結果をグループ化する方法はありますか?ポイント#1とのバッファ#2はディゾルブされ、単一のマルチポリゴンフィーチャである必要があります(a)。 これまでに行ったこと: -- collect all buffers to a single multi-polygon feature -- dissolve overlapping polygon geometries CREATE TABLE public.pg_multibuffer AS SELECT row_number() over() AS gid, sub_qry.* FROM (SELECT ST_Union(ST_Buffer(geom, 1000, 8))::geometry(MultiPolygon, /*SRID*/) AS geom FROM public.multipoints) AS sub_qry; 編集: -- create sample geometries CREATE TABLE public.multipoints ( gid serial …

1
QGIS保存postgisテーブルエラー:結果バッファがありません
PostGISにポリゴンレイヤーがあります。QGISを使用してフィーチャを追加しようとすると、編集を保存するとエラーが発生します。 これは、「結果バッファがありません」というエラー通知です。 私はここで同様のケースを見つけました:機能の追加中にPostGISエラー:結果バッファーがありません。しかし、それは私にそれを解決する答えを与えません。何か案は ?
10 qgis  postgis 

2
PostGIS-ラインまたはポリゴン内のポイントを取得します
markerアプリ用に作成する線またはポリゴンの中心点を取得する必要があります。マーカーをクリックすると、ジオメトリが表示されます(ラインまたはポリゴン)。以前は機能さST_Centroidせていました。 結果は、重心がジオメトリの外にあるいくつかのポリゴンまたはラインのネストを解除することを期待したものです。これらのラインまたはポリゴンに必要なのは、「最も中心点」を取得することですが、ジオメトリの内側にあります。 これどうやってするの?解決策はありますか?

2
Webメルカトルマップで見栄えの良い大円弧を作成しますか?
いくつかのフライトを示すデータを含むマップを作成しようとしていますが、グレートサークルアークを使用して、出発地と目的地を接続したいと考えています。 基本的に、私は有名なFacebookマップに似たようなことをしたいと思います。 私はこの投稿で提供された関数を使用しました:https : //gis.stackexchange.com/a/5205/442(つまり、このブログ記事:http : //anitagraser.com/2011/08/20/visualizing-global-connections /)そして線を引くことはできましたが、それらは極地で国際日付変更線を横切るだけでなく、束になっています。 @underdarkは、リンクされたブログポストでこれらの行を分割する必要があると述べていますが、PostGISでそれらを自動的に分割する方法がわかりません。 さらに、極付近の線の集まりも解決する必要があります。 これらのフライトの始点と終点のポイント位置がある場合、これらの両方をどのように行うのですか?

3
PostGISにジオメトリ列を追加しますか?
多くの地理データセットをPostGISにインポートしていますが、それらのセットは異なりSRIDます。(あるものEPSG:3857、あるものEPSG:4326、あるもの)。 追加を作成したいgeometry columnです。the_geom_mercatorを使用しSRID EPSG:3857、元のgeom列を元の列のSRIDままにします。 PostGIS関数でこれを行うにはどうすればよいですか?

2
ポイントでラインストリングをカットしますか?
ラインストリングをポイントでカットする最良の方法をチェックしていました。 シナリオは次のとおりです。たくさんの道​​路があり、交差点でカットされたセグメントが必要です。 わかった 線ストリング(ポイントでカットされていない完全な)テーブル st_intersectionポイントテーブル 交差点テーブルでカットされた独立したラインストリングセグメントを取得する必要があります。 私はPostGIS関数を使用していて、いくつかのアプローチを見つけましたが、それらのすべてが何らかの問題を引き起こしています。 これは私がすでにテストしたものです: 1 ラインテーブル:1行、1200行のst_memunionポイントテーブル:1700行(ポイント) 悪い点:本当に多くの時間とメモリのフラッシュが必要です。同時に複数のテーブルを作成できないため、メモリはそれを処理できません。そしてその結果は汚くて厄介です。私に正しい行番号を与える代わりに、後でそれをクリーンアップする必要があります(ここで説明されている交差点でのラインの分割) CREATE TABLE lines_with_messy_result AS ( SELECT ((ST_DUMP(ST_SPLIT(a.geom,b.ix))).geom) as geom FROM st_union_lines a INNER JOIN lots_of_points b ON ST_INTERSECTS(a.geom, b.ix) ); --then need to clean this up create table lines_segments_cleaned as ( SELECT DISTINCT ON (ST_AsBinary(geom)) geom FROM lines_with_messy_result ); …

1
到達可能な領域にポリゴンを構築する
私は現在、等時性と基礎となるアルゴリズムの分野で働いています。現在問題となっているのは、等時線自体の場合の計算ではなく、結果の視覚化です。 私の等時線アルゴリズムの結果は、ポイントとエッジです。実際、私には有効なソリューションがありますが、3873エッジと1529ノードの場合、時間がかかるようです(2015 Core i7 CPUとかなり高速なSSDを含むLenovo T440sラップトップでは約2.0秒)。秒の代わりに、msec :-)のようなものがもっと欲しいです。 たぶん誰かが、到達可能な領域を視覚化するポリゴンを構築するのに必要な計算時間を短縮するのを手伝ってくれるでしょう。 しかし、待ってください...まず最初に! これは、私の等時線の計算結果であるエッジの視覚化です。 これらのエッジはPostGISデータベーステーブルに格納され、単純な線ストリングです。 ユーザーに見せたいのは次のようなもの です。画像の最南端と最東端にある切断された領域に注意してください。これらは個別の領域として描画する必要があります(したがって、ここではマージできません:-)) 現在、私はこのクエリを使用しています: SELECT ST_AsGeoJson(St_Transform(ST_Multi(ST_Collect(polygons)), 4326)) AS coverage FROM ( SELECT ST_MakePolygon(ST_ExteriorRing(ST_GeometryN(segments, generate_series(1, ST_NumGeometries(segments))))) AS polygons FROM ( SELECT ST_Union(ST_Buffer("GEOMETRY", 20, 'quad_segs=2')) AS segments FROM my_edges AS a ) AS b ) AS c 私はすでにいくつかの実験を行っており、多くのドキュメントも読みましたが、より良い解決策を見つけることができません。 私の目には、大きな問題はST_Unionの使用です(ドキュメントで述べられているように、この関数は遅くなる可能性があります)。非常に興味深いのは、それをST_Collectで置き換えると、ST_Bufferの計算が遅くなるように見えるため、次のクエリのオールインオールがさらに長くかかりますが、エッジ間の領域は埋められません(ラインの周りにバッファーが作成されるだけです) ): SELECT ST_AsGeoJson(St_Transform(ST_Multi(ST_Collect(polygons)), …

2
ダイナミックなリーダーラインを作成するには?
QGISの「ラベルの移動」ツールに加えて、PostGISビューを使用して動的な引出線を作成しようとしています。 CREATE VIEW leader_line AS SELECT gid, ST_MakeLine(geom, ST_SetSRID(ST_MakePoint(xcord_label, ycord_label), SRID))::geometry(linestring, SRID) AS geom FROM point WHERE xcord_label IS NOT NULL; これはすべてのラベルで問題WHERE ST_X(geom) < xcord_labelなく機能しますが、ラベルの見栄えが悪くなりWHERE ST_X(geom) > xcord_labelます。 誰かがラベルの引き出し線を正しく配置する方法を知っていますWHERE ST_X(geom) > xcord_labelか?ラベルのxmax座標を参照する方法はありますか?

1
Postgisデータベースクエリの最適化
DTED形式のラスターセットがあり、raster2pgsqlコマンドラインツールを使用してPostGISデータベースにロードします。 各ラスターは単に行に格納され、ridとラスター形式の値によって記述されます。 次に、ポイントの経度と緯度を取得し、このポイントに対応するピクセルの値を返すデータベース関数を作成します。 私が抱えている問題は、データベースがOdroidボードで動作するため、それを行うのにかなりの時間がかかる(3〜4秒)ことです。 私が処理するデータセットは非常に大きい(ラスターは英国全体をカバーしている)ことはわかっていますが、PostgreSQLとPostGISに精通していないため、より高速に処理できると思います。 これは私がこれまでに行ったことです: SELECT ST_Value(rast, ST_GeomFromText(CONCAT('POINT(', $1, ' ', $2, ')'), 4326)) FROM ( SELECT * FROM rasters WHERE rast && ST_GeomFromText(CONCAT('POINT(', $1, ' ', $2, ')'), 4326) ) x; $1そして、$2それぞれ長いと緯度です。

1
特定のpostgisジオメトリ列をデフォルトとして使用するようにGeoserverを構成する
2つのジオメトリ列を持つPostGISテーブルがあります。両方ともマルチポリゴンですが、1つはSRID 4326、もう1つは3857です。Geoserverでテーブルを公開すると、Geoserverはデフォルトで列のリストの最初のジオメトリ列を使用することに気付きましたが、特定のジオメトリ列を使用するようにGeoserverを構成する方法がある場合 特定のジオメトリ列を使用してレンダリングするようにSLDを構成することについては話していません。つまり、 <se:PolygonSymbolizer> <se:Geometry> <ogc:PropertyName>geom3857</ogc:PropertyName> </se:Geometry> … </se:PolygonSymbolizer> Geoserverが特定のジオメトリ列をネイティブSRIDおよびデフォルトのプロジェクションとして使用することについて話している。

1
postGISを介してGeoTIFFをGeoServerにインポートする方法は?
簡単なテストケースとして、OpenGeoのソフトウェアスタックを構成して、GeoTIFFをOSMのような通常のマップへのオーバーレイとして表示できるようにしています。そこで、次の手順を実行します。 postGISで空間データベースを作成する GeoTIFFをデータベースにロードします データベースをGeoServerにインポートする GeoServerでマップオーバーレイとしてプレビューします(GeoExplorerまたはOpenLayersなど)。 GeoTIFFをGeoserverに直接インポートするのとは逆に(これは非常にうまく機能します)、データベースからインポートされたテーブルは、GeoServer Webアプリケーションでは「ラスターデータ」ではなく「ベクターデータ」としてマークされます。レイヤープレビューでは、GeoExplorerはGeoTIFFから何も表示せず、OpenLayersは次を報告するWMSファイルを返しますServiceExeption。 The requested Style can not be used with this layer. The style specifies an attribute of geom and the layer is: opengeo:test 解決策は非常に単純だと思いますが、GeoServerがpostGISに保存されているラスターデータをどのように解釈するのか理解していないようです。 誰かが私が欠けている点を教えてもらえますか? 私のステップの詳細: ドキュメントに記載されているようにpostGISで空間データベースを作成し、template_postgisUbuntu 12.04で操作するときにテンプレートおよびポート5432として使用します。 raster2pgsql(http://suite.opengeo.org/docs/dataadmin/pgGettingStarted/raster2pgsql.html)を使用して、コマンドラインからデータベースにGeoTIFFをロードします。 raster2pgsql -I -C -s 32632 test.tif public.testTable | psql -d test -h localhost -U opengeo …

1
特定の場所(ポイント)と方向(角度範囲)からユーザーが見ることができる建物(ポリゴン)を見つける方法は?
特定の場所(ポイント-lat、lng)と方向(角度の間隔)から+確実に特定の深さ(たとえば100メートル)で見ることができる建物のセットを取得したいと思います。理想的には、出力として次のようなものを望みます。角度1から角度2まではユーザーが建物1を見ることができ、角度2から角度3までは建物2を見ることができます。 データ=シェープファイルで都市の建物を表すポリゴン。 入力:人の視覚的知覚を表す場所と方向(角度範囲)。 出力: バージョン1-{BuildingID}のリスト バージョン2(より良い)-{BuildingID、各建物の可視セグメントのセット(建物の正面)} バージョン3(理想的な出力)-{buildingID、角度範囲のリスト}。(例:角度1から角度2まで、ユーザーは建物1を見ることができ、角度2から角度3までは建物2を見ることができます。) 使用できるツールボックス:PostGis、QGis、ruby、R 出力v1のソリューションの開始: -与えられたポイントと方向(角度の内部)と特定の半径/深さ(たとえば100メートル)のユーザーの簡略化された視覚範囲を表す三角形の作成 -建物との交差(たとえばST_INTERSECTION )の計算)と視覚的範囲。しかし、建物は別の建物を隠すことができるので、視覚範囲と建物の間の純粋な交差は目に見える建物を追加しないかもしれません。この問題に取り組む必要があります。 更新:可能性のあるソリューション2- 与えられたポイントと方向(角度の内部)と特定の半径/深さ(例:100メートル)でユーザーの簡略化された視覚範囲を表す三角形を作成-異なる角度でn本の光線(LINE)を作成スコープを埋めます。 -すべての建物(POLYGONS)をSEGMENTS / LINESに変換します -各レイが最も近いSEGMENTと関連するbuildingIDを見つけます。(ST_DISTANCE、ST_DWithin) この段階では、光線と関連する建物IDのリストが必要です。 -次に、このリスト{角度の範囲、関連する建物ID}を集計できます。 より効率的な方法についてのアイデアはありますか?
10 qgis  postgis  r  viewshed 

1
PostGISを使用して既存のテーブルの経度/緯度座標からPOINTを作成しますか?
既存のテーブルの経度と緯度の列を使用してポイントを作成したいと思います。ST_MakePointのドキュメントへのリンクは次のとおりです。 これが私のテーブルです: CREATE TABLE sysinst.bio ( oid INTEGER PRIMARY KEY, longitude FLOAT, latitude FLOAT, geom GEOMETRY(POINT, 26913) ); ジオメトリ列の追加: SELECT AddGeometryColumn ('sysinst', 'bio', 'geom', 26913, 'POINT', 2); これが私のクエリです: UPDATE sysinst.bio SET geom = ST_SetSRID(ST_MakePoint(longitude, latitude), 26913); QGISで表示したときにポイントが誤ってプロットされていても、エラーは返されません。 のために(-97.5959, 21.1922)、私は受け取ります(-109.4896, 0.0002) 助言がありますか? より簡単な方法があれば、私はこれをより効率的に行うことにオープンです。

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