Server IP : 127.0.0.2 / Your IP : 3.145.177.28 Web Server : Apache/2.4.18 (Ubuntu) System : User : www-data ( ) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,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,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON 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++; } } } }