Server : Apache/2.4.18 (Ubuntu) System : Linux canvaswebdesign 3.13.0-71-generic #114-Ubuntu SMP Tue Dec 1 02:34:22 UTC 2015 x86_64 User : oppastar ( 1041) PHP Version : 7.0.33-0ubuntu0.16.04.15 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, Directory : /usr/share/phpmyadmin/libraries/plugins/import/ |
Upload File : |
<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * This class extends ShapeRecord class to cater the following phpMyAdmin * specific requirements. * * @package PhpMyAdmin-Import * @subpackage ESRI_Shape */ if (! defined('PHPMYADMIN')) { exit; } /** * 1) To load data from .dbf file only when the dBase extension is available. * 2) To use PMA_importGetNextChunk() functionality to read data, rather than * reading directly from a file. Using ImportShp::readFromBuffer() in place * of fread(). This makes it possible to use compressions. * * @package PhpMyAdmin-Import * @subpackage ESRI_Shape */ class PMA_ShapeRecord extends ShapeRecord { /** * Loads a geometry data record from the file * * @param object &$SHPFile .shp file * @param object &$DBFFile .dbf file * * @return void * @see ShapeRecord::loadFromFile() */ public function loadFromFile(&$SHPFile, &$DBFFile) { $this->DBFFile = $DBFFile; $this->_loadHeaders(); switch ($this->shapeType) { case 0: $this->_loadNullRecord(); break; case 1: $this->_loadPointRecord(); break; case 3: $this->_loadPolyLineRecord(); break; case 5: $this->_loadPolygonRecord(); break; case 8: $this->_loadMultiPointRecord(); break; default: $this->setError( sprintf( __("Geometry type '%s' is not supported by MySQL."), $this->shapeType ) ); break; } if (extension_loaded('dbase') && isset($this->DBFFile)) { $this->_loadDBFData(); } } /** * Loads metadata from the ESRI shape record header * * @return void * @see ShapeRecord::_loadHeaders() */ public function _loadHeaders() { $this->recordNumber = loadData("N", ImportShp::readFromBuffer(4)); ImportShp::readFromBuffer(4); $this->shapeType = loadData("V", ImportShp::readFromBuffer(4)); } /** * Loads data from a point record * * @return array * @see ShapeRecord::_loadPoint() */ public function _loadPoint() { $data = array(); $data["x"] = loadData("d", ImportShp::readFromBuffer(8)); $data["y"] = loadData("d", ImportShp::readFromBuffer(8)); return $data; } /** * Loads data from a multipoint record * * @return void * @see ShapeRecord::_loadMultiPointRecord() */ public function _loadMultiPointRecord() { $this->SHPData = array(); $this->SHPData["xmin"] = loadData("d", ImportShp::readFromBuffer(8)); $this->SHPData["ymin"] = loadData("d", ImportShp::readFromBuffer(8)); $this->SHPData["xmax"] = loadData("d", ImportShp::readFromBuffer(8)); $this->SHPData["ymax"] = loadData("d", ImportShp::readFromBuffer(8)); $this->SHPData["numpoints"] = loadData("V", ImportShp::readFromBuffer(4)); for ($i = 0; $i <= $this->SHPData["numpoints"]; $i++) { $this->SHPData["points"][] = $this->_loadPoint(); } } /** * Loads data from a polyline record * * @return void * @see ShapeRecord::_loadPolyLineRecord() */ public function _loadPolyLineRecord() { $this->SHPData = array(); $this->SHPData["xmin"] = loadData("d", ImportShp::readFromBuffer(8)); $this->SHPData["ymin"] = loadData("d", ImportShp::readFromBuffer(8)); $this->SHPData["xmax"] = loadData("d", ImportShp::readFromBuffer(8)); $this->SHPData["ymax"] = loadData("d", ImportShp::readFromBuffer(8)); $this->SHPData["numparts"] = loadData("V", ImportShp::readFromBuffer(4)); $this->SHPData["numpoints"] = loadData("V", ImportShp::readFromBuffer(4)); for ($i = 0; $i < $this->SHPData["numparts"]; $i++) { $this->SHPData["parts"][$i] = loadData( "V", ImportShp::readFromBuffer(4) ); } $readPoints = 0; reset($this->SHPData["parts"]); while (list($partIndex,) = each($this->SHPData["parts"])) { if (! isset($this->SHPData["parts"][$partIndex]["points"]) || !is_array($this->SHPData["parts"][$partIndex]["points"]) ) { $this->SHPData["parts"][$partIndex] = array(); $this->SHPData["parts"][$partIndex]["points"] = array(); } while (! in_array($readPoints, $this->SHPData["parts"]) && ($readPoints < ($this->SHPData["numpoints"])) ) { $this->SHPData["parts"][$partIndex]["points"][] = $this->_loadPoint(); $readPoints++; } } } }