0

クエリ SELECT geom FROM myLayer; テーブルに 2 キロメートルの長さの文字列が表示されます。これをラジアン値に変換して、後で処理できるようにしたいと考えています。これは私が得るものの例です:

"01060000000100000001030000000100000005000000000070AC9FB81841000053BF535551410000303295B8184100001A6053555141000060FE8EB818410000670654555141000090399AB8184100004C6854555141000070AC9FB81841000053BF53555141"
4

2 に答える 2

3

表示されているのは、PostGIS がジオメトリを内部的に保存する方法を表したものです。ST_AsText や ST_ASEWKT などを使用する必要があります ( http://www.postgis.org/docs/ST_AsEWKT.htmlを参照) 。

たとえば、 SELECT ST_ASEWkt(geom) FROM myLayer;

ラジアンで取得するには、おそらくそれを 10 進度データム (つまり WGS84) に投影し、x 座標と y 座標を別々に剥がして変換します (ここではポイント ジオメトリであると仮定します)。たとえば、次のようになります。 SELECT ST_X(ST_Transform(geom, 4326))*3.14/180, ST_Y(ST_Transform(geom,4326))*3.15/180 FROM myLayer;

お役に立てれば。

于 2012-12-04T03:01:32.580 に答える
2

投影座標があり、地理的な (投影されていない) 座標を提供したいと考えています。ラジアンではなく度数が必要なので、共通のターゲット SRID は 4326 です。ST_Transform を使用してデータを再投影します。

SELECT ST_Transform(geom, 4326) AS geom_in_degrees
FROM your_table;

ソースジオメトリ列にはSRIDを設定する必要があることに注意してください。そうでない場合は、問題があります。


さらに理論的な注意として、度の座標をラジアンに変換するには (これは見たことがありません!)、(0,0) の原点から π/180 の係数で座標をスケーリングできます。これは、アフィン変換関数を使用するか、ヘルパーST_Scaleを使用して実行できます。

SELECT ST_Scale(
         ST_SetSRID(ST_Transform(geom, 4326), 0),
         pi()/180.0, pi()/180.0) AS geom_in_radians
FROM your_table;;
于 2012-12-04T03:02:55.153 に答える