4

PostGIS を初めて使用するので、ここで助けを求める必要があります。Google マップのポリライン (旅程を表す) があり、その周りに特定の距離 (メートルまたはキロメートル) でポリゴン (バッファ) を作成する必要があります。

入力には、緯度/経度ポイントのリストと必要なバッファー距離があります。

返された結果が緯度/経度座標のポリゴンになり、マップにプロットできるように、誰かがクエリを作成するのを手伝ってくれますか?

4

4 に答える 4

6
  1. ライン ストリングの最初の頂点を最後に追加して、ポリゴンを作成できるようにします。
  2. ラインストリングをポリゴンに変換
  3. ポリゴンの周りにバッファを作成する
SELECT
    ST_Buffer(ST_Polygon(ST_AddPoint(the_geom, ST_StartPoint(the_geom))),100)
FROM
    mytable
  1. バッファがメートル/キロメートルで、データが緯度/経度である場合は、最初にポリゴンを適切な投影法に変換してから(どこにいるかわかりません)、緯度/経度に戻す必要があります。
SELECT
    ST_Transform(ST_Buffer(ST_Transform(ST_Polygon(ST_AddPoint(the_geom,ST_StartPoint(the_geom)),4326),XXXX),100),4326)
FROM
    mytable

私はコードを試していませんが、うまくいくはずです。

于 2012-07-29T19:04:36.040 に答える
2

経度/緯度ジオメトリのメートル単位のバッファーの場合ST_Buffergeographyデータ型で使用できます。このアプローチにより、適切な投影を見つけることを回避できます。PostGIS は実際にこれに UTM ゾーンを使用します。

たとえば、geometry(ST_Buffer(georgaphy(geom), 100))geometry に対して 100 メートルのバッファー ポリゴンを返しますgeom

したがって、列 seq、lon、lat を持つテーブルの場合、次のようになります。

SELECT geometry(ST_Buffer(georgaphy(ST_MakeLine(ST_MakePoint(lon, lat))), dist))
FROM sometable
ORDER BY seq
于 2012-08-31T22:32:58.937 に答える
2

これは PostGIS を使用していませんが、Google Maps API v3には、求めているようなことを行うRouteBoxer ユーティリティがあります。

別のオプション: JSTS ライブラリ

于 2012-07-27T18:00:20.107 に答える
-2

テストの結果、postgis によって生成されたポリゴン バッファが信頼できないことがわかりました。つまり、ポリラインの周りに 5 キロメートルのバッファーが必要な場合、postgis は最大で 5 キロメートルのポリゴンを返しますがいくつかのポイントではこれよりも小さくなります。

postgisの放棄

于 2012-09-01T07:26:41.263 に答える