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 . (
-- ...,
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_
ON .
USING gist
(the_geom);
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 . 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!**