@@ -334,6 +334,9 @@ |
||
| 334 | 334 | } |
| 335 | 335 | } |
| 336 | 336 | |
| 337 | + /** |
|
| 338 | + * @param string $error |
|
| 339 | + */ |
|
| 337 | 340 | function setError($error) { |
| 338 | 341 | $this->lastError = $error; |
| 339 | 342 | return false; |
@@ -73,7 +73,9 @@ discard block |
||
| 73 | 73 | } |
| 74 | 74 | |
| 75 | 75 | public function saveToFile($FileName = NULL) { |
| 76 | - if ($FileName != NULL) $this->FileName = $FileName; |
|
| 76 | + if ($FileName != NULL) { |
|
| 77 | + $this->FileName = $FileName; |
|
| 78 | + } |
|
| 77 | 79 | |
| 78 | 80 | if (($this->_openSHPFile(TRUE)) && ($this->_openSHXFile(TRUE)) && ($this->_openDBFFile(TRUE))) { |
| 79 | 81 | $this->_saveHeaders(); |
@@ -95,20 +97,36 @@ discard block |
||
| 95 | 97 | $this->records[] = $record; |
| 96 | 98 | $this->records[count($this->records) - 1]->recordNumber = count($this->records); |
| 97 | 99 | |
| 98 | - if ($this->boundingBox["xmin"]==0.0 || ($this->boundingBox["xmin"]>$record->SHPData["xmin"])) $this->boundingBox["xmin"] = $record->SHPData["xmin"]; |
|
| 99 | - if ($this->boundingBox["xmax"]==0.0 || ($this->boundingBox["xmax"]<$record->SHPData["xmax"])) $this->boundingBox["xmax"] = $record->SHPData["xmax"]; |
|
| 100 | + if ($this->boundingBox["xmin"]==0.0 || ($this->boundingBox["xmin"]>$record->SHPData["xmin"])) { |
|
| 101 | + $this->boundingBox["xmin"] = $record->SHPData["xmin"]; |
|
| 102 | + } |
|
| 103 | + if ($this->boundingBox["xmax"]==0.0 || ($this->boundingBox["xmax"]<$record->SHPData["xmax"])) { |
|
| 104 | + $this->boundingBox["xmax"] = $record->SHPData["xmax"]; |
|
| 105 | + } |
|
| 100 | 106 | |
| 101 | - if ($this->boundingBox["ymin"]==0.0 || ($this->boundingBox["ymin"]>$record->SHPData["ymin"])) $this->boundingBox["ymin"] = $record->SHPData["ymin"]; |
|
| 102 | - if ($this->boundingBox["ymax"]==0.0 || ($this->boundingBox["ymax"]<$record->SHPData["ymax"])) $this->boundingBox["ymax"] = $record->SHPData["ymax"]; |
|
| 107 | + if ($this->boundingBox["ymin"]==0.0 || ($this->boundingBox["ymin"]>$record->SHPData["ymin"])) { |
|
| 108 | + $this->boundingBox["ymin"] = $record->SHPData["ymin"]; |
|
| 109 | + } |
|
| 110 | + if ($this->boundingBox["ymax"]==0.0 || ($this->boundingBox["ymax"]<$record->SHPData["ymax"])) { |
|
| 111 | + $this->boundingBox["ymax"] = $record->SHPData["ymax"]; |
|
| 112 | + } |
|
| 103 | 113 | |
| 104 | 114 | if (in_array($this->shapeType,array(11,13,15,18,21,23,25,28))) { |
| 105 | - if (!isset($this->boundingBox["mmin"]) || $this->boundingBox["mmin"]==0.0 || ($this->boundingBox["mmin"]>$record->SHPData["mmin"])) $this->boundingBox["mmin"] = $record->SHPData["mmin"]; |
|
| 106 | - if (!isset($this->boundingBox["mmax"]) || $this->boundingBox["mmax"]==0.0 || ($this->boundingBox["mmax"]<$record->SHPData["mmax"])) $this->boundingBox["mmax"] = $record->SHPData["mmax"]; |
|
| 115 | + if (!isset($this->boundingBox["mmin"]) || $this->boundingBox["mmin"]==0.0 || ($this->boundingBox["mmin"]>$record->SHPData["mmin"])) { |
|
| 116 | + $this->boundingBox["mmin"] = $record->SHPData["mmin"]; |
|
| 117 | + } |
|
| 118 | + if (!isset($this->boundingBox["mmax"]) || $this->boundingBox["mmax"]==0.0 || ($this->boundingBox["mmax"]<$record->SHPData["mmax"])) { |
|
| 119 | + $this->boundingBox["mmax"] = $record->SHPData["mmax"]; |
|
| 120 | + } |
|
| 107 | 121 | } |
| 108 | 122 | |
| 109 | 123 | if (in_array($this->shapeType,array(11,13,15,18))) { |
| 110 | - if (!isset($this->boundingBox["zmin"]) || $this->boundingBox["zmin"]==0.0 || ($this->boundingBox["zmin"]>$record->SHPData["zmin"])) $this->boundingBox["zmin"] = $record->SHPData["zmin"]; |
|
| 111 | - if (!isset($this->boundingBox["zmax"]) || $this->boundingBox["zmax"]==0.0 || ($this->boundingBox["zmax"]<$record->SHPData["zmax"])) $this->boundingBox["zmax"] = $record->SHPData["zmax"]; |
|
| 124 | + if (!isset($this->boundingBox["zmin"]) || $this->boundingBox["zmin"]==0.0 || ($this->boundingBox["zmin"]>$record->SHPData["zmin"])) { |
|
| 125 | + $this->boundingBox["zmin"] = $record->SHPData["zmin"]; |
|
| 126 | + } |
|
| 127 | + if (!isset($this->boundingBox["zmax"]) || $this->boundingBox["zmax"]==0.0 || ($this->boundingBox["zmax"]<$record->SHPData["zmax"])) { |
|
| 128 | + $this->boundingBox["zmax"] = $record->SHPData["zmax"]; |
|
| 129 | + } |
|
| 112 | 130 | } |
| 113 | 131 | |
| 114 | 132 | return (count($this->records) - 1); |
@@ -42,6 +42,9 @@ discard block |
||
| 42 | 42 | var $SHPData = array(); |
| 43 | 43 | var $DBFData = array(); |
| 44 | 44 | |
| 45 | + /** |
|
| 46 | + * @param integer $shapeType |
|
| 47 | + */ |
|
| 45 | 48 | public function __construct($shapeType) { |
| 46 | 49 | $this->shapeType = $shapeType; |
| 47 | 50 | } |
@@ -275,6 +278,9 @@ discard block |
||
| 275 | 278 | } |
| 276 | 279 | } |
| 277 | 280 | |
| 281 | + /** |
|
| 282 | + * @param string $type |
|
| 283 | + */ |
|
| 278 | 284 | function _loadMultiPointMZRecord( $type ) { |
| 279 | 285 | |
| 280 | 286 | $this->SHPData[$type."min"] = Util::loadData("d", fread($this->SHPFile, 8)); |
@@ -308,6 +314,9 @@ discard block |
||
| 308 | 314 | } |
| 309 | 315 | } |
| 310 | 316 | |
| 317 | + /** |
|
| 318 | + * @param string $type |
|
| 319 | + */ |
|
| 311 | 320 | function _saveMultiPointMZRecord( $type ) { |
| 312 | 321 | |
| 313 | 322 | fwrite($this->SHPFile, pack("dd", $this->SHPData[$type."min"], $this->SHPData[$type."max"])); |
@@ -361,6 +370,9 @@ discard block |
||
| 361 | 370 | fseek($this->SHPFile, $firstIndex + ($readPoints*16)); |
| 362 | 371 | } |
| 363 | 372 | |
| 373 | + /** |
|
| 374 | + * @param string $type |
|
| 375 | + */ |
|
| 364 | 376 | function _loadPolyLineMZRecord( $type ) { |
| 365 | 377 | |
| 366 | 378 | $this->SHPData[$type."min"] = Util::loadData("d", fread($this->SHPFile, 8)); |
@@ -409,6 +421,9 @@ discard block |
||
| 409 | 421 | } |
| 410 | 422 | } |
| 411 | 423 | |
| 424 | + /** |
|
| 425 | + * @param string $type |
|
| 426 | + */ |
|
| 412 | 427 | function _savePolyLineMZRecord( $type ) { |
| 413 | 428 | fwrite($this->SHPFile, pack("dd", $this->SHPData[$type."min"], $this->SHPData[$type."max"])); |
| 414 | 429 | |
@@ -641,6 +656,9 @@ discard block |
||
| 641 | 656 | } |
| 642 | 657 | } |
| 643 | 658 | |
| 659 | + /** |
|
| 660 | + * @param string $error |
|
| 661 | + */ |
|
| 644 | 662 | function setError($error) { |
| 645 | 663 | $this->lastError = $error; |
| 646 | 664 | return false; |
@@ -465,8 +465,14 @@ discard block |
||
| 465 | 465 | case 1: |
| 466 | 466 | case 11: |
| 467 | 467 | case 21: |
| 468 | - if (in_array($this->shapeType,array(11,21)) && !isset($point["m"])) $point["m"] = 0.0; // no_value |
|
| 469 | - if (in_array($this->shapeType,array(11)) && !isset($point["z"])) $point["z"] = 0.0; // no_value |
|
| 468 | + if (in_array($this->shapeType,array(11,21)) && !isset($point["m"])) { |
|
| 469 | + $point["m"] = 0.0; |
|
| 470 | + } |
|
| 471 | + // no_value |
|
| 472 | + if (in_array($this->shapeType,array(11)) && !isset($point["z"])) { |
|
| 473 | + $point["z"] = 0.0; |
|
| 474 | + } |
|
| 475 | + // no_value |
|
| 470 | 476 | //Substitutes the value of the current point |
| 471 | 477 | $this->SHPData = $point; |
| 472 | 478 | break; |
@@ -476,18 +482,40 @@ discard block |
||
| 476 | 482 | case 15: |
| 477 | 483 | case 23: |
| 478 | 484 | case 25: |
| 479 | - if (in_array($this->shapeType,array(13,15,23,25)) && !isset($point["m"])) $point["m"] = 0.0; // no_value |
|
| 480 | - if (in_array($this->shapeType,array(13,15)) && !isset($point["z"])) $point["z"] = 0.0; // no_value |
|
| 485 | + if (in_array($this->shapeType,array(13,15,23,25)) && !isset($point["m"])) { |
|
| 486 | + $point["m"] = 0.0; |
|
| 487 | + } |
|
| 488 | + // no_value |
|
| 489 | + if (in_array($this->shapeType,array(13,15)) && !isset($point["z"])) { |
|
| 490 | + $point["z"] = 0.0; |
|
| 491 | + } |
|
| 492 | + // no_value |
|
| 481 | 493 | |
| 482 | 494 | //Adds a new point to the selected part |
| 483 | - if (!isset($this->SHPData["xmin"]) || ($this->SHPData["xmin"] > $point["x"])) $this->SHPData["xmin"] = $point["x"]; |
|
| 484 | - if (!isset($this->SHPData["ymin"]) || ($this->SHPData["ymin"] > $point["y"])) $this->SHPData["ymin"] = $point["y"]; |
|
| 485 | - if (isset($point["m"]) && (!isset($this->SHPData["mmin"]) || ($this->SHPData["mmin"] > $point["m"]))) $this->SHPData["mmin"] = $point["m"]; |
|
| 486 | - if (isset($point["z"]) && (!isset($this->SHPData["zmin"]) || ($this->SHPData["zmin"] > $point["z"]))) $this->SHPData["zmin"] = $point["z"]; |
|
| 487 | - if (!isset($this->SHPData["xmax"]) || ($this->SHPData["xmax"] < $point["x"])) $this->SHPData["xmax"] = $point["x"]; |
|
| 488 | - if (!isset($this->SHPData["ymax"]) || ($this->SHPData["ymax"] < $point["y"])) $this->SHPData["ymax"] = $point["y"]; |
|
| 489 | - if (isset($point["m"]) && (!isset($this->SHPData["mmax"]) || ($this->SHPData["mmax"] < $point["m"]))) $this->SHPData["mmax"] = $point["m"]; |
|
| 490 | - if (isset($point["z"]) && (!isset($this->SHPData["zmax"]) || ($this->SHPData["zmax"] < $point["z"]))) $this->SHPData["zmax"] = $point["z"]; |
|
| 495 | + if (!isset($this->SHPData["xmin"]) || ($this->SHPData["xmin"] > $point["x"])) { |
|
| 496 | + $this->SHPData["xmin"] = $point["x"]; |
|
| 497 | + } |
|
| 498 | + if (!isset($this->SHPData["ymin"]) || ($this->SHPData["ymin"] > $point["y"])) { |
|
| 499 | + $this->SHPData["ymin"] = $point["y"]; |
|
| 500 | + } |
|
| 501 | + if (isset($point["m"]) && (!isset($this->SHPData["mmin"]) || ($this->SHPData["mmin"] > $point["m"]))) { |
|
| 502 | + $this->SHPData["mmin"] = $point["m"]; |
|
| 503 | + } |
|
| 504 | + if (isset($point["z"]) && (!isset($this->SHPData["zmin"]) || ($this->SHPData["zmin"] > $point["z"]))) { |
|
| 505 | + $this->SHPData["zmin"] = $point["z"]; |
|
| 506 | + } |
|
| 507 | + if (!isset($this->SHPData["xmax"]) || ($this->SHPData["xmax"] < $point["x"])) { |
|
| 508 | + $this->SHPData["xmax"] = $point["x"]; |
|
| 509 | + } |
|
| 510 | + if (!isset($this->SHPData["ymax"]) || ($this->SHPData["ymax"] < $point["y"])) { |
|
| 511 | + $this->SHPData["ymax"] = $point["y"]; |
|
| 512 | + } |
|
| 513 | + if (isset($point["m"]) && (!isset($this->SHPData["mmax"]) || ($this->SHPData["mmax"] < $point["m"]))) { |
|
| 514 | + $this->SHPData["mmax"] = $point["m"]; |
|
| 515 | + } |
|
| 516 | + if (isset($point["z"]) && (!isset($this->SHPData["zmax"]) || ($this->SHPData["zmax"] < $point["z"]))) { |
|
| 517 | + $this->SHPData["zmax"] = $point["z"]; |
|
| 518 | + } |
|
| 491 | 519 | |
| 492 | 520 | $this->SHPData["parts"][$partIndex]["points"][] = $point; |
| 493 | 521 | |
@@ -497,18 +525,40 @@ discard block |
||
| 497 | 525 | case 8: |
| 498 | 526 | case 18: |
| 499 | 527 | case 28: |
| 500 | - if (in_array($this->shapeType,array(18,28)) && !isset($point["m"])) $point["m"] = 0.0; // no_value |
|
| 501 | - if (in_array($this->shapeType,array(18)) && !isset($point["z"])) $point["z"] = 0.0; // no_value |
|
| 528 | + if (in_array($this->shapeType,array(18,28)) && !isset($point["m"])) { |
|
| 529 | + $point["m"] = 0.0; |
|
| 530 | + } |
|
| 531 | + // no_value |
|
| 532 | + if (in_array($this->shapeType,array(18)) && !isset($point["z"])) { |
|
| 533 | + $point["z"] = 0.0; |
|
| 534 | + } |
|
| 535 | + // no_value |
|
| 502 | 536 | |
| 503 | 537 | //Adds a new point |
| 504 | - if (!isset($this->SHPData["xmin"]) || ($this->SHPData["xmin"] > $point["x"])) $this->SHPData["xmin"] = $point["x"]; |
|
| 505 | - if (!isset($this->SHPData["ymin"]) || ($this->SHPData["ymin"] > $point["y"])) $this->SHPData["ymin"] = $point["y"]; |
|
| 506 | - if (isset($point["m"]) && (!isset($this->SHPData["mmin"]) || ($this->SHPData["mmin"] > $point["m"]))) $this->SHPData["mmin"] = $point["m"]; |
|
| 507 | - if (isset($point["z"]) && (!isset($this->SHPData["zmin"]) || ($this->SHPData["zmin"] > $point["z"]))) $this->SHPData["zmin"] = $point["z"]; |
|
| 508 | - if (!isset($this->SHPData["xmax"]) || ($this->SHPData["xmax"] < $point["x"])) $this->SHPData["xmax"] = $point["x"]; |
|
| 509 | - if (!isset($this->SHPData["ymax"]) || ($this->SHPData["ymax"] < $point["y"])) $this->SHPData["ymax"] = $point["y"]; |
|
| 510 | - if (isset($point["m"]) && (!isset($this->SHPData["mmax"]) || ($this->SHPData["mmax"] < $point["m"]))) $this->SHPData["mmax"] = $point["m"]; |
|
| 511 | - if (isset($point["z"]) && (!isset($this->SHPData["zmax"]) || ($this->SHPData["zmax"] < $point["z"]))) $this->SHPData["zmax"] = $point["z"]; |
|
| 538 | + if (!isset($this->SHPData["xmin"]) || ($this->SHPData["xmin"] > $point["x"])) { |
|
| 539 | + $this->SHPData["xmin"] = $point["x"]; |
|
| 540 | + } |
|
| 541 | + if (!isset($this->SHPData["ymin"]) || ($this->SHPData["ymin"] > $point["y"])) { |
|
| 542 | + $this->SHPData["ymin"] = $point["y"]; |
|
| 543 | + } |
|
| 544 | + if (isset($point["m"]) && (!isset($this->SHPData["mmin"]) || ($this->SHPData["mmin"] > $point["m"]))) { |
|
| 545 | + $this->SHPData["mmin"] = $point["m"]; |
|
| 546 | + } |
|
| 547 | + if (isset($point["z"]) && (!isset($this->SHPData["zmin"]) || ($this->SHPData["zmin"] > $point["z"]))) { |
|
| 548 | + $this->SHPData["zmin"] = $point["z"]; |
|
| 549 | + } |
|
| 550 | + if (!isset($this->SHPData["xmax"]) || ($this->SHPData["xmax"] < $point["x"])) { |
|
| 551 | + $this->SHPData["xmax"] = $point["x"]; |
|
| 552 | + } |
|
| 553 | + if (!isset($this->SHPData["ymax"]) || ($this->SHPData["ymax"] < $point["y"])) { |
|
| 554 | + $this->SHPData["ymax"] = $point["y"]; |
|
| 555 | + } |
|
| 556 | + if (isset($point["m"]) && (!isset($this->SHPData["mmax"]) || ($this->SHPData["mmax"] < $point["m"]))) { |
|
| 557 | + $this->SHPData["mmax"] = $point["m"]; |
|
| 558 | + } |
|
| 559 | + if (isset($point["z"]) && (!isset($this->SHPData["zmax"]) || ($this->SHPData["zmax"] < $point["z"]))) { |
|
| 560 | + $this->SHPData["zmax"] = $point["z"]; |
|
| 561 | + } |
|
| 512 | 562 | |
| 513 | 563 | $this->SHPData["points"][] = $point; |
| 514 | 564 | $this->SHPData["numpoints"] = 1 + (isset($this->SHPData["numpoints"])?$this->SHPData["numpoints"]:0); |
@@ -530,8 +580,12 @@ discard block |
||
| 530 | 580 | //Sets the value of the point to zero |
| 531 | 581 | $this->SHPData["x"] = 0.0; |
| 532 | 582 | $this->SHPData["y"] = 0.0; |
| 533 | - if (in_array($this->shapeType,array(11,21))) $this->SHPData["m"] = 0.0; |
|
| 534 | - if (in_array($this->shapeType,array(11))) $this->SHPData["z"] = 0.0; |
|
| 583 | + if (in_array($this->shapeType,array(11,21))) { |
|
| 584 | + $this->SHPData["m"] = 0.0; |
|
| 585 | + } |
|
| 586 | + if (in_array($this->shapeType,array(11))) { |
|
| 587 | + $this->SHPData["z"] = 0.0; |
|
| 588 | + } |
|
| 535 | 589 | break; |
| 536 | 590 | case 3: |
| 537 | 591 | case 5: |
@@ -32,7 +32,9 @@ |
||
| 32 | 32 | |
| 33 | 33 | class Util { |
| 34 | 34 | public static function loadData($type, $data) { |
| 35 | - if (!$data) return $data; |
|
| 35 | + if (!$data) { |
|
| 36 | + return $data; |
|
| 37 | + } |
|
| 36 | 38 | $tmp = unpack($type, $data); |
| 37 | 39 | return current($tmp); |
| 38 | 40 | } |