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

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

3
交差する線をPostGISで結合する
これは私が尋ねることをほとんど恥じているものですが、私はそれが私の人生のために機能するように思えません。 セグメントを持つ道路レイヤーがあり、各セグメントにはRoad IDとセグメントがありますtype。 すべてのセグメントRoad IDを1つのラインストリングに結合しますが、それらが同じでtypeあり、接触している場合のみ(すべてのラインがスナップされます)。 Road ID - Type 1 L 1 L 1 T 1 L
15 postgis  sql 

4
データベース設計:GISの道路トポロジ
道路に関する特定の機能を保存する標準またはベストプラクティスの方法はありますか。 道路の方向性: 一方向の通り:一方向にのみ進む道路 センターターニングレーン: 2つのレーンの間に存在する道路で、どちらのレーンもこのように左または右に曲がることができます 高速道路のインターチェンジランプと合流車線 道路機能: 交差点レイアウト(信号化または非信号化): 次のような、交差点のさまざまな許可パターンと禁止パターンをdbに組み込みます。 ノーターン 緑に左折します(またはしない) 緑のサイクルと時間 交差点での作動アプローチと非作動アプローチ 通行権のルール:一部の交差点には、一般的な通行権のルールとは異なる場合があります。坂道を例に考えてみましょう。上り坂を走行している人を除き、誰もが一時停止の標識で止まる必要があります。彼らは一時停止の標識を持っていないので、すべてのトラフィックはそれらに屈する必要があります。

6
ST_Intersectionの使用方法
ここに私がやろうとしていることについての簡単な要約があります:Postgresには、「a」と「b」の3つのテーブルがあり、それぞれにPolygon列があり、「c」にPoint列があります。ここでやろうとしているのは、「a」、「b」、「c」の間のジオメトリの交差を取得し、そのようなジオメトリをOpenLayersベクターレイヤーに表示することです。 OpenLayersでStringの任意の種類のジオメトリを表示する方法は既に知っていますが、PostGISのST_Intersection関数で問題が発生しています。これを実行しています。 SELECT ST_Intersection(a.geom, b.geom) as inter from a, b; ここで、a.geomとb.geomは両方ともジオメトリ列であり、次のエラーメッセージが表示されます。 NOTICE: TopologyException: found non-noded intersection between 515172 2.14408e+06, 497067 2.13373e+06 and 501321 2.13546e+06, 471202 2.14843e+06 500621 2.13576e+06 ERROR: GEOS Intersection() threw an error! また、次のようなST_AsTextを使用して、結果のジオメトリをテキストとして表現しようとしました。 SELECT ST_AsText(ST_Intersection(a.geom, b.geom)) as inter from a, b; しかし、それは私にこのエラーメッセージを送信します: HINT: No function matches the given …

6
PostGIS:レイヤーAのポイントのIDをレイヤーBの最も近いポイントに割り当てます
これは、他の質問に対する明確な前兆であったはずです(質問しませんでした )。PostGISでスパイダーダイアグラム(ハブライン)を作成する方法は? レイヤーAのポイント(店舗)とレイヤーBのポイント(顧客)の関係がわからない場合は、一般的に「顧客1は最寄りの店舗からサービスを受けています」と言いたいと思います。私はこの事実が真実ではないかもしれないことを理解していますが、それはまともな代理になる可能性があります。 PostGISを使用して、レイヤーA(店舗)の最も近いポイントのIDをレイヤーB(顧客)の各ポイントに割り当てる最も効率的な方法は何ですか。私が探している出力は以下のようなものです。 Customer | Store 1 | A 2 | A 3 | B 4 | C

3
where句の交差面積の割合を計算する
postgresにポリゴン(国勢調査ブロックグループ)のテーブルがあります。各ブロックグループに、主に存在する町(別のポリゴンテーブル)をタグ付けします。これは可能ですか?私は本質的に次のようなものを作成する必要があると考えています: select b.*,t.name from blockgroups b, towns t where (st_area(st_intersection(b.wkb_geometry, t.wkb_geometry))/st_area(b.wkb_geometry)) > .5 しかし、このクエリには永遠に時間がかかります(約5,000のブロックグループと375の町があります...)。このクエリが正しくない場合はまったく機能しない、または正しい場合は高速になる方法についての提案はありますか?

