====== GIS Client für Orlando20 ====== 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 , als Tomcat Plugin. Das ist nötig wegen .... Tombejo und Geoserver ([[http://geoserver.org/|http://geoserver.org/]]) für unix und windows. Eine Datenbasis, bevorzugt POSTGIS mit POSTGIS plugin. Wenn der Stack Builder beim instalieren nicht funktioniert, lässt sich POSTGIS Extension auch direkt nachrüsten.[[ http://download.osgeo.org/postgis/windows/pg10/]] Selbstverständlich kann man beides auch bei uns hosten lassen: Geoserver: [[http://52.50.27.115/geoserver|http://52.50.27.115/geoserver]] PostGIS: [[http://52.50.27.115/phpPgAdmin-5.1/|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: ===== Erst einmal muss man die Projektion herausfinden, die in den Shapefiles , die man vom Kunden bekommen hat, verwendet wird. Dazu öffnet man eine der .shp Dateien mit QGIS und kopiert sich die Koordinaten, die unten angezeigt werden. Auf projfinder.com sucht man nach diesen koordinaten an der richtigen stelle (hinzoomen muss man leider selber) und wählt dasjenige aus, was , wen man darüber hovert, dafür sorgt, dass sich der gelbe kreis auf der karte an der richtigen stelle blau färbt. \\ 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 ! 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 (traditional) ===== 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); ===== Aufbereiten der Layer in der Datenbank (modern) ===== ===== 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 \\ \\ \\ Include „conf/extra/httpd-ajp.conf“ \\ \\ \\ \\ ProxyPass /geoserver [[http://localhost:8080/geoserver|http://localhost:8080/geoserver]] \\ ProxyPassReverse /geoserver [[http://localhost:8080/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|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: ///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/|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.