/* * Mandatory script ! */ include_once 'config.php'; include_once 'functions/general.php'; /* * Avoid unwanted requests... */ if (!abcCheck($_REQUEST)) { exit(0); } /* * Force HTTP Header */ if (isset($_REQUEST["returntype"])) { /* * Force XML */ if ($_REQUEST["returntype"] == "XML") { header("Pragma: no-cache"); header("Expires: 0"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Content-type: text/xml"); } } /* * Send either a POST request or a GET request */ echo $_SERVER['REQUEST_METHOD'] == 'POST' ? postRemoteData($_REQUEST["url"], $HTTP_RAW_POST_DATA, true) : getRemoteData($_REQUEST["url"], null, false);
$request .= '</ogc:And>'; } $request .= '</ogc:Filter> </Constraint> </csw:Query> </GetRecords>'; /** * Send a post $request at $url * * If headers is set to false, do not force headers * during POST request */ if (isset($_REQUEST["headers"]) && $_REQUEST["headers"] == "false") { $theData = postRemoteData($url, $request, false); } else { $theData = postRemoteData($url, $request, true); } /** * Store request and response */ if (MSP_DEBUG) { $tmp = createPassword(10); saveFile($request, MSP_UPLOAD_DIR . "csw_" . $tmp . "_request.xml"); $resultFileURI = saveFile($theData, MSP_UPLOAD_DIR . "csw_" . $tmp . "_response.xml"); } /** * Check if a SOAP Fault occured */ $error = OWSExceptionToJSON($theData); if ($error) { echo $error;
if (!abcCheck($_REQUEST)) { exit(0); } /* * Force HTTP Header */ if (isset($_REQUEST["returntype"])) { /* * Force XML */ if ($_REQUEST["returntype"] == "XML") { header("Pragma: no-cache"); header("Expires: 0"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Content-type: text/xml"); } } /* * Forward Authorization headers */ $headers = apache_request_headers(); $forwarded_headers = array(); if (isset($headers["Authorization"])) { array_push($forwarded_headers, "Authorization: " . $headers["Authorization"]); } /* * Send either a POST request or a GET request */ echo $_SERVER['REQUEST_METHOD'] == 'POST' ? postRemoteData($_REQUEST["url"], $HTTP_RAW_POST_DATA, true) : getRemoteDataHeaders($_REQUEST["url"], null, false, $forwarded_headers);
if (count($typeAndfilter) === 2) { $keyval = explode('=', $typeAndfilter[1]); $type = $typeAndfilter[0]; } else { $keyval = explode('=', $typeAndfilter[0]); } if (count($keyval) === 2) { $data .= ',{"term":{"' . $keyval[0] . '":"' . $keyval[1] . '"}}'; } else { $data .= ',{"term":{"name":"' . $keyval[0] . '"}}'; } } $data .= ']}}}}}'; /* * Get result in json format * * Result example : * * {"took" : 138,"_shards" : {"total" : 5},"hits" :{"total" : 19882872,"hits" : [{"_index" : "osm","_type" : "way","_id" : "42165222","_score" : 1.0,"_source" :{"areaKm2":1.1417793121178532,"shape":{"type":"polygon","coordinates":[[[1.9304132,44.1974077],[1.9305396000000001,44.195908800000005],[1.931243,44.1946627],[1.9327492000000002,44.1944188],[1.9347191000000001,44.1940934],[1.9348400000000001,44.193344100000004],[1.9360017,44.1927651],[1.9364714,44.191850800000005],[1.9368212,44.191436200000005],[1.9384401000000002,44.1916917],[1.9397132000000001,44.191696300000004],[1.9416863000000002,44.190787400000005],[1.9418085,44.189955000000005],[1.9407707,44.1893691],[1.9391409000000002,44.190778200000004],[1.9387963000000001,44.190361100000004],[1.9391491,44.189612700000005],[1.940776,44.1886194],[1.9395094000000002,44.1876988],[1.9377793,44.186942800000004],[1.9352315000000002,44.1871841],[1.9358037000000001,44.1881022],[1.9341724,44.189594400000004],[1.9324328000000002,44.1901713],[1.929998,44.1907444],[1.9277904000000001,44.1919849],[1.9257061000000002,44.192144500000005],[1.9230418,44.1924671],[1.9210665,44.1936252],[1.9203623,44.194954300000006],[1.9216322000000001,44.195293],[1.9235919000000001,44.1963828],[1.9252103,44.196721600000004],[1.9264845000000002,44.1964769],[1.9272893000000002,44.197312800000006],[1.9275084,44.198978200000006],[1.928201,44.1992315],[1.9297109000000001,44.198487400000005],[1.9304132,44.1974077]]]},"tags":{"wood":"deciduous","source":"Union européenne - SOeS, CORINE Land Cover, 2006.","CLC:code":"311","CLC:id":"FR-211193","CLC:year":"2006","landuse":"forest"}}}]}} * */ $json = postRemoteData($url . '/' . ($type === 'way' ? 'way' : 'node') . '/_search', $data, false); /* * Problem reading json => return an empty GeoJSON */ if ($json == NULL) { echo json_encode(array('type' => 'FeatureCollection', 'features' => array())); } else { echo json_encode(elasticResultToGeoJSON(json_decode($json))); } exit(0);
} if ($nbOfFilters > 1) { $request .= '</ogc:And>'; } $request .= '</ogc:Filter></wfs:Query></wfs:GetFeature>'; // Send HITS request $theData = postRemoteData($url, $requestHits . $request, array("REMOTE_USER: "******"Content-Type: text/xml")); // Store request and response if (MSP_DEBUG) { $tmp = createPassword(10); saveFile($request, MSP_UPLOAD_DIR . "csw_" . $tmp . "_request.xml"); saveFile($theData, MSP_UPLOAD_DIR . "csw_" . $tmp . "_response.xml"); } // Get the number of results $nbOfResults = getNbOfResults($theData); // Send RESULTS request $theData = postRemoteData($url, $requestResults . $request, array("REMOTE_USER: "******"Content-Type: text/xml")); // Store request and response if (MSP_DEBUG) { $tmp = createPassword(10); saveFile($request, MSP_UPLOAD_DIR . "csw_" . $tmp . "_request.xml"); saveFile($theData, MSP_UPLOAD_DIR . "csw_" . $tmp . "_response.xml"); } // Check if a SOAP Fault occured $error = OWSExceptionToJSON($theData); if ($error) { echo $error; } else { // Stream result echo outputToGeoJSON($theData, $nbOfResults); }