--ax_punktortag
CREATE TABLE alkis.ax_punktortag
(
  ogc_fid serial NOT NULL,
  gml_id character varying NOT NULL, -- Identifikator, global eindeutig
  identifier character varying,
  beginnt character(20),
  endet character(20),
  advstandardmodell character varying[],
  sonstigesmodell character varying[],
  anlass integer,
  art character varying[],
  name character varying[],
  kartendarstellung character varying,
  ax_datenerhebung_punktort integer,
  genauigkeitsstufe integer,
  vertrauenswuerdigkeit integer,
  koordinatenstatus integer,
  hinweise character varying,
  istteilvon character varying,
  wkb_geometry geometry(Point,25832),  -- hier sollte kein Z wert hinterlegt werden
  CONSTRAINT ax_punktortag_pk PRIMARY KEY (ogc_fid)
)
WITH (
  OIDS=FALSE
);
COMMENT ON TABLE alkis.ax_punktortag
  IS 'Angaben zum Punktort: "Punktort AG"';
COMMENT ON COLUMN alkis.ax_punktortag.gml_id IS 'Identifikator, global eindeutig';


-- Index: alkis.ax_punktortag_geom_idx

-- DROP INDEX alkis.ax_punktortag_geom_idx;

CREATE INDEX ax_punktortag_geom_idx
  ON alkis.ax_punktortag
  USING gist
  (wkb_geometry);

-- Index: alkis.ax_punktortag_gml

-- DROP INDEX alkis.ax_punktortag_gml;

CREATE UNIQUE INDEX ax_punktortag_gml
  ON alkis.ax_punktortag
  USING btree
  (gml_id COLLATE pg_catalog."default", beginnt COLLATE pg_catalog."default");

-- Index: alkis.ax_punktortag_itv_idx

-- DROP INDEX alkis.ax_punktortag_itv_idx;

CREATE INDEX ax_punktortag_itv_idx
  ON alkis.ax_punktortag
  USING btree
  (istteilvon COLLATE pg_catalog."default");

  
  
  
--ax_punktortau
CREATE TABLE alkis.ax_punktortau
(
  ogc_fid serial NOT NULL,
  gml_id character varying NOT NULL, -- Identifikator, global eindeutig
  identifier character varying,
  beginnt character(20),
  endet character(20),
  advstandardmodell character varying[],
  sonstigesmodell character varying[],
  anlass integer,
  kartendarstellung character varying,
  ax_datenerhebung_punktort integer,
  name character varying[],
  individualname character varying,
  vertrauenswuerdigkeit integer,
  genauigkeitsstufe integer,
  koordinatenstatus integer,
  hinweise character varying,
  istteilvon character varying,
  wkb_geometry geometry(Point,25832),   -- hier sollte kein Z wert hinterlegt werden
  CONSTRAINT ax_punktortau_pk PRIMARY KEY (ogc_fid)
)
WITH (
  OIDS=FALSE
);

COMMENT ON TABLE alkis.ax_punktortau
  IS 'Angaben zum Punktort: "Punktort AU"';
COMMENT ON COLUMN alkis.ax_punktortau.gml_id IS 'Identifikator, global eindeutig';


-- Index: alkis.ax_punktortau_geom_idx

-- DROP INDEX alkis.ax_punktortau_geom_idx;

CREATE INDEX ax_punktortau_geom_idx
  ON alkis.ax_punktortau
  USING gist
  (wkb_geometry);

-- Index: alkis.ax_punktortau_gml

-- DROP INDEX alkis.ax_punktortau_gml;

CREATE UNIQUE INDEX ax_punktortau_gml
  ON alkis.ax_punktortau
  USING btree
  (gml_id COLLATE pg_catalog."default", beginnt COLLATE pg_catalog."default");

-- Index: alkis.ax_punktortau_itv_idx

-- DROP INDEX alkis.ax_punktortau_itv_idx;

CREATE INDEX ax_punktortau_itv_idx
  ON alkis.ax_punktortau
  USING btree
  (istteilvon COLLATE pg_catalog."default");


  
--ax_punktortta


CREATE TABLE alkis.ax_punktortta
(
  ogc_fid serial NOT NULL,
  gml_id character varying NOT NULL, -- Identifikator, global eindeutig
  identifier character varying,
  beginnt character(20),
  endet character(20),
  advstandardmodell character varying[],
  sonstigesmodell character varying[],
  anlass integer,
  kartendarstellung character varying,
  description integer,
  ax_datenerhebung_punktort integer,
  art character varying[],
  name character varying[],
  genauigkeitsstufe integer,
  vertrauenswuerdigkeit integer,
  koordinatenstatus integer,
  hinweise character varying,
  istteilvon character varying,
  wkb_geometry geometry(Point,25832),   -- hier sollte kein Z wert hinterlegt werden
  CONSTRAINT ax_punktortta_pk PRIMARY KEY (ogc_fid)
)
WITH (
  OIDS=FALSE
);

