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;

为了得到弧度,我可能会做的是将它投影到十进制度数基准(即 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 回答