PostGISを使用して既存のテーブルの経度/緯度座標からPOINTを作成しますか?


10

既存のテーブルの経度と緯度の列を使用してポイントを作成したいと思います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)

助言がありますか?

より簡単な方法があれば、私はこれをより効率的に行うことにオープンです。


クエリに問題はありません。おそらく、部分的に問題を診断しようとすることができます-QGISの部分を排除して、postgisにコマンドラインを使用するだけでしょうか?
BradHards 2013年

多分私は理解していませんが、経度緯度座標(-97、21)を度単位で、UTMベースのCRSに入力し、メーターを使用しているようです。これをSRID 26918として宣言する場合、long / lat値はそのCRSに含まれている必要があります。Long / Latの値が度単位の場合、ジオメトリをST_SetSRID(MakePoint(...)、4326)として作成し、レイヤーを26913に変換する必要があります
Micha

@Michaさん、コメントを回答として追加してください。適切なSRIDがOPの問題を解決すると期待しています。ST_Transformを追加する方法とその例を含めると役立つ場合もあります。
katahdin 2013年

回答:


16

多分私は理解していませんが、経度緯度座標(-97、21)を度単位で、UTMベースのCRSに入力し、メーターを使用しているようです。これをSRID 26918として宣言する場合、long / lat値はそのCRSに含まれている必要があります。Long / Latの値が度単位の場合は、ST_SetSRID(MakePoint(...)、4326)としてジオメトリを作成してから、レイヤーを26913に変換する必要があります。 26913では、経度/緯度の列は度単位で、CRS 4326の場合、

UPDATE sysinst.bio SET geom = ST_Transform(ST_SetSRID(ST_MakePoint(longitude, latitude), 4326),26913);

助けてくれてありがとう。私は...の前にそのことについて考えているはずです
ザック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.