[Mapbender-commits] r8715 - in trunk/mapbender/http: classes javascripts php
svn_mapbender at osgeo.org
svn_mapbender at osgeo.org
Mon Oct 7 05:58:12 PDT 2013
Author: armin11
Date: 2013-10-07 05:58:02 -0700 (Mon, 07 Oct 2013)
New Revision: 8715
Modified:
trunk/mapbender/http/classes/class_wfs.php
trunk/mapbender/http/javascripts/mod_wfsGazetteerEditor_client.php
trunk/mapbender/http/javascripts/mod_wfsGazetteerEditor_server.php
trunk/mapbender/http/php/mod_wfs_gazetteer_server.php
Log:
Solve some problems in download gazetteer
Modified: trunk/mapbender/http/classes/class_wfs.php
===================================================================
--- trunk/mapbender/http/classes/class_wfs.php 2013-10-07 11:53:08 UTC (rev 8714)
+++ trunk/mapbender/http/classes/class_wfs.php 2013-10-07 12:58:02 UTC (rev 8715)
@@ -91,17 +91,22 @@
return null;
}
- protected function getFeatureGet ($featureTypeName, $filter) {
+ protected function getFeatureGet ($featureTypeName, $filter, $maxFeatures=null) {
$url = $this->getFeature .
$this->getConjunctionCharacter($this->getFeature) .
"service=WFS&request=getFeature&version=" .
- $this->getVersion() . "&typename=" . $featureTypeName .
- "&filter=" . urlencode($filter);
-
+ $this->getVersion() . "&typename=" . $featureTypeName;
+ if ($maxFeatures != null) {
+ $url .= "&MAXFEATURES=".$maxFeatures;
+ }
+ if ($filter != null) {
+ $url .= "&filter=" . urlencode($filter);
+ }
+ $e = new mb_exception("class_wfs.php: url: ".$url);
return $this->get($url);
}
- protected function getFeaturePost ($featureTypeName, $filter, $destSrs, $storedQueryId, $storedQueryParams) {
+ protected function getFeaturePost ($featureTypeName, $filter, $destSrs, $storedQueryId, $storedQueryParams, $maxFeatures) {
if($storedQueryId && $storedQueryId != "") {
$postData = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" .
"<wfs:GetFeature service=\"WFS\" version=\"" . $this->getVersion() . "\" " .
@@ -174,12 +179,25 @@
}
}
- $postData .= "</wfs:GetFeature>";
-
- return $this->post($this->getFeature, $postData);
+ $postData .= "</wfs:GetFeature>";
+ if ($filter == null) {
+ if ($maxFeatures != null) {
+ $e = new mb_exception("maxfeatures: ".$maxFeatures);
+ return $this->getFeatureGet($featureTypeName, null, $maxFeatures);
+ } else {
+ $e = new mb_exception("maxfeatures: ".$maxFeatures);
+ return $this->getFeatureGet($featureTypeName, null, null);
+ }
+ } else {
+ if (is_int($maxFeatures)) {
+ return $this->post($this->getFeature."&MAXFEATURES=".$maxFeatures, $postData);
+ } else {
+ return $this->post($this->getFeature, $postData);
+ }
+ }
}
- public function getFeature ($featureTypeName, $filter, $destSrs=null, $storedQueryId=null, $storedQueryParams=null) {
+ public function getFeature ($featureTypeName, $filter, $destSrs=null, $storedQueryId=null, $storedQueryParams=null, $maxFeatures=null) {
// FOR NOW, WE ONLY DO POST REQUESTS!
// THE FILTERS ARE CONSTRUCTED ON THE CLIENT SIDE,
@@ -187,7 +205,7 @@
// WOULD BE TOO MUCH FOR NOW
//
// if (strpos($this->getFeature, "?") === false) {
- return $this->getFeaturePost($featureTypeName, $filter, $destSrs, $storedQueryId, $storedQueryParams);
+ return $this->getFeaturePost($featureTypeName, $filter, $destSrs, $storedQueryId, $storedQueryParams, $maxFeatures);
// }
// return $this->getFeatureGet($featureTypeName, $filter);
}
Modified: trunk/mapbender/http/javascripts/mod_wfsGazetteerEditor_client.php
===================================================================
--- trunk/mapbender/http/javascripts/mod_wfsGazetteerEditor_client.php 2013-10-07 11:53:08 UTC (rev 8714)
+++ trunk/mapbender/http/javascripts/mod_wfsGazetteerEditor_client.php 2013-10-07 12:58:02 UTC (rev 8715)
@@ -758,7 +758,7 @@
document.getElementById("progressWheel").innerHTML = "<table><tr><td><img src='../img/indicator_wheel.gif'></td><td>Get features...</td></tr></table>";
- var properties = {"command":"getFeature", "wfsFeatureTypeName":chosenLayer, "wfsGetFeatureAttr":chosenAttr, "wfsGetFeature":wfs_getfeature};
+ var properties = {"command":"getFeature", "wfsFeatureTypeName":chosenLayer, "wfsGetFeatureAttr":chosenAttr, "wfsGetFeature":wfs_getfeature,"wfs_conf_id":global_selectedWfsConfId,"destSrs":global_wfsConfObj[global_selectedWfsConfId].featuretype_srs};
parent.$.post("../javascripts/mod_wfsGazetteerEditor_server.php", properties, function (result, status) {
if (status == "success") {
var arrFeatureColumnValues = eval('(' + result + ')');
@@ -1388,7 +1388,7 @@
<div class='mainDiv' id='mainDiv' style="display:none">
- <b><?php echo _mb("Set spatial filter"); ?></b>
+ <b><?php echo _mb("Set spatial filter"); ?></b><br>
<div name='displaySpatialButtons' id='displaySpatialButtons' style='width:180px'></div>
<input type="button" id="deleteRequestGeometry" name="deleteRequestGeometry" value="löschen" style="position:absolute;top:70px;left:120px;display:none">
<br><br>
Modified: trunk/mapbender/http/javascripts/mod_wfsGazetteerEditor_server.php
===================================================================
--- trunk/mapbender/http/javascripts/mod_wfsGazetteerEditor_server.php 2013-10-07 11:53:08 UTC (rev 8714)
+++ trunk/mapbender/http/javascripts/mod_wfsGazetteerEditor_server.php 2013-10-07 12:58:02 UTC (rev 8715)
@@ -24,9 +24,16 @@
require_once(dirname(__FILE__)."/../classes/class_universal_wfs_factory.php");
require_once(dirname(__FILE__)."/../classes/class_universal_gml_factory.php");
require_once(dirname(__FILE__)."/../classes/class_wfs_configuration.php");
+require_once(dirname(__FILE__)."/../extensions/JSON.php");
$user = new User(Mapbender::session()->get("mb_user_id"));
$command = $_REQUEST["command"];
+$wfsFeatureTypeName = $_REQUEST["wfsFeatureTypeName"];
+#$wfsDescribeFeatureType = $_REQUEST["wfsDescribeFeatureType"];
+$wfsGetFeatureAttr = $_REQUEST["wfsGetFeatureAttr"];
+$wfsGetFeature = $_REQUEST["wfsGetFeature"];
+$wfsFilter = $_REQUEST["wfsFilter"];
+$exportToShape = $_REQUEST["exportToShape"] == "true" ? true : false;
function toShape ($filenamePrefix, $geoJson, $destSrs) {
$srsArray = explode(":", $destSrs);
@@ -35,7 +42,7 @@
$unique = TMPDIR . "/" . $filenamePrefix;
file_put_contents($unique.".json",$geoJson);
- if(OGR2OGR_PATH) {
+ if(defined("OGR2OGR_PATH")) {
$pathOgr = OGR2OGR_PATH;
}
else {
@@ -161,7 +168,7 @@
$myWfsFactory = new UniversalWfsFactory();
$myWfs = $myWfsFactory->createFromDb($wfsId);
- $data = $myWfs->getFeature($typename, $filter,$destSrs, $storedQueryId, $storedQueryParams);
+ $data = $myWfs->getFeature($typename, $filter,$destSrs, $storedQueryId, $storedQueryParams, null);
#new mb_exception($data);
@@ -194,80 +201,41 @@
}
}
else if($command == "getFeature"){
-
+ //copied from above
+ $wfs_conf_id = $_REQUEST["wfs_conf_id"];
+ $destSrs = $_REQUEST["destSrs"];
+ $wfsConf = WfsConfiguration::createFromDb($wfs_conf_id);
+ if (is_null($wfsConf)) {
+ sendErrorMessage("Invalid WFS conf: " . $wfs_conf_id); //TODO - sendErrorMessage - locate where it is declared!
+ }
$admin = new administration();
- $wfsGetFeature=$admin->checkURL($wfsGetFeature);
-
- $url = $wfsGetFeature."REQUEST=getFeature&VERSION=1.0.0&SERVICE=WFS&MAXFEATURES=20".
- "&typename=".$wfsFeatureTypeName; //."&propertyname=".$wfsGetFeatureAttr;
- //"&filter=<ogc:Filter><ogc:Not><ogc:PropertyIsNull><ogc:PropertyName>".$wfsGetFeatureAttr."</ogc:PropertyName></ogc:PropertyIsNull></ogc:Not></ogc:Filter>";
-
- #echo $url;
- $e = new mb_exception("URL: " . $url);
- $x = new connector($url);
- $data = $x->file;
- //$data = file_get_contents($url);
- $parser = xml_parser_create();
- xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
- xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
- xml_parser_set_option($parser,XML_OPTION_TARGET_ENCODING,"UTF-8");
- xml_parse_into_struct($parser,$data,$values,$tags);
-
- $code = xml_get_error_code($parser);
- xml_parser_free($parser);
-
- if ($code) {
- $line = xml_get_current_line_number($parser);
- $mb_exception = new mb_exception(xml_error_string($code) . " in line " . $line);
+ $wfsId = $wfsConf->wfsId;
+ $filter = null;
+ $myWfsFactory = new UniversalWfsFactory();
+ $myWfs = $myWfsFactory->createFromDb($wfsId);
+ $data = $myWfs->getFeature($wfsFeatureTypeName, null, $destSrs, null, null, 20);
+ if ($data === null) die('{}');
+ if (defined("WFS_RESPONSE_SIZE_LIMIT") && WFS_RESPONSE_SIZE_LIMIT < strlen($data)) {
+ die("Too many results, please restrict your search.");
}
-
-
- function sepNameSpace($s){
- $c = mb_strpos($s,":");
- if($c>0){
- return mb_substr($s,$c+1);
+ $gmlFactory = new UniversalGmlFactory();
+ $myGml = $gmlFactory->createFromXml($data, $wfsConf);
+ if (!is_null($myGml)) {
+ $geoJson = $myGml->toGeoJSON();
+ //parse attribute objects
+ $featureValuesArray = array();
+ $geoObj = json_decode($geoJson);
+ foreach($geoObj->features as $feature) {
+ array_push($featureValuesArray, $feature->properties->{$wfsGetFeatureAttr});
}
- else{
- return $s;
- }
+ $json = new Services_JSON();
+ echo $json->encode($featureValuesArray);
}
-
- $featureNameToUpper = mb_strtoupper($wfsGetFeatureAttr);
- $featureValuesArray = array();
- foreach ($values as $element) {
- if(mb_strtoupper($element[tag]) == $featureNameToUpper || sepNameSpace(mb_strtoupper($element[tag])) == $featureNameToUpper){
- array_push($featureValuesArray, $element[value]);
- }
+ else {
+ $geoJson = "{}";
+ header("Content-type:application/x-json; charset=utf-8");
+ echo $geoJson;
}
-
-// $featureValues = join("|", $featureValuesArray);
- $json = new Services_JSON();
- echo $json->encode($featureValuesArray);
-
-// the way below only works with propertyname in REQUEST-Url
-// $sxe = new SimpleXMLElement($data);
-//
-// list($ns, $ns_url) = explode(":", $wfsFeatureTypeName);
-//
-// $sxe->registerXPathNamespace($ns, 'http://namespace_url_default');
-//
-// $m = array();
-// $m['columnValues'] = $sxe->xpath('//'.$ns.':'.$wfsGetFeatureAttr);
-//
-// $columnValues = array();
-// $i=0;
-// foreach ($m['columnValues'] as $columnValue) {
-//
-// $domNode = dom_import_simplexml($columnValue);
-// $columnValues[$i]=$domNode->nodeValue;
-//
-// $i++;
-//
-// $json = new Services_Json();
-// $jsonEncodedValue = $json->encode($columnValues);
-// }
-
-// echo $jsonEncodedValue;
}
else {
echo "please enter a valid command.";
Modified: trunk/mapbender/http/php/mod_wfs_gazetteer_server.php
===================================================================
--- trunk/mapbender/http/php/mod_wfs_gazetteer_server.php 2013-10-07 11:53:08 UTC (rev 8714)
+++ trunk/mapbender/http/php/mod_wfs_gazetteer_server.php 2013-10-07 12:58:02 UTC (rev 8715)
@@ -147,7 +147,7 @@
$myWfsFactory = new UniversalWfsFactory();
$myWfs = $myWfsFactory->createFromDb($wfsId);
- $data = $myWfs->getFeature($typename, $filter,$destSrs, $storedQueryId, $storedQueryParams);
+ $data = $myWfs->getFeature($typename, $filter,$destSrs, $storedQueryId, $storedQueryParams, null);
#new mb_exception($data);
More information about the Mapbender_commits
mailing list