PostGIS: Как создать таблицу со стандартным столбцом c 3D GEOMETRY? - PullRequest
0 голосов
/ 16 апреля 2020

При попытке импортировать информацию о геометрии из чертежа САПР в PostGIS у меня возникла проблема с приведением 3D-геометрии в 2D. Обрабатываемый набор данных содержит как 2D, так и 3D объекты. К сожалению, инструмент, который я использую для импорта, учитывает значение coord_dimensions в представлении geometry_columns, которое устанавливается на 2 при создании таблицы.

Цель: Иметь столбец геометрии, который обрабатывает все объекты как 3D и по умолчанию принимает значения Z, если не найден.


Вот мое текущее определение таблицы:

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. Как использовать тип generi c GEOMETRY и иметь таблицу, которая ожидает трехмерные координаты от времени создания?
  2. Есть ли какие-либо предложения по обновлению значение coord_dimensions в представлении geometry_columns? Какие таблицы и столбцы нужно настроить?

Примечание: Мой набор данных включает в себя множество различных типов GEOMETRY, таких как GEOMETRYCOLLECTION Z, POLYGON и др. c. поэтому я считаю, что требуется тип c.

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

Изначально у меня сложилось впечатление, что функция AddGeometryColumn(...) не применима к моему случаю использования, поскольку примеры, приведенные в документации, имеют также определенные типы геометрии c, такие как POLYGON или MULTILINESTRING. мои данные не содержат SRID. Эти данные получены из механического чертежа САПР, где нет проекции на земной шар.

Оказывается, вы действительно можете использовать AddGeometryColumn(...), как в следующем примере:

SELECT AddGeometryColumn('cad', 'cad_geom', 'geom', 0, 'GEOMETRY', 3);
0 голосов
/ 16 апреля 2020

Вы должны использовать 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».

Проверьте этот рабочий пример , он решит все ваши вопросы.

...