2016-11-29 7 views
0

私は何かが100メートルのバッファの最大と最小の緯度の長さが欲しいとは思わない。PostGIS ST_メートルとバウンディングボックスでポイントを

SELECT ST_Asgeojson(
    ST_Expand(
    ST_GeomFromEWKT('SRID=4326;POINT(-88.33 36.33)') 
    ,100 
) 
); 

緯度と経度が100度であると考えます。 このgis.se questionは、私がしたいことを示しています。答え5は、私がしたいことを図で表しています。 私は

coordinates: [ 
       [-80.425, 46.437], 
       [-71.516, 46.437], 
       [-71.516, 37.936], 
       [-80.425, 37.936]` 

マップに追加するために取得しようとしています。

+0

これはgis.stackexchange.comの方がはるかに良い質問です。 –

+0

なぜ100度の緯度と経度と100メートルを混同していますか? [彼らは完全に別々です。](https://www2.usgs.gov/faq/categories/9794/3022)箱や円がありますか? –

答えて

1

はい、もちろん...としてST_Expand

ユニットのドキュメントにはSRIDによって を付し、使用中の空間参照系の単位です。

EPSG:4326は100度で発散します。

SELECT ST_Asgeojson(ST_Buffer((ST_GeomFromEWKT('SRID=4326;POINT(-88.33 36.33)'))::geography,100)); 

そして、あなたが必要な場合は、あなたがこれを使用する必要がある場合は、地理::ジオメトリ

SELECT ST_Asgeojson(ST_Envelope(ST_Buffer((ST_GeomFromEWKT('SRID=4326;POINT(-88.33 36.33)'))::geography,100)::geometry)); 

でST_Envelopeを追加する必要が矩形:

は、私はあなたが地理データ型とST_Buffer機能を使用することをお勧めcast :: geographyにLatLon CRSが必要なので、テーブルから選択するとジオメトリを再投影する必要があります。

SELECT ST_Asgeojson(ST_Envelope(ST_Buffer((ST_Transform(x.the_geom,4326)::geography,100)::geometry)); 
+0

これは最初の問題を解決するのに役立ちます。今度は円が四角形またはbboxである必要があります。 10進数はカバレッジ範囲を示します。したがって、SELECT ST_Extent(ST_Buffer((ST_GeomFromEWKT( 'SRID = 4326; POINT(-88.33 36.33)')):: geography、100):: geometry); ? – Chris

+0

いいえ、エクステントではありません - それは(名前が示すように)ジオメトリを拡張(拡大)します。 ST_Envelopeのようにbboxだけ必要です。私は自分の答えを更新しました – Jendrusk

+0

SELECT ST_Asgeojson(ST_Envelope(ST_Buffer((ST_GeomFromEWKT( 'SRID = 4326; POINT(-88.33 36.33)')):: geography、100):: geometry)); また、x.the_geomから移動して同じことをしたいので、SELECT ST_Asgeojson(ST_Envelope(ST_Buffer(x.the_geom):: geography、100):: geometry)でエラーが発生しました。 – Chris

関連する問題