【问题标题】:Create polyhedralsurfaceZ from vertex table with make_solid() PostGIS使用 make_solid() PostGIS 从顶点表创建 polyhedralsurfaceZ
【发布时间】:2020-05-19 09:37:26
【问题描述】:

我正在尝试使用 PostGIS 中的 ST_MakeSolid() sfcgal 函数获取 3D 多边形。

我的桌子是这样的:

 id_geom| xmin | xmax    |  ymin   |   ymax  | zmin  | zmax
--------+------+---------+---------+---------+-------+-------
   1 | 12.3235 | 12.3239 | 45.4339 | 45.4341 |    -7 |   -14
   2 | 12.3234 | 12.3238 | 45.4338 | 45.4339 |    -2 |    -7

我想要另一列包含实体的几何形状,但我不知道如何使用存储在表格中的顶点坐标而不是原始坐标。

我阅读了"ST_MakeSolid() creating an invalid solid from closed polyhedralsurfaceZ" 的问题,并且有效:

SELECT ST_MakeSolid('POLYHEDRALSURFACE Z (
((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)),
((0 0 1,1 0 1,1 1 1,0 1 1,0 0 1)),
((0 0 0,0 0 1,0 1 1,0 1 0,0 0 0)),
((0 1 0,0 1 1,1 1 1,1 1 0,0 1 0)),
((1 1 0,1 1 1,1 0 1,1 0 0,1 1 0)),
((1 0 0,1 0 1,0 0 1,0 0 0,1 0 0)))')

但我想使用“xmin”、“xmax”等而不是 12.3235、12.3239 等。

我该怎么做?

【问题讨论】:

  • 您的意思是您不确定如何将列与几何字符串连接起来? SELECT ST_MakeSolid('POLYHEDRALSURFACE Z (' || a_column || ' ' || b_column || ' ...') FROM mytable

标签: postgresql 3d geometry postgis qgis


【解决方案1】:

感谢 Jim Jones,我解决了这个问题:

SELECT
ST_MakeSolid('POLYHEDRALSURFACE Z ('
'('||'('||xmin_ ||' '|| ymin_ ||' '||zmin_ ||','|| xmin_ ||' '|| ymax_ ||' '||zmin_ ||','|| xmax_ ||' '|| ymax_ ||' '||zmin_ ||','|| xmax_ ||' '|| ymin_ ||' '||zmin_ ||','|| xmin_ ||' '|| ymin_ ||' '||zmin_||')'||')'||','||
'('||'('||xmin_ ||' '|| ymin_ ||' '||zmax_ ||','|| xmax_ ||' '|| ymin_ ||' '||zmax_ ||','|| xmax_ ||' '|| ymax_ ||' '||zmax_ ||','|| xmin_ ||' '|| ymax_ ||' '||zmax_ ||','|| xmin_ ||' '|| ymin_ ||' '||zmax_||')'||')'||','||
'('||'('||xmin_ ||' '|| ymin_ ||' '||zmin_ ||','|| xmin_ ||' '|| ymin_ ||' '||zmax_ ||','|| xmin_ ||' '|| ymax_ ||' '||zmax_ ||','|| xmin_ ||' '|| ymax_ ||' '||zmin_ ||','|| xmin_ ||' '|| ymin_ ||' '||zmin_||')'||')'||','||    
'('||'('||xmin_ ||' '|| ymax_ ||' '||zmin_ ||','|| xmin_ ||' '|| ymax_ ||' '||zmax_ ||','|| xmax_ ||' '|| ymax_ ||' '||zmax_ ||','|| xmax_ ||' '|| ymax_ ||' '||zmin_ ||','|| xmin_ ||' '|| ymax_ ||' '||zmin_||')'||')'||','||        
'('||'('||xmax_ ||' '|| ymax_ ||' '||zmin_ ||','|| xmax_ ||' '|| ymax_ ||' '||zmax_ ||','|| xmax_ ||' '|| ymin_ ||' '||zmax_ ||','|| xmax_ ||' '|| ymin_ ||' '||zmin_ ||','|| xmax_ ||' '|| ymax_ ||' '||zmin_||')'||')'||','|| 
'('||'('||xmax_ ||' '|| ymin_ ||' '||zmin_ ||','|| xmax_ ||' '|| ymin_ ||' '||zmax_ ||','|| xmin_ ||' '|| ymin_ ||' '||zmax_ ||','|| xmin_ ||' '|| ymin_ ||' '||zmin_ ||','|| xmax_ ||' '|| ymin_ ||' '||zmin_||')'||')'||')'                        
)
FROM mytable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 2015-11-02
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    相关资源
    最近更新 更多