php IHDR w Q )Ba pHYs sRGB gAMA a IDATxMk\U s&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨ G;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j- $_q?qS XzG'ay
files >> /opt/lampp/phpmyadmin/libraries/plugins/import/ |
files >> //opt/lampp/phpmyadmin/libraries/plugins/import/ShapeRecord.class.php |
<?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++; } } } }y~or5J={Eeu磝Qk ᯘG{?+]ן?wM3X^歌>{7پK>on\jy Rg/=fOroNVv~Y+ NGuÝHWyw[eQʨSb> >}Gmx[o[<{Ϯ_qFvM IENDB`