GIS Client für Tombejo:

Neben einer handelsüblichen Tombejo-Installation braucht der funktionierende GIS Client folgendes:

Benötigt wird:

Einen Geoserver (z.b. 2.6.2), am besten Standalone

Tombejo und Geoserver (http://geoserver.org/) für unix und windows.

Eine Datenbasis, bevorzugt POSTGRES, bevorzugt 9.4.0.1. mit POSTGIS plugin. Es gibt eine Zip Datei die die Installationsfiles für Windows enthält, und zwar unter ocw2.de:/home/frauch/to_install.zip

Selbstverständlich kann man beides auch bei uns hosten lassen:

Geoserver: http://52.50.27.115/geoserver

PostGIS: http://52.50.27.115/phpPgAdmin-5.1/

Installation:

Beim einrichten des Geoservers muss darauf geachtet werden, dass das JDK Version 7 oder größer ist

Beim einrichten von POSTGRES wird im Installationsprozess das POSTGIS Plugin optional hinzugefügt. Hier muss darauf geachtet werden, dass die Bitrate mit der von Postgres übereinstimmt (normalerweise sollten es 64 bit sein).

Einrichtung der Datenbank:

Postgres Admin wird mit Pgadmin3 gestartet. Zuerst muss eine Datenbank angelegt werden, bei der unter extensions POSTGIS ausgewählt wird. Klappt das nicht hat das vermutlich was mit 32/64 bit zu tun. Werden die Daten aus Shapefiles im importiert, so müssen jetzt alle shapefiles mit dem Plugin „Postgis Shapefiles and DBF Loader“ geladen werden. Wichtig ist (momentan noch), dass die Option „Preserve case of column names“ gesetzt wird, sonst kommt der gisclient damit nicht zurecht, da diese vom Geoserver incl. case übernommen werden.

Einfacher und moderner ist allerdings der Weg über das script shapefile2postgis. Das Skript überträgt shapefiles in eine postgis Datenbank auf dem Server `postgresql.cqubs0xna6kf.eu-west-1.rds.amazonaws.com`.

Dieses wird exemplarisch in der Konsole folgendermaßen aufgerufen:

php shapefile2postgis.php <datenbankname> <pfad/zum/ordner/in/dem/die/shapefiles/liegen> <projektion>  !

also z.B.

php shapefile2postgis.php ahaus_neu /home/user/ahaus EPGS:31466 !

Das Ausrufezeichen am Ende sorgt dafür, dass die Statements direkt ausgeführt werden, lässt man dieses Weg, werden die Statements lediglich in die Ausgabe geschrieben.

Die Datenbank muss vorher angelegt sein. Wichtig ist auch, dass die Datenbank PostGIS fähig ist:

 CREATE EXTENSION postgis;

Aufbereiten der Layer in der Datenbank

Die Hintergrundlayer bedürfen keiner gesonderten Aufbereitung. Das Layer, dass die Gräber enthält, muss in 'graeber' umbenannt werden. Es muss gewährleistet sein, dass folgende Felder in der Tabelle enthalten sind (hier ein insert script):

alter table graeber
    ADD COLUMN     abtl character varying(10);
alter table graeber
    ADD COLUMN     reihe character varying(10);
alter table graeber
    ADD COLUMN     stelle character varying(10);
alter table graeber
    ADD COLUMN     gname character varying(40);
alter table graeber
    ADD COLUMN     grabart character varying(10);
alter table graeber
    ADD COLUMN     nutzende character varying(10);
alter table graeber
    ADD COLUMN     kindex numeric(10,0);
alter table graeber
    ADD COLUMN     gmzustand character varying(80);
alter table graeber
    ADD COLUMN     pfzustand character varying(80);
alter table graeber
    ADD COLUMN     stellebis character varying(10);

Am einfachsten ist es, wenn man einfach alle anderen Felder außer geom und id löscht, und dann das script ausführt. Manchmal will man aber auch Werte behalten, dann bietet es sich an, die Felder umzubenennen. Zum Beispiel:

alter table graeber rename column geo_id TO kindex;
alter table graeber rename column abteilung TO abtl;

Zu guter Letzt muss noch ein unique index für den kindex gesetzt werden:

 ALTER TABLE graeber ADD CONSTRAINT unique_kindex UNIQUE (kindex);

Einrichtung des Geoservers

Alle Angaben sind als Beispiel zu verstehen

Datenbankzugriff

Erstelle Workspace:

Name: Ahaus_neu
Namensraum URI: Ahaus_neu

Neue Datenquelle:

Name der Datenquelle: Ahaus_neu
Beschreibung: Ahaus neu

Database: ahaus_neu

host: postgresql.cqubs0xna6kf.eu-west-1.rds.amazonaws.com (oder localhost, je nachdem ob der zentrale oder ein eigener Datenbankserver verwendet wird)
user: postgres(ql)
passwd: postgres(ql)

Layers


Nun alle Layer, also graeber und alle anderen, publizieren, einmal Compute from native bounds
anklicken, damit die Koordinaten in der Projektion EPSG:4326 berechnet werden. Die Namen der Layer sollten mit Kleinbuchstaben beginnen.

Gruppenlayer hinzufügen: Ahaus_neu_gesamt

Im Gruppenlayer werden alle nicht-Gräber Layer zusammengefasst, der Name MUSS der name des Workspaces + „_gesamt“ sein.

Darauf achten, welche Stile verwendet werden für welches Layer, ruhig auch später damit noch herumexperimentieren bis man etwas gutes gefunden hat.

Apache Proxy einrichten

Damit es nicht zu Cross-Domain-Konflikten kommt, muss der Apache direkt auf den Geoserver weiterleiten. Dafür muss in die apache2.conf folgendes eingetragen werden:

# AJP13 Proxy
<IfModule mod_proxy.c>
<IfModule mod_proxy_ajp.c>
Include „conf/extra/httpd-ajp.conf“
</IfModule>
</IfModule>

ProxyPass /geoserver http://localhost:8080/geoserver
ProxyPassReverse /geoserver http://localhost:8080/geoserver

Außerdem müssen folgende Zeilen auskommentiert werden:

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_http_module modules/mod_proxy_http.so

Aufbereitung der Daten

Sollte es zu Problemen oder Inkonsistenzen kommen, kann man foglende SQL Statements ausprobieren:

UPDATE graeber SET kindex = NULL WHERE kindex = 0


So lange das hier ausführen, bis es nichts mehr gibt (Löscht doppelte Kindex Gräber):

DELETE FROM graeber WHERE gid IN (
SELECT
MAX(graeber.gid)
FROM
public.graeber
WHERE graeber.kindex IS NOT NULL
GROUP BY  graeber.kindex HAVING COUNT(*)>1
)

Linux

Um einen lokalen Geoserver mit sh bin/startup.sh oder sudo -b sh /usr/share/geoserver-2.8.3/bin/startup.sh zu starten muss vorher das eingegeben werden

sudo bash -c "echo JAVA_HOME=*java-pfad*>> /etc/environment"
 sudo bash -c "echo GEOSERVER_HOME=/*geoserver-pfad*>> /etc/environment"

Postgis, weiteres

Möchte man das graeber layer nicht importieren sondern ganz neu anlegen, muss man analog zu diesem Beispiel verfahren. Hier wird das 'items' layer angelegt, das für das hinterlegen von Brunnen oder anderen Friedhofsgegenständen vonnöten ist.

SELECT AddGeometryColumn ('public','my_spatial_table','geom',4326,'POINT',2);

http://postgis.net/docs/AddGeometryColumn.html

und gleich der ganze table:

CREATE TABLE items (
    id integer NOT NULL,
    geom geometry(Point,4326),
    clazz character varying(10)
);

ALTER TABLE items OWNER TO postgresql; ALTER TABLE ONLY items ADD CONSTRAINT items_pkey PRIMARY KEY (id);

Tombejo

Damit GIS in Tombejo läuft:

1. Geoserver muss in settings eingetragen sein: <Tombejo-Pfad>/includes/settings/settings.inc.php (gis_geoserver=http://52.50.27.115/geoserver)
2. GIS muss in Einwerten eingestellt sein (gisws)
2. Geoserver Authentifizierungsdaten muss in Einwerten eingetragen sein (standard: admin/passwd)
3. GIS Workspace muss in jeweiligem Friedhof eingestellt sein (Programmdaten/Friedhof)

Projektionen

Die Shapefiles kommen in verschiedenen Projektionen, die in der Datenbank alle auf EPSG:4326 projiziert werden.

Sinnvolles Tool um Projektionenzu finden: http://projfinder.com/

Ahaus_neu : EPSG:32632
Brakel : EPSG:31467

Darmstadt, Buckow: EPSG:4326

Anforderungen an Shape Files

Wir brauchen: Mehrere Layer, alle Layer im Shapefile format. Insbesondere ein Layer, dass alles Grabstellen enthält, idealerweise als Polygone. Die Zusammenstellung anderer Layer dient alleine der grafischen Darstellung und hat sonst keine Auswirkung auf die Benutzung des Programms. Üblich sind hier Layer für Wege, Rasenflächen, Bepflanzungen und Gebäude, das kann aber durchaus varriieren. Idealerweise wird als Koordinatenreferenzsystem EPSG:4326 verwendet, es sind aber auch andere Koordinatenreferenzsysteme möglich, diese werden dann von uns in EPSG:4326 konvertiert.