Bug kvwmap

Aus kvwmap
Wechseln zu: Navigation, Suche

Auf dieser Seite können Bugs gemeldet werden. Die Lösung von kritischen Fehlern wird beschrieben, so dass eigenständig Bugfixe vorgenommen werden können. Ansonsten finden sich die Lösungen immer in der nächsten Version. Parallel zu dieser Seite werden Bugs und insbesondere deren Lösung auch über die Mailling Liste verteilt. Dies ist mehr ein Archiv der aufgetretenen Probleme. Bugs, die neu sind sollten mit einem führenden - versehen sein. Bugs mit Lösungen werden mit + gekennzeichnet. Problem erkannt und in Arbeit mit -+.

Inhaltsverzeichnis

Version 1.7.3

- Pan-Klick in die Karte verschiebt nicht

--Markus Hentschel 14:49, 23. Dez 2009 (CET) Der Verschiebebutton in Tateinheit mit einem Klick in die Karte sollte den Karteninhalt auf den Klickpunkt zentrieren, was aber leider nicht der Fall ist.


- Tooltipp in Datei-Formularfeldern

--Markus Hentschel 14:27, 22. Dez 2009 (CET) In Stelle anzeigen zeigt der Tooltipp bei Druckrahmen und Layer den Eintrag nur bis zum ersten Leerzeichen an.


+ Koordinateneingabe im Geometrieeditor bringt Fehler beim IE

--Andreas Thurm 11:28, 15. Dez 2009 (CET)Die neue Funktion der Koordinateneingabe im Geometrieeditor bringt bei der Verwendung des IE einen Fehler: Das Objekt unterstützt diese Eigenschaft oder Methode nicht (line:1, column:0) Im Firefox funktioniert es allerdings...

--Rahn 11:01, 16. Dez 2009 (CET) Damits auch im IE funktioniert, muss in SVG_Utilities.php folgende Funktion ausgetauscht werden:
 function coord_input(){
   coord = prompt("Koordinateneingabe:", Math.round(minx+(maxx-minx)/2)+" "+Math.round(miny+(maxy-miny)/2))+"";
   coords1 = coord.split(" ");
   mouse_coords_type = "world";
   evt1 = new Object();
   evt1.clientX = coords1[0];
   evt1.clientY = coords1[1];
   mousedown(evt1);
   mouse_coords_type = "image";
 }

+ Einschränkung über Tabelle stelle_gemeinden wirkt nicht für Nachweisverwaltung

--Hschmidt 15:52, 10. Dez 2009 (CET)
Die Einschränkung über die Tabelle stelle_gemeinden wirkt sich nicht auf das Nachweisformular und die darin enthaltene Auswahlliste der Gemarkungen/Gemeinden aus.

--Rahn 13:47, 14. Dez 2009 (CET) Um den Fehler zu beheben, müssen in kvwmap.php in der Funktion nachweisFormAnzeige() die beiden Zeilen
 $Gemarkung=new gemarkung('',$this->pgdatabase);
 $GemkgListe=$Gemarkung->getGemarkungListe('','','gmk.GemkgName');

durch diese Zeilen ersetzt werden:

 $GemeindenStelle=$this->Stelle->getGemeindeIDs();
 $Gemeinde=new gemeinde('',$this->pgdatabase);
 $GemListe=$Gemeinde->getGemeindeListe('',$GemeindenStelle,'','GemeindeName');
 $Gemarkung=new gemarkung('',$this->pgdatabase);
 $GemkgListe=$Gemarkung->getGemarkungListe($GemListe['ID'],'','gmk.GemkgName');

+ Fehler bei Abfrage von mehreren Layern

Fragt man mehrere Layer ab, von denen manche ein Template haben und manche nicht, kann es zu einem Fehler kommen. Um den Fehler zu beheben, muss in kvwmap.php in der Funktion SachdatenAnzeige() nach der Zeile

