[Mapbender-commits] r9053 - in trunk/mapbender: conf http/geoportal

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Wed Aug 27 02:33:14 PDT 2014


Author: verenadiewald
Date: 2014-08-27 02:33:13 -0700 (Wed, 27 Aug 2014)
New Revision: 9053

Added:
   trunk/mapbender/conf/gazetteerFlst.conf
   trunk/mapbender/http/geoportal/mb_gazetteerFlst.php
   trunk/mapbender/http/geoportal/mb_gazetteerFlst_server.php
Log:
gazetteer for Flurstuecke (Geoportal SL)

Added: trunk/mapbender/conf/gazetteerFlst.conf
===================================================================
--- trunk/mapbender/conf/gazetteerFlst.conf	                        (rev 0)
+++ trunk/mapbender/conf/gazetteerFlst.conf	2014-08-27 09:33:13 UTC (rev 9053)
@@ -0,0 +1,24 @@
+<?php
+    $wfsUrl = "";
+    $authUserName = "";
+    $authUserPassword = "";
+    $nameSpace = "";
+    #$nameSpace = "xmlns(app=http://www.deegree.org/app)";
+    
+    $featuretypeGmkNr = "app:GMK_NR";
+    $gmkNrAttr = "app:ID";
+    $gmkNameAttr = "app:NAME";
+    
+    $featuretypeFlur = "app:FLUR_NR";
+    $gmkNrAttrFlur = "app:GMK_NR";
+    
+    $featuretypeFlz = "app:FLZ";
+    $gmkNrAttrFlz = "app:GMK_NR";
+    $flurAttrFlz = "app:FLUR_NR";
+    
+    $featuretypeFln = "app:FLN";
+    $gmkNrAttrFlz = "app:GMK_NR";
+    $flurAttrFlz = "app:FLUR_NR";
+    $flzAttr = "app:FLZ";
+    $flnAttr = "app:ID";
+?>

