2012-12-03 36 views
0

查询SELECT geom FROM myLayer;我在表格中得到一个2公里长的字符串,我希望我可以将它转换为弧度值以便稍后处理。这是我得到的一个例子:如何将几何数据字符串转换为度数?

"01060000000100000001030000000100000005000000000070AC9FB81841000053BF535551410000303295B8184100001A6053555141000060FE8EB818410000670654555141000090399AB8184100004C6854555141000070AC9FB81841000053BF53555141" 

回答

2

你所看到的是表示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;

希望这有助于。

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;; 
相关问题