for ($i=0;$i<$anzLayer;$i++) {

diese Zeile eingefügt werden:

$sql_order = '';

+ Formularelementtyp 'User' fehlt in der Tabelle layer_attributes

In der mysql_update.sql wurde diese Zeile vergessen:

ALTER TABLE `layer_attributes` CHANGE `form_element_type` `form_element_type` ENUM('Text','Textfeld','Auswahlfeld','Geometrie','SubFormPK','SubFormFK','SubFormEmbeddedPK','Time','Dokument','Link','User') NOT NULL DEFAULT 'Text';

+ Nutzerdaten speichern

Beim Speichern der Nutzerdaten wird die Meldung ausgegeben, dass der Nutzer schon existiert. Um den Fehler zu beheben, muss in users.php in der Funktion checkUserDaten() die Zeile 13

else{

durch diese Zeile ersetzt werden:

elseif($userdaten['go_plus'] == 'Als neuen Nutzer eintragen'){

+ Konstante BG_MENUESUB funktioniert nicht

Eine Veränderung der Konstante BG_MENUESUB zeigt keine Wirkung. Um den Fehler zu beheben, muss in menue_head.php in der Funktion changemenue() die Zeile

sub.style.background = '#EDEFEF';

durch diese hier ersetzt werden

sub.style.background = '<? echo BG_MENUESUB; ?>';

Version 1.7.2

+ gui_button | liefert kein Ergebnis der Adress- und Flurstücksrecherche

--Hschmidt 09:47, 12. Nov 2009 (CET)
Bei Aktivierung der gui_button liefert die Adressuche und Flurstückssuche kein Ergebnis. Jedenfalls bei mir ;-)

--Rahn 12:03, 12. Nov 2009 (CET) In der gui_button.php muss die Zeile
<form name="GUI" enctype="multipart/form-data" method="post" action="index.php">

durch

<form name="GUI" id="GUI" enctype="multipart/form-data" method="post" action="index.php">

ersetzt werden.

+ Sprache Plattdeutsch | Fehler in Tabelle rolle

--Hschmidt 11:27, 29. Okt 2009 (CET)
In den Updates für die Tabelle rolle fehlt die plattdeutsche Sprache, womit beim Wechsel in diese Sprachen div. Fehlermeldungen verursacht wurden.
Das Upate aus der Version 1.6.8 muss so (oder ähnlich) aussehen:

ALTER TABLE `rolle` ADD `language` ENUM( 'german', 'low-german', 'english', 'vietnamese' ) NOT NULL DEFAULT 'german';
--Rahn 09:29, 30. Okt 2009 (CET) Dafür gibts ne extra Datei "mysql_low-german.sql". Aber Sie haben Recht, eigentlich gehört das in die mysql_update.sql. In der nächsten Version ist das mit drin.

+ CSV-Export | Flurstückskennzeichen_kurz in Hochkomma

--Hschmidt 10:35, 29. Okt 2009 (CET)
Kein Bug aber etwas unschön ist das Flurstückskennzeichen_kurz beim CSV-Export in Hochkomma.

--Rahn 09:26, 30. Okt 2009 (CET) Ja, das hatten wir schon auf dem letzten Anwendertreffen besprochen. Die Hochkommas stehen nicht ohne Grund da. Wenn man sie nämlich weglässt, interpretiert Excel das Flurstückskennzeichen als Datum (1/10 --> 1.Oktober)

--Hschmidt 09:54, 2. Nov 2009 (CET) o.k. das hab ich wohl verpasst ;-)

+ Printversion | kein Weg zurück zu anderer GUI

--Hschmidt 10:02, 29. Okt 2009 (CET)
Nach der Aktivierung der Printversion als GUI (printversion.php) gibt es keine Möglichkeit zurückzukehren zu einer anderen GUI :-(

--Rahn 09:23, 30. Okt 2009 (CET) Ja, die Datei "printversion.php" liegt fälschlicherweise im layouts-Ordner. Sie ist nicht zur Verwendung als GUI gedacht, sondern wird aus /snippets eingebunden, wenn man in einer Sachdatenanzeige auf "drucken" geht.

+ Nutzerverwaltung | Loginname wird nicht geprüft

--Hschmidt 08:32, 29. Okt 2009 (CET)
Beim Anlegen eines neuen Benutzers wird nicht geprüft, ob der Loginname nicht schon vorhanden ist.
Wünschenswert wäre auch eine Prüfung des Loginnamens auf eine Mindestanzahl von Zeichen.

- Fachschale Bodenrichtwerte | Eingabe Stichtag

--Hschmidt 09:41, 20. Okt 2009 (CEST)
Bei fehlerhafter Eingabe des Jahres bei Stichtag, z.B.: 09 statt 2009 kommt keine Fehlermeldung und der Datensatz wird auch nicht gespeichert.

+ Weiterzeichnen nach pan

--Markus Hentschel 15:07, 14. Okt 2009 (CEST) Das erste Polygon eines Multipolygons kann man auch dann weiterzeichnen, wenn man die Karte verschoben hat. Bei den weiteren Teilflächen geht das nicht mehr, der Klick auf den Verschiebe-Button beendet das Zeichnen. Es muss aber auch dann noch gehen (vor allem bei der Nachweiserfassung extrem wichtig).

+ Groß/Kleinschreibung des Loginnamens

Damit die Überprüfung des Loginnamens case-sensitive ist, muss in mysql.php in der Funktion login_user() das SQL folgendermaßen angepasst werden:

$sql = "SELECT login_name FROM user WHERE login_name = BINARY('".$username."') AND passwort = '".md5($passwort)."'";

+ Speichern nach Abbruch in der Nachweiserfassung

--Markus Hentschel 10:40, 6. Okt 2009 (CEST) Wenn man in der Nachweiserfassung ein Dokument speichern will und die Warnung kommt, dass die angegebene Flur nicht in der angezeigten Flur liegt, dann kann man auf "Abbrechen" klicken und seine Eingaben korrigieren. Allerdings funktioniert danach der Sendenbutton nicht mehr. Lediglich wenn man die Karte durch z.B. Pannen verändert, kann man wieder speichern.

+ ZoomToMaxLayerExtent bei Rollenlayer

--Markus Hentschel 13:31, 5. Okt 2009 (CEST) Wenn man versucht, auf den kleinen Pfeil hinter einem Suchergebnislayer ("volle Layerausdehnung") zu klicken, kommt eine Fehlermeldung. Offensichtlich scheitert der Versuch, die Rollenlayer-ID zu übergeben.

- Druck bei Kartenprojektion WGS84 (4326)

--Hschmidt 14:46, 30. Sep 2009 (CEST)
Bei dieser Kartenprojektion kann kein Druck erzeugt werden. Bei der Druckausschnittswahl wird der Inhalt des gesamten Fenster markiert, unabhängig vom Druckmaßstab. Weiter im Druck wird ein leerer Rahmen ausgegeben. (War bei 1.7.1 auch schon so)

+ Liniengeometrien bearbeiten

Beim Bearbeiten von Liniengeometrien kommt es zu einem Fehler. Um ihn zu beheben, muss in kvwmap.php in der Funktion LineEditor() die Zeile

$rect = $lineeditor->zoomToLine($this->formvars['oid'], $this->formvars['layer_tablename'], 10);

durch diese hier ersetzt werden:

$rect = $lineeditor->zoomToLine($this->formvars['oid'], $this->formvars['layer_tablename'], $this->formvars['layer_columnname'], 10);

+ Layer löschen

--Markus Hentschel 13:44, 17. Sep 2009 (CEST) Wenn man einen Layer löscht über go=Layer_Loeschen, dann werden die Einträge in classes, layer_attributes, layer_attributes2stelle, used_layer, u_attributefilter2used_layer und u_rolle2used_layer nicht gelöscht.

- MINSCALE im Geometrieeditor

--HolgerR 11:23, 17. Sep 2009 (CEST) Wird im Geometrieeditor hereingezoomt, wird nur bis zu der Maßstabszahl gezoomt, die in der config.php in der Konstante MINSCALE festgelegt wurd. Ein vergrößern über diesen Wert hinaus ist nicht möglich. Das betrifft sowohl den generischen Layereditor, als auch die Nachweiserfassung. Die Option MINSCALE sollte m.E. doch nur beim Zoom auf die Geometrie aus der Sachdatenabfrage heraus berücksichtigt werden oder doch nicht?

--Rahn 09:56, 22. Sep 2009 (CEST) Dafür war sie ursprünglich gedacht gewesen, ja. Die Konstante MINSCALE ist aber die untere Grenze für alle Arten von Zoomvorgängen.

+ Ausgabe der Flurstücke in der Namenssuche

Wenn man sich in der Namenssuche die Flurstücke mit ausgeben lässt, kann es vorkommen, dass bei Eigentümern mit mehreren Grundbuchblättern immer alle Flurstücke des Eigentümers unter jedem GB-Blatt stehen. Das ist dann der Fall, wenn zu jedem Blatt kein separater Eigentümer angelegt wurde. Um den Fehler zu beheben muss in kvwmap.php in der Funktion nameSuchen() die Zeile

$ret = $flurstueck->getFlurstByLfdNrName($this->namen[$i]['lfd_nr_name'],NULL);

durch diese hier ersetzt werden:

$ret[1] = $flurstueck->getFlurstByGrundbuecher(array($this->namen[$i]['bezirk'].'-'.$this->namen[$i]['blatt']));


Damit in der Spalte "Flurstücke" auch die beiden Links "anzeigen" und "Karte" die richtigen Flurstücke liefern, muss in der Datei namensuchform.php folgendes angepasst werden:

Die Funktion flurstsuche muss so aussehen:

function flurstsuche(bezirk, blatt){
  document.GUI.Grundbuecher.value = bezirk+'-'+blatt;
  document.GUI.go.value = 'Suche_Flurstuecke_zu_Grundbuechern';
  document.GUI.submit();
}

die beiden Zeilen

<td align="center"><a href="javascript:flurstsuche(<?php echo $this->namen[$i]['lfd_nr_name']; ?>);"><?php echo $strShowFst; ?></a></td>
<td align="center"><a href="index.php?go=Zeige_Flurstuecke_zu_Namen&lfd_nr_name=<?php echo $this->namen[$i]['lfd_nr_name'];?>"><?php echo $strToMap; ?></a></td>

müssen durch diese beiden ersetzt werden:

<td align="center"><a href="javascript:flurstsuche('<?php echo $this->namen[$i]['bezirk'].'\',\''.$this->namen[$i]['blatt']; ?>');"><?php echo $strShowFst; ?></a></td>
<td align="center"><a href="index.php?go=Zeige_Flurstuecke_zu_Grundbuechern&Grundbuecher=<?php echo $this->namen[$i]['bezirk'].'-'.$this->namen[$i]['blatt'];?>"><?php echo $strToMap; ?></a></td>

und unten muss folgendes hidden-Feld eingefügt werden:

<input name="Grundbuecher" type="hidden" value="">

+ Fehler bei Zoom auf Datensätze

Bei einigen Layern kommt es zu einem Fehler, wenn man im GLE auf "Kartenausschnitt" klickt. Der dadurch angelegte Rollenlayer hat dann ein falsches Data-Statement. Um den Fehler zu beheben, muss in kvwmap.php in den Funktionen zoom_toPolygon() und zoom_toLine() nach der Zeile

if(strpos(strtolower($select), 'oid') === false){

diese Zeile eingefügt werden:

$select = str_replace('*', '*, oid', $select);

+ Fehler bei der plattdeutschen Version

Der gestrige Fehler im Internet Explorer bei der plattdeutschen Variante steckt in der language-Datei map_low-german-windows-1252.php. Die korrigierte Version sieht so aus:

<?php
 $strAvailableLayer="Praatheite Themen";
 $strCoordinates="Koordinaten";
 $strLoadNew="Nieg Loden";
 $strMapImageURL="Koortbeld taun Ofsekern anwiesen";
 $strChoose="Utwählen";
 $strMapScale="Maat";
 $strMapSettingsFrom="Koortinstellen vun";
 $strPreviousView="v'+unescape('%F6')+'rherig Ansich";
 $strNextView="neegste Ansich";
 $strZoomIn="Rin zoomen";
 $strZoomOut="Rut zoomen";
 $strZoomToFullExtent="Samtansich";
 $strPan="Verschuven";
 $strCoordinatesZoom="Koordinatenzoom";
 $strInfo="Info Affraag";
 $strInfoWithRadius="Info Affraag mit S'+unescape('%F6')+'kkrink";
 $strInfoInPolygon="Info Affraag in\'n Polygon";
 $strRuler="Streek afmeten";
 $strX="R";  
 $strY="H";
?>

+ menue_button.php fehlt

Im Skript ../layouts/gui_button.php wird das Skript LAYOUTPATH."snippets/menue_button.php" includiert. Leider fehlt diese Datei und es erscheint eine Fehlerausschrift im phplog.

--Rahn 10:35, 10. Sep 2009 (CEST) Die Dateien liegen in /layouts/snipptes/custom.

+ WMS-Dienst - getFeatureInfo schlägt fehlt

--HolgerR 07:40, 10. Sep 2009 (CEST) Bei dem Versuch, ein getFeatureInfo auf den WMS-Dienst der Digitalen Orthophotos des Landesverwaltung abzurufen, erhalte ich folgende Fehlermeldung

msWMSFeatureInfo(): WMS server error. Requested layer(s) are not queryable.  

Der Aufruf des Dienstes erfolgt bei mir mit folgender Syntax

http://www.geodaten-mv.de/dienste/adv_dop?REQUEST=GetMap&VERSION=1.1.1&SERVICE=WMS&LAYERS=adv_dop&SRS=EPSG:2398&FORMAT=image/png

Laut Dokumentation auf www.gaia-mv heißt der getFeatureInfo-Layer 'adv_dop_metadaten'. Kann das in kvwmap irgendwo hinterlegt werden, wenn die Bezeichnung der Layer von getMap und getFeatureInfo unterschiedlich sind? Oder sollte ich mir einen 2. Layer als getFeatureInfo anlegen, der abfragbar geschaltet ist und mit dem getMap-Layer über 'require' verknüpft ist?

--Rahn 10:34, 10. Sep 2009 (CEST) Nun ja, das ist wohl eher kein kvwmap-Bug, sondern liegt ja eindeutig am WMS-Server :-). Zur Lösung des Problems würde ich die Variante mit dem 2. Layer vorschlagen.

- Festpunkte - FestpunkteSkizzenZuordnung

--HolgerR 07:40, 10. Sep 2009 (CEST) Bei der Suche von Festpunken nach dem Kilometerquadrat besteht die Möglichkeit die Zuordnung der Festpunkte zu den AP-Beschreibungen zu überprüfen und fehlende bzw. überzählige oder falsch zugewiesene AP-Beschreibungen herauszufinden und zu korrigieren. Wird nun der Button 'FestpunkteSkizzenZuordnung' angeklickt, wird nicht die entsprechende Maske angezeigt, sondern es wird wieder zur Karte gesprungen.
Stefan, es sind doch GigaBytes :)

+ Nachweiserfassung mit dem IE

Bei Benutzung des Internet Explorers kommt es in der Nachweiserfassung beim Speichern zu einem Fehler. Um den Fehler zu beheben, muss in nachweis.php die Funktion check_poly_in_flur durch folgende ersetzt werden:

function check_poly_in_flur($polygon, $flur, $gemarkung, $epsg){
  	$sql = "SELECT alknflur.gemkgschl, alknflur.flur FROM alkobj_e_fla, alknflur WHERE alknflur.objnr = alkobj_e_fla.objnr AND intersects(the_geom, TRANSFORM(geometryfromtext('".$polygon."', ".$epsg."), ".EPSGCODE."))";
  	$ret=$this->database->execSQL($sql,4, 1);
  	$result = 'f';	
  	while($rs = pg_fetch_row($ret[1])){
  		if($gemarkung == $rs[0] AND $flur == ltrim($rs[1], '0')){
  			$result = 't';
  			break;
  		}
  	}
  	return $result;
  }

Außerdem muss im Snippet dokumenteneingabeformular.php in der Funktion save() diese Zeile vor der ersten Zeile eingefügt werden:

document.GUI.result2.value = '';

In der Funktion check_poly muss nach der Zeile

if(document.GUI.result2.value == 't'){

diese Zeile eingefügt werden:

  window.clearInterval(polycheck);

Und die Zeile

window.setInterval("check_poly()", 500);

muss so erweitert werden:

var polycheck = window.setInterval("check_poly()", 500);

- Zoom bei Kartenprojektion WGS84 (4326)

--Reißland 10:27, 7. Sep 2009 (CEST)

Bei Auswahl der Kartenprojektion WGS84 (EPSG:4326) kann man wohl auf die maximale Ausdehnng zoomen, ein zoomin ist aber nicht möglich.

+ Anzeige des Original-Dateinamens bei Dokumenten

Ist zwar eher eine Erweiterung als ein Bug aber auch notwendig, denke ich. Damit in der Vorschau der Dokumente im GLE auch der Original-Dateiname erscheint, muss in kvwmap.php folgendes angepasst werden:

In der Funktion neuer_Layer_Datensatz_speichern() muss die Zeile

$this->formvars[$form_fields[$i]] = URL.APPLVERSION."index.php?go=sendeDokument&dokument=".$nachDatei.";

so erweitert

$this->formvars[$form_fields[$i]] = URL.APPLVERSION."index.php?go=sendeDokument&dokument=".$nachDatei."&original_name=".$_FILES[$form_fields[$i]]['name'];

In der Funktion sachdaten_speichern() muss die Zeile

$sql = "UPDATE ".$tablename." SET ".$attributname." = '".URL.APPLVERSION."index.php?go=sendeDokument&dokument=".$nachDatei."' WHERE oid = '".$oid."'";

so erweitert werden:

$sql = "UPDATE ".$tablename." SET ".$attributname." = '".URL.APPLVERSION."index.php?go=sendeDokument&dokument=".$nachDatei."&original_name=".$_FILES[$form_fields[$i]]['name']."' WHERE oid = '".$oid."'";

und die Funktion sendeDokument_mit_vorschau() muss so aussehen:

function sendeDokument_mit_vorschau($dokument, $original_name) {
  	$type = strtolower(array_pop(explode('.', $dokument)));
  	echo '<html><head></head>
					<body background="'.GRAPHICSPATH.'bg.gif"><table border="0" cellpadding="0" cellspacing="0"><tr><td>';
  	if($type == 'jpg' OR $type == 'png' OR $type == 'gif' ){
  		echo '<a href="index.php?go=sendeDokument&dokument='.$dokument.'&original_name='.$original_name.'"><img style="border:1px solid black" height="140" src="index.php?go=sendeDokument&dokument='.$dokument.'"></a>';
  	}
  	else{
  		switch ($type) {
  			case 'pdf' :{
  				echo '<a href="index.php?go=sendeDokument&dokument='.$dokument.'&original_name='.$original_name.'"><img style="border:0px solid black" src="'.GRAPHICSPATH.'pdf.gif"></a>';
  			}break;
  			
  			case 'doc' :{
  				echo '<a href="index.php?go=sendeDokument&dokument='.$dokument.'&original_name='.$original_name.'"><img style="border:0px solid black" src="'.GRAPHICSPATH.'openoffice.gif"></a>';
  			}break;
  			
  			default : {
  				$image = imagecreatefromgif(GRAPHICSPATH.'document.gif');
          $textbox = imagettfbbox(13, 0, dirname(FONTSET).'/arial.ttf', '.'.$type);
          $textwidth = $textbox[2] - $textbox[0] + 13;
          $blue = ImageColorAllocate ($image, 26, 87, 150);
          imagettftext($image, 13, 0, 22, 34, $blue, dirname(FONTSET).'/arial_bold.ttf', $type);
          $filename = TEMPPATH_REL.rand(0,100000).'.gif';
          imagegif($image, $filename);
  				echo '<a href="index.php?go=sendeDokument&dokument='.$dokument.'&original_name='.$original_name.'"><img style="border:0px solid black" src="'.$filename.'"></a>';
  			}
  		}
  		echo '</td><td valign="middle">  '.$original_name.'</td></tr></table>';
  	}
  	echo '</body></html>';
    return 1;
  }

und die Funktion sendeDokument() so:

function sendeDokument($dokument, $original_name) {
    $dateiname=basename($dokument);
    $dateinamensteil=explode('.',$dateiname);
    ob_end_clean();
    header("Content-type: image/".$dateinamensteil[1]);
    header("Content-Disposition: attachment; filename=".$original_name);
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    readfile($dokument);
    ob_flush();
    return 1;
  }

In der index.php müssen außerdem die beiden Anwendungsfälle sendeDokument und sendeDokument_mit_vorschau angepasst werden

$GUI->sendeDokument($GUI->formvars['dokument']);

durch

$GUI->sendeDokument($GUI->formvars['dokument'], $GUI->formvars['original_name']);

und

$GUI->sendeDokument_mit_vorschau($GUI->formvars['dokument']);

durch

$GUI->sendeDokument_mit_vorschau($GUI->formvars['dokument'], $GUI->formvars['original_name']);

Version 1.7.1

+ GetFeatureInfo-Abfrage

Fragt man einen WMS-Layer mit dem Info-Button ab, werden die Sachdaten des WMS über GetFeatureInfo geholt. Allerdings stimmte die Abfragekoordinate bisher nicht mit der in der Karte angeklickten Position überein. Dies lässt sich folgendermaßen beheben: In kvwmap.php muss nach der Zeile

$request .='&BBOX='.$bbox->minx.','.$bbox->miny.','.$bbox->maxx.','.$bbox->maxy;

diese Zeile hier eingefügt werden:

$request .='&width='.$this->user->rolle->nImageWidth.'&height='.$this->user->rolle->nImageHeight;

+ Geometrie mit Exklave in Nachweisformular

--Markus Hentschel 12:51, 20. Jul 2009 (CEST) Wenn man im Nachweisformular eine 1. Polygon gezeichnet hat und anschließend zum selben Dokument ein 2. Polygon zeichnen will, dann klickt man, um das Zeichnen zu unterbrechen, auf einen beliebigen anderen Button (z.B. Verschiebe-Button) und dann wieder auf den Polygon-hinzufügen-Button. Das funktioniert solange, wie man nicht zum Unterbrechen den Geometrie-hinzufügen- oder den Geometrie-entfernen-Button verwendet. Dann wird als 2. Polygon nur noch der rote Rand gezeichnet.

--Rahn 13:33, 20. Jul 2009 (CEST) Eigentlich reicht es, auf den Polygon-Hinzufügen-Button zu klicken. Dann wird das erste Polygon abgeschlossen und man kann mit dem Zeichnen eines zweiten Polygons beginnen.
--Markus Hentschel 15:02, 20. Jul 2009 (CEST) Ja, klar, aber es darf eben nicht sein, dass Fehler kommen, wenn man auf andere Buttons klickt, oder?
--Rahn 07:25, 21. Jul 2009 (CEST) Da hast Du Recht. Zum Beheben des Fehlers muss in SVG_Utilities.php in den beiden Funktionen subtr_polygon() und add_polygon() die Zeile
top.document.GUI.pathwkt.value = top.document.GUI.newpathwkt.value;

durch folgende Zeilen ausgetauscht werden:

if(top.document.GUI.newpathwkt.value != ""){
  top.document.GUI.pathwkt.value = top.document.GUI.newpathwkt.value;
}

+ fehlende Variable in map_english_windows-1252.php

--Markus Hentschel 16:05, 22. Jun 2009 (CEST) Es fehlt folgende Zeile:

$strChoose="Choose";

+ Erzeugen von neuen Datensätzen: Geometrie wird nicht gespeichert

Bei einem Layer, für den im Attributeditor noch nie die Attributtypen gespeichert wurden, wird beim Anlegen eines neuen Datensatzes die Geometrie nicht gespeichert. Das kann man entweder dadurch umgehen, indem man im Attributeditor für den entsprechenden Layer einmal auf 'Speichern' klickt, oder indem man in der Datei generic_layer_editor_2.php im Abschnitt

$columnname = $this->qlayerset[$i]['attributes']['name'][$j];
$tablename = $this->qlayerset[$i]['attributes']['table_name'][$this->qlayerset[$i]['attributes']['name'][$j]];
$geomtype = $this->qlayerset[$i]['attributes']['geomtype'][$this->qlayerset[$i]['attributes']['name'][$j]];
$dimension = $this->qlayerset[$i]['attributes']['dimension'][$j];
$privileg = $this->qlayerset[$i]['attributes']['privileg'][$j];
$this->form_field_names .= $this->qlayerset[$i]['Layer_ID'].';'.$this->qlayerset[$i]['attributes']['real_name'][$this->qlayerset[$i]['attributes']['name'][$j]].';'.$this->qlayerset[$i]['attributes']['table_name'][$this->qlayerset[$i]['attributes']['name'][$j]].';'.$this->qlayerset[$i]['shape'][$k][$this->qlayerset[$i]['attributes']['table_name'][$this->qlayerset[$i]['attributes']['name'][$j]].'_oid'].';'.$this->qlayerset[$i]['attributes']['form_element_type'][$j].';'.$this->qlayerset[$i]['attributes']['nullable'][$j].'|';

die letzte Zeile durch folgende Zeile ersetzt:

$this->form_field_names .= $this->qlayerset[$i]['Layer_ID'].';'.$this->qlayerset[$i]['attributes']['real_name'][$this->qlayerset[$i]['attributes']['name'][$j]].';'.$this->qlayerset[$i]['attributes']['table_name'][$this->qlayerset[$i]['attributes']['name'][$j]].';'.$this->qlayerset[$i]['shape'][$k][$this->qlayerset[$i]['attributes']['table_name'][$this->qlayerset[$i]['attributes']['name'][$j]].'_oid'].';Geometrie;'.$this->qlayerset[$i]['attributes']['nullable'][$j].'|';

+ angleitem mit Mapserver 5

Wenn man den Mapserver in der Version 5.x verwendet, funktionieren die per angleitem gedrehten Styles nicht (z.B. bei Schraffurwinkeln). Um das zu beheben, müssen in kvwmap.php in der Funktion loadclasses() die Zeilen

if (MAPSERVERVERSION < 500 AND $dbStyle['angleitem']!='') {
  $style->set('angleitem',$dbStyle['angleitem']);
}

durch diese hier ersetzt werden:

if ($dbStyle['angleitem']!=''){
  if(MAPSERVERVERSION < 500){
    $style->set('angleitem',$dbStyle['angleitem']);
  }else{
    $style->setbinding(MS_STYLE_BINDING_ANGLE, $dbStyle['angleitem']);
  }
}


+ Zoom auf Linienlayer

Der Rollenlayer, der beim Zoom auf Linienobjekte erzeugt wird, hat ein falsches Symbol. Zum Beheben des Fehlers muss in kvwmap.php in der Funktion zoom_toLine() in der Zeile

$style['symbol'] = 4;

die 4 durch eine 9 ersetzt werden.


+ Ausgabe von historischen Grundbuchbezirken

Offenbar kommt es doch noch zu Ausgaben von historischen Grundbuchbezirken. Zum Beheben des Fehlers müssen in postgresql.php in der Funktion getGrundbuchbezirke() die Zeilen

$sql ="SELECT b.bezirk AS Schluessel,g.bezeichnung AS Name FROM alb_g_buchungen AS b,alb_v_grundbuchbezirke AS g";
$sql.=" WHERE b.bezirk=g.grundbuchbezschl AND b.flurstkennz = '".$FlurstKennz."'";

durch diese hier ersetzt werden:

$sql ="SELECT b.bezirk AS Schluessel,g.bezeichnung AS Name FROM alb_g_buchungen AS b,alb_v_grundbuchbezirke AS g, alb_grundbuecher AS gb";
$sql.=" WHERE b.bezirk=g.grundbuchbezschl AND b.flurstkennz = '".$FlurstKennz."'";
$sql.=" AND b.bezirk=gb.bezirk AND b.blatt=gb.blatt";
$sql.=" AND gb.aktualitaetsnr NOT LIKE 'hist'";

+ Nachweisrecherche nach Antragsnummer

Sucht man nach den Dokumenten eines Antrags, schlägt die Suche mit einer Fehlermeldung fehl. Um den Fehler zu beheben, müssen in nachweis.php in der Funktion getNachweise() die beiden Zeilen

$sql ="SELECT n.*,v.name AS vermst FROM n_nachweise AS n,n_nachweise2antraege AS n2a,n_vermstelle AS v, n2d.dokumentart_id AS andere_art, d.art AS andere_art_name";
$sql.=" FROM n_vermstelle AS v, n_nachweise AS n";

durch diese hier ersetzt werden:

$sql ="SELECT n.*,v.name AS vermst, n2d.dokumentart_id AS andere_art, d.art AS andere_art_name";
$sql.=" FROM n_nachweise2antraege AS n2a, n_vermstelle AS v, n_nachweise AS n";

+ WMS-Export von allen Layern

Wenn man beim WMS-Export alle Layer exportiert, so werden auch alle Layer in die Mapdatei geschrieben, allerdings fehlen bei den nicht aktiven Layern wichtige Daten. Um den Fehler zu beheben muss in kvwmap.php in der Funktion wmsExportSenden() vor der Zeile

$this->loadMap('DataBase');

diese Zeile eingefügt werden:

$this->class_load_level = 2;		# die Klassen von allen Layern laden

+ function imagerotate fehlerhaft

--Hschmidt 11:56, 23. Apr 2009 (CEST)
Die function imagerotate in "allg_funktionen.php" ist fehlerhaft. Das betrifft die Anwender, die den Druck mit ImageMagick drehen wollen. Dazu die Funktion in "all_funktionen.php durch die unter Ver. 1.7.0 schon angegebene ersetzen siehe unten.


+ labelangleitem mit Mapserver 5

Wenn man den Mapserver in der Version 5.x verwendet, funktionieren die per labelangleitem gedrehten Labels nicht. D.h. sie werden nicht gedreht. Um das zu beheben, muss in kvwmap.php in der Funktion loadclasses() die Zeile

$klasse->label->set('angle', $layerset['labelangleitem']);

durch diese hier

$klasse->label->setbinding(MS_LABEL_BINDING_ANGLE, $layerset['labelangleitem']);

ersetzt werden.

+ Verschieben des Kartenausschnitts im Geometrie-Editor

Wenn man im Internet-Explorer versucht den Kartenausschnitt im Geometrie-Editor der Fachschalen zu verschieben, kommt eine Fehlermeldung. Um den Fehler zu beheben, muss in SVG_Utilities.php in der Funktion recentre() die Zeile

if(measurefunctions == true)

vor der Zeile

save_measure_path();

eingefügt werden.

+ Speichern eines Datensatzes mit einem SubFormEmbeddedPK-Attribut

Wenn man versucht einen Datensatz im GLE zu speichern, der ein SubFormEmbeddedPK-Attribut besitzt, erscheint eine Fehlermeldung. Um den Fehler zu beheben, muss in kvwmap.php in der Funktion sachdaten_speichern() die Zeile

if($type != 'SubFormPK' AND $type != 'SubFormFK'){

durch diese hier ersetzt werden:

if($type != 'SubFormPK' AND $type != 'SubFormFK' AND $type != 'SubFormEmbeddedPK'){


+ Auswahlfeld mit Constraint

--Markus Hentschel 08:14, 16. Apr 2009 (CEST) Ein Attribut einer Datenbanktabelle hat ein Constraint. Das wird im GLE auch ausgewertet, so dass die definierten Werte als Auswahl auftauchen. allerdings wird der ausgewählte Wert nicht gespeichert, das Feld bleibt leer.

--Rahn 09:37, 4. Mai 2009 (CEST) Zum Beheben des Fehlers muss in generic_layer_editor_2.php folgende Zeile
echo '<select title="'.$this->qlayerset[$i]['attributes']['alias'][$j].'"  style="font-size: '.$this->user->rolle->fontsize_gle.'px" name="'.$this->qlayerset[$i]['Layer_ID'].';'.$this->qlayerset[$i]['attributes']['real_name'][$this->qlayerset[$i]['attributes']['name'][$j]].';'.$this->qlayerset[$i]['attributes']['table_name'][$this->qlayerset[$i]['attributes']['name'][$j]].';'.$this->qlayerset[$i]['shape'][$k][$this->qlayerset[$i]['attributes']['table_name'][$this->qlayerset[$i]['attributes']['name'][$j]].'_oid'].';'.$this->qlayerset[$i]['attributes']['form_element_type'][$j].'">';

durch diese hier ersetzt werden:

echo '<select title="'.$this->qlayerset[$i]['attributes']['alias'][$j].'"  style="font-size: '.$this->user->rolle->fontsize_gle.'px" name="'.$this->qlayerset[$i]['Layer_ID'].';'.$this->qlayerset[$i]['attributes']['real_name'][$this->qlayerset[$i]['attributes']['name'][$j]].';'.$this->qlayerset[$i]['attributes']['table_name'][$this->qlayerset[$i]['attributes']['name'][$j]].';'.$this->qlayerset[$i]['shape'][$k][$this->qlayerset[$i]['attributes']['table_name'][$this->qlayerset[$i]['attributes']['name'][$j]].'_oid'].';'.$this->qlayerset[$i]['attributes']['form_element_type'][$j].';'.$this->qlayerset[$i]['attributes']['nullable'][$j].'">';

+ Anteilseigentum im ALB-Auszug 35

Das Anteilseigentum wird im Auszug 35 fälschlicherweise doppelt ausgegeben. Damit es richtig erscheint, muss in alb.php die Zeile 730

$pdf->addText($col1,$row-=24,$fontSize,$flst->Grundbuecher[$g]['zusatz_eigentuemer']);

gelöscht werden.


+ SubformembeddedPK bei mehreren Datensätzen

--Markus Hentschel 13:34, 7. Apr 2009 (CEST) Werden in der Layersuche mehrere Datensätze eines Layers mit einem "SubformembeddedPK"-Attribut aufgelistet, erscheint das "Embeddede" immer ganz oben im ersten gefundenen Datensatz.

--Rahn 15:42, 7. Apr 2009 (CEST) Zum Beheben des Fehlers müssen in der Datei embedded_subformPK.php alle Vorkommen von
$this->qlayerset[$i]['Layer_ID'].'_'.$k

durch

$this->qlayerset[$i]['Layer_ID'].$this->formvars['count'].'_'.$k

ersetzt werden (3 mal). Außerdem muss in generic_layer_editor_2.php vor die Zeile

echo $data;

diese Zeile eingefügt werden:

$data .= '&count='.$k;

+ Rasterlayer immer auswählbar

--Markus Hentschel 16:56, 6. Apr 2009 (CEST) Rasterlayer sind über den gesamten Maßstabsbereich auswählbar, obwohl sie auf einen bestimmten Maßstabsbereich eingegrenzt sind.

--Rahn 09:14, 7. Apr 2009 (CEST) Um den Fehler zu beheben, muss in kvwmap.php in der Funktion loadmap() die Zeile
if($this->class_load_level == 2 OR $layerset[$i]['requires'] != '' OR ($this->class_load_level == 1 AND $layerset[$i]['aktivStatus'] != 0)){

vor die Zeile

$layer->setProjection('+init=epsg:'.$layerset[$i]['epsg_code']); # recommended

verschoben werden.

+ "requires"-Layer werden nicht angezeigt

Layer, die über das "requires"-Feld an andere Layer gebunden sind, werden nicht angezeigt. Um den Fehler zu beheben muss in kvwmap.php in der Funktion loadmap() die Zeile

if($this->class_load_level == 2 OR ($this->class_load_level == 1 AND $layerset[$i]['status'] != 0)){

durch diese hier ersetzt werden:

if($this->class_load_level == 2 OR $layerset[$i]['requires'] != '' OR ($this->class_load_level == 1 AND $layerset[$i]['aktivStatus'] != 0)){

und außerdem in der Funktion read_layer() die Zeile

if($withClasses == 2 OR ($withClasses == 1 AND $rs['aktivStatus'] != '0')){

durch diese hier

if($withClasses == 2 OR $rs['requires'] != '' OR ($withClasses == 1 AND $rs['aktivStatus'] != '0')){

+ Fachschale Bodenrichtwerte

In der Fachschale Bodenrichtwerte haben sich ein paar Fehler eingeschlichen. Um die Fehler zu beheben, muss in kvwmap.php in der Funktion bodenRichtWertErfassung() die Zeile

$this->verfahren = $bodenrichtwertzone->getVerfahren();

gelöscht werden.

Außerdem muss in der Datei SVG_polygon_and_point.php nach der Zeile

<input name="result" type="hidden" value="">

diese Zeile eingefügt werden:

<input name="area" type="hidden" value="">

+ Fehlermeldung "Call to a member function setMetaData() on a non-object"

Es kann sein, dass bei einigen obige Fehlermeldung auftritt. Zum Beheben des Fehlers muss in kvwmap.php in den Funktionen read_layer() und read_RollenLayer() jeweils ein DISTINCT eingefügt werden. Also so:

SELECT DISTINCT ...

Version 1.7.0

+ Drehung der Karte beim Drucken auch ohne PHP neu zu kompilieren

Dies ist zwar kein richtiger kvwmap-Bug aber passt hier wohl trotzdem am besten rein. Für die Drehung der Karte beim Drucken war es bisher immer erforderlich, dass das PHP mit einer bestimmten GD-Bibliothek kompiliert sein musste. Eine andere Möglichkeit besteht darin, die Drehung des Kartenbildes mit ImageMagick zu machen. Dazu muss man ImageMagick installiert haben (hat man ja wahrscheinlich schon für die Druckvorschau) und folgenden Code in allg_funktionen.php einfügen:

if(!function_exists('imagerotate')){
	function imagerotate($source_image, $angle, $bgd_color){
		$angle = 360-$angle; // GD rotates CCW, imagick rotates CW
    $file1 = IMAGEPATH.'imagick_' . rand( 10000,99999 ) . '.png';
    $file2 = IMAGEPATH.'imagick_' . rand( 10000,99999 ) . '.png';
    if(@imagepng($source_image, $file1)){
    	exec('convert -rotate ' . $angle . ' ' . $file1 . ' ' . $file2 );
      if(file_exists($file2)){
        $new_image = imagecreatefrompng($file2);
        unlink($file1);
        unlink($file2);
        return $new_image;
      }
      else{
      	echo 'Bildrotation mit ImageMagick fehlgeschlagen.';
      	return $source_image;
      }
    }
    else{
    	echo 'Kann temporäre Bilddateien nicht anlegen.';
    	return $source_image;
    }
	}
 }
 

+ Doppeltes Suchergebnis nach Klick auf Kartenausschnitt

Wenn man in der Sachdatenanzeige auf "Kartenausschnitt" klickt um auf das Objekt zu zoomen, wurden bisher oft 2 temporäre Rollenlayer angelegt. Das hat folgenden Grund: Obwohl man nur einmal auf den Link klickt, wird die URL des Links zweimal geladen, d.h. zweimal beim Server abgefragt. Das passiert im übrigen auch nicht nur bei diesem Link für den Kartenausschnitt, sondern bei allen Links in kvwmap, die eine URL aufrufen. Nur ist der Link für den Kartenausschnitt der einzige bei dem man es merkt, weil durch Aufruf dieser URL eben ein Rollenlayer angelegt wird. Und den sieht man dann in der Legende. Bei allen anderen Links bekommt man vom doppelten Aufruf gar nichts mit. Die Ursache für die doppelten Aufrufe scheint in einer Zeile in der gui.php zu liegen. Es ist die Zeile

<META http-equiv=Content-Type content="text/html; charset=<?php echo $this->user->rolle->charset; ?>">

Vor dieser Zeile steht noch etwas Javascript und das ist offenbar die Fehlerursache. Wenn man die Zeile vor das Javascript, also in die zweite Zeile der Datei verschiebt, tritt der Fehler nicht mehr auf.

+ Datensatz erzeugen nicht erlaubt

--Markus Hentschel 15:22, 11. Mär 2009 (CET) Wenn das "...Erstellen von neuen Datensätzen für diesen Layer in dieser Stelle nicht erlaubt..." ist, dann sollte der "neu"-Link im GLE nicht erscheinen.

+ Drucken von kleinen Maßstäben

Durch die Konstante MINSCALE kommt es beim Drucken mit sehr kleinen Maßstäben dazu, dass der Kartenausschnitt verfälscht wird. Um den Fehler zu beheben in der Datei kvwmap.php in der Funktion drawMap() die Zeile

if(MINSCALE != '' AND $this->map->scale < MINSCALE){

durch diese hier ersetzen:

if(MINSCALE != '' AND $this->map_factor == '' AND $this->map->scale < MINSCALE){

+ clientIpIsValide

--Markus Hentschel 15:58, 5. Feb 2009 (CET) In der Funktion clientIpIsValide muss es statt "$GUI->debug->write..." "$this->debug->write..." heißen.

+ Flächen mit weniger als drei Punkten

--Markus Hentschel 14:52, 5. Feb 2009 (CET) Beim Eckpunkte löschen müssen mindestens drei Punkte der Fläche übrigbleiben. Beim Versuch, dann noch einen Punkt zu löschen, muss eine Fehlermeldung kommen. Analog für Linienzüge.

+ Attributabhängige Auswahllisten

--Rahn 10:38, 29. Jan 2009 (CET) Damit die attributabhängigen Auswahllisten auch Zeichenketten unterstützen, muss folgendes in kvwmap.php angepasst werden:

In der Funktion add_attribute_values() muss die Zeile

$attributes['dependent_options'][$i][$k] = substr($options, 0, $req_start).$query_result[$k][$req]; # requires-Tag aus SQL entfernen und ein Array erzeugen, welches die korrekten SQLs jedem Datensatz zuordnet

durch diese hier ersetzt werden:

$attributes['dependent_options'][$i][$k] = substr($options, 0, $req_start)."'".$query_result[$k][$req]."'"; # requires-Tag aus SQL entfernen und ein Array erzeugen, welches die korrekten SQLs jedem Datensatz zuordnet

und die Zeile

$attributes['options'][$i] = substr($attributes['options'][$i], 0, $req_start).$attributes[$req]['enum_value'][0]; # requires-Tag aus SQL entfernen und den ersten Wert als Startwert nehmen

muss so lauten:

$attributes['options'][$i] = substr($attributes['options'][$i], 0, $req_start)."'".$attributes[$req]['enum_value'][0]."'"; # requires-Tag aus SQL entfernen und den ersten Wert als Startwert nehmen

In der Funktion get_select_list() muss die Zeile

$sql = substr($attributes['options'][0], 0, $req_start).$this->formvars['value']; # requires-Tag aus SQL entfernen und um den übergebenen Wert erweitern

durch diese hier ersetzt werden:

$sql = substr($attributes['options'][0], 0, $req_start)."'".$this->formvars['value']."'"; # requires-Tag aus SQL entfernen und um den übergebenen Wert erweitern

+ Historisch gewordene Grundbücher

--Andreas Thurm 12:57, 28. Jan 2009 (CET)Historisch gewordene Grundbücher werden bei der Suche nach Grundbüchern und bei der Flurstücksanzeige nicht als solche erkannt. Das führt dazu, dass bei der Flurstücksanzeige mehrere Bestände (die aktuellen und die ehmaligen Eigentümer) aufgelistet werden. Bei der Grundbuchblattsuche wird ein historisch gewordenes Grundbuch genau wie ein aktuelles behandelt. Ich kann nicht erkennen, das es historisch geworden ist. In der Tabelle alb_grundbuecher haben die betreffenden Grundbücher in der Spalte aktualitaetsnr den Eintrag 'hist'. Es wurde also beim Einlesen der ALB-Fortführung erkannt, dass das Grundbuch historisch geworden ist. Diese Info müsste dann auch bei der Grundbuchblatt- und Flurstücksanzeige ausgewertet werden.


+ Kartenausschnitt bei epsg != 2398

--Markus Hentschel 16:10, 19. Jan 2009 (CET) Wenn ich als Kartenprojektion einen anderen EPSG als den ALK-originären 2398 ausgewählt habe, dann wird nach einer Suche nicht an die richtige Stelle gezoomt, wenn ich auf Kartenausschnitt klicke.

+ Nachweissuche Stammnummer

--Markus Hentschel 08:31, 19. Jan 2009 (CET) Damit die Nachweissuche auch mit 9-stelligen Stammnummern funktioniert, muss das Attribut "suchstammnr" in der Tabelle "rolle_nachweise" auf varchar(9) erweitert werden.

+ Koordinatenzoom

--Eulenberger 13:47, 16. Jan 2009 (CET) Wenn man den "Koordinatenzoom" Button gedrückt hat erscheint eine Eingabemöglichkeit für Koordinaten, dort gibt es einen Button "Abbrechen", wenn der betätigt wird entsteht ein Laufzeitfehler in JScript mit der Meldung: Das Objekt unterstützt diese Eigenschaft oder Methode nicht. line: 919, column: 3. Die Meldung kann zwar mit OK bestätigt werden kommt dann aber immer wieder, da hilft nur "gewaltsames" schließen vom Browser.

--Markus Hentschel 08:35, 19. Jan 2009 (CET) Haben Sie wirklich die Version 1.7.0? Eigentlich sollte der Fehler behoben sein, siehe 1.6.8: Laufzeitfehlermeldung bei Koordinatenzoom

--Eulenberger 09:05, 26. Jan 2009 (CET) Haben die Version 1.6.9 mit ein paar Änderungen in Richtung 1.7.0, die Funktion war noch nicht geändert, jetzt gehts es. Danke

+ Karteninfo

--Markus Hentschel 08:33, 15. Jan 2009 (CET) Die Angabe des verwendeten Koordinatensystem ändert sich bei "Karteninfo" nicht, wenn man ein anderes Bezugssystem als GK 3° S42/83 verwendet.

+ Operator "befindet sich in"

--Markus Hentschel 14:18, 14. Jan 2009 (CET) Bei der Layersuche mittels "befindet sich in" wird folgendes SQL als Fehler angemeckert:

SELECT * FROM (SELECT bplan.oid AS bplan_oid, plan_id, id, aufstellende_gemeinde, gemeindenr_alt, gemeindename,
gemeindenr_neu, art, plan_nr, bezeichnung, zusatz, legende, code_stand, datum_stand, dat_stellungn_toeb,
dat_beteiligung4_1, dat_beteiligung4_2, dat_beteiligung4a_3, dat_plananzeige, dat_stellungn_ro,
dat_antrag_genehmigt, dat_bescheid, bescheid, bemerkung_extern, bemerkung_intern, flaeche_planangabe_ha,
flaeche_alk_ha, themennr, rok_nr, rok_relevant, letzte_akt, datenherr, erf_grundl, art_baulnutzung, anzahl,
anzahldoc, the_geom FROM bplan WHERE 1=1) as query WHERE 1=1 ('barth, stadt','pruchten') AND
(the_geom && Transform(geomfromtext('POLYGON((4517000 5982000, 4587000 5982000, 4587000 6041000,
4517000 6041000, 4517000 5982000))', 2398), 2398) OR the_geom IS NULL) AND (1 = 1 AND code_stand = '0'
OR code_stand = '1') LIMIT 20

Vor der Klammer mit den Suchbegriffen fehlt

AND lower(aufstellende_gemeinde) in

+ Geometrie mit nur zwei Punkten

--Markus Hentschel 13:52, 13. Jan 2009 (CET) Fehlerhafterweise lehnt kvwmap eine Fläche mit nur zwei Punkten nicht ab.

+ Layer löschen

--Markus Hentschel 08:12, 22. Dez 2008 (CET) Wenn man einen Layer löscht, werden die Einträge in den Tabellen layer_attributes, layer_attributes2stelle und u_rolle2used_layer nicht mit gelöscht.

+ Geometrie hinzufügen im GLE

--Markus Hentschel 09:48, 19. Dez 2008 (CET) Der Button "Geometrie hinzufügen" ist schon vorausgewählt, wenn ich eine existierende Geometrie bearbeiten will. Wenn ich dann in die Karte klicke, wird die Geometrie vom letzten vorhandenen Punkt aus weitergezeichnet, was bestimmt so nicht sein soll.

+ Grundbuchblattsuche | 5-stellige Grundbuchbezirksnummer

--Hschmidt 09:52, 18. Dez 2008 (CET)
Habe hier in der Datenbank als "Altlast des Liegenschaftskatasters" kurioserweise drei Grundbuchblätter, die in einem GB-Bezirk in Schleswig-Holstein liegen und einen 5-stelligen Schlüssel haben.
Beim Versuch das Blatt aufzurufen über die Grundbuchblattsuche kommt die Fehlermeldung "Angaben fehlerhaft: Die Bezirksnummer ist keine 6 Zeichen lang."

--Rahn 10:46, 18. Dez 2008 (CET) Damit der Test auch mit 5-stelligen Nummern funktioniert, muss man in kataster.php in der Funktion grundbuchblattSuchParameterPruefen() die Zeile
if (strlen($this->Bezirk)!=6) {

durch diese hier ersetzen:

if (strlen($this->Bezirk) < 5) {
--Markus Hentschel 09:55, 19. Dez 2008 (CET) Die Frage ist ja vielleicht, ob diese Fehlermeldung nicht vielleicht doch Sinn macht, um eben genau solche "Altlasten" aufzudecken und zu bereinigen.

+ Text mit Hochkomma im GLE

--Markus Hentschel 14:12, 17. Dez 2008 (CET)
Es ist nicht möglich, Texte, die Hochkommata enthalten, im GLE zu speichern.

+ CSV-Export und Kartenausschnitt

--Markus Hentschel 08:45, 17. Dez 2008 (CET)

  • Der CSV-Export von vielen Flurstücken aus der Sachsdatenanzeige ALB heraus geht im Firefox 3 nicht. Meldung im Downloadmanager: "Download wurde durch ihre Sicherheitzonen-Regeln blockiert". Auch nachdem ich den IE7 installiert habe und die Internetoptionen wie empfohlen geändert habe, kommt dieselbe Meldung.
  • Der Zoom auf viele markierte Flurstücke aus der Sachsdatenanzeige ALB heraus geht im Internet-Explorer 6 nicht. Meldung in der Statuszeile: "Ungültige Syntax". Im IE7 zeigt er die URL und dort ist zu sehen, dass der Aufruf nach dem 2046. Zeichen abgeschnitten wird.

--Rahn 11:31, 17. Dez 2008 (CET)

Mit Austausch dieser Datei in /snippets dürten beide Probleme behoben sein. Vorher aber noch in Flurstuecke_custom.php umbenennen.
--Rahn 14:05, 18. Dez 2008 (CET) Datei wurde nochmal geändert. Wer sie schon runtergeladen hatte, bitte nochmal runterladen.

+ Einige Fehler und Ungereimtheiten im ALB-Druck (30/35)

--Hschmidt 12:07, 4. Dez 2008 (CET)
Klassifizierung
Es kommt teilweise zu Ausgabe von Zeilen wie:

Klassifizierung            33
                 12206 m2  33-340 KREISSTRAßE
                           Bodsch K       17            EMZ  0

Habe mir erstmal damit geholfen die Einträge in der alb.php zu entfernen bzw. auskommentiert. Dieses sollte aber abgefangen werden, dass "Bodsch" (Bodenschätzung?) und "EMZ 0" (?) nicht ausgegeben werden, wenn keine Werte vorhanden sind.

Verfahren
Wenn zu einer ausführenden Stelle kein Verfahren eingetragen ist, z.B. wie hier zu den Wasser- und Bodenverbänden, sollte die Ausgabe der Zeile:

Verfahren                   ( )

unterdrückt werden.

Bestand
Bei der Auflistung sollten die Eigentümer aufgelistet werden wie: 1.1, 1.2 ... und nicht wie jetzt 1.01, 1.02 ... Das Geburtsdatum sollte rechts stehen und nicht unter dem Namen. Die Ausgabe überflüssiger Komma nach dem Namen wie z.B.:

Schmidt, Heinz,,, 

sollte unterdrückt werden.

Entstehung
In der Zeile sollte wenn keine Enstehung eingetragen ist statt:

Entstehung     /    -
Entstehung     2

ausgegeben werden wie im "Original ALB" das soll wohl heissen "vor Kolido" wie mir die Katasterleute gesagt haben :-)

Damit genug gemeckert ;-)

--Markus Hentschel 12:03, 19. Dez 2008 (CET) Das wird von meinen ALB-Fachleuten bestätigt. Zusätzlich haben sie noch zwei Fehler gefunden:
  • Bei sehr vielen Baulasten werden weitere Zeilen mit Baulasten "verschluckt".
  • Wenn gleichzeitig unverschlüsselte und verschlüsselte Lagebezeichnungen eingetragen sind, stehen nur die verschlüsselten da. Zumindest bei uns ist es im primären ALB so, dass in solchen Fällen alle Lagebezeichnungen da stehen.
--Karsten Daedelow 9:56, 09.01.09(dae)

Hier noch ein kleinerer Fehler in den ALB-Auszügen: Bei Eigentümerangaben kann es zu sehr langen Zeilen kommen ( z.B. Zeilen-Nr. 2 "Zusätze" werden dverse GB-Nrn aufgeführt). Diese sollten bei Zeilenende umgebrochen werden.

+ Liniengeometrie erzeugen

Versucht man im GLE in einem Linienlayer eine neue Geometrie zu erzeugen, erhält man bisher eine Fehlermeldung. Um den Fehler zu beheben, muss in new_layer_data.php folgende Zeile unten angefügt werden:

<input type="hidden" name="geomtype" value="<? echo $this->geomtype; ?>">

dann müssen in kvwmap.php in der Funktion neuer_Layer_Datensatz_speichern() die folgenden Zeilen

 if($this->formvars['newpathwkt'] != ''){
   $sql .= ", Transform(geomfromtext('".$this->formvars['newpathwkt']."', ".$client_epsg."), ".$layer_epsg.")";
 }
 elseif($this->formvars['newpath'] != ''){
   $spatial_pro = new spatial_processor($this->user->rolle, $this->database, $this->pgdatabase);
   $this->formvars['newpathwkt'] = $spatial_pro->composeMultipolygonWKTStringFromSVGPath($this->formvars['newpath']);
   $sql .= ", Transform(geomfromtext('".$this->formvars['newpathwkt']."', ".$client_epsg."), ".$layer_epsg.")";
 }
 elseif($this->formvars['loc_x'] != ''){
 

durch diese hier ersetzt werden:

 if($this->formvars['newpathwkt'] != ''){			# wenn WKT Geometrie vorhanden, kann diese direkt verwendet werden
   $sql .= ", Transform(geomfromtext('".$this->formvars['newpathwkt']."', ".$client_epsg."), ".$layer_epsg.")";
 }
 elseif($this->formvars['geomtype'] == 'POLYGON' OR $this->formvars['geomtype'] == 'MULTIPOLYGON' OR $this->formvars['geomtype'] == 'GEOMETRY'){		# wenn nicht, muss abhängig vom Geometrietyp, die WKT-Geometrie aus dem SVG erzeugt werden
   $spatial_pro = new spatial_processor($this->user->rolle, $this->database, $this->pgdatabase);
   $this->formvars['newpathwkt'] = $spatial_pro->composeMultipolygonWKTStringFromSVGPath($this->formvars['newpath']);
   $sql .= ", Transform(geomfromtext('".$this->formvars['newpathwkt']."', ".$client_epsg."), ".$layer_epsg.")";
 }
 elseif($this->formvars['geomtype'] == 'MULTILINESTRING'){
   $spatial_pro = new spatial_processor($this->user->rolle, $this->database, $this->pgdatabase);
   $this->formvars['newpathwkt'] = $spatial_pro->composeMultilineWKTStringFromSVGPath($this->formvars['newpath']);
   $sql .= ", Transform(geomfromtext('".$this->formvars['newpathwkt']."', ".$client_epsg."), ".$layer_epsg.")";
 }
 elseif($this->formvars['geomtype'] == 'POINT'){
 

und in der Funktion neuer_Layer_Datensatz() nach der Zeile

$geomtype = $this->qlayerset[0]['attributes']['geomtype']['the_geom'];

diese Zeile eingefügt werden:

$this->geomtype = $geomtype;

+ Layersuche

In der Layersuche hat sich noch ein Fehler eingeschlichen, sodass die Operatoren > und < nicht funktionieren. Um den Fehler zu beheben, müssen in kvwmap.php in der Funktion GenerischeSuche_Suchen() folgende Zeilen

 if($this->formvars['value_'.$layerset[0]['attributes']['name'][$i]] != '' OR $this->formvars['operator_'.$layerset[0]['attributes']['name'][$i]] == 'IS NULL' OR $this->formvars['operator_'.$layerset[0]['attributes']['name'][$i]] == 'IS NOT NULL'){
   $sql_where .= ' AND LOWER(query.'.$layerset[0]['attributes']['name'][$i].') '.$this->formvars['operator_'.$layerset[0]['attributes']['name'][$i]].' ';
   if($this->formvars['operator_'.$layerset[0]['attributes']['name'][$i]] != 'IN' AND $this->formvars['operator_'.$layerset[0]['attributes']['name'][$i]] != 'IS NULL' AND $this->formvars['operator_'.$layerset[0]['attributes']['name'][$i]] != 'IS NOT NULL'){
     $sql_where.='LOWER(\''.$this->formvars['value_'.$layerset[0]['attributes']['name'][$i]].'\')';
   }
   else{
     if($this->formvars['operator_'.$layerset[0]['attributes']['name'][$i]] == 'IN')
       $sql_where .= '('.strtolower($this->formvars['value_'.$layerset[0]['attributes']['name'][$i]]).')';
   }
 }
 

durch diese hier ersetzt werden:

 if($this->formvars['value_'.$layerset[0]['attributes']['name'][$i]] != '' OR $this->formvars['operator_'.$layerset[0]['attributes']['name'][$i]] == 'IS NULL' OR $this->formvars['operator_'.$layerset[0]['attributes']['name'][$i]] == 'IS NOT NULL'){
   if($this->formvars['operator_'.$layerset[0]['attributes']['name'][$i]] == 'LIKE' OR $this->formvars['operator_'.$layerset[0]['attributes']['name'][$i]] == 'NOT LIKE'){
     $sql_where .= ' AND LOWER(query.'.$layerset[0]['attributes']['name'][$i].') '.$this->formvars['operator_'.$layerset[0]['attributes']['name'][$i]].' ';
     $sql_where.='LOWER(\''.$this->formvars['value_'.$layerset[0]['attributes']['name'][$i]].'\')';
   }
   else{
     if($this->formvars['operator_'.$layerset[0]['attributes']['name'][$i]] == 'IN'){
       $sql_where .= '('.strtolower($this->formvars['value_'.$layerset[0]['attributes']['name'][$i]]).')';
     }
     else{
       $sql_where .= ' AND query.'.$layerset[0]['attributes']['name'][$i].' '.$this->formvars['operator_'.$layerset[0]['attributes']['name'][$i]].' ';
       $sql_where.='\''.$this->formvars['value_'.$layerset[0]['attributes']['name'][$i]].'\'';
     }
   }
 }
 


+ Sachdatenabfrage auf geänderte Geometrie

--Markus Hentschel 15:08, 20. Nov 2008 (CET) Wenn ich in "data" the_geom noch irgendwie bearbeite (z.B. so: "... translate(the_geom,-126.26,-45.45) as the_geom..."), dann funktioniert die Sachdatenabfrage in der Karte nicht am angezeigten Ort des Objekts. Am originalen Ort (also da, wo the_geom tatsächlich ist) kriege ich dagegen das Objekt zu fassen.

--Rahn 15:42, 21. Nov 2008 (CET) Das liegt daran, dass bei der Sachdatenabfrage das Pfad-Statement verwendet wird.
--Markus Hentschel 08:07, 24. Nov 2008 (CET) Du hast Recht, wenn ich the_geom auch im pfad modifiziere, klappts wieder mit der Sachdatenabfrage. Wenn ich aber ein Objekt über die Layersuche auswähle, habe ich das Problem wieder.
--Markus Hentschel 12:09, 19. Dez 2008 (CET) Das Problem beruhte auf suboptimalen Parametern in proj4 und kann deswegen auch anders gelöst werden.

+ Flurstücksdatenanzeige ohne Klassifizierung

--Hschmidt 14:48, 20. Nov 2008 (CET)
Die Ausgabe der Flurstücksdaten über die gebräuchlichen Snippets gibt keine Angaben über die "Klassifizierung" aus. Das pfad-statement des Flurstückslayers scheint i.O. und die Layerattribut-Rechteverwaltung listet die Klassifizierung auch auf! Die Daten werden jedoch über den ALB-Druck ausgegeben. Das gleiche ist bei der Version 1.6.9!

- Kein Drucken von WMS

--Markus Hentschel 09:43, 13. Nov 2008 (CET) Wenn externe WMS in die Stelle eingebunden werden, kommt bei der Druckvorschau oder bei go=Druckrahmen folgende Fehlermeldung (egal ob die WMS-Layer an oder aus sind):

Fatal error: [MapServer Error]: msAddImageSymbol(): Error opening image file /srv/www/var/data/MapFiles/Mischwald_Bild. in /srv/www/htdocs/kvwmap/class/kvwmap.php on line 3838

Workaround: In kvwmap.php den ganzen Abschnitt unterhalb von "Schritt 1)" ($extent=$this->map->extent;) bis oberhalb von "$this->drawMap();" auskommentieren.

+ Sachdatenanzeige und CSV-Export

Damit die Blätterfunktion der Sachdatenanzeige auch im Internet Explorer funktioniert, müssen in der Datei sachdatenanzeige.php in folgenden Zeilen

 #if($this->formvars['qLayer'.$this->qlayerset[$i]['Layer_ID']] == 1){
   echo '<input name="qLayer'.$this->qlayerset[$i]['Layer_ID'].'" type="hidden" value="1">';
   echo '<input name="offset_'.$this->qlayerset[$i]['Layer_ID'].'" type="hidden" value="'.$this->formvars['offset_'.$this->qlayerset[$i]['Layer_ID']].'">';
   echo '<input name="sql_'.$this->qlayerset[$i]['Layer_ID'].'" type="hidden" value="'.$this->qlayerset[$i]['sql'].'">';
 #}
 

die beiden # entfernt werden.

Damit danach auch noch der CSV-Export für alle Treffer funktioniert, muss in der gleichen Datei hinter

<input name="operator_'.$this->qlayerset[0]['attributes']['name'][$j].'" type="hidden" value="'.$this->formvars['operator_'.$this->qlayerset[0]['attributes']['name'][$j]].'">

diese Zeile eingefügt werden:

<input name="sql_'.$this->formvars['selected_layer_id'].'" type="hidden" value="'.$this->qlayerset[0]['sql'].'">

+ Printversion

Die neue Druckansicht für die Sachdatenanzeige funktioniert zwar, aber die dafür verwendete Datei printversion.php liegt falsch im Verzeichnis layouts. Das hat zur Folge, dass diese Datei in der Stellenwahl fälschlicherweise als GUI auswählbar ist. Um den Fehler zu beheben, einfach die Datei in den Ordner snippets verschieben und in kvwmap.php in der Funktion output() die Zeile

include (LAYOUTPATH.'printversion.php');

so anpassen:

include (LAYOUTPATH.'snippets/printversion.php');

+ Ausgabe von nicht editierbaren Auswahlfeldern im GLE

Auswahlfelder, die ihre Optionen aus einem SQL-Statement holen, erlauben es ja einen output anzuzeigen und einen value zu speichern. Damit auch bei nicht editierbaren Auswahlfeldern der output erscheint und nicht der value, muss in generic_layer_editor_2.php folgender Abschnitt

case 'Auswahlfeld' : {
   if($this->qlayerset[$i]['attributes']['real_type'][$this->qlayerset[$i]['attributes']['name'][$j]] == 'geometry' OR $this->qlayerset[$i]['attributes']['privileg'][$j] == '0' OR $lock[$k]){
     $auswahlfeld_value=$this->qlayerset[$i]['shape'][$k][$this->qlayerset[$i]['attributes']['name'][$j]];
     $auswahlfeld_value_laenge=strlen($auswahlfeld_value);
     echo '<input readonly style="background-color:#e8e3da;" size="'.$auswahlfeld_value_laenge.'" type="text" name="'.$this->qlayerset[$i]['Layer_ID'].';'.$this->qlayerset[$i]['attributes']['real_name'][$this->qlayerset[$i]['attributes']['name'][$j]].';'.$this->qlayerset[$i]['attributes']['table_name'][$this->qlayerset[$i]['attributes']['name'][$j]].';'.$this->qlayerset[$i]['shape'][$k][$this->qlayerset[$i]['attributes']['table_name'][$this->qlayerset[$i]['attributes']['name'][$j]].'_oid'].';'.$this->qlayerset[$i]['attributes']['form_element_type'][$j].'" value="'.$auswahlfeld_value.'">';
   }

durch diesen hier ersetzt werden:

case 'Auswahlfeld' : {
   if($this->qlayerset[$i]['attributes']['real_type'][$this->qlayerset[$i]['attributes']['name'][$j]] == 'geometry' OR $this->qlayerset[$i]['attributes']['privileg'][$j] == '0' OR $lock[$k]){
     if(is_array($this->qlayerset[$i]['attributes']['dependent_options'][$j])){		# mehrere Datensätze und ein abhängiges Auswahlfeld --> verschiedene Auswahlmöglichkeiten
       for($e = 0; $e < count($this->qlayerset[$i]['attributes']['enum_value'][$j][$k]); $e++){
         if($this->qlayerset[$i]['attributes']['enum_value'][$j][$k][$e] == $this->qlayerset[$i]['shape'][$k][$this->qlayerset[$i]['attributes']['name'][$j]]){
	   $auswahlfeld_output = $this->qlayerset[$i]['attributes']['enum_output'][$j][$k][$e];
	   $auswahlfeld_output_laenge=strlen($auswahlfeld_output);
	   break;
         }
       }
     }
     else{
       for($e = 0; $e < count($this->qlayerset[$i]['attributes']['enum_value'][$j]); $e++){
         if($this->qlayerset[$i]['attributes']['enum_value'][$j][$e] == $this->qlayerset[$i]['shape'][$k][$this->qlayerset[$i]['attributes']['name'][$j]]){
           $auswahlfeld_output = $this->qlayerset[$i]['attributes']['enum_output'][$j][$e];
	   $auswahlfeld_output_laenge=strlen($auswahlfeld_output);
	   break;
         }
       }
     }
     echo '<input readonly style="background-color:#e8e3da;" size="'.$auswahlfeld_output_laenge.'" type="text" name="'.$this->qlayerset[$i]['Layer_ID'].';'.$this->qlayerset[$i]['attributes']['real_name'][$this->qlayerset[$i]['attributes']['name'][$j]].';'.$this->qlayerset[$i]['attributes']['table_name'][$this->qlayerset[$i]['attributes']['name'][$j]].';'.$this->qlayerset[$i]['shape'][$k][$this->qlayerset[$i]['attributes']['table_name'][$this->qlayerset[$i]['attributes']['name'][$j]].'_oid'].';'.$this->qlayerset[$i]['attributes']['form_element_type'][$j].'" value="'.$auswahlfeld_output.'">';
   }

+ Referenzkarte im Druck bei Nicht-Standard-SRS

--Markus Hentschel 12:27, 21. Okt 2008 (CEST)-- Wenn ich ein anderes als das für die Stelle als Standard definierte Koordinatensystem auswähle und anschließend die Karte drucke, bekomme ich kein oder ein falsch gelagertes Bild in der Referenzkarte - dort soll eine topographische Karte angezeigt werden, die als WMS eingebunden wird. Im entsprechenden Refmapfile steht in der connection nämlich die SRS drin und die verändert sich nicht, wenn der User das Koordinatensystem der Stelle wechselt.

--Rahn 15:58, 6. Apr 2009 (CEST) Um den Fehler zu beheben, müssen in kvwmap.php in der Funktion createReferenceMap() nach der Zeile
$refmap->setextent($minx,$miny,$maxx,$maxy);

folgende Zeilen hinzugefügt werden:

$projFROM = ms_newprojectionobj("init=epsg:".$this->user->rolle->epsg_code);
$projTO = ms_newprojectionobj("init=epsg:".EPSGCODE);
$refmap->extent->project($projFROM, $projTO);

+ ZoomToMaxLayerExtent

--Markus Hentschel 12:27, 21. Okt 2008 (CEST) Beim Klick in der Legende auf "volle Layerausdehnung" kann ich den maximalen Extent der Stelle verlassen, was so sicher nicht gewollt ist.

- wldge2sql Grundausstattung

--Markus Hentschel 12:29, 21. Okt 2008 (CEST) Das Lesen einer Grundausstattung erzeugt keinen Eintrag in der Tabelle alb_fortfuehrungen.

--SigridP 10:45, 23. Okt 2008 (CEST)Auch die abschließende Übersicht (Anzahl der eingelesenen Datensätze usw.)wird nicht erstellt.

+ Anpassungen in der fgs Version

config.default.php

Der Installationspath in der config.default.php, welche man dann später als config.php für kvwmap verwenden soll enthält einen Fehler in der Konstantendefinition für INSTALLPATH define('INSTALLPATH','/home/fgs/fgs'); ersetzen durch

define('INSTALLPATH','/home/fgs/fgs/');

Die Defaulteinstellung für die URL würde ich auf localhost setzen oder localhost:8080 Zur Freuder derjenigen, die erstmal local und mit 8080 anfangen.

define('URL','http://localhost:8080/');

Sonst gehen die AJAX Sachen nicht, Z.B. der GLE. Nächste Sache ist, der Defaultpfad für die Grafiken der sollte folgendermaßen aussehen:

define ('GRAPHICSPATH','graphics/');

layouts/sql_dumps/mysql_install_admin.sql

Die Version auf 170 setzen und in den folgenden Version auf die aktuelle.

SET @pg_dbname='kvwmapsp170';

In der Angabe für die Stelle muss der Name für das Wappen stz.png lauten nicht stz.gif.

INSERT INTO `stelle` ( `ID` , `Bezeichnung` , `start` , `stop` , `minxmax` , `minymax` , `maxxmax`,
`maxymax` , `Referenzkarte_ID` , `Authentifizierung` , `ALB_status` , `wappen` , `alb_raumbezug` ,
`alb_raumbezug_wert` )
VALUES ( @stelle_id, 'Administration', '0000-00-00', '0000-00-00', '4440000', '5920000',
'4560000', '6080000', '1', '1', '30', 'stz.png', , );



Ältere Versionen