Added: trunk/mapbender/http/geoportal/mb_gazetteerFlst.php
===================================================================
--- trunk/mapbender/http/geoportal/mb_gazetteerFlst.php	                        (rev 0)
+++ trunk/mapbender/http/geoportal/mb_gazetteerFlst.php	2014-08-27 09:33:13 UTC (rev 9053)
@@ -0,0 +1,237 @@
+<?php
+/**
+ * Package: mb_gazetteerFlst.php
+ *
+ * Description:
+ * Gazetteer for Flurstücke
+ *
+ *
+ * Files:
+ *  - http/geoportal/mb_gazetteerFlst.php
+ *  - http/geoportal/mb_gazetteerFlst_server.php
+ *  - conf/gazetteerFlst.conf
+ *
+ * SQL:
+ * > INSERT INTO gui_element(fkey_gui_id, e_id, e_pos, e_public, e_comment, e_title, e_element, e_src, e_attributes, e_left, e_top, e_width, e_height, e_z_index, e_more_styles, e_content, e_closetag, e_js_file, e_mb_mod, e_target, e_requires, e_url) VALUES('<gui_id>','gazetteerFlst',2,1,'gazetteer for Flurstuecke','Flurstücksuche','div','','',1,1,1,1,4,'visibility:hidden;padding-left:10px;','<div class="ui-widget">
+ * > 	<label for="GMK_NAME">Gemarkungsname:</label>
+ * >	<input title="Pflichtfeld, bitte geben Sie mindestens 3 Anfangsbuchstaben im Feld Gemarkungsname ein, nach Auswahl wird die Gemarkungsnummer automatisch eingetragen." id="GMK_NAME" style="width:120px;"/><span title="Pflichtfeld, bitte geben Sie mindestens 3 Anfangsbuchstaben im Feld Gemarkungsname ein, nach Auswahl wird die Gemarkungsnummer automatisch eingetragen.">*</span>
+ * > </div>
+ * > <div class="ui-widget">
+ * >	<label for="GMK_NR">Gemarkungsnummer:</label>
+ * >	<input id="GMK_NR" style="width:120px;"/>
+ * > </div>
+ * > <div class="ui-widget">
+ * >	<label style="width:180px;" for="FLUR_NR">Flurnummer:</label>
+ * >	<select id="FLUR_NR">
+ * >		<option value="">---</option>		
+ * >	</select>
+ * > </div>
+ * > <div class="ui-widget">
+ * >	<label style="width:180px;" for="FLZ">Zähler/Nenner</label>
+ * >	<select id="FLZ">
+ * >		<option value="">---</option>		
+ * >	</select>
+ * >	<select id="FLN">
+ * >		<option value="">---</option>		
+ * >	</select>
+ * > </div>
+ * ><div class="ui-widget">
+ * >	<input disabled="disabled" style="margin-top:5px" type="button" value="Gehe zu" id="zoomToObj" />
+ * >	<input style="margin-top:5px" type="button" value="Auswahl aufheben" id="removeSelection" />
+ * > </div>','div','../geoportal/mb_gazetteerFlst.php','','mapframe1,overview','wz-graphics','');
+ * > INSERT INTO gui_element_vars(fkey_gui_id, fkey_e_id, var_name, var_value, context, var_type) VALUES('<gui_id>', 'gazetteerFlst', 'searchCss', '.ui-autocomplete-loading { background: white url(''../img/indicator_wheel.gif'') right center no-repeat; }', '' ,'text/css');
+ *
+ *
+ * License:
+ * Copyright (c) 2009, Open Source Geospatial Foundation
+ * This program is dual licensed under the GNU General Public License
+ * and Simplified BSD license.
+ * http://svn.osgeo.org/mapbender/trunk/mapbender/license/license.txt
+ */
+
+require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+include '../include/dyn_js.php';
+?>
+
+Mapbender.events.init.register(function () {
+	//lösche alle abhängigen Eingaben bei Klick in Feld gemarkungsschlüssel
+	$("#GMK_NR").click(function () {
+		$("#GMK_NR").val("");
+		$("#GMK_NAME").val("");
+		$("#FLUR_NR").empty().append("<option value=''>---</option>");
+		$("#FLZ").empty().append("<option value=''>---</option>");
+		$("#FLN").empty().append("<option value=''>---</option>");
+		$("#zoomToObj").attr("disabled","true");
+	});
+	
+	//lösche alle abhängigen Eingaben bei Klick in Feld gemarkungsname
+	$("#GMK_NAME").click(function () {
+		$("#GMK_NR").val("");
+		$("#GMK_NAME").val("");
+		$("#FLUR_NR").empty().append("<option value=''>---</option>");
+		$("#FLZ").empty().append("<option value=''>---</option>");
+		$("#FLN").empty().append("<option value=''>---</option>");
+		$("#zoomToObj").attr("disabled","true");
+	});
+	
+	//lösche alle Eingaben + Highlight
+	$("#removeSelection").click(function () {
+		$("#GMK_NR").val("");
+		$("#GMK_NAME").val("");
+		$("#FLUR_NR").empty().append("<option value=''>---</option>");
+		$("#FLZ").empty().append("<option value=''>---</option>");
+		$("#FLN").empty().append("<option value=''>---</option>");
+		$("#zoomToObj").attr("disabled","true");
+	});
+	
+	//autocomplete auf Gemarkungsschlüssel
+	$("#GMK_NR").autocomplete({
+		disabled: false,
+		source: "../geoportal/mb_gazetteerFlst_server.php?command=getGmkNr",
+		minLength: 3,
+		select: function( event, ui ) {
+			$("#GMK_NR").val(ui.item.value);
+			$("#GMK_NAME").val(ui.item.gmkName);
+			
+			//selektiere Fluren
+			getFluren();
+		}
+	});
+	
+	//autocomplete auf Gemarkung
+	$("#GMK_NAME").autocomplete({
+		disabled: false,
+		source: "../geoportal/mb_gazetteerFlst_server.php?command=getGmkName",
+		minLength: 3,
+		select: function( event, ui ) {
+			$("#GMK_NAME").val(ui.item.value);
+			$("#GMK_NR").val(ui.item.gmkNr);
+			
+			//selektiere Fluren
+			getFluren();
+		}
+	});	
+	
+	//auf Auswahl der Flur selektiere Flz aus WFS
+	$("#FLUR_NR").change(function () {
+		getFlz();
+	});
+	
+	//auf Auswahl Flz selektiere Fln aus WFS
+	$("#FLZ").change(function () {
+		getFln();
+	});
+	
+	//auf Klick Gehe zu zoome auf hinterlegte Geometrie
+	$("#zoomToObj").click(function () {
+		$.post("../geoportal/mb_gazetteerFlst_server.php", {
+                command : "getGeomForFlst",
+        		gmkNr : $("#GMK_NR").val(),
+        		flurNr : $("#FLUR_NR").val(),
+                flz : $("#FLZ").val(),
+                fln : $("#FLN").val(),
+                srs : Mapbender.modules.mapframe1.getSRS()
+            }, function (jsCode, status) {
+            if(jsCode) {	
+            	var coord = jsCode.split(" ");
+            	mb_repaintScale('mapframe1',coord[0],coord[1],2500);
+            	highlight(coord[0],coord[1]);
+            	//zoom("mapframe1",true,100,coord[0], coord[1]);
+            }
+        });	
+    });
+	
+	function highlight(x,y){
+        parent.mb_showHighlight("mapframe1",x,y);
+        parent.mb_showHighlight("overview",x,y);
+    } 
+	
+	function getFluren() {
+		$.post("../geoportal/mb_gazetteerFlst_server.php", {
+                command : "getFluren",
+        		gmkNr : $("#GMK_NR").val()
+            }, function (jsCode, status) {
+            if(jsCode) {	
+            	if(typeof jsCode == "object") {
+            		$("#FLUR_NR").empty();
+            		for (var i = 0; i < jsCode.length; i++) {
+						var optionVal = jsCode[i];
+		                var optionName = jsCode[i];
+		                var optionHtml = "<option value='" + optionVal + "'>" + optionName + "</option>";
+		                $("#FLUR_NR").append(optionHtml);
+				 	}
+				 	
+				 	getFlz();
+            	}
+            	else {
+            		alert(jsCode);
+                    return false;
+            	}
+           	}
+        });	
+	}
+	
+	function getFlz() {
+		$.post("../geoportal/mb_gazetteerFlst_server.php", {
+                command : "getFlz",
+                gmkNr : $("#GMK_NR").val(),
+                flurNr : $("#FLUR_NR").val()
+            }, function (jsCode, status) {
+            if(jsCode) {	
+            	if(typeof jsCode == "object") {
+            		$("#FLZ").empty();
+            		for (var i = 0; i < jsCode.length; i++) {
+						var optionVal = jsCode[i];
+		                var optionName = jsCode[i];
+		                var optionHtml = "<option value='" + optionVal + "'>" + optionName + "</option>";
+		                $("#FLZ").append(optionHtml);
+				 	}
+				 	
+				 	getFln();
+            	}
+            	else {
+            		alert(jsCode);
+                    return false;
+            	}
+           	}
+        });
+	}
+	
+	function getFln() {
+		$.post("../geoportal/mb_gazetteerFlst_server.php", {
+                command : "getFln",
+                gmkNr : $("#GMK_NR").val(),
+                flurNr : $("#FLUR_NR").val(),
+                flz : $("#FLZ").val()
+            }, function (jsCode, status) {
+            if(jsCode) {	
+            	if(typeof jsCode == "object") {
+            		$("#FLN").empty();
+            		for (var i = 0; i < jsCode.length; i++) {
+            			if(jsCode[i].id) {
+    						var optionVal = jsCode[i].id;
+    		                var optionName = jsCode[i].id;
+    		                var optionHtml = "<option value='" + optionVal + "'>" + optionName + "</option>";
+    		                $("#FLN").append(optionHtml);
+		                }
+		                else {
+		                	var optionHtml = "<option value=''>---</option>";
+    		                $("#FLN").append(optionHtml);
+		                }
+				 	}
+				 	$("#zoomToObj").removeAttr("disabled");
+				}
+            	else {
+            		alert(jsCode);
+                    return false;
+            	}
+           	}
+        });
+	}
+	
+	this.openSearchDialogFlst = function () {
+		alert("öffnen");
+	};
+});
+
+

