/** * Generate visualization for the GIS query results and save it to a file. * * @param array $data data for the status chart * @param array $visualizationSettings settings used to generate the chart * @param string $format format of the visulaization * @param string $fileName file name * * @return file File containing the visualization */ function PMA_GIS_saveToFile($data, $visualizationSettings, $format, $fileName) { include_once './libraries/gis/GIS_Visualization.class.php'; include_once './libraries/gis/GIS_Factory.class.php'; if (isset($data[0])) { $visualization = new PMA_GIS_Visualization($data, $visualizationSettings); if ($format == 'svg') { $visualization->toFileAsSvg($fileName); } elseif ($format == 'png') { $visualization->toFileAsPng($fileName); } elseif ($format == 'pdf') { $visualization->toFileAsPdf($fileName); } } }
// Generate parameters from value passed. $gis_obj = PMA_GIS_Factory::factory($geom_type); if (isset($_REQUEST['value'])) { $gis_data = array_merge($gis_data, $gis_obj->generateParams($_REQUEST['value'])); } // Generate Well Known Text $srid = isset($gis_data['srid']) && $gis_data['srid'] != '' ? htmlspecialchars($gis_data['srid']) : 0; $wkt = $gis_obj->generateWkt($gis_data, 0); $wkt_with_zero = $gis_obj->generateWkt($gis_data, 0, '0'); $result = "'" . $wkt . "'," . $srid; // Generate PNG or SVG based visualization $format = PMA_USR_BROWSER_AGENT == 'IE' && PMA_USR_BROWSER_VER <= 8 ? 'png' : 'svg'; $visualizationSettings = array('width' => 450, 'height' => 300, 'spatialColumn' => 'wkt'); $data = array(array('wkt' => $wkt_with_zero, 'srid' => $srid)); $visualization = PMA_GIS_Visualization::getByData($data, $visualizationSettings)->toImage($format); $open_layers = PMA_GIS_Visualization::getByData($data, $visualizationSettings)->asOl(); // If the call is to update the WKT and visualization make an AJAX response if (isset($_REQUEST['generate']) && $_REQUEST['generate'] == true) { $extra_data = array('result' => $result, 'visualization' => $visualization, 'openLayers' => $open_layers); $response = PMA_Response::getInstance(); $response->addJSON($extra_data); exit; } ob_start(); echo '<form id="gis_data_editor_form" action="gis_data_editor.php" method="post">'; echo '<input type="hidden" id="pmaThemeImage"' . ' value="' . $GLOBALS['pmaThemeImage'] . '" />'; echo '<div id="gis_data_editor">'; echo '<h3>'; printf(__('Value for the column "%s"'), htmlspecialchars($_REQUEST['field'])); echo '</h3>'; echo '<input type="hidden" name="field" value="' . htmlspecialchars($_REQUEST['field']) . '" />';
$scripts = $header->getScripts(); $scripts->addFile('openlayers/OpenLayers.js'); $scripts->addFile('jquery/jquery.svg.js'); $scripts->addFile('tbl_gis_visualization.js'); $scripts->addFile('OpenStreetMap.js'); // If all the rows contain SRID, use OpenStreetMaps on the initial loading. if (!isset($_REQUEST['displayVisualization'])) { $visualization = PMA_GIS_Visualization::get($sql_query, $visualizationSettings, $rows, $pos); if ($visualization->hasSrid()) { unset($visualizationSettings['choice']); } $visualizationSettings['choice'] = 'useBaseLayer'; } $svgSupport = PMA_USR_BROWSER_AGENT == 'IE' && PMA_USR_BROWSER_VER <= 8 ? false : true; $format = $svgSupport ? 'svg' : 'png'; $visualization = PMA_GIS_Visualization::get($sql_query, $visualizationSettings, $rows, $pos); if ($visualizationSettings != null) { foreach ($visualization->getSettings() as $setting => $val) { if (!isset($visualizationSettings[$setting])) { $visualizationSettings[$setting] = $val; } } } $result = $visualization->toImage($format); /** * Displays the page */ $url_params['sql_query'] = $sql_query; $downloadUrl = 'tbl_gis_visualization.php' . PMA_URL_getCommon($url_params) . '&saveToFile=true'; $html = PMA\Template::get('gis_visualization/gis_visualization')->render(array('url_params' => $url_params, 'downloadUrl' => $downloadUrl, 'labelCandidates' => $labelCandidates, 'spatialCandidates' => $spatialCandidates, 'visualizationSettings' => $visualizationSettings, 'sql_query' => $sql_query, 'visualization' => $result, 'svgSupport' => $svgSupport, 'drawOl' => $visualization->asOl())); $response->addHTML($html);