0

在尝试将 CAD 绘图中的几何信息导入 PostGIS 时,我遇到了将 3D 几何强制转换为 2D 的问题。正在处理的数据集包含 2D 和 3D 对象。不幸的是,我用于导入的工具尊重视图中的值,该值coord_dimensionsgeometry_columns创建表时设置为 2。

目标:拥有一个几何列,将所有对象视为 3D,并在未找到时将 Z 值默认为 0。


这是我当前的表定义:

CREATE TABLE IF NOT EXISTS cad_geom
( id                      BIGSERIAL    PRIMARY KEY
, created                 TIMESTAMPTZ  DEFAULT CURRENT_TIMESTAMP
, updated                 TIMESTAMPTZ  DEFAULT CURRENT_TIMESTAMP
, _refid                  BIGINT       DEFAULT NULL
, autocad_block_name      TEXT 
, autocad_block_number    INTEGER
, autocad_entity_handle   TEXT
, autocad_entity          TEXT
, autocad_source_filename TEXT
, geom                    GEOMETRY     NOT NULL
);
  1. 如何使用泛型GEOMETRY类型并拥有一个从创建时间开始就需要 3D 坐标的表?
  2. 对更新视图coord_dimensions中的值有什么建议吗?geometry_columns哪些表和列需要调整?

注意:我的数据集包括许多不同的GEOMETRY类型,例如GEOMETRYCOLLECTION Z、、POLYGON等,所以我认为泛型类型是必需的。

4

2 回答 2

0

最初,我的印象是该AddGeometryColumn(...)函数不适用于我的用例,因为文档中提供的示例具有特定的几何类型,例如,POLYGON或者MULTILINESTRING我的数据不包含SRID. 提供的这些数据来自没有投影到地球上的机械 CAD 图纸。

原来你确实可以AddGeometryColumn(...)像下面的例子一样使用:

SELECT AddGeometryColumn('cad', 'cad_geom', 'geom', 0, 'GEOMETRY', 3);
于 2020-04-18T20:59:33.217 回答
0

您应该使用 AddGeometryColumn。

 AddGeometryColumn(varchar schema_name, varchar table_name, varchar column_name, integer srid, varchar type, integer dimension, boolean use_typmod=true);

将几何列添加到现有属性表。

srid必须是对 SPATIAL_REF_SYS 表中条目的整数值引用。类型必须是与几何类型对应的字符串,例如 'POLYGON' 或 'MULTILINESTRING' 。

检查这个工作示例,它解决了你所有的问题。

于 2020-04-16T19:23:40.267 回答