Testbed zur Konvertierung von WLDGE-Dateien in SQL-Statements zum Aufbau und zur Fortführung von ALB Beständen.
Die Applikation wldge2sql konvertiert die Zeilen von WLDGE-Dateien (Workdatei Liegenschaftsbuch Daten-Gewinnung mit Entschlüsselungen) in SQL-Statements (Structured Query Language). Die SQL-Statements können zum Aufbau eines ALB-Bestandes (Automatisiertes LiegenschaftsBuch) in Form einer relationalen Datenbank in Anlehnung an das Modell des Programms ALB-Info des Kommunalen Rechenzentrum Minden-Ravensberg/Lippe verwendet werden.
Dieses Testbed wurde entwickelt zum Testen der Funktionen zum Konvertieren von WLDGE Dateien in SQL-Statements zum Aufbau und zur Fortführung von ALB Beständen des Liegenschaftskatasters. Die gegenwärtige Version wurde bisher nur gegen Daten aus dem Bundesland Mecklenburg/Vorpommern getestet. Dieses Testbed soll dazu dienen die Konvertierungsfunktionen zu testen und eventuell notwendige Anpassungen für andere Bundesländer oder allgemein gültige Fehler aufzudecken. Hinweise und Kommentare bitte an peter.korduan@auf.uni-rostock.de.
Für Eilige:
Vergewissern Sie sich, daß auf Ihrem System ein Webserber läuft, z.B. Apache und PHP. Modifizieren Sie eventuell die Parameter Register_Global Off in der php.ini wenn Sie Probleme mit der Variablenübergabe haben.
Entpacken Sie das Packet wldge2sql.gz mit
# /home/downloads> gunzip wldge2sql_0-0-1.gz
an der Stelle wo Sie es runtergeladen haben. Danach sollte die Datei wldge2sql.tar
vorhanden sein und sie können das Archiv mit
# /home/downloads> tar xvf wldge2sql_0-0-1.tar
entpacken. Das entstanden Verzeichnis wldge2sql kopieren Sie unterhalb Ihres
Webordners (wwwroot), z.B. bei Apache /usr/local/httpd/htdocs.
# /home/downloads> cp -R wldge2sql /usr/local/httpd/htdocs
Machen Sie den Ordner und alle darin befindlichen Dateien für den www-deamon
zugänglich und setzen Sie die Rechte z.B. mit
# /usr/local/httpd/htdocs> chown -R wwwrun.users wldge2sql
# /usr/local/httpd/htdocs> chmod -R 760 wldge2sql
Rufen Sie mit Ihrem Browser die Datei install.htm auf
# />lynx http://localhost/wldge2sql/install.htm
Diese Seite sollte erscheinen.
Entpacken Sie die Datei wldge2sql.zip in den Webfolder unterhalb des wwwroot-Verzeichnisses.
Sorgen Sie dafür, daß auf Ihrem System der Datenbankserver Ihrer Wahl
installiert ist und läuft.
Installation siehe Dokumentation. Testen
Sie den mysql-deamon mit
# />mysqld -v
Es kann natürlich auch eine andere Datenbank benutzt werden mit der Sie
von PHP aus zugreifen können. Passen Sie ggf. die Datei config.php im
Verzeichnis wldge2sql an.
Legen Sie eine neue Datenbank mit dem Namen ALB an. z.B. über den Browser
mit phpMyAdmin oder über das Programm mysql_setpermission.
Richten Sie die Zugriffsrechte für die Datenbank so ein, daß user:
tester von host: localhost mit password '' (ohne) zugreifen kann. Testen Sie
den Zugang über:
# />mysql -u tester
mysql> use mysql;
mysql> select host,users,passwd from users where users like 'tester';
Hier sollten Ihre Eintragungen erscheien.
Wenn Sie andere Rechte vergeben wollen passen Sie Ihre Werte in der Datei config.php
im Array der Variablen $ALBdb an.
Legen Sie die Tabellen für den ALB-Bestand (Tabellenname) und die Tabellen
für die Fortführung (x_Tabellenname) an in dem sie die SQL-Anweisungen
aus dem SQL-Dump /schema/table_dump_mysql.sql ausführen.
# />mysql < table_dump_mysql.sql (irgentwie so ging das,
oder ähnlich)
oder über phpMyAdmin SQL wählen und einfach den Text aus Tabellenschema.sql
in das Textfeld kopieren und die Statements absetzen. Den Inhalt der Datei Tabellenschema.sql
in die Zwischenablage kopieren. In phpMyAdmin das SQL-Textfenster öffnen,
die SQL-Statements aus der Zwischenablage hinein kopieren und ausführen.
Nun sollten 63 leere Tabellen erstellt worden sein. Prüfen Sie ob die Tabellen
vorhanden sind.
mysql>show tables;
oder in phpMyAdmin Tabellenleiste Aktualisieren.
Legen Sie die neue Datenbank ALB an.
c:\> c:\xampp\mysql\bin mysqladmin.exe create ALB
Den Inhalt der Datei Tabellenschema.sql in die Zwischenablage kopieren. In phpMyAdmin
das SQL-Textfenster öffnen, die SQL-Statements aus der Zwischenablage hinein
kopieren und ausführen. Nun sollten 63 leere Tabellen erstellt worden sein.
(Für diesen Abschnitt Dank an Astrid Emde)
Installieren Sie PostgreSQL. Eine Beschreibung der Installation
finden
Sie
unter http://postgis.refractions.net/documentation.php
Legen Sie die neue Datenbank alb (Kleinschreibung verwenden) an.
Achten Sie darauf, dass die Datenbank üie PostGIS Funktionalitäverfübr>
createdb [-U user] -E Latin1 -T template1 alb
createlang [-U user] plpgsql alb
psql [-U user] -f postgis.sql alb
(Suche der Datei üind / -name postgis.sql oder locate)
Anlegen der Tabelle spatial_ref_sys (epsg-codes)
psql -d alb -f spatial_ref_sys.sql
Liegt auf Ihrem Rechner schon ein PostGIS-Template vor kön Sie die Datenbank
auch üolgende Zeile erzeugen:
createdb [-U user] -E Latin1 -T postgis_template alb
Erstellen der ALB-Datenbanktabellen
Erstellen der ALB-Datenbanktabellen durch ausführen der SQL-Anweisungen
in /schema/table_dump_postgres.sql
Bitte beachten Sie:
Sollte Ihre DB einen anderen Namen als alb haben, müSie eine Anpassung
in der Datei table_dump_postgres.sql durchfü bevor Sie das SQL abschicken.
Die PostGIS-Funktion AddGeometryColumn mußzweimal im SQL angepaß werden.
Bitte tragen Sie als ersten Üergabeparameter, den von Ihnen verwendeten Datenbanknamen
ein. Üerprüie außrdem das Projektionssystem (4. Üergabeparameter) und äern
gegebenenfalls den Wert.
SELECT AddGeometryColumn('alb','alb_flurstuecke','the_geom','31466','POINT','2');
SELECT AddGeometryColumn('alb','alb_x_flurstuecke','the_geom','31466','POINT','2');
epsg-Codes für Referenzsystem Bessel (alte Länder):
epsg-Codes für Referenzsystem Krassowski (neue Länder):
(Krassowski Ellipsoied, Datum Pulkowo 42, Gauss-Krüger Projektion 3° Streifensystem)
Visualisierung der ALB-Daten
Die nach PostgreSQl eingelesenen Daten kön z. B. mit dem UMN MapServer oder
dem DesktopGIS Jump, Quantum GIS oder uDig visualisiert werden. Die Geometrieobjekte
befinden sich dabei in der Tabelle alb_flurstuecke in der Spalte the_geom.
Es handelt sich dabei um Punkte.
Mehr zu UMN MapServer finden Sie unter:
Starten der Anwendung
So gehts los. Starten sie index.php im Verzeichnis wldge2sql
# />lynx http://localhost/wldge2sql/index.php
Fortführung oder Grunddatenbestand
Mit der Variable $ist_Fortfuehtung im Formular der Datei wldgeDateiWahl.php
wird angegeben ob ein neuer Grunddatenbestand an ALB-Daten in der Datenbank
angelegt werden soll ($ist_Fortführung=0), oder ein schon vorhandener in
der Datenbank aktualisiert werden soll ($ist_Fortführung=1). Dieser Wert
wird nach der Initialisierung des Objektes ALB an die Variable ALB->ist_Fortfuehrung
übergeben und steht dort für die weitere Unterscheidung in die beiden
Fälle wärende der Laufzeit des Scriptes bereit.
Prüfung
Die WLDGE-Dateien werden vor dem Einlesen geprüft. Für nähere
Angaben siehe Abschnitt 2.2.
Einlesen der WLDGE-Dateien
Die WLDGE-Dateien werden zeilenweise eingelesen und ausgewertet, siehe
(Einlesen der WLDGE-Datei). Aus jeder Zeile wird
ein SQL-Statement gebildet. Ausnahmen bilden Angaben, die über mehrer Zeilen
gehen, aber nur in einem Datenbank-Datensatz eingetragen werden sollen, z.B.
für Namensangaben Name1, Name2, Name3 und Name4. Diese werden in einem
SQL-Statement zusammengefasst.
Die SQL Statements werden in die SQL-Dump Datei geschieben (siehe Abschnitt
Erzeugen der SQL-Statements).
Je nach dem, ob die Konstante DBWRITE in der config.php gesetzt ist, werden
entweder
(DBWRITE=0) nur die SQL-Statements in die Dump-Datei geschrieben oder
(DBWRITE=1) die SQL-Statements auch direkt an die Datenbank abgesetzt und ausgeführt.
Schreiben der Tabellen
Bei der Anlage des Grunddatenbestandes werden beim Einlesen der WLDGE-Datei
die Daten gleich in die Originaltabellen eingelesen. Bei der Fortführung
zunächst nur temporär in die Tabellen zur Fortführung, die mit
x am Anfang gekennzeichnet sind. z.B. x_Flurstuecke.
Schreiben der Fortführung
Anschließend werden mit der Methode ALB->Fortfuehren(boolean $logSQL)
die Originaltabellen aktualisiert, also Angaben daraus gelöscht, überschrieben
oder aktualisiert mit DELETE, INSERT oder UPDATE Statements, siehe ALB
Fortführen)
In beiden Fällen wird die WLDGE-Datei zunächst auf Richtigkeit geprüft. Die Prüfung wird durch die Methode WLDGE_Datei_Pruefen() des Objektes ALB vorgenommen. Folgende Prüfungen werden vorgenommen?
Vor dem Einlesen der WLDGE-Datei werden zunächst die Tabellen in der Datenbank
geleert. Handelt es sich um eine Fortführung werden nur die temporären
Tabellen mit x_ am Anfang geleert.
Beim Einlesen werden die Fälle zunächst nach der Dateikennung unterschieden.
Folgende Fälle treten auf:
Ausschnitt
aus dem Datenmodell des ALB für Eigentümer, Grundstücke, Buchungen und Flurstücke
Die Fortführung des ALB-Bestandes wird durch die Funktion Fortfuehren der
Klasse ALB ausgeführt.
Die Klasse ALB hat dazu ein Objekt database zugewiesen bekommen. Das Objekt
database kann mit einer MySQL- oder mit einer PostgreSQL-Datenbank kommunizieren.
Die Tabellenstruktur ist die Selbe. Die Funktionen zur Fortführung der einzelnen
Tabellen und zur Abfrage von Informationen über den aktuellen Bestand und die
Quantität der fortgeführten Elemente erfolgt über Funktionen in der Klasse
database. Die Reihenfolge bei der Fortführung ist wie folgt:
Leider scheitere ich immer wieder an einem Timeout des Browsers trotz
hochgesetzter Zeitlimits.
Prüfen ob der Timeout richtig gesetzt ist in der httpd.conf des Apache WebServers:
Timeout
36000
Und in der php.ini der PHP Konfigurationsdatei:
max_execution_time = 36000
Aber noch eines muß berücksichtigt werden. Ich lasse alle 1000 Zeilen einen
echo
raus mit der Zeilennummer, die gerade gelesen wird.
Zeile 681 in alb.php function WLDGE_Datei_einlesen()
$zeNr++; if ($zeNr==$zeNr1000) { echo "<br>".$zeNr." Zeilen eingelesen."; $zeNr1000+=1000; }Das echo führt zu einer Aktion, die den Timeout untergräbt. Das geht natürlich nur, wenn man den Buffer nicht erst nach Abarbeitung des Skriptes an den Client schickt, also mit der Funktion ob_start().