查询SELECT geom FROM myLayer;我在表中得到一个2公里长的字符串,我希望我可以将它转换为弧度值以便稍后处理它们。这是我得到的一个例子:
"01060000000100000001030000000100000005000000000070AC9FB81841000053BF535551410000303295B8184100001A6053555141000060FE8EB818410000670654555141000090399AB8184100004C6854555141000070AC9FB81841000053BF53555141"
答案 0 :(得分: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;
希望这有帮助。
答案 1 :(得分: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;;