2
Linuxでesriパーソナルジオデータベース(.mdb)をPostGISにインポートする方法
PostGISにインポートする必要があるesriパーソナルジオデータベースがあります。 最終的には、WebサーバーにMDBをアップロードし、レイヤーをPostGISにインポートできるようにします。 Windowsでは、FWツールを使用して、以下が正常に機能します。 ogr2ogr -f "PostgreSQL" PG:"host=10.10.10.10 user=someuser dbname=poi password=somepassword port=5432" S:\GISData\Test.mdb -a_srs EPSG:26986 しかし、私はこれを自動化したい(そしてプログラム的にそれをしたい)ので、LinuxではLOTがもっと簡単になるだろう[と思う]。

2
無効なジオメトリの意味は何ですか
Postgisデータベースにいくつかのデータをインポートしましたが、一部のジオメトリが無効であると報告されています(ST_IsValidReasonは自己交差またはリング自己交差を報告します)。 私が実行しているクエリは、これらのジオメトリの無効な側面の影響を受けないようです(ST_Distanceクエリのみを使用しています)。 ジオメトリが無効な場合に壊れるものは何ですか? これらのジオメトリを「自動的に」修正する(buffer(geom、0)またはST_SimplifyPreserveTopology(geom、0.0001))オプションですか?

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
PostGISの巨大なポイントクラウドレーザーデータ-格納と処理
膨大な数のレーザースキャンされたポイントクラウドデータを、処理の時間的側面を念頭に置いてPostGISに保存する方法はどのように考えられるのでしょうか。PointPostGISにはジオメトリオブジェクトが存在します。しかし、私が知る限り、各ポイントが新しいtupelに保存されるため、数百万以上が保存されている場合、特定のポイントの検索は非常に遅いプロセスになります。 このトピックについて議論しているHSR Universtiy of Applied Sciences Rapperswillの論文を見つけました。そのようなデータを保存する3つの方法を提案します:Whole data in one tupel、Each point in one tupelまたはSplitting Data into Blocks各ブロックの拡張を保持する情報テーブルによって参照されます。3番目の方法は、保存されたポイントを見つけるのに最も役立つように思えるので、誰かが既にそれを使って経験をしたことがあるのでしょうか? 論文はここにあります:http : //wiki.hsr.ch/Datenbanken/files/pgsql_point_cloud.pdf 最後になりましたが、私はgithubのプロジェクトに困惑しました。これはPostgeSQLの点群マナーに対処しているようです。残念ながら、ネットに関する情報はあまり多くありません。ここで同じ質問があります:誰かが既にそれでいくつかの経験をしましたか?そのような目的に使用できますか? プロジェクトはここにあります:https : //github.com/pramsey/pointcloud また、もしあれば、他の提案、アイデア、または経験について聞いてうれしいです。しかし、非営利的なソリューションが好まれることを認めなければなりません。

2
QGISはPostGISビューを追加しようとすると「Invalid Layer」メッセージを返しますか?
私はPostgisとQGISが初めてです。次のように定義されたビューを作成しました CREATE OR REPLACE VIEW pupr.vstudentmuni AS SELECT m.id AS munid, m.name AS muname, m.geom, s.code, (s.name::text || ' '::text) || s.lastname::text AS fullname FROM pupr.municipio m, pupr.student_location l, pupr.student s WHERE st_within(l.geom, m.geom) AND s.code = l.code; PostgreSQLで。このビューをQGISに追加しようとすると、次のエラーが返されます... "Invalid layer"..."sql= is an invalid layer and cannot be loaded." 何が問題なのかわかりません。このテーブルはgeommetry_columnsPostGIS …

