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

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

2
プレーンSQLを使用してPostGISでバッファテーブルジオメトリを動的に変更する
PostGISには、pointテーブルとpoint_bufferテーブルの2つのテーブルがあります。ポイントテーブルにはbuffer_distanceフィールドがあり、デフォルト値は200です。ポイントテーブルのbuffer_distance値を変更するたびに、バッファテーブルジオメトリを変更したいと思います。これは、point_bufferテーブルの1つの行に対して次のようにして実行できます。 UPDATE point_buffer SET the_geom = (SELECT ST_Buffer(the_geom,500) FROM point WHERE gid = 1) FROM point WHERE point.gid = point_buffer.gid しかし、point_bufferテーブル全体(サブクエリにWHERE句を削除)を変更しようとすると、エラーメッセージが表示されます。 「エラー:式として使用されているサブクエリから複数の行が返されました。」 私の質問は、point_bufferテーブル全体を一度に変更できますか?1つのオプションがfor loppを使用していることを知っています。上限はポイントテーブルのカウント値であり、point.gid値を増分します。しかし、私はこれをプレーンSQLで実行したいと考えています。

2
PostGISクエリの結果として空間PostGISテーブルを作成する
空間クエリの結果を別のPostGISテーブルとして保存する場合、どうすればよいですか?一連の区画に含まれるすべての住宅の建物を特定することに興味があります。 CREATE TABLE residentialBuildings AS SELECT buildings.the_geom FROM parcels as p JOIN buildings as b ON ST_Contains(p.the_geom, b.the_geom) WHERE p.residentialarea > 0; これは機能しているようですが、空間的な結果は返されません。代わりに、テーブルにはジオメトリのバイナリ表現があります。結果としてテーブルを作成するために何をすべきかわかりません。最初にテーブルを作成してから、結果をジオメトリに変換する必要がありますか? (私はドキュメントを読みましたが、これはかなり明白なことだと思うので、適切な検索用語が欠けているように感じます)。 ジオメトリを作成するためのコマンドがたくさんあることに気づきました ST_GeogFromText ST_GeographyFromText ST_GeogFromWKB ST_GeomCollFromText ST_GeomFromEWKB ST_GeomFromEWKT ST_GeometryFromText ST_GeomFromGML ST_GeomFromKML ST_GMLToSQL ST_GeomFromText ST_GeomFromWKB しかし、どのオプションを選択するか、またはこれが正しいアプローチかどうかはわかりません。

1
ラスターをPostGISにインポートする方法は?
以下の手順に従って、ラスタをPostGISデータベースにロードしようとしています。 python raster2pgsql.py -s 4269 -I -r *.tif -F myschema.demelevation -o elev.sql 私*がラスターへのパスに置き換えることを理解していますが、パーツmyschema.demelevationまたはを理解していませんelev.sql。このファイル用に独自のスキーマを用意する必要がありますか?そして、そのelev.sql部分はどういう意味ですか? 私はまた、gdal PostGISラスタードライバーを読んで、より多くの例でこれを試して理解しました。同様に、彼らはラスターをロードすることを提案しますkatrina python raster2pgsql.py -r /path/to/katrina.tif -t katrina -l 1 -k 64x64 -o katrina.sql -s 4326 -I -M 現在の設定を使用して、katrinaラスターを次の場所にロードしてみました。 python2.6 ~/src/postgis-2.0.0SVN/raster/scripts/python/raster2pgsql.py -r ~/tmp/katrina.tif -t katrina -l 1 -k 64x64 -o katrina.sql -s 4326 -I -M ただし、次のエラーが発生しました。 Traceback …

2
PostGIS:住所範囲から家の番号を概算する
カナダ向けの逆ジオコーダーを開発しています。これまでのところ、緯度/経度を指定すると、最寄りの道路(ラインセグメント)を見つけることができます。これには、ラインセグメントの方向と、ストリートの両側の住所範囲が含まれます。私は現在、プログラムで最も近い家の番号を指定された緯度/経度のポイントに概算するための最良の方法を見つけようとしています。 以下は、ストリートデータを含む行の例です。 -[ RECORD 1 ]- [...] l_adddirfg | Same Direction l_hnumf | 3219 l_hnuml | 3235 l_stname_c | Breen Road North-west r_adddirfg | Same Direction r_hnumf | 3224 r_hnuml | 3236 r_stname_c | Breen Road North-west the_geom | 0105000020E610000001000000010200000002000000B0F6990E78885CC088DF2B5F3C8C49400875B39A89885CC0A0BCA6AC4B8C4940 したがって、「the_geom」ラインセグメントの近くにある緯度/経度の座標が与えられた場合、人は、ポイントが道路のどちら側にあるか(左側または右側)と、セグメントに沿った距離を視覚的に確認できます。家番号を概算します。たとえば、ポイントが通りの4分の3右側にある場合、フィールドr_hnumf(右側、最初の番号)とr_hnuml(右側、最後の番号)を使用します...住所はおそらく近いですに: 3232 Breen Road North-west 私が探しているのは、これをPostGIS(これは初めてです)で計算/近似するか、または行がフェッチされた後のアプリケーションレイヤーでのベストプラクティスです。 ありがとう!