Added: trunk/mapbender/http/geoportal/mb_gazetteerFlst_server.php
===================================================================
--- trunk/mapbender/http/geoportal/mb_gazetteerFlst_server.php	                        (rev 0)
+++ trunk/mapbender/http/geoportal/mb_gazetteerFlst_server.php	2014-08-27 09:33:13 UTC (rev 9053)
@@ -0,0 +1,305 @@
+<?php
+/*
+ * License:
+ * Copyright (c) 2009, Open Source Geospatial Foundation
+ * This program is dual licensed under the GNU General Public License
+ * and Simplified BSD license.
+ * http://svn.osgeo.org/mapbender/trunk/mapbender/license/license.txt
+ */
+
+require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
+require_once(dirname(__FILE__)."/../classes/class_administration.php");
+require_once(dirname(__FILE__)."/../classes/class_json.php");
+include(dirname(__FILE__)."/../geoportal/class_gml2.php");
+include(dirname(__FILE__) . "/../../conf/gazetteerFlst.conf");
+
+//db connection
+$con = db_connect($DBSERVER,$OWNER,$PW) or die ("Error while connecting database $dbname");
+db_select_db(DB,$con);
+
+// get data from POST
+$command = $_REQUEST['command'];
+
+$checkCommand = array(
+					"getGmkNr",
+					"getGmkName",
+                    "getFluren",
+                    "getFlz",
+                    "getFln",
+                    "getGeomForFlst"
+				);
+
+if(!in_array($command, $checkCommand)) {
+    echo "Ungültiger Befehl";
+    die();
+}
+
+$json = new Mapbender_JSON();
+
+function getGeoJson ($featureType, $filter) {
+    global $wfsUrl, $nameSpace, $authUserName, $authUserPassword;
+    $admin = new administration();
+
+    $wfsUrl = $wfsUrl . "&NAMESPACE=" . $nameSpace. "&username=" . $authUserName . "&password=" . $authUserPassword . "&typeName=" . $featureType."&filter=";
+	$req = urldecode($wfsUrl).urlencode($admin->char_decode(stripslashes($filter)));
+	#echo $req;
+	#$e = new mb_exception(urldecode($req));
+	
+	$mygml = new gml2();
+	
+	#$auth = array();
+	#$auth['username'] = $authUserName; 
+	#$auth['password'] = $authUserPassword;
+	#$auth['auth_type'] = "basic";
+	$mygml->parseFile($req);
+	#$mygml->parseGeometry($req);
+		
+	header("Content-type:application/x-json; charset=utf-8");
+	$geoJson = $mygml->toGeoJSON();
+	
+	$jsonObj = json_decode($geoJson);
+	return $jsonObj;
+}
+
+function getGeomFromXml ($featureType, $filter,$srs) {
+    global $wfsUrl, $nameSpace, $authUserName, $authUserPassword;
+    $admin = new administration();
+
+    $wfsUrl = $wfsUrl . "&NAMESPACE=" . $nameSpace. "&username=" . $authUserName . "&password=" . $authUserPassword . "&typeName=" . $featureType."&srsName=".$srs."&filter=";
+	$req = urldecode($wfsUrl).urlencode($admin->char_decode(stripslashes($filter)));
+	#echo $req;
+	#$e = new mb_exception(urldecode($req));
+	
+	$mygml = new gml2();
+	
+	#$auth = array();
+	#$auth['username'] = $authUserName; 
+	#$auth['password'] = $authUserPassword;
+	#$auth['auth_type'] = "basic";
+	$geom = $mygml->parseGeometry($req);
+	#$e = new mb_exception(implode("----",$geom));	
+	#header("Content-type:application/x-json; charset=utf-8");
+	#$geoJson = $mygml->toGeoJSON();
+	
+	#$jsonObj = json_encode(array("geom" => implode(",",$geom)));
+	return implode(",",$geom);
+}
+
+if($command == "getGmkNr") {
+	$searchString = $_REQUEST['term'];
+	$pattern = "/[a-z0-9]/i";
+	if (!preg_match($pattern, $searchString)) {
+		echo "Ungültiger Suchbegriff";
+        die();
+	}
+	
+    $searchFeaturetype = $featuretypeGmkNr;
+    $filter = '<Filter xmlns="http://www.opengis.net/ogc" xmlns:app="http://www.deegree.org/app"><PropertyIsLike wildCard="*" singleChar="?" escape="#">
+            				<PropertyName>' . $gmkNrAttr . '</PropertyName>
+                			<Literal>*' . $searchString . '*</Literal>
+        					</PropertyIsLike></Filter>';
+	
+	
+	$resultObj = getGeoJson($searchFeaturetype, $filter);
+	$resultArray = array();
+	
+    foreach($resultObj->features as $feature) {
+        $resultArray[] = array (
+            "id" => $feature->properties->ID,
+            "label" => $feature->properties->ID,
+            "value"   => $feature->properties->ID,
+            "gmkName" => $feature->properties->NAME
+        );
+    }
+    
+    header("Content-type:application/json; charset=utf-8");
+    echo json_encode($resultArray);
+}
+
+if($command == "getGmkName") {
+	$searchString = $_REQUEST['term'];
+	$pattern = "/[a-z0-9]/i";
+	if (!preg_match($pattern, $searchString)) {
+		echo "Ungültiger Suchbegriff";
+        die();
+	}
+	
+    $searchFeaturetype = $featuretypeGmkNr;
+    $filter = '<Filter xmlns="http://www.opengis.net/ogc" xmlns:app="http://www.deegree.org/app"><PropertyIsLike wildCard="*" singleChar="?" escape="#" matchCase="false">
+            				<PropertyName>' . $gmkNameAttr . '</PropertyName>
+                			<Literal>*' . $searchString . '*</Literal>
+        					</PropertyIsLike></Filter>';
+	
+	$resultObj = getGeoJson($searchFeaturetype, $filter);
+	$resultArray = array();
+	
+    foreach($resultObj->features as $feature) {
+        $resultArray[] = array (
+            "id" => $feature->properties->NAME,
+            "label" => $feature->properties->NAME,
+            "value"   => $feature->properties->NAME,
+            "gmkNr" => $feature->properties->ID
+        );
+    }
+    
+    header("Content-type:application/json; charset=utf-8");
+    echo json_encode($resultArray);
+}
+
+if($command == "getFluren") {
+	$gmkNr = $_REQUEST['gmkNr'];
+	$pattern = "/[0-9]/i";
+	if (!preg_match($pattern, $gmkNr)) {
+		echo "Ungültige Gemarkungsnr";
+        die();
+	}
+	
+    $searchFeaturetype = $featuretypeFlur;
+    $filter = '<Filter xmlns="http://www.opengis.net/ogc" xmlns:app="http://www.deegree.org/app"><PropertyIsEqualTo>
+            				<PropertyName>' . $gmkNrAttrFlur . '</PropertyName>
+                			<Literal>' . $gmkNr . '</Literal>
+        					</PropertyIsEqualTo></Filter>';
+		
+    $resultObj = getGeoJson($searchFeaturetype, $filter);
+	$resultArray = array();
+    foreach($resultObj->features as $feature) {
+        $resultArray[] = $feature->properties->NAME;
+    }
+    
+    header("Content-type:application/json; charset=utf-8");
+    sort($resultArray);
+    echo json_encode($resultArray);
+}
+
+if($command == "getFlz") {
+	$gmkNr = $_REQUEST['gmkNr'];
+	$flurNr = $_REQUEST['flurNr'];
+	$pattern = "/[0-9]/i";
+	if (!preg_match($pattern, $gmkNr)) {
+		echo "Ungültige Gemarkungsnr";
+        die();
+	}
+    if (!preg_match($pattern, $flurNr)) {
+		echo "Ungültige Flurnr";
+        die();
+	}
+	
+    $searchFeaturetype = $featuretypeFlz;
+    $filter = '<Filter xmlns="http://www.opengis.net/ogc" xmlns:app="http://www.deegree.org/app"><And>
+        	<PropertyIsEqualTo>
+        		<PropertyName>' . $gmkNrAttrFlz . '</PropertyName>
+                <Literal>' . $gmkNr . '</Literal>
+            </PropertyIsEqualTo>
+            <PropertyIsEqualTo>
+        		<PropertyName>' . $flurAttrFlz . '</PropertyName>
+                <Literal>' . $flurNr . '</Literal>
+            </PropertyIsEqualTo>
+        </And></Filter>';
+		
+    $resultObj = getGeoJson($searchFeaturetype, $filter);
+	$resultArray = array();
+    foreach($resultObj->features as $feature) {
+        $resultArray[] = $feature->properties->ID;
+    }
+    
+    header("Content-type:application/json; charset=utf-8");
+    $resultArray = array_unique($resultArray);
+    sort($resultArray);
+    echo json_encode($resultArray);
+}
+
+if($command == "getFln") {
+	$gmkNr = $_REQUEST['gmkNr'];
+	$flurNr = $_REQUEST['flurNr'];
+	$flz = $_REQUEST['flz'];
+	$pattern = "/[0-9]/i";
+	if (!preg_match($pattern, $gmkNr)) {
+		echo "Ungültige Gemarkungsnr";
+        die();
+	}
+    if (!preg_match($pattern, $flurNr)) {
+		echo "Ungültige Flurnr";
+        die();
+	}
+    if (!preg_match($pattern, $flz)) {
+		echo "Ungültiger Flz";
+        die();
+	}
+	
+    $searchFeaturetype = $featuretypeFln;
+    $filter = '<Filter xmlns="http://www.opengis.net/ogc" xmlns:app="http://www.deegree.org/app"><And>
+        	<PropertyIsEqualTo>
+        		<PropertyName>' . $gmkNrAttrFlz . '</PropertyName>
+                <Literal>' . $gmkNr . '</Literal>
+            </PropertyIsEqualTo>
+            <PropertyIsEqualTo>
+        		<PropertyName>' . $flurAttrFlz . '</PropertyName>
+                <Literal>' . $flurNr . '</Literal>
+            </PropertyIsEqualTo>
+            <PropertyIsEqualTo>
+        		<PropertyName>' . $flzAttr . '</PropertyName>
+                <Literal>' . $flz . '</Literal>
+            </PropertyIsEqualTo>
+        </And></Filter>';
+		
+    $resultObj = getGeoJson($searchFeaturetype, $filter);
+    #print_r($resultObj);
+    $resultArray = array();
+    foreach($resultObj->features as $feature) {
+        $resultArray[] = array("id" => $feature->properties->ID);
+        
+    }
+    
+    header("Content-type:application/json; charset=utf-8");
+    sort($resultArray);
+    echo json_encode($resultArray);
+}
+if($command == "getGeomForFlst") {
+	$gmkNr = $_REQUEST['gmkNr'];
+	$flurNr = $_REQUEST['flurNr'];
+	$flz = $_REQUEST['flz'];
+	$fln = $_REQUEST['fln'];
+	$srs = $_REQUEST['srs'];
+	$pattern = "/[0-9]/i";
+	if (!preg_match($pattern, $gmkNr)) {
+		echo "Ungültige Gemarkungsnr";
+        die();
+	}
+    if (!preg_match($pattern, $flurNr)) {
+		echo "Ungültige Flurnr";
+        die();
+	}
+    if (!preg_match($pattern, $flz)) {
+		echo "Ungültiger Flz";
+        die();
+	}
+    
+	if($fln != "") {
+    	$flnFilter = '<PropertyIsEqualTo>
+            		<PropertyName>' . $flnAttr . '</PropertyName>
+                    <Literal>' . $fln . '</Literal>
+                </PropertyIsEqualTo>';
+	}
+	
+    $searchFeaturetype = $featuretypeFln;
+    $filter = '<Filter xmlns="http://www.opengis.net/ogc" xmlns:app="http://www.deegree.org/app"><And>
+        	<PropertyIsEqualTo>
+        		<PropertyName>' . $gmkNrAttrFlz . '</PropertyName>
+                <Literal>' . $gmkNr . '</Literal>
+            </PropertyIsEqualTo>
+            <PropertyIsEqualTo>
+        		<PropertyName>' . $flurAttrFlz . '</PropertyName>
+                <Literal>' . $flurNr . '</Literal>
+            </PropertyIsEqualTo>
+            <PropertyIsEqualTo>
+        		<PropertyName>' . $flzAttr . '</PropertyName>
+                <Literal>' . $flz . '</Literal>
+            </PropertyIsEqualTo>
+            '.$flnFilter.'
+        </And></Filter>';
+		
+    $resultObj = getGeomFromXml($searchFeaturetype, $filter,$srs);
+    header("Content-type:application/json; charset=utf-8");
+    echo json_encode($resultObj);
+}
+?>



More information about the Mapbender_commits mailing list