Пример #1
0
/**
 * Build the legend
 */
function build_legend($mapname, $layername)
{
    // First, get layer styles
    $wms = get_wms_online_resource($mapname);
    $wms_base_call = $wms . 'VERSION=1.1.1&SERVICE=WMS&LAYERS=' . urlencode($layername) . '&REQUEST=';
    $styles = simplexml_load_file($wms_base_call . 'GetStyles');
    if ($styles === false) {
        err500('Cannot fetch legend styles');
    }
    $results = array();
    // For each style, get legend string and image
    foreach ($styles->xpath('//se:Rule') as $rule) {
        $name = $rule->xpath('se:Name');
        // FIXME: temporary workaround for http://hub.qgis.org/issues/9321
        if ((string) $name[0]) {
            $filter = $rule->xpath('ogc:Filter/*');
            if (count($filter)) {
                $filter = preg_replace('/>\\s+</', '><', str_replace(array("\n", 'ogc:'), '', (string) $filter[0]->asXML()));
            } else {
                $filter = '';
            }
            $wms_image_call = $wms_base_call . 'GetLegendGraphic&FORMAT=image/png&RULE=' . urlencode((string) $name[0]);
            $image_data = file_get_contents($wms_image_call);
            if (!$image_data) {
                err500('Cannot fetch legend image');
            }
            $results[] = array('name' => (string) $name[0], 'ogc_filter' => $filter, 'image' => base64_encode($image_data));
        }
    }
    return $results;
}
Пример #2
0
require_once dirname(__FILE__) . '/helpers.php';
// Params
$map = get_map_path(@$_REQUEST['map']);
// Name of the layer to query
$layername = @$_REQUEST['layer'];
// Field name from where unique values are read
$field = @$_REQUEST['field'];
if (!$field) {
    err500('field parameter missing');
}
// Get project
$project = get_project($map);
// Get layer
$layer = get_layer($layername, $project);
try {
    $dbh = get_connection($layer, $project, $map);
    $ds_parms = get_layer_info($layer, $project);
    $_field = preg_replace('/[^A-z0-9_-]]/', '', $field);
    $stmt = $dbh->prepare("SELECT DISTINCT {$_field} FROM {$ds_parms['table']} ORDER BY {$_field}");
    $stmt->execute();
    while ($row = $stmt->fetchColumn()) {
        $result[] = $row;
    }
    $json_result = json_encode($result);
    header('Content-type: application/json');
    header('Content-length: ' . strlen($json_result));
    echo $json_result;
    exit;
} catch (PDOException $e) {
    err500('db error: ' . $e->getMessage());
}
Пример #3
0
    @copyright: 2013-2014 by Alessandro Pasotti -
        ItOpen (http://www.itopen.it) <*****@*****.**>
    @license: GNU AGPL, see COPYING for details.
*/
require_once dirname(__FILE__) . '/config.php';
require_once dirname(__FILE__) . '/helpers.php';
// Params
$map = get_map_path(@$_REQUEST['map']);
$layername = trim(@$_REQUEST['searchtable']);
$result = "nogeom";
if ($layername != "null") {
    if (array_key_exists($layername, $searchlayers_config)) {
        $layer_config = $searchlayers_config[$layername];
    } else {
        err500('layer not found or not searchable');
    }
    // Get the search string
    $displaytext = trim(@$_REQUEST['displaytext']);
    // Get project
    $project = get_project($map);
    // Sanitize
    $displaytext = preg_replace('/[^A-z0-9_-]\\s/', '', $displaytext);
    // Get the search column from QS or default, sanitize
    $search_column = preg_replace('/[^A-z0-9_-]\\s/', '', @$_REQUEST['searchcolumn']);
    if (!$search_column) {
        $search_column = $layer_config['search_column'];
    }
    // Get layer
    $layer = get_layer($layername, $project);
    $ds_params = get_layer_info($layer, $project);