1
PostGISで建物の壁を修正する方法は?
建物の壁を修正するために、ポリゴンの中間の頂点を削除するために、PostGISでの操作が必要です。 私はhttp://trac.osgeo.org/postgis/wiki/UsersWikiExamplesSpikeRemoverを改訂していましたが、スパイクを除去するためにのみ機能します。 例:
8 postgis  sql 

3
いつST_Bufferを使用すればよいですか?
st_buffer操作を使用する意味を教えてください。PostGISリファレンスガイドには、この操作の構文と簡単な説明しかありません。 この操作の利点を理解するためにいくつかの例を挙げていただけますか?
8 postgis  buffer 

1
PostGISの隣接するラインストリングのリストからすべてのノードを取得します
私はPostGisとpgRoutingを使用しています。最短パスクエリによって返された隣接エッジのジオメトリを含むテーブルがあります。これらのエッジを連結して、これらのエッジを構成するすべてのノードのリストを取得します。SQLでこれを行うにはどうすればよいですか? ソリューションはLineMergeとGeomUnionの混合になると思いますが、それを行うスマートな方法はありますか? ありがとう。
8 postgis  sql 

1
postgisの一連のポイント間の距離を計算する
一連の連続したポイントを含むpostgres / postgisテーブルがあります。すべてのポイントが処理されるまで(最初のポイントの距離は0でなければなりません)、各ポイントと最初のポイントの間の距離を含む新しい列をテーブルに追加します。これはクエリで実行できますか、それともループを作成するためにPythonまたは同等のものを使用する必要がありますか?どうもありがとう