COMMENT ON TABLE alkis.ax_punktortta
  IS 'Angaben zum Punktort: "Punktort TA"';
COMMENT ON COLUMN alkis.ax_punktortta.gml_id IS 'Identifikator, global eindeutig';


-- Index: alkis.ax_punktortta_endet_idx

-- DROP INDEX alkis.ax_punktortta_endet_idx;

CREATE INDEX ax_punktortta_endet_idx
  ON alkis.ax_punktortta
  USING btree
  (endet COLLATE pg_catalog."default");

-- Index: alkis.ax_punktortta_geom_idx

-- DROP INDEX alkis.ax_punktortta_geom_idx;

CREATE INDEX ax_punktortta_geom_idx
  ON alkis.ax_punktortta
  USING gist
  (wkb_geometry);

-- Index: alkis.ax_punktortta_gml

-- DROP INDEX alkis.ax_punktortta_gml;

CREATE UNIQUE INDEX ax_punktortta_gml
  ON alkis.ax_punktortta
  USING btree
  (gml_id COLLATE pg_catalog."default", beginnt COLLATE pg_catalog."default");

-- Index: alkis.ax_punktortta_itv_idx

-- DROP INDEX alkis.ax_punktortta_itv_idx;

CREATE INDEX ax_punktortta_itv_idx
  ON alkis.ax_punktortta
  USING btree
  (istteilvon COLLATE pg_catalog."default");


 --ax_besonderergebaeudepunkt 
CREATE TABLE alkis.ax_besonderergebaeudepunkt
(
  ogc_fid serial NOT NULL,
  gml_id character varying NOT NULL, -- Identifikator, global eindeutig
  identifier character varying,
  beginnt character(20),
  endet character(20),
  advstandardmodell character varying[],
  sonstigesmodell character varying[],
  anlass integer,
  land integer,
  stelle integer,
  punktkennung character varying,
  art character varying,
  name character varying[],
  sonstigeeigenschaft character varying[],
  dummy geometry(Geometry,25832),
  CONSTRAINT ax_besonderergebaeudepunkt_pk PRIMARY KEY (ogc_fid)
)
WITH (
  OIDS=FALSE
);

COMMENT ON TABLE alkis.ax_besonderergebaeudepunkt
  IS 'Angaben zum Gebäude: (NREO) "Besonderer Gebäudepunkt"';
COMMENT ON COLUMN alkis.ax_besonderergebaeudepunkt.gml_id IS 'Identifikator, global eindeutig';


-- Index: alkis.ax_besonderergebaeudepunkt_gml

-- DROP INDEX alkis.ax_besonderergebaeudepunkt_gml;

CREATE UNIQUE INDEX ax_besonderergebaeudepunkt_gml
  ON alkis.ax_besonderergebaeudepunkt
  USING btree
  (gml_id COLLATE pg_catalog."default", beginnt COLLATE pg_catalog."default");

  
  
--ax_aufnahmepunkt
CREATE TABLE alkis.ax_aufnahmepunkt
(
  ogc_fid serial NOT NULL,
  gml_id character varying NOT NULL, -- Identifikator, global eindeutig
  identifier character varying,
  beginnt character(20),
  endet character(20),
  advstandardmodell character varying[],
  sonstigesmodell character varying[],
  anlass integer,
  punktkennung character varying,
  land integer,
  stelle integer,
  sonstigeeigenschaft character varying[],
  vermarkung_marke integer,
  relativehoehe double precision,
  hat character varying[], -- -> Beziehung zu ax_sicherungspunkt (0..*): 'Aufnahmepunkt' hat 'Sicherungspunkt'.
  dummy geometry(Geometry,25832),
  CONSTRAINT ax_aufnahmepunkt_pk PRIMARY KEY (ogc_fid)
)
WITH (
  OIDS=FALSE
);

COMMENT ON TABLE alkis.ax_aufnahmepunkt
  IS 'Angaben zum Netzpunkt: "Aufnahmepunkt"';
COMMENT ON COLUMN alkis.ax_aufnahmepunkt.gml_id IS 'Identifikator, global eindeutig';
COMMENT ON COLUMN alkis.ax_aufnahmepunkt.hat IS '-> Beziehung zu ax_sicherungspunkt (0..*): ''Aufnahmepunkt'' hat ''Sicherungspunkt''.';


-- Index: alkis.ax_aufnahmepunkt_gml

