Esempio n. 1
0
 /**
  * Adds to the TCPDF instance, the data related to a row in the GIS dataset.
  *
  * @param string $spatial    GIS LINESTRING object
  * @param string $label      Label for the GIS LINESTRING object
  * @param string $line_color Color for the GIS LINESTRING object
  * @param array  $scale_data Array containing data related to scaling
  * @param image  $pdf        TCPDF instance
  *
  * @return the modified TCPDF instance
  */
 public function prepareRowAsPdf($spatial, $label, $line_color, $scale_data, $pdf)
 {
     // allocate colors
     $red = hexdec(substr($line_color, 1, 2));
     $green = hexdec(substr($line_color, 3, 2));
     $blue = hexdec(substr($line_color, 4, 2));
     $line = array('width' => 1.5, 'color' => array($red, $green, $blue));
     // Trim to remove leading 'LINESTRING(' and trailing ')'
     $linesrting = substr($spatial, 11, strlen($spatial) - 12);
     $points_arr = $this->extractPoints($linesrting, $scale_data);
     foreach ($points_arr as $point) {
         if (!isset($temp_point)) {
             $temp_point = $point;
         } else {
             // draw line section
             $pdf->Line($temp_point[0], $temp_point[1], $point[0], $point[1], $line);
             $temp_point = $point;
         }
     }
     // print label
     if (isset($label) && trim($label) != '') {
         $pdf->SetXY($points_arr[1][0], $points_arr[1][1]);
         $pdf->SetFontSize(5);
         $pdf->Cell(0, 0, trim($label));
     }
     return $pdf;
 }
 /**
  * Adds to the TCPDF instance, the data related to a row in the GIS dataset.
  *
  * @param string $spatial    GIS MULTILINESTRING object
  * @param string $label      Label for the GIS MULTILINESTRING object
  * @param string $line_color Color for the GIS MULTILINESTRING object
  * @param array  $scale_data Array containing data related to scaling
  * @param image  $pdf        TCPDF instance
  *
  * @return the modified TCPDF instance
  */
 public function prepareRowAsPdf($spatial, $label, $line_color, $scale_data, $pdf)
 {
     // allocate colors
     $red = hexdec(substr($line_color, 1, 2));
     $green = hexdec(substr($line_color, 3, 2));
     $blue = hexdec(substr($line_color, 4, 2));
     $line = array('width' => 1.5, 'color' => array($red, $green, $blue));
     // Trim to remove leading 'MULTILINESTRING((' and trailing '))'
     $multilinestirng = substr($spatial, 17, strlen($spatial) - 19);
     // Seperate each linestring
     $linestirngs = explode("),(", $multilinestirng);
     $first_line = true;
     foreach ($linestirngs as $linestring) {
         $points_arr = $this->extractPoints($linestring, $scale_data);
         foreach ($points_arr as $point) {
             if (!isset($temp_point)) {
                 $temp_point = $point;
             } else {
                 // draw line section
                 $pdf->Line($temp_point[0], $temp_point[1], $point[0], $point[1], $line);
                 $temp_point = $point;
             }
         }
         unset($temp_point);
         // print label
         if (isset($label) && trim($label) != '' && $first_line) {
             $pdf->SetXY($points_arr[1][0], $points_arr[1][1]);
             $pdf->SetFontSize(5);
             $pdf->Cell(0, 0, trim($label));
         }
         $first_line = false;
     }
     return $pdf;
 }
Esempio n. 3
0
 /**
  * Adds to the TCPDF instance, the data related to a row in the GIS dataset.
  *
  * @param string $spatial     GIS POINT object
  * @param string $label       Label for the GIS POINT object
  * @param string $point_color Color for the GIS POINT object
  * @param array  $scale_data  Array containing data related to scaling
  * @param image  $pdf         TCPDF instance
  *
  * @return the modified TCPDF instance
  */
 public function prepareRowAsPdf($spatial, $label, $point_color, $scale_data, $pdf)
 {
     // allocate colors
     $red = hexdec(substr($point_color, 1, 2));
     $green = hexdec(substr($point_color, 3, 2));
     $blue = hexdec(substr($point_color, 4, 2));
     $line = array('width' => 1.25, 'color' => array($red, $green, $blue));
     // Trim to remove leading 'POINT(' and trailing ')'
     $point = substr($spatial, 6, strlen($spatial) - 7);
     $points_arr = $this->extractPoints($point, $scale_data);
     // draw a small circle to mark the point
     if ($points_arr[0][0] != '' && $points_arr[0][1] != '') {
         $pdf->Circle($points_arr[0][0], $points_arr[0][1], 2, 0, 360, 'D', $line);
         // print label if applicable
         if (isset($label) && trim($label) != '') {
             $pdf->SetXY($points_arr[0][0], $points_arr[0][1]);
             $pdf->SetFontSize(5);
             $pdf->Cell(0, 0, trim($label));
         }
     }
     return $pdf;
 }
 /**
  * Adds to the TCPDF instance, the data related to a row in the GIS dataset.
  *
  * @param string $spatial    GIS MULTIPOLYGON object
  * @param string $label      Label for the GIS MULTIPOLYGON object
  * @param string $fill_color Color for the GIS MULTIPOLYGON object
  * @param array  $scale_data Array containing data related to scaling
  * @param image  $pdf        TCPDF instance
  *
  * @return the modified TCPDF instance
  */
 public function prepareRowAsPdf($spatial, $label, $fill_color, $scale_data, $pdf)
 {
     // allocate colors
     $red = hexdec(substr($fill_color, 1, 2));
     $green = hexdec(substr($fill_color, 3, 2));
     $blue = hexdec(substr($fill_color, 4, 2));
     $color = array($red, $green, $blue);
     // Trim to remove leading 'MULTIPOLYGON(((' and trailing ')))'
     $multipolygon = substr($spatial, 15, strlen($spatial) - 18);
     // Seperate each polygon
     $polygons = explode(")),((", $multipolygon);
     $first_poly = true;
     foreach ($polygons as $polygon) {
         // If the polygon doesnt have an inner polygon
         if (strpos($polygon, "),(") === false) {
             $points_arr = $this->extractPoints($polygon, $scale_data, true);
         } else {
             // Seperate outer and inner polygons
             $parts = explode("),(", $polygon);
             $outer = $parts[0];
             $inner = array_slice($parts, 1);
             $points_arr = $this->extractPoints($outer, $scale_data, true);
             foreach ($inner as $inner_poly) {
                 $points_arr = array_merge($points_arr, $this->extractPoints($inner_poly, $scale_data, true));
             }
         }
         // draw polygon
         $pdf->Polygon($points_arr, 'F*', array(), $color, true);
         // mark label point if applicable
         if (isset($label) && trim($label) != '' && $first_poly) {
             $label_point = array($points_arr[2], $points_arr[3]);
         }
         $first_poly = false;
     }
     // print label if applicable
     if (isset($label_point)) {
         $pdf->SetXY($label_point[0], $label_point[1]);
         $pdf->SetFontSize(5);
         $pdf->Cell(0, 0, trim($label));
     }
     return $pdf;
 }