1
JavaScriptを使用して文字列をOpenLayers.Geometry.Polygonに変換する方法
私はJavascript、jQuery、Java、GeoServer、OpenLayers、PostGISを使用しています。 JavaクラスResultSetを使用して、この文字列を返します。 POLYGON((516000 2135000,515039.264020162 2125245.48389919,512193.976625564 2115865.82838175,507573.480615127 2107221.48834902,501355.339059327 2099644.66094067,493778.51165098 2093426.51938487,485134.171618255 2088806.02337444,475754.516100806 2085960.73597984,466000 2085000,456245.483899194 2085960.73597984,446865.828381746 2088806.02337444,438221.48834902 2093426.51938487,430644.660940673 2099644.66094067,424426.519384873 2107221.48834902,419806.023374436 2115865.82838175,416960.735979839 2125245.48389919,416000 2135000,416960.735979838 2144754.51610081,419806.023374436 2154134.17161825,424426.519384873 2162778.51165098,430644.660940673 2170355.33905933,438221.48834902 2176573.48061513,446865.828381745 2181193.97662556,456245.483899193 2184039.26402016,466000 2185000,475754.516100806 2184039.26402016,485134.171618254 2181193.97662556,493778.51165098 2176573.48061513,501355.339059327 2170355.33905933,507573.480615127 2162778.51165098,512193.976625564 2154134.17161825,515039.264020161 2144754.51610081,516000 2135000)) かなり長いですね。したがって、JQueryのajax関数を使用してこの文字列をキャッチし、それをに変換したいのですがOpenLayers.Geometry.Polygon、これはajax関数を使用する行です。 $.ajax({ url:"Catcher", data:query, type:"POST", dataType:"text", success:function(data){ var fea=new OpenLayers.Feature.Vector(data); //this doesn't work vectorLayer.addFeatures([fea]); …

1
PostGISでの最近傍計算?
PostGISと空間データベースを分析に使用する方法を学んでいます。私がやろうとしていることは、頂点ではなくエッジ計算を使用して、ファイル内の最も近いポリゴンの距離を取得する計算を実行することです。 使用して、このポール・ラムジーからの答えをArcGIS Desktopのを使用してポリゴンのエッジまでの距離を最小エッジを見つけますか?これは同様の質問です: CREATE TABLE mytable_distances AS SELECT a.id、b.id、ST_Distance(a.geom :: geography、b.geom :: geography)from FROM FROM mytable a、mytable b; それを自分の空間データベースに適用しようとしています。私はこのクエリの構造を理解していません。CREATE TABLE mytable_distances AS結果を格納するためのテーブルを作成すると思いますが、この部分の後で失われます。あるaとbカラム名?もしそうなら、なぜこれを計算するために2つの列を指定するのですか? テーブルが呼び出されTestArea、いくつかの基本的なクエリを正常に実験しました。 SELECT "TestArea".hgt FROM public."TestArea" WHERE "TestArea".area > 100 PGAdmin IIIのデータベースの構造は次のとおりで、テーブルはと呼ばれTestAreaます。私の列ヘッダーを使用すると、最近傍の計算がどのようになるかわかりません(これらのオブジェクトはすべてポリゴンです)。

2
PostGISの2つのレイヤーの違い
2つのレイヤーの違いを計算する正しい方法は何ですか?私は次のアプローチを使用しようとしました: SELECT ST_Difference(river.geom, lakes.geom) FROM river LEFT JOIN lakes ON ST_Intersects(river.geom, lakes.geom) しかし、出力では、riverのどのジオメトリとも交差しないレイヤーのジオメトリが失われlakesます。左結合が期待どおりに機能しないようです。 現在、私は別のアプローチを使用していますが、これが正しいかどうかはわかりません: SELECT ST_Difference(river.geom, lakes.geom) FROM river JOIN lakes ON ST_Intersects(river.geom, lakes.geom) UNION SELECT river.geom FROM river JOIN lakes ON NOT ST_Intersects(river.geom, lakes.geom)

2
PostGIS- GROUP BYは連続データ値ですか?
PostGIS ST_ConvexHull関数のサンプルコードでは、フィールド「disease_type」にある異なる離散値に基づいて複数のポリゴンが作成されます。 --Get estimate of infected area based on point observations SELECT d.disease_type, ST_ConvexHull(ST_Collect(d.the_geom)) As the_geom FROM disease_obs As d GROUP BY d.disease_type; 0〜5の連続値を持つ数値フィールド(「myfield」と呼ぶことにします)があったとします。GROUP BYと同様の結果をどのように作成しますが、独自のブレークポイントを定義しますか(例:0-1.25、1.25-3.5、3.5-5)?

1
マルチポリゴンをポリゴンに分割する必要がありますか?
私が実装しているシステムには、関連するジオメトリを持つテーブルT1があります。ほとんどのジオメトリは、10 <n <100のn個のポリゴンのセットです。現在、テーブルT1には、GiSTインデックスを持つMultiPolygonタイプのジオメトリ列があります。 テーブルT1が大きくなるので、Polygonタイプの列を持つ2番目のテーブルT2との1対多のリレーションを作成し、各MultiPolygonをいくつかのポリゴンに分割する方が良いと思います。 しかし、テーブルT1に検索を実装する必要があるため、2番目のアプローチの欠点は、処理する追加の結合があることです。さらに、テーブルT1の単一のレコードのジオメトリを挿入することはより複雑になります。 誰かがそのような問題の経験を持っているのか、その人が何か光を放つことができるのかと思っています。

1
osm2pgsql hstoreタグを使用してPostGISで列を作成する
これはデータベースの質問に帰着するかもしれませんが、GISに関連しているので、ここに投稿しても問題はないと感じています。それがそこにあるなら、私はそれを別の場所に持っていきたいです! 私は、私にとって有用なRDBMS形式で動作するようにOSMデータを変換するという困難な旅を始めました。私が直面している主な問題の1つは、hstoreデータ型です。非常に大きな値のディクショナリを保持できるので非常に便利ですが、私の経験では、それらを「取得」するのは困難です。具体的には、osm2pgsqlツールは、、およびフィールドを作成しますがaddr:flats、都市、郵便番号、通りなど、私にとって非常に明白なものは除外します。このデータを解析して、新しい列にデータを入力します。そのようなデータにアクセスするにはどの方法をお勧めしますか?addr:housenumberaddr:interpolation ありがとう

1
pgRoutingでshortest_path_shooting_star()を使用するにはどうすればよいですか?
PostGISを使用して、ジオメトリ情報をPostgresデータベースに格納するのは久しぶりです。頂点から頂点へのルーティングは、iGraphライブラリを使用して独自に開発しました。昨日、pgRoutingについて読み、現在のアプリケーションをpgRoutingに移植します。しかし、私は射撃開始経路ファインダーを使用する際にいくつかの問題に直面しています。 エッジと頂点の情報をテーブルに保存し、ターン制限付きのグラフルートを見つけるために、次のSQLスクリプトを呼び出します。 SELECT shortest_path_shooting_star( 'SELECT e.id, e.first as source, e.second as target, ST_Length(e.geom) as cost, st_x(st_pointn(e.geom, 1)) AS x1, st_y(st_pointn(e.geom, 1)) AS y1, st_x(st_pointn(e.geom, 2)) AS x2, st_y(st_pointn(e.geom, 2)) AS y2, (not connected)::boolean::int * 1000000 AS to_cost, c.first AS rule FROM edges e LEFT OUTER JOIN edge_connections c ON e.id …

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