示例#1
0
function mapfile_getlayers($fname)
{
    if (extension_loaded('mapscript')) {
        $map = new mapObj($fname);
        $map_name = $map->name;
        $map_extent = array($map->extent->minx, $map->extent->miny, $map->extent->maxx, $map->extent->maxy);
        if (preg_match('/(epsg:[0-9]+)/i', $map->getProjection(), $_p)) {
            $map_projection = $_p[1];
        } else {
            $map_projection = 'epsg:3857';
        }
        $wms_enabled = strlen($map->getMetaData('wms_enable_request')) > 0;
        if ($wms_enabled) {
            $map_wmstitle = strlen($map->getMetaData('wms_title')) > 0 ? $map->getMetaData('wms_title') : NULL;
            $map_wmsabstract = strlen($map->getMetaData('wms_abstract')) > 0 ? $map->getMetaData('wms_abstract') : NULL;
        }
        $layers = $map->getAllLayerNames();
        $_layers = array();
        foreach ($layers as $k => $name) {
            $layer = $map->getLayer($k);
            $data = array();
            if ($wms_enabled) {
                $data['wms_title'] = strlen($layer->getMetaData('wms_title')) > 0 ? $layer->getMetaData('wms_title') : NULL;
                $data['wms_abstract'] = strlen($layer->getMetaData('wms_abstract')) > 0 ? $layer->getMetaData('wms_abstract') : NULL;
                $data['wms_include_items'] = strlen($layer->getMetaData('wms_include_items')) > 0 ? $layer->getMetaData('wms_include_items') : NULL;
                $data['wms_exclude_items'] = strlen($layer->getMetaData('wms_exclude_items')) > 0 ? $layer->getMetaData('wms_exclude_items') : NULL;
                $data['wms_attribution_title'] = strlen($layer->getMetaData('wms_attribution_title')) > 0 ? $layer->getMetaData('wms_attribution_title') : NULL;
                $data['wms_attribution_onlineresource'] = strlen($layer->getMetaData('wms_attribution_onlineresource')) > 0 ? $layer->getMetaData('wms_attribution_onlineresource') : NULL;
                $data['wms_enable_request'] = strlen($layer->getMetaData('wms_enable_request')) > 0 ? $layer->getMetaData('wms_enable_request') : NULL;
            }
            if (preg_match('/(epsg:[0-9]+)/i', $layer->getProjection(), $_p)) {
                $data['projection'] = $_p[1];
            } else {
                $data['projection'] = 'epsg:3857';
            }
            $data['name'] = $layer->name;
            $data['type'] = $layer->type;
            $data['connectiontype'] = $layer->connectiontype;
            $data['connection'] = $layer->connection;
            $data['data'] = $layer->data;
            $data['filteritem'] = $layer->filteritem;
            $data['filter'] = $layer->getFilterString();
            $data['group'] = $layer->group;
            $data['minscaledenom'] = $layer->minscaledenom != -1 ? $layer->minscaledenom : NULL;
            $data['maxscaledenom'] = $layer->maxscaledenom != -1 ? $layer->maxscaledenom : NULL;
            $data['opacity'] = $layer->opacity;
            $data['labelitem'] = $layer->labelitem;
            $data['classitem'] = $layer->classitem;
            $data['status'] = $layer->status;
            $data['class'] = array();
            for ($c = 0; $c < $layer->numclasses; $c++) {
                $class = $layer->getClass($c);
                $data['class'][$c]['name'] = $class->name;
                $data['class'][$c]['expression'] = $class->getExpressionString();
                $data['class'][$c]['style'] = array();
                if ($class->numstyles > 0) {
                    for ($s = 0; $s < $class->numstyles; $s++) {
                        $style = $class->getStyle($s);
                        $data['class'][$c]['style'][$s]['color'] = array('r' => $style->color->red, 'g' => $style->color->green, 'b' => $style->color->blue);
                        $data['class'][$c]['style'][$s]['outlinecolor'] = array('r' => $style->outlinecolor->red, 'g' => $style->outlinecolor->green, 'b' => $style->outlinecolor->blue);
                        $data['class'][$c]['style'][$s]['width'] = $style->width;
                        $data['class'][$c]['style'][$s]['symbolname'] = $style->symbolname;
                        $data['class'][$c]['style'][$s]['size'] = $style->size;
                        $data['class'][$c]['style'][$s]['pattern'] = $style->getPatternArray();
                    }
                }
                $data['class'][$c]['label'] = array();
                if ($class->numlabels > 0) {
                    for ($l = 0; $l < $class->numlabels; $l++) {
                        $label = $class->getLabel($l);
                        $data['class'][$c]['label'][$l]['size'] = $label->size;
                        $data['class'][$c]['label'][$l]['align'] = $label->align;
                        $data['class'][$c]['label'][$l]['position'] = $label->position;
                        $data['class'][$c]['label'][$l]['color'] = array('r' => $label->color->red, 'g' => $label->color->green, 'b' => $label->color->blue);
                        $data['class'][$c]['label'][$l]['outlinecolor'] = array('r' => $label->outlinecolor->red, 'g' => $label->outlinecolor->green, 'b' => $label->outlinecolor->blue);
                        $data['class'][$c]['label'][$l]['minscaledenom'] = $label->minscaledenom != -1 ? $label->minscaledenom : NULL;
                        $data['class'][$c]['label'][$l]['maxscaledenom'] = $label->maxscaledenom != -1 ? $label->maxscaledenom : NULL;
                    }
                }
            }
            $_layers[$k] = $data;
        }
        $map->free();
        unset($map);
    } else {
        $map = new MapFile\Map($fname);
        $map_name = $map->name;
        $map_extent = $map->extent;
        $map_projection = !is_null($map->projection) ? $map->projection : 'epsg:3857';
        $wms_enabled = $map->getMetadata('wms_enable_request') !== FALSE;
        if ($wms_enabled) {
            $map_wmstitle = $map->getMetadata('wms_title') !== FALSE ? $map->getMetadata('wms_title') : NULL;
            $map_wmsabstract = $map->getMetadata('wms_abstract') !== FALSE ? $map->getMetadata('wms_abstract') : NULL;
        }
        $layers = $map->getLayers();
        $_layers = array();
        foreach ($layers as $k => $layer) {
            $data = array();
            if ($wms_enabled) {
                $data['wms_title'] = $layer->getMetadata('wms_title') !== FALSE ? $layer->getMetadata('wms_title') : NULL;
                $data['wms_abstract'] = $layer->getMetadata('wms_abstract') !== FALSE ? $layer->getMetadata('wms_abstract') : NULL;
                $data['wms_include_items'] = $layer->getMetadata('wms_include_items') !== FALSE ? $layer->getMetadata('wms_include_items') : NULL;
                $data['wms_exclude_items'] = $layer->getMetadata('wms_exclude_items') !== FALSE ? $layer->getMetadata('wms_exclude_items') : NULL;
                $data['wms_attribution_title'] = $layer->getMetadata('wms_attribution_title') !== FALSE ? $layer->getMetadata('wms_attribution_title') : NULL;
                $data['wms_attribution_onlineresource'] = $layer->getMetadata('wms_attribution_onlineresource') !== FALSE ? $layer->getMetadata('wms_attribution_onlineresource') : NULL;
                $data['wms_enable_request'] = $layer->getMetadata('wms_enable_request') !== FALSE ? $layer->getMetadata('wms_enable_request') : NULL;
            }
            $data['name'] = $layer->name;
            $data['type'] = $layer->type;
            $data['projection'] = $layer->projection;
            $data['connectiontype'] = $layer->connectiontype;
            $data['connection'] = $layer->connection;
            $data['data'] = $layer->data;
            $data['filteritem'] = $layer->filteritem;
            $data['filter'] = $layer->filter;
            $data['group'] = $layer->group;
            $data['minscaledenom'] = $layer->minscaledenom;
            $data['maxscaledenom'] = $layer->maxscaledenom;
            $data['opacity'] = $layer->opacity;
            $data['labelitem'] = $layer->labelitem;
            $data['classitem'] = $layer->classitem;
            $data['status'] = $layer->status;
            $data['class'] = array();
            $_classes = $layer->getClasses();
            foreach ($_classes as $c => $class) {
                $data['class'][$c]['name'] = $class->name;
                $data['class'][$c]['expression'] = $class->expression;
                $data['class'][$c]['style'] = array();
                $_styles = $class->getStyles();
                foreach ($_styles as $s => $style) {
                    $data['class'][$c]['style'][$s]['color'] = $style->getColor();
                    $data['class'][$c]['style'][$s]['outlinecolor'] = $style->getOutlineColor();
                    $data['class'][$c]['style'][$s]['width'] = $style->width;
                    $data['class'][$c]['style'][$s]['symbolname'] = $style->symbolname;
                    $data['class'][$c]['style'][$s]['size'] = $style->size;
                    $data['class'][$c]['style'][$s]['pattern'] = $style->pattern;
                }
                $data['class'][$c]['label'] = array();
                $_labels = $class->getLabels();
                foreach ($_labels as $l => $label) {
                    $label = $class->getLabel(0);
                    if ($label) {
                        $data['class'][$c]['label'][$l]['size'] = $label->size;
                        $data['class'][$c]['label'][$l]['align'] = $label->align;
                        $data['class'][$c]['label'][$l]['position'] = $label->position;
                        $data['class'][$c]['label'][$l]['color'] = $label->getColor();
                        $data['class'][$c]['label'][$l]['outlinecolor'] = $label->getOutlineColor();
                        $data['class'][$c]['label'][$l]['minscaledenom'] = $label->minscaledenom != -1 ? $label->minscaledenom : NULL;
                        $data['class'][$c]['label'][$l]['maxscaledenom'] = $label->maxscaledenom != -1 ? $label->maxscaledenom : NULL;
                    }
                }
            }
            $_layers[$k] = $data;
        }
    }
    if (isset($_layers)) {
        return $_layers;
    } else {
        return FALSE;
    }
}
示例#2
0
            $_map = new Map($_GET['map']);
            $_map->save($_SESSION['mapfile-generator']['mapfile']);
        } catch (Exception $e) {
            $error = $e->getMessage();
        }
    } else {
        unset($_SESSION['mapfile-generator']['source']);
        $_map = new Map();
        $_map->save($_SESSION['mapfile-generator']['mapfile']);
    }
}
if ($mapscript) {
    $map = new mapObj($_SESSION['mapfile-generator']['mapfile']);
    $map_name = $map->name;
    $map_extent = array($map->extent->minx, $map->extent->miny, $map->extent->maxx, $map->extent->maxy);
    if (preg_match('/(epsg:[0-9]+)/i', $map->getProjection(), $_p)) {
        $map_projection = $_p[1];
    } else {
        $map_projection = 'epsg:3857';
    }
    $wms_enabled = strlen($map->getMetaData('wms_enable_request')) > 0;
    if ($wms_enabled) {
        $map_wmstitle = strlen($map->getMetaData('wms_title')) > 0 ? $map->getMetaData('wms_title') : NULL;
        $map_wmsabstract = strlen($map->getMetaData('wms_abstract')) > 0 ? $map->getMetaData('wms_abstract') : NULL;
    }
    $layers = $map->getAllLayerNames();
    $layers_json = array();
    foreach ($layers as $k => $name) {
        $layer = $map->getLayer($k);
        $data = array();
        $data['name'] = $layer->name;