1
QGISの最近傍グループ化選択
qgisにインポートしたlat / long形式で100,000以上のポイントを含むリストがあります。 さて、私がここでやろうとしているのは、これらすべてのポイントをボックスグループにグループ化することです。つまり、本質的に、マップを境界ボックスに分割したいということです。 私の要件は次のとおりです。 ボックス化されたグループは100ポイント以下、200ポイント以下である必要があります 複数のグループにポイントを配置しないでください すべてのポイントは、最近傍に基づいている必要があります qgisでこれをどのように達成できますか? カスタムクエリコードを渡して、結果またはシェープファイルとして作成されたボックスを保存できると仮定していますか?誰かがこれをどのように行うことができ、コードがどのように見えるかを説明してもらえますか? 前述のように、私の目的は、各ボックス内に100個以上、200個以下のプロパティが含まれるシェープファイルレイヤーとして表示される正方形のボックスを作成することです。

2
ジオコードの品質:Nominatim対PostGIS Geocoder対Geocoder :: US 2.0
時々、ジオコーディングする必要がある>> 500,000米国の住所(フィーチャまたは交差点なし)。これらのバルクジオコードを処理するために、ジオコーディングサービスをローカルに設定したいと思います。 過去にTigerベースのGeocoder :: US 2.0をローカルで使用しました。特にRubyパーサーに依存せず、住所要素を明示的にジオコーダーに渡す場合、初期ベンチマークはGoogleでジオコーディングされた住所に対して妥当な精度を提供します。 PostGIS Geocoderについてもよく読んでいます。私のデータはすでにPostGISにあるので魅力的ですが、試してみるためにローカルに設定していません。 また、誰かがNominatimをローカルで試すことを勧めました。私が知る限り、Tigerベースではないことを除いて、私はそれについてあまり知りません。そして、より信頼できる結果が得られるかどうか疑問に思っています。 上記のソリューションの経験がある人への私の質問:3つの精度はどのように比較されますか?具体的には、米国の番地に最も一貫して信頼できるジオコードを提供するのはどれですか?私は、速度やセットアップの複雑さを過度に心配していません。

2
GeoPandas DataframeをPostGISテーブルに追加しますか?
シンプルなGeoPandasデータフレームがあります。 このGeoDataframeをPostGISテーブルにアップロードしたいと思います。PostGIS拡張機能を使用したデータベースのセットアップは既にありますが、このDataframeをテーブルとして追加できないようです。 私は次を試しました: engine = <> meta = MetaData(engine) eld_test = Table('eld_test', meta, Column('id', Integer, primary_key=True), Column('key_comb_drvr', Text), Column('geometry', Geometry('Point', srid=4326))) eld_test.create(engine) conn = engine.connect() conn.execute(eld_test.insert(), df.to_dict('records'))

1
PostGISでポリラインをnメートルごとにポイントに変換するにはどうすればよいですか?
質問はこれとほぼ同じですが、PostGISを使用する必要があります。 多数のポリラインがあり、これらのラインに沿ってnメートルごとにポイントに変換します。 編集: ステファンに感謝します。おそらく古いバージョンのPostGIS(1.5)が原因で、最終的なクエリは少し異なりましたが、最終的には必要なものが得られました。ポイントは、道路密度のヒートマップに結合されました。
14 postgis  point  line 

1
PostGISの近接検索のST_DWithinとST_Distanceの違いは何ですか?
緯度と経度の座標がジオメトリフィールドに格納されたテーブルにレコードが格納されています。ユーザーが指定した参照ポイントの近くにあるすべてのレコードを検索したい。「近く」とは、おそらく100km未満(さらに小さい場合もある)を意味します。 私が見るほとんどの例はを使用していますST_DWithin。使用できない理由はありますST_Distanceか?使用しての違いは何であるST_DWithinとST_Distanceこれを行うには? 例えば: SELECT name, ST_AsText(coords) FROM places WHERE ST_DWithin(coords, ST_GeomFromText('POINT(-12.5842 24.4944)',4326), 1) 対 SELECT name, ST_AsText(coords) FROM places WHERE ST_Distance(coords, ST_GeomFromText('POINT(-12.5842 24.4944)',4326)) < 1

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