Wenn ein kvwmap-Layer eine Geometrie haben soll, wird datenbankseitig ein Geometry-Attribut angelegt.

Grundsätzlich:

  • Geometrie-Attribut mittels SQL anlegen, nicht mit dbeaver.
  • Die Angabe des Datentyps geometry reicht NICHT aus, es müssen IMMER EPSG und Geometrietyp angegeben werden.

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
);

  • Der Name des Geometrie-Attributs ist egal. Üblicherweise:„the_geom“.
  • Wenn es keine anderen Gründe gibt, sollte immer EPSG 25833 verwendet werden. Hinweis: Die EPSG 35833 und EPSG 2398 gibt es nicht (mehr) - falls nicht anders möglich, die offiziellen EPSG 5650 bzw. EPSG 5674 verwenden!
  • Als Geometrietyp müssen MULTIPOLYGON bzw. MULTILINE eingetragen werden. POLYGON oder LINE nur dann, wenn gesplittete Geometrien unbedingt verhindert werden sollen.
  • Bei Punktgeometrien wird immer POINT angegeben.
  • Der genannte Befehl darf kein „true“ oder „false“ nach der „2“ am Ende enthalten!

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!