我有一个具有特定SRID的pointcloud。现在我想使用select查询将整个pointcloud转换为不同的SRID(此处:4326 lat,lon)。我的第一个超低效方法是:
SELECT
ST_X
(
ST_GeometryN( p , n )
) as lon ,
ST_Y
(
ST_GeometryN( p , n )
) as lat
FROM
ST_Ttransform
(
ST_SetSRID
(
ST_GeomFromText
(
'MULTIPOINT
(
10.0 20.0 30.0 , 40.0 50.0 60.0 , 70.0 80.0 90
)' -- three example 3d coordinates
) ,
SRID_FROM -- current pointcloud srid
) ,
SRID_TO -- desired pointcloud srid
)
AS p
CROSS JOIN
generate_series
(
1 ,
ST_NumGeometries( p )
) n
有没有更好的方法来实现这种转变?我需要一次变换大约10k - 100k点。
我希望那就是你的目标。我得到的结果至少相同。
我选择了Pseudo Mercator(EPSG:3857)并将其转换为WGS84(EPSG:4326)
SELECT ST_X(p) as lon , ST_Y(p) as lat
FROM
(SELECT (ST_DumpPoints(
ST_Transform(
ST_GeomFromText(
'MULTIPOINT(10.0 20.0 30.0 , 40.0 50.0 60.0 , 70.0 80.0 90)', 3857) , 4326))).geom as p) gtab
lon | lat
----------------------+----------------------
8.98315284119521e-05 | 0.000179663056819876
0.000359326113647809 | 0.000449157642049691
0.000628820698883665 | 0.000718652227279505
(3 Zeilen)
但问题仍然存在:为什么要将它作为MULTIPOINT
进口?