Wenn ein kvwmap-Layer eine Geometrie haben soll, wird datenbankseitig ein Geometry-Attribut angelegt.
Grundsätzlich:
Ein Geometrie-Attribut wird nach Anlegen der Tabelle mit separatem SQL angelegt oder - wenn die Tabelle per CREATE TABLE angelegt wird - im SQL selbst:
SELECT AddGeometryColumn('schema', 'tabelle','the_geom',25833,'MULTIPOLYGON', 2); -- Geometrietyp immer in '...'; Groß-/Kleinschreibung wird ignoriert– bzw.
CREATE TABLE <schema>.<tabelle> ( -- ..., the_geom geometry(multipolygon, 25833) NOT NULL -- Geometrietyp kann auch in '...' geschrieben werden; Groß-/Kleinschreibung wird ignoriert );
Außerdem sollte immer ein Index auf das Geometrie-Attribut gelegt werden:
CREATE INDEX gist_<name> ON <schema>.<tabelle> USING gist (the_geom);<name> sollte der Name der Tabelle sein, möglicherweise etwas abgekürzt.
Außerdem sollte das Geometrie-Attribut immer auf NOT NULL gesetzt werden. Einzige Ausnahme: Es ist abzusehen, dass es auch Datensätze ohne Geometrie geben wird. Dieser Fall muss auf jeden Fall mit dem Datenherrn besprochen werden!
ALTER TABLE <schema>.<tabelle> ALTER COLUMN the_geom SET NOT NULL;Einfacher ist es hier aber, das NOT NULL über dbeaver in den Spalteneigenschaften zu setzen.
Geometrie-Attribute nicht über dbeaver als „geometry“ anlegen!
Keine Constraints außer NOT NULL erzeugen!
NOT NULL nicht vergessen!