-- DROP INDEX alkis.ax_aufnahmepunkt_gml;

CREATE UNIQUE INDEX ax_aufnahmepunkt_gml
  ON alkis.ax_aufnahmepunkt
  USING btree
  (gml_id COLLATE pg_catalog."default", beginnt COLLATE pg_catalog."default");

-- Index: alkis.ax_aufnahmepunkt_hat

-- DROP INDEX alkis.ax_aufnahmepunkt_hat;

CREATE INDEX ax_aufnahmepunkt_hat
  ON alkis.ax_aufnahmepunkt
  USING gin
  (hat COLLATE pg_catalog."default");


  
--ax_sicherungspunkt
CREATE TABLE alkis.ax_sicherungspunkt
(
  ogc_fid serial NOT NULL,
  gml_id character varying NOT NULL,
  identifier character varying,
  beginnt character(20),
  endet character(20),
  advstandardmodell character varying[],
  sonstigesmodell character varying[],
  anlass integer,
  name character varying,
  punktkennung character varying,
  land integer,
  stelle integer,
  sonstigeeigenschaft character varying[],
  vermarkung_marke integer,
  relativehoehe double precision,
  beziehtsichauf character varying, -- <- Beziehung zu ax_sonstigervermessungspunkt (0..1): "Sicherungspunkt" bezieht sich auf "Sonstiger Vermessungspunkt"...
  gehoertzu character varying, -- <- Beziehung zu ax_aufnahmepunkt (0..1): 'Sicherungspunkt' gehört zu 'Aufnahmepunkt'....
  dummy geometry(Geometry,25832),
  CONSTRAINT ax_sicherungspunkt_pk PRIMARY KEY (ogc_fid)
)
WITH (
  OIDS=FALSE
);

COMMENT ON TABLE alkis.ax_sicherungspunkt
  IS 'Angaben zum Netzpunkt: "Sicherungspunkt"';
COMMENT ON COLUMN alkis.ax_sicherungspunkt.beziehtsichauf IS '<- Beziehung zu ax_sonstigervermessungspunkt (0..1): "Sicherungspunkt" bezieht sich auf "Sonstiger Vermessungspunkt"
Es handelt sich um die inverse Relationsrichtung.';
COMMENT ON COLUMN alkis.ax_sicherungspunkt.gehoertzu IS '<- Beziehung zu ax_aufnahmepunkt (0..1): ''Sicherungspunkt'' gehört zu ''Aufnahmepunkt''.
Es handelt sich um die inverse Relationsrichtung.';


-- Index: alkis.ax_sicherungspunkt_gml

-- DROP INDEX alkis.ax_sicherungspunkt_gml;

CREATE INDEX ax_sicherungspunkt_gml
  ON alkis.ax_sicherungspunkt
  USING btree
  (gml_id COLLATE pg_catalog."default");


  
--ax_sonstigervermessungspunkt
CREATE TABLE alkis.ax_sonstigervermessungspunkt
(
  ogc_fid serial NOT NULL,
  gml_id character varying NOT NULL, -- Identifikator, global eindeutig
  identifier character varying,
  beginnt character(20),
  endet character(20),
  advstandardmodell character varying[],
  sonstigesmodell character varying[],
  anlass integer,
  vermarkung_marke integer,
  punktkennung character varying,
  art character varying,
  land integer,
  stelle integer,
  sonstigeeigenschaft character varying[],
  relativehoehe double precision,
  hat character varying[], -- -> Beziehung zu ax_sicherungspunkt (0..*): "Sonstiger Vermessungspunkt" hat "Sicherungspunkt"
  dummy geometry(Geometry,25832),
  CONSTRAINT ax_sonstigervermessungspunkt_pk PRIMARY KEY (ogc_fid)
)
WITH (
  OIDS=FALSE
);

COMMENT ON TABLE alkis.ax_sonstigervermessungspunkt
  IS 'Angaben zum Netzpunkt: "sonstiger Vermessungspunkt"';
COMMENT ON COLUMN alkis.ax_sonstigervermessungspunkt.gml_id IS 'Identifikator, global eindeutig';
COMMENT ON COLUMN alkis.ax_sonstigervermessungspunkt.hat IS '-> Beziehung zu ax_sicherungspunkt (0..*): "Sonstiger Vermessungspunkt" hat "Sicherungspunkt"';


-- Index: alkis.ax_sonstigervermessungspunkt_gml

-- DROP INDEX alkis.ax_sonstigervermessungspunkt_gml;

CREATE UNIQUE INDEX ax_sonstigervermessungspunkt_gml
  ON alkis.ax_sonstigervermessungspunkt
  USING btree
  (gml_id COLLATE pg_catalog."default", beginnt COLLATE pg_catalog."default");

-- Index: alkis.ax_sonstigervermessungspunkt_hat

-- DROP INDEX alkis.ax_sonstigervermessungspunkt_hat;

CREATE INDEX ax_sonstigervermessungspunkt_hat
  ON alkis.ax_sonstigervermessungspunkt
  USING gin
  (hat COLLATE pg_catalog."default");

  
--ax_besonderertopographischerpunkt
CREATE TABLE alkis.ax_besonderertopographischerpunkt
(
  ogc_fid serial NOT NULL,
  gml_id character varying NOT NULL, -- Identifikator, global eindeutig
  identifier character varying,
  beginnt character(20),
  endet character(20),
  advstandardmodell character varying[],
  sonstigesmodell character varying[],
  anlass integer,
  land integer,
  stelle integer,
  punktkennung character varying,
  sonstigeeigenschaft character varying[],
  dummy geometry(Point,25832),
  CONSTRAINT ax_besonderertopographischerpunkt_pk PRIMARY KEY (ogc_fid)
)
WITH (
  OIDS=FALSE
);

COMMENT ON TABLE alkis.ax_besonderertopographischerpunkt
  IS '__: (NREO) "Besonderer Topografischer Punkt" ist ..';
COMMENT ON COLUMN alkis.ax_besonderertopographischerpunkt.gml_id IS 'Identifikator, global eindeutig';


-- Index: alkis.ax_besonderertopographischerpunkt_gml

-- DROP INDEX alkis.ax_besonderertopographischerpunkt_gml;

CREATE UNIQUE INDEX ax_besonderertopographischerpunkt_gml
  ON alkis.ax_besonderertopographischerpunkt
  USING btree
  (gml_id COLLATE pg_catalog."default", beginnt COLLATE pg_catalog."default");



--ax_grenzpunkt
CREATE TABLE alkis.ax_grenzpunkt
(
  ogc_fid serial NOT NULL,
  gml_id character varying NOT NULL, -- Identifikator, global eindeutig
  identifier character varying,
  beginnt character(20),
  endet character(20),
  advstandardmodell character varying[],
  sonstigesmodell character varying[],
  anlass integer,
  punktkennung character varying,
  land integer,
  stelle integer,
  abmarkung_marke integer,
  festgestelltergrenzpunkt character varying,
  besonderepunktnummer character varying,
  bemerkungzurabmarkung integer,
  sonstigeeigenschaft character varying[],
  art character varying,
  name character varying[],
  zeitpunktderentstehung character varying,
  relativehoehe double precision,
  zeigtauf character varying, -- -> Beziehung zu ax_grenzpunkt (0..1): Ein von der Geometrie der Flurstücksfläche abweichender 'Grenzpunkt' (Sonderfall des indirekt abgemarkten Grenzpunktes) zeigt auf einen 'Grenzpunkt', der in der Flurstücksgrenze liegt.
  dummy geometry(Geometry,25832),
  CONSTRAINT ax_grenzpunkt_pk PRIMARY KEY (ogc_fid)
)
WITH (
  OIDS=FALSE
);

COMMENT ON TABLE alkis.ax_grenzpunkt
  IS '__: "Grenzpunkt" ist ..';
COMMENT ON COLUMN alkis.ax_grenzpunkt.gml_id IS 'Identifikator, global eindeutig';
COMMENT ON COLUMN alkis.ax_grenzpunkt.zeigtauf IS '-> Beziehung zu ax_grenzpunkt (0..1): Ein von der Geometrie der Flurstücksfläche abweichender ''Grenzpunkt'' (Sonderfall des indirekt abgemarkten Grenzpunktes) zeigt auf einen ''Grenzpunkt'', der in der Flurstücksgrenze liegt.';


-- Index: alkis.ax_grenzpunkt_abmm

-- DROP INDEX alkis.ax_grenzpunkt_abmm;

CREATE INDEX ax_grenzpunkt_abmm
  ON alkis.ax_grenzpunkt
  USING btree
  (abmarkung_marke);

-- Index: alkis.ax_grenzpunkt_gml

-- DROP INDEX alkis.ax_grenzpunkt_gml;

CREATE UNIQUE INDEX ax_grenzpunkt_gml
  ON alkis.ax_grenzpunkt
  USING btree
  (gml_id COLLATE pg_catalog."default", beginnt COLLATE pg_catalog."default");

-- Index: alkis.ax_grenzpunkt_za

-- DROP INDEX alkis.ax_grenzpunkt_za;

CREATE INDEX ax_grenzpunkt_za
  ON alkis.ax_grenzpunkt
  USING btree
  (zeigtauf COLLATE pg_catalog."default");

