Completed
Push — master ( 34c6fd...b81903 )
by Yannick
06:41
created
require/libs/geoPHP/lib/adapters/GoogleGeocode.class.php 1 patch
Indentation   +90 added lines, -90 removed lines patch added patch discarded remove patch
@@ -30,55 +30,55 @@  discard block
 block discarded – undo
30 30
    * @return Geometry|GeometryCollection
31 31
    */
32 32
   public function read($address, $return_type = 'point', $bounds = FALSE, $return_multiple = FALSE) {
33
-    if (is_array($address)) $address = join(',', $address);
33
+	if (is_array($address)) $address = join(',', $address);
34 34
     
35
-    if (gettype($bounds) == 'object') {
36
-      $bounds = $bounds->getBBox();
37
-    }
38
-    if (gettype($bounds) == 'array') {
39
-      $bounds_string = '&bounds='.$bounds['miny'].','.$bounds['minx'].'|'.$bounds['maxy'].','.$bounds['maxx'];
40
-    }
41
-    else {
42
-      $bounds_string = '';
43
-    }
35
+	if (gettype($bounds) == 'object') {
36
+	  $bounds = $bounds->getBBox();
37
+	}
38
+	if (gettype($bounds) == 'array') {
39
+	  $bounds_string = '&bounds='.$bounds['miny'].','.$bounds['minx'].'|'.$bounds['maxy'].','.$bounds['maxx'];
40
+	}
41
+	else {
42
+	  $bounds_string = '';
43
+	}
44 44
     
45
-    $url = "http://maps.googleapis.com/maps/api/geocode/json";
46
-    $url .= '?address='. urlencode($address);
47
-    $url .= $bounds_string;
48
-    $url .= '&sensor=false';
49
-    $this->result = json_decode(@file_get_contents($url));
45
+	$url = "http://maps.googleapis.com/maps/api/geocode/json";
46
+	$url .= '?address='. urlencode($address);
47
+	$url .= $bounds_string;
48
+	$url .= '&sensor=false';
49
+	$this->result = json_decode(@file_get_contents($url));
50 50
     
51
-    if ($this->result->status == 'OK') {
52
-      if ($return_multiple == FALSE) {
53
-        if ($return_type == 'point') {
54
-          return $this->getPoint();
55
-        }
56
-        if ($return_type == 'bounds' || $return_type == 'polygon') {
57
-          return $this->getPolygon();
58
-        }
59
-      }
60
-      if ($return_multiple == TRUE) {
61
-        if ($return_type == 'point') {
62
-          $points = array();
63
-          foreach ($this->result->results as $delta => $item) {
64
-            $points[] = $this->getPoint($delta);
65
-          }
66
-          return new MultiPoint($points);
67
-        }
68
-        if ($return_type == 'bounds' || $return_type == 'polygon') {
69
-          $polygons = array();
70
-          foreach ($this->result->results as $delta => $item) {
71
-            $polygons[] = $this->getPolygon($delta);
72
-          }
73
-          return new MultiPolygon($polygons);
74
-        }
75
-      }
76
-    }
77
-    else {
78
-      if ($this->result->status) throw new Exception('Error in Google Geocoder: '.$this->result->status);
79
-      else throw new Exception('Unknown error in Google Geocoder');
80
-      return FALSE;
81
-    }
51
+	if ($this->result->status == 'OK') {
52
+	  if ($return_multiple == FALSE) {
53
+		if ($return_type == 'point') {
54
+		  return $this->getPoint();
55
+		}
56
+		if ($return_type == 'bounds' || $return_type == 'polygon') {
57
+		  return $this->getPolygon();
58
+		}
59
+	  }
60
+	  if ($return_multiple == TRUE) {
61
+		if ($return_type == 'point') {
62
+		  $points = array();
63
+		  foreach ($this->result->results as $delta => $item) {
64
+			$points[] = $this->getPoint($delta);
65
+		  }
66
+		  return new MultiPoint($points);
67
+		}
68
+		if ($return_type == 'bounds' || $return_type == 'polygon') {
69
+		  $polygons = array();
70
+		  foreach ($this->result->results as $delta => $item) {
71
+			$polygons[] = $this->getPolygon($delta);
72
+		  }
73
+		  return new MultiPolygon($polygons);
74
+		}
75
+	  }
76
+	}
77
+	else {
78
+	  if ($this->result->status) throw new Exception('Error in Google Geocoder: '.$this->result->status);
79
+	  else throw new Exception('Unknown error in Google Geocoder');
80
+	  return FALSE;
81
+	}
82 82
   }
83 83
 
84 84
   /**
@@ -90,69 +90,69 @@  discard block
 block discarded – undo
90 90
    * @return string Does a reverse geocode of the geometry
91 91
    */
92 92
   public function write(Geometry $geometry, $return_type = 'string') {
93
-    $centroid = $geometry->getCentroid();
94
-    $lat = $centroid->getY();
95
-    $lon = $centroid->getX();
93
+	$centroid = $geometry->getCentroid();
94
+	$lat = $centroid->getY();
95
+	$lon = $centroid->getX();
96 96
     
97
-    $url = "http://maps.googleapis.com/maps/api/geocode/json";
98
-    $url .= '?latlng='.$lat.','.$lon;
99
-    $url .= '&sensor=false';
100
-    $this->result = json_decode(@file_get_contents($url));
97
+	$url = "http://maps.googleapis.com/maps/api/geocode/json";
98
+	$url .= '?latlng='.$lat.','.$lon;
99
+	$url .= '&sensor=false';
100
+	$this->result = json_decode(@file_get_contents($url));
101 101
     
102
-    if ($this->result->status == 'OK') {
103
-      if ($return_type == 'string') {
104
-        return $this->result->results[0]->formatted_address;
105
-      }
106
-      if ($return_type == 'array') {
107
-        return $this->result->results[0]->address_components;
108
-      }
109
-    }
110
-    else {
111
-      if ($this->result->status) throw new Exception('Error in Google Reverse Geocoder: '.$this->result->status);
112
-      else throw new Exception('Unknown error in Google Reverse Geocoder');
113
-      return FALSE;
114
-    }
102
+	if ($this->result->status == 'OK') {
103
+	  if ($return_type == 'string') {
104
+		return $this->result->results[0]->formatted_address;
105
+	  }
106
+	  if ($return_type == 'array') {
107
+		return $this->result->results[0]->address_components;
108
+	  }
109
+	}
110
+	else {
111
+	  if ($this->result->status) throw new Exception('Error in Google Reverse Geocoder: '.$this->result->status);
112
+	  else throw new Exception('Unknown error in Google Reverse Geocoder');
113
+	  return FALSE;
114
+	}
115 115
   }
116 116
   
117 117
   private function getPoint($delta = 0) {
118
-    $lat = $this->result->results[$delta]->geometry->location->lat;
119
-    $lon = $this->result->results[$delta]->geometry->location->lng;
120
-    return new Point($lon, $lat);
118
+	$lat = $this->result->results[$delta]->geometry->location->lat;
119
+	$lon = $this->result->results[$delta]->geometry->location->lng;
120
+	return new Point($lon, $lat);
121 121
   }
122 122
 
123 123
   private function getPolygon($delta = 0) {
124
-    $points = array (
125
-      $this->getTopLeft($delta),
126
-      $this->getTopRight($delta),
127
-      $this->getBottomRight($delta),
128
-      $this->getBottomLeft($delta),
129
-      $this->getTopLeft($delta),
130
-    );
131
-    $outer_ring = new LineString($points);
132
-    return new Polygon(array($outer_ring));
124
+	$points = array (
125
+	  $this->getTopLeft($delta),
126
+	  $this->getTopRight($delta),
127
+	  $this->getBottomRight($delta),
128
+	  $this->getBottomLeft($delta),
129
+	  $this->getTopLeft($delta),
130
+	);
131
+	$outer_ring = new LineString($points);
132
+	return new Polygon(array($outer_ring));
133 133
   }
134 134
 
135 135
   private function getTopLeft($delta = 0) {
136
-    $lat = $this->result->results[$delta]->geometry->bounds->northeast->lat;
137
-    $lon = $this->result->results[$delta]->geometry->bounds->southwest->lng;
138
-    return new Point($lon, $lat);
136
+	$lat = $this->result->results[$delta]->geometry->bounds->northeast->lat;
137
+	$lon = $this->result->results[$delta]->geometry->bounds->southwest->lng;
138
+	return new Point($lon, $lat);
139 139
   }
140 140
 
141 141
   private function getTopRight($delta = 0) {
142
-    $lat = $this->result->results[$delta]->geometry->bounds->northeast->lat;
143
-    $lon = $this->result->results[$delta]->geometry->bounds->northeast->lng;
144
-    return new Point($lon, $lat);
142
+	$lat = $this->result->results[$delta]->geometry->bounds->northeast->lat;
143
+	$lon = $this->result->results[$delta]->geometry->bounds->northeast->lng;
144
+	return new Point($lon, $lat);
145 145
   }
146 146
   
147 147
   private function getBottomLeft($delta = 0) {
148
-    $lat = $this->result->results[$delta]->geometry->bounds->southwest->lat;
149
-    $lon = $this->result->results[$delta]->geometry->bounds->southwest->lng;
150
-     return new Point($lon, $lat);
148
+	$lat = $this->result->results[$delta]->geometry->bounds->southwest->lat;
149
+	$lon = $this->result->results[$delta]->geometry->bounds->southwest->lng;
150
+	 return new Point($lon, $lat);
151 151
   }
152 152
 
153 153
   private function getBottomRight($delta = 0) {
154
-    $lat = $this->result->results[$delta]->geometry->bounds->southwest->lat;
155
-    $lon = $this->result->results[$delta]->geometry->bounds->northeast->lng;
156
-    return new Point($lon, $lat);
154
+	$lat = $this->result->results[$delta]->geometry->bounds->southwest->lat;
155
+	$lon = $this->result->results[$delta]->geometry->bounds->northeast->lng;
156
+	return new Point($lon, $lat);
157 157
   }
158 158
 }
Please login to merge, or discard this patch.
require/libs/geoPHP/lib/adapters/EWKB.class.php 1 patch
Indentation   +62 added lines, -62 removed lines patch added patch discarded remove patch
@@ -13,33 +13,33 @@  discard block
 block discarded – undo
13 13
    * @return Geometry
14 14
    */
15 15
   public function read($wkb, $is_hex_string = FALSE) {
16
-    if ($is_hex_string) {
17
-      $wkb = pack('H*',$wkb);
18
-    }
16
+	if ($is_hex_string) {
17
+	  $wkb = pack('H*',$wkb);
18
+	}
19 19
     
20
-    // Open the wkb up in memory so we can examine the SRID
21
-    $mem = fopen('php://memory', 'r+');
22
-    fwrite($mem, $wkb);
23
-    fseek($mem, 0);
24
-    $base_info = unpack("corder/ctype/cz/cm/cs", fread($mem, 5));
25
-    if ($base_info['s']) {
26
-      $srid = current(unpack("Lsrid", fread($mem, 4)));
27
-    }
28
-    else {
29
-      $srid = NULL;
30
-    }
31
-    fclose($mem);
20
+	// Open the wkb up in memory so we can examine the SRID
21
+	$mem = fopen('php://memory', 'r+');
22
+	fwrite($mem, $wkb);
23
+	fseek($mem, 0);
24
+	$base_info = unpack("corder/ctype/cz/cm/cs", fread($mem, 5));
25
+	if ($base_info['s']) {
26
+	  $srid = current(unpack("Lsrid", fread($mem, 4)));
27
+	}
28
+	else {
29
+	  $srid = NULL;
30
+	}
31
+	fclose($mem);
32 32
     
33
-    // Run the wkb through the normal WKB reader to get the geometry
34
-    $wkb_reader = new WKB();
35
-    $geom = $wkb_reader->read($wkb);
33
+	// Run the wkb through the normal WKB reader to get the geometry
34
+	$wkb_reader = new WKB();
35
+	$geom = $wkb_reader->read($wkb);
36 36
     
37
-    // If there is an SRID, add it to the geometry
38
-    if ($srid) {
39
-      $geom->setSRID($srid);
40
-    }
37
+	// If there is an SRID, add it to the geometry
38
+	if ($srid) {
39
+	  $geom->setSRID($srid);
40
+	}
41 41
     
42
-    return $geom;
42
+	return $geom;
43 43
   }
44 44
   
45 45
   /**
@@ -50,47 +50,47 @@  discard block
 block discarded – undo
50 50
    * @return string The Extended-WKB binary string representation of the input geometries
51 51
    */
52 52
   public function write(Geometry $geometry, $write_as_hex = FALSE) {
53
-    // We always write into NDR (little endian)
54
-    $wkb = pack('c',1);
53
+	// We always write into NDR (little endian)
54
+	$wkb = pack('c',1);
55 55
     
56
-    switch ($geometry->getGeomType()) {
57
-      case 'Point';
58
-        $wkb .= pack('L',1);
59
-        $wkb .= $this->writePoint($geometry);
60
-        break;
61
-      case 'LineString';
62
-        $wkb .= pack('L',2);
63
-        $wkb .= $this->writeLineString($geometry);
64
-        break;
65
-      case 'Polygon';
66
-        $wkb .= pack('L',3);
67
-        $wkb .= $this->writePolygon($geometry);
68
-        break;
69
-      case 'MultiPoint';
70
-        $wkb .= pack('L',4);
71
-        $wkb .= $this->writeMulti($geometry);
72
-        break;
73
-      case 'MultiLineString';
74
-        $wkb .= pack('L',5);
75
-        $wkb .= $this->writeMulti($geometry);
76
-        break;
77
-      case 'MultiPolygon';
78
-        $wkb .= pack('L',6);
79
-        $wkb .= $this->writeMulti($geometry);
80
-        break;
81
-      case 'GeometryCollection';
82
-        $wkb .= pack('L',7);
83
-        $wkb .= $this->writeMulti($geometry);
84
-        break;
85
-    }
56
+	switch ($geometry->getGeomType()) {
57
+	  case 'Point';
58
+		$wkb .= pack('L',1);
59
+		$wkb .= $this->writePoint($geometry);
60
+		break;
61
+	  case 'LineString';
62
+		$wkb .= pack('L',2);
63
+		$wkb .= $this->writeLineString($geometry);
64
+		break;
65
+	  case 'Polygon';
66
+		$wkb .= pack('L',3);
67
+		$wkb .= $this->writePolygon($geometry);
68
+		break;
69
+	  case 'MultiPoint';
70
+		$wkb .= pack('L',4);
71
+		$wkb .= $this->writeMulti($geometry);
72
+		break;
73
+	  case 'MultiLineString';
74
+		$wkb .= pack('L',5);
75
+		$wkb .= $this->writeMulti($geometry);
76
+		break;
77
+	  case 'MultiPolygon';
78
+		$wkb .= pack('L',6);
79
+		$wkb .= $this->writeMulti($geometry);
80
+		break;
81
+	  case 'GeometryCollection';
82
+		$wkb .= pack('L',7);
83
+		$wkb .= $this->writeMulti($geometry);
84
+		break;
85
+	}
86 86
     
87
-    if ($write_as_hex) {
88
-      $unpacked = unpack('H*',$wkb);
89
-      return $unpacked[1];
90
-    }
91
-    else {
92
-      return $wkb;
93
-    }
87
+	if ($write_as_hex) {
88
+	  $unpacked = unpack('H*',$wkb);
89
+	  return $unpacked[1];
90
+	}
91
+	else {
92
+	  return $wkb;
93
+	}
94 94
   }
95 95
 
96 96
 }
Please login to merge, or discard this patch.
require/libs/geoPHP/lib/adapters/GeoHash.class.php 1 patch
Indentation   +118 added lines, -118 removed lines patch added patch discarded remove patch
@@ -16,21 +16,21 @@  discard block
 block discarded – undo
16 16
    * @see GeoAdapter::read()
17 17
    */
18 18
   public function read($hash, $as_grid = FALSE) {
19
-    $ll = $this->decode($hash);
20
-    if (!$as_grid) {
21
-      return new Point($ll['medlon'], $ll['medlat']);
22
-    }
23
-    else {
24
-      return new Polygon(array(
25
-        new LineString(array(
26
-          new Point($ll['minlon'], $ll['maxlat']),
27
-          new Point($ll['maxlon'], $ll['maxlat']),
28
-          new Point($ll['maxlon'], $ll['minlat']),
29
-          new Point($ll['minlon'], $ll['minlat']),
30
-          new Point($ll['minlon'], $ll['maxlat']),
31
-        ))
32
-      ));
33
-    }
19
+	$ll = $this->decode($hash);
20
+	if (!$as_grid) {
21
+	  return new Point($ll['medlon'], $ll['medlat']);
22
+	}
23
+	else {
24
+	  return new Polygon(array(
25
+		new LineString(array(
26
+		  new Point($ll['minlon'], $ll['maxlat']),
27
+		  new Point($ll['maxlon'], $ll['maxlat']),
28
+		  new Point($ll['maxlon'], $ll['minlat']),
29
+		  new Point($ll['minlon'], $ll['minlat']),
30
+		  new Point($ll['minlon'], $ll['maxlat']),
31
+		))
32
+	  ));
33
+	}
34 34
   }
35 35
 
36 36
   /**
@@ -40,32 +40,32 @@  discard block
 block discarded – undo
40 40
    * @see GeoAdapter::write()
41 41
    */
42 42
   public function write(Geometry $geometry, $precision = NULL){
43
-    if ($geometry->isEmpty()) return '';
43
+	if ($geometry->isEmpty()) return '';
44 44
 
45
-    if($geometry->geometryType() === 'Point'){
46
-      return $this->encodePoint($geometry, $precision);
47
-    }
48
-    else {
49
-      // The geohash is the hash grid ID that fits the envelope
50
-      $envelope = $geometry->envelope();
51
-      $geohashes = array();
52
-      $geohash = '';
53
-      foreach ($envelope->getPoints() as $point) {
54
-        $geohashes[] = $this->encodePoint($point, 0.0000001);
55
-      }
56
-      $i = 0;
57
-      while ($i < strlen($geohashes[0])) {
58
-        $char = $geohashes[0][$i];
59
-        foreach ($geohashes as $hash) {
60
-          if ($hash[$i] != $char) {
61
-            return $geohash;
62
-          }
63
-        }
64
-        $geohash .= $char;
65
-        $i++;
66
-      }
67
-      return $geohash;
68
-    }
45
+	if($geometry->geometryType() === 'Point'){
46
+	  return $this->encodePoint($geometry, $precision);
47
+	}
48
+	else {
49
+	  // The geohash is the hash grid ID that fits the envelope
50
+	  $envelope = $geometry->envelope();
51
+	  $geohashes = array();
52
+	  $geohash = '';
53
+	  foreach ($envelope->getPoints() as $point) {
54
+		$geohashes[] = $this->encodePoint($point, 0.0000001);
55
+	  }
56
+	  $i = 0;
57
+	  while ($i < strlen($geohashes[0])) {
58
+		$char = $geohashes[0][$i];
59
+		foreach ($geohashes as $hash) {
60
+		  if ($hash[$i] != $char) {
61
+			return $geohash;
62
+		  }
63
+		}
64
+		$geohash .= $char;
65
+		$i++;
66
+	  }
67
+	  return $geohash;
68
+	}
69 69
   }
70 70
 
71 71
   /**
@@ -75,51 +75,51 @@  discard block
 block discarded – undo
75 75
    * @see https://github.com/asonge/php-geohash/issues/1
76 76
    */
77 77
   private function encodePoint($point, $precision = NULL){
78
-    if ($precision === NULL) {
79
-      $lap = strlen($point->y())-strpos($point->y(),".");
80
-      $lop = strlen($point->x())-strpos($point->x(),".");
81
-      $precision = pow(10,-max($lap-1,$lop-1,0))/2;
82
-    }
78
+	if ($precision === NULL) {
79
+	  $lap = strlen($point->y())-strpos($point->y(),".");
80
+	  $lop = strlen($point->x())-strpos($point->x(),".");
81
+	  $precision = pow(10,-max($lap-1,$lop-1,0))/2;
82
+	}
83 83
 
84
-    $minlat =  -90;
85
-    $maxlat =   90;
86
-    $minlon = -180;
87
-    $maxlon =  180;
88
-    $latE   =   90;
89
-    $lonE   =  180;
90
-    $i = 0;
91
-    $error = 180;
92
-    $hash='';
93
-    while($error>=$precision) {
94
-      $chr = 0;
95
-      for($b=4;$b>=0;--$b) {
96
-        if((1&$b) == (1&$i)) {
97
-          // even char, even bit OR odd char, odd bit...a lon
98
-          $next = ($minlon+$maxlon)/2;
99
-          if($point->x()>$next) {
100
-            $chr |= pow(2,$b);
101
-            $minlon = $next;
102
-          } else {
103
-            $maxlon = $next;
104
-          }
105
-          $lonE /= 2;
106
-        } else {
107
-          // odd char, even bit OR even char, odd bit...a lat
108
-          $next = ($minlat+$maxlat)/2;
109
-          if($point->y()>$next) {
110
-            $chr |= pow(2,$b);
111
-            $minlat = $next;
112
-          } else {
113
-            $maxlat = $next;
114
-          }
115
-          $latE /= 2;
116
-        }
117
-      }
118
-      $hash .= $this->table[$chr];
119
-      $i++;
120
-      $error = min($latE,$lonE);
121
-    }
122
-    return $hash;
84
+	$minlat =  -90;
85
+	$maxlat =   90;
86
+	$minlon = -180;
87
+	$maxlon =  180;
88
+	$latE   =   90;
89
+	$lonE   =  180;
90
+	$i = 0;
91
+	$error = 180;
92
+	$hash='';
93
+	while($error>=$precision) {
94
+	  $chr = 0;
95
+	  for($b=4;$b>=0;--$b) {
96
+		if((1&$b) == (1&$i)) {
97
+		  // even char, even bit OR odd char, odd bit...a lon
98
+		  $next = ($minlon+$maxlon)/2;
99
+		  if($point->x()>$next) {
100
+			$chr |= pow(2,$b);
101
+			$minlon = $next;
102
+		  } else {
103
+			$maxlon = $next;
104
+		  }
105
+		  $lonE /= 2;
106
+		} else {
107
+		  // odd char, even bit OR even char, odd bit...a lat
108
+		  $next = ($minlat+$maxlat)/2;
109
+		  if($point->y()>$next) {
110
+			$chr |= pow(2,$b);
111
+			$minlat = $next;
112
+		  } else {
113
+			$maxlat = $next;
114
+		  }
115
+		  $latE /= 2;
116
+		}
117
+	  }
118
+	  $hash .= $this->table[$chr];
119
+	  $i++;
120
+	  $error = min($latE,$lonE);
121
+	}
122
+	return $hash;
123 123
   }
124 124
 
125 125
   /**
@@ -128,39 +128,39 @@  discard block
 block discarded – undo
128 128
    * @see https://github.com/asonge/php-geohash/issues/1
129 129
    */
130 130
   private function decode($hash){
131
-    $ll = array();
132
-    $minlat =  -90;
133
-    $maxlat =   90;
134
-    $minlon = -180;
135
-    $maxlon =  180;
136
-    $latE   =   90;
137
-    $lonE   =  180;
138
-    for($i=0,$c=strlen($hash);$i<$c;$i++) {
139
-      $v = strpos($this->table,$hash[$i]);
140
-      if(1&$i) {
141
-        if(16&$v)$minlat = ($minlat+$maxlat)/2; else $maxlat = ($minlat+$maxlat)/2;
142
-        if(8&$v) $minlon = ($minlon+$maxlon)/2; else $maxlon = ($minlon+$maxlon)/2;
143
-        if(4&$v) $minlat = ($minlat+$maxlat)/2; else $maxlat = ($minlat+$maxlat)/2;
144
-        if(2&$v) $minlon = ($minlon+$maxlon)/2; else $maxlon = ($minlon+$maxlon)/2;
145
-        if(1&$v) $minlat = ($minlat+$maxlat)/2; else $maxlat = ($minlat+$maxlat)/2;
146
-        $latE /= 8;
147
-        $lonE /= 4;
148
-      } else {
149
-        if(16&$v)$minlon = ($minlon+$maxlon)/2; else $maxlon = ($minlon+$maxlon)/2;
150
-        if(8&$v) $minlat = ($minlat+$maxlat)/2; else $maxlat = ($minlat+$maxlat)/2;
151
-        if(4&$v) $minlon = ($minlon+$maxlon)/2; else $maxlon = ($minlon+$maxlon)/2;
152
-        if(2&$v) $minlat = ($minlat+$maxlat)/2; else $maxlat = ($minlat+$maxlat)/2;
153
-        if(1&$v) $minlon = ($minlon+$maxlon)/2; else $maxlon = ($minlon+$maxlon)/2;
154
-        $latE /= 4;
155
-        $lonE /= 8;
156
-      }
157
-    }
158
-    $ll['minlat'] = $minlat;
159
-    $ll['minlon'] = $minlon;
160
-    $ll['maxlat'] = $maxlat;
161
-    $ll['maxlon'] = $maxlon;
162
-    $ll['medlat'] = round(($minlat+$maxlat)/2, max(1, -round(log10($latE)))-1);
163
-    $ll['medlon'] = round(($minlon+$maxlon)/2, max(1, -round(log10($lonE)))-1);
164
-    return $ll;
131
+	$ll = array();
132
+	$minlat =  -90;
133
+	$maxlat =   90;
134
+	$minlon = -180;
135
+	$maxlon =  180;
136
+	$latE   =   90;
137
+	$lonE   =  180;
138
+	for($i=0,$c=strlen($hash);$i<$c;$i++) {
139
+	  $v = strpos($this->table,$hash[$i]);
140
+	  if(1&$i) {
141
+		if(16&$v)$minlat = ($minlat+$maxlat)/2; else $maxlat = ($minlat+$maxlat)/2;
142
+		if(8&$v) $minlon = ($minlon+$maxlon)/2; else $maxlon = ($minlon+$maxlon)/2;
143
+		if(4&$v) $minlat = ($minlat+$maxlat)/2; else $maxlat = ($minlat+$maxlat)/2;
144
+		if(2&$v) $minlon = ($minlon+$maxlon)/2; else $maxlon = ($minlon+$maxlon)/2;
145
+		if(1&$v) $minlat = ($minlat+$maxlat)/2; else $maxlat = ($minlat+$maxlat)/2;
146
+		$latE /= 8;
147
+		$lonE /= 4;
148
+	  } else {
149
+		if(16&$v)$minlon = ($minlon+$maxlon)/2; else $maxlon = ($minlon+$maxlon)/2;
150
+		if(8&$v) $minlat = ($minlat+$maxlat)/2; else $maxlat = ($minlat+$maxlat)/2;
151
+		if(4&$v) $minlon = ($minlon+$maxlon)/2; else $maxlon = ($minlon+$maxlon)/2;
152
+		if(2&$v) $minlat = ($minlat+$maxlat)/2; else $maxlat = ($minlat+$maxlat)/2;
153
+		if(1&$v) $minlon = ($minlon+$maxlon)/2; else $maxlon = ($minlon+$maxlon)/2;
154
+		$latE /= 4;
155
+		$lonE /= 8;
156
+	  }
157
+	}
158
+	$ll['minlat'] = $minlat;
159
+	$ll['minlon'] = $minlon;
160
+	$ll['maxlat'] = $maxlat;
161
+	$ll['maxlon'] = $maxlon;
162
+	$ll['medlat'] = round(($minlat+$maxlat)/2, max(1, -round(log10($latE)))-1);
163
+	$ll['medlon'] = round(($minlon+$maxlon)/2, max(1, -round(log10($lonE)))-1);
164
+	return $ll;
165 165
   }
166 166
 }
Please login to merge, or discard this patch.
require/libs/geoPHP/lib/adapters/GPX.class.php 1 patch
Indentation   +103 added lines, -103 removed lines patch added patch discarded remove patch
@@ -23,7 +23,7 @@  discard block
 block discarded – undo
23 23
    * @return Geometry|GeometryCollection
24 24
    */
25 25
   public function read($gpx) {
26
-    return $this->geomFromText($gpx);
26
+	return $this->geomFromText($gpx);
27 27
   }
28 28
 
29 29
   /**
@@ -34,147 +34,147 @@  discard block
 block discarded – undo
34 34
    * @return string The GPX string representation of the input geometries
35 35
    */
36 36
   public function write(Geometry $geometry, $namespace = FALSE) {
37
-    if ($geometry->isEmpty()) return NULL;
38
-    if ($namespace) {
39
-      $this->namespace = $namespace;
40
-      $this->nss = $namespace.':';    
41
-    }
42
-    return '<'.$this->nss.'gpx creator="geoPHP" version="1.0">'.$this->geometryToGPX($geometry).'</'.$this->nss.'gpx>';
37
+	if ($geometry->isEmpty()) return NULL;
38
+	if ($namespace) {
39
+	  $this->namespace = $namespace;
40
+	  $this->nss = $namespace.':';    
41
+	}
42
+	return '<'.$this->nss.'gpx creator="geoPHP" version="1.0">'.$this->geometryToGPX($geometry).'</'.$this->nss.'gpx>';
43 43
   }
44 44
   
45 45
   public function geomFromText($text) {
46
-    // Change to lower-case and strip all CDATA
47
-    $text = strtolower($text);
48
-    $text = preg_replace('/<!\[cdata\[(.*?)\]\]>/s','',$text);
46
+	// Change to lower-case and strip all CDATA
47
+	$text = strtolower($text);
48
+	$text = preg_replace('/<!\[cdata\[(.*?)\]\]>/s','',$text);
49 49
     
50
-    // Load into DOMDocument
51
-    $xmlobj = new DOMDocument();
52
-    @$xmlobj->loadXML($text);
53
-    if ($xmlobj === false) {
54
-      throw new Exception("Invalid GPX: ". $text);
55
-    }
50
+	// Load into DOMDocument
51
+	$xmlobj = new DOMDocument();
52
+	@$xmlobj->loadXML($text);
53
+	if ($xmlobj === false) {
54
+	  throw new Exception("Invalid GPX: ". $text);
55
+	}
56 56
     
57
-    $this->xmlobj = $xmlobj;
58
-    try {
59
-      $geom = $this->geomFromXML();
60
-    } catch(InvalidText $e) {
61
-        throw new Exception("Cannot Read Geometry From GPX: ". $text);
62
-    } catch(Exception $e) {
63
-        throw $e;
64
-    }
57
+	$this->xmlobj = $xmlobj;
58
+	try {
59
+	  $geom = $this->geomFromXML();
60
+	} catch(InvalidText $e) {
61
+		throw new Exception("Cannot Read Geometry From GPX: ". $text);
62
+	} catch(Exception $e) {
63
+		throw $e;
64
+	}
65 65
 
66
-    return $geom;
66
+	return $geom;
67 67
   }
68 68
   
69 69
   protected function geomFromXML() {
70
-    $geometries = array();
71
-    $geometries = array_merge($geometries, $this->parseWaypoints());
72
-    $geometries = array_merge($geometries, $this->parseTracks());
73
-    $geometries = array_merge($geometries, $this->parseRoutes());
70
+	$geometries = array();
71
+	$geometries = array_merge($geometries, $this->parseWaypoints());
72
+	$geometries = array_merge($geometries, $this->parseTracks());
73
+	$geometries = array_merge($geometries, $this->parseRoutes());
74 74
     
75
-    if (empty($geometries)) {
76
-      throw new Exception("Invalid / Empty GPX");
77
-    }
75
+	if (empty($geometries)) {
76
+	  throw new Exception("Invalid / Empty GPX");
77
+	}
78 78
     
79
-    return geoPHP::geometryReduce($geometries); 
79
+	return geoPHP::geometryReduce($geometries); 
80 80
   }
81 81
   
82 82
   protected function childElements($xml, $nodename = '') {
83
-    $children = array();
84
-    foreach ($xml->childNodes as $child) {
85
-      if ($child->nodeName == $nodename) {
86
-        $children[] = $child;
87
-      }
88
-    }
89
-    return $children;
83
+	$children = array();
84
+	foreach ($xml->childNodes as $child) {
85
+	  if ($child->nodeName == $nodename) {
86
+		$children[] = $child;
87
+	  }
88
+	}
89
+	return $children;
90 90
   }
91 91
   
92 92
   protected function parseWaypoints() {
93
-    $points = array();
94
-    $wpt_elements = $this->xmlobj->getElementsByTagName('wpt');
95
-    foreach ($wpt_elements as $wpt) {
96
-      $lat = $wpt->attributes->getNamedItem("lat")->nodeValue;
97
-      $lon = $wpt->attributes->getNamedItem("lon")->nodeValue;
98
-      $points[] = new Point($lon, $lat);
99
-    }
100
-    return $points;
93
+	$points = array();
94
+	$wpt_elements = $this->xmlobj->getElementsByTagName('wpt');
95
+	foreach ($wpt_elements as $wpt) {
96
+	  $lat = $wpt->attributes->getNamedItem("lat")->nodeValue;
97
+	  $lon = $wpt->attributes->getNamedItem("lon")->nodeValue;
98
+	  $points[] = new Point($lon, $lat);
99
+	}
100
+	return $points;
101 101
   }
102 102
   
103 103
   protected function parseTracks() {
104
-    $lines = array();
105
-    $trk_elements = $this->xmlobj->getElementsByTagName('trk');
106
-    foreach ($trk_elements as $trk) {
107
-      $components = array();
108
-      foreach ($this->childElements($trk, 'trkseg') as $trkseg) {
109
-        foreach ($this->childElements($trkseg, 'trkpt') as $trkpt) {
110
-          $lat = $trkpt->attributes->getNamedItem("lat")->nodeValue;
111
-          $lon = $trkpt->attributes->getNamedItem("lon")->nodeValue;
112
-          $components[] = new Point($lon, $lat);
113
-        }
114
-      }
115
-      if ($components) {$lines[] = new LineString($components);}
116
-    }
117
-    return $lines;
104
+	$lines = array();
105
+	$trk_elements = $this->xmlobj->getElementsByTagName('trk');
106
+	foreach ($trk_elements as $trk) {
107
+	  $components = array();
108
+	  foreach ($this->childElements($trk, 'trkseg') as $trkseg) {
109
+		foreach ($this->childElements($trkseg, 'trkpt') as $trkpt) {
110
+		  $lat = $trkpt->attributes->getNamedItem("lat")->nodeValue;
111
+		  $lon = $trkpt->attributes->getNamedItem("lon")->nodeValue;
112
+		  $components[] = new Point($lon, $lat);
113
+		}
114
+	  }
115
+	  if ($components) {$lines[] = new LineString($components);}
116
+	}
117
+	return $lines;
118 118
   }
119 119
   
120 120
   protected function parseRoutes() {
121
-    $lines = array();
122
-    $rte_elements = $this->xmlobj->getElementsByTagName('rte');
123
-    foreach ($rte_elements as $rte) {
124
-      $components = array();
125
-      foreach ($this->childElements($rte, 'rtept') as $rtept) {
126
-        $lat = $rtept->attributes->getNamedItem("lat")->nodeValue;
127
-        $lon = $rtept->attributes->getNamedItem("lon")->nodeValue;
128
-        $components[] = new Point($lon, $lat);
129
-      }
130
-      $lines[] = new LineString($components);
131
-    }
132
-    return $lines;
121
+	$lines = array();
122
+	$rte_elements = $this->xmlobj->getElementsByTagName('rte');
123
+	foreach ($rte_elements as $rte) {
124
+	  $components = array();
125
+	  foreach ($this->childElements($rte, 'rtept') as $rtept) {
126
+		$lat = $rtept->attributes->getNamedItem("lat")->nodeValue;
127
+		$lon = $rtept->attributes->getNamedItem("lon")->nodeValue;
128
+		$components[] = new Point($lon, $lat);
129
+	  }
130
+	  $lines[] = new LineString($components);
131
+	}
132
+	return $lines;
133 133
   }
134 134
   
135 135
   protected function geometryToGPX($geom) {
136
-    $type = strtolower($geom->getGeomType());
137
-    switch ($type) {
138
-      case 'point':
139
-        return $this->pointToGPX($geom);
140
-        break;
141
-      case 'linestring':
142
-        return $this->linestringToGPX($geom);
143
-        break;
144
-      case 'polygon':
145
-      case 'multipoint':
146
-      case 'multilinestring':
147
-      case 'multipolygon':
148
-      case 'geometrycollection':
149
-        return $this->collectionToGPX($geom);
150
-        break;
151
-    }
136
+	$type = strtolower($geom->getGeomType());
137
+	switch ($type) {
138
+	  case 'point':
139
+		return $this->pointToGPX($geom);
140
+		break;
141
+	  case 'linestring':
142
+		return $this->linestringToGPX($geom);
143
+		break;
144
+	  case 'polygon':
145
+	  case 'multipoint':
146
+	  case 'multilinestring':
147
+	  case 'multipolygon':
148
+	  case 'geometrycollection':
149
+		return $this->collectionToGPX($geom);
150
+		break;
151
+	}
152 152
   }
153 153
   
154 154
   private function pointToGPX($geom) {
155
-    return '<'.$this->nss.'wpt lat="'.$geom->getY().'" lon="'.$geom->getX().'" />';
155
+	return '<'.$this->nss.'wpt lat="'.$geom->getY().'" lon="'.$geom->getX().'" />';
156 156
   }
157 157
   
158 158
   private function linestringToGPX($geom) {
159
-    $gpx = '<'.$this->nss.'trk><'.$this->nss.'trkseg>';
159
+	$gpx = '<'.$this->nss.'trk><'.$this->nss.'trkseg>';
160 160
     
161
-    foreach ($geom->getComponents() as $comp) {
162
-      $gpx .= '<'.$this->nss.'trkpt lat="'.$comp->getY().'" lon="'.$comp->getX().'" />';
163
-    }
161
+	foreach ($geom->getComponents() as $comp) {
162
+	  $gpx .= '<'.$this->nss.'trkpt lat="'.$comp->getY().'" lon="'.$comp->getX().'" />';
163
+	}
164 164
     
165
-    $gpx .= '</'.$this->nss.'trkseg></'.$this->nss.'trk>';
165
+	$gpx .= '</'.$this->nss.'trkseg></'.$this->nss.'trk>';
166 166
     
167
-    return $gpx;
167
+	return $gpx;
168 168
   }
169 169
   
170 170
   public function collectionToGPX($geom) {
171
-    $gpx = '';
172
-    $components = $geom->getComponents();
173
-    foreach ($geom->getComponents() as $comp) {
174
-      $gpx .= $this->geometryToGPX($comp);
175
-    }
171
+	$gpx = '';
172
+	$components = $geom->getComponents();
173
+	foreach ($geom->getComponents() as $comp) {
174
+	  $gpx .= $this->geometryToGPX($comp);
175
+	}
176 176
     
177
-    return $gpx;
177
+	return $gpx;
178 178
   }
179 179
 
180 180
 }
Please login to merge, or discard this patch.
require/libs/geoPHP/lib/adapters/GeoJSON.class.php 1 patch
Indentation   +89 added lines, -89 removed lines patch added patch discarded remove patch
@@ -16,97 +16,97 @@  discard block
 block discarded – undo
16 16
    * @return object Geometry
17 17
    */
18 18
   public function read($input) {
19
-    if (is_string($input)) {
20
-      $input = json_decode($input);
21
-    }
22
-    if (!is_object($input)) {
23
-      throw new Exception('Invalid JSON');
24
-    }
25
-    if (!is_string($input->type)) {
26
-      throw new Exception('Invalid JSON');
27
-    }
28
-
29
-    // Check to see if it's a FeatureCollection
30
-    if ($input->type == 'FeatureCollection') {
31
-      $geoms = array();
32
-      foreach ($input->features as $feature) {
33
-        $geoms[] = $this->read($feature);
34
-      }
35
-      return geoPHP::geometryReduce($geoms);
36
-    }
37
-
38
-    // Check to see if it's a Feature
39
-    if ($input->type == 'Feature') {
40
-      return $this->read($input->geometry);
41
-    }
42
-
43
-    // It's a geometry - process it
44
-    return $this->objToGeom($input);
19
+	if (is_string($input)) {
20
+	  $input = json_decode($input);
21
+	}
22
+	if (!is_object($input)) {
23
+	  throw new Exception('Invalid JSON');
24
+	}
25
+	if (!is_string($input->type)) {
26
+	  throw new Exception('Invalid JSON');
27
+	}
28
+
29
+	// Check to see if it's a FeatureCollection
30
+	if ($input->type == 'FeatureCollection') {
31
+	  $geoms = array();
32
+	  foreach ($input->features as $feature) {
33
+		$geoms[] = $this->read($feature);
34
+	  }
35
+	  return geoPHP::geometryReduce($geoms);
36
+	}
37
+
38
+	// Check to see if it's a Feature
39
+	if ($input->type == 'Feature') {
40
+	  return $this->read($input->geometry);
41
+	}
42
+
43
+	// It's a geometry - process it
44
+	return $this->objToGeom($input);
45 45
   }
46 46
 
47 47
   private function objToGeom($obj) {
48
-    $type = $obj->type;
48
+	$type = $obj->type;
49 49
 
50
-    if ($type == 'GeometryCollection') {
51
-      return $this->objToGeometryCollection($obj);
52
-    }
53
-    $method = 'arrayTo' . $type;
54
-    return $this->$method($obj->coordinates);
50
+	if ($type == 'GeometryCollection') {
51
+	  return $this->objToGeometryCollection($obj);
52
+	}
53
+	$method = 'arrayTo' . $type;
54
+	return $this->$method($obj->coordinates);
55 55
   }
56 56
 
57 57
   private function arrayToPoint($array) {
58
-    return new Point($array[0], $array[1]);
58
+	return new Point($array[0], $array[1]);
59 59
   }
60 60
 
61 61
   private function arrayToLineString($array) {
62
-    $points = array();
63
-    foreach ($array as $comp_array) {
64
-      $points[] = $this->arrayToPoint($comp_array);
65
-    }
66
-    return new LineString($points);
62
+	$points = array();
63
+	foreach ($array as $comp_array) {
64
+	  $points[] = $this->arrayToPoint($comp_array);
65
+	}
66
+	return new LineString($points);
67 67
   }
68 68
 
69 69
   private function arrayToPolygon($array) {
70
-    $lines = array();
71
-    foreach ($array as $comp_array) {
72
-      $lines[] = $this->arrayToLineString($comp_array);
73
-    }
74
-    return new Polygon($lines);
70
+	$lines = array();
71
+	foreach ($array as $comp_array) {
72
+	  $lines[] = $this->arrayToLineString($comp_array);
73
+	}
74
+	return new Polygon($lines);
75 75
   }
76 76
 
77 77
   private function arrayToMultiPoint($array) {
78
-    $points = array();
79
-    foreach ($array as $comp_array) {
80
-      $points[] = $this->arrayToPoint($comp_array);
81
-    }
82
-    return new MultiPoint($points);
78
+	$points = array();
79
+	foreach ($array as $comp_array) {
80
+	  $points[] = $this->arrayToPoint($comp_array);
81
+	}
82
+	return new MultiPoint($points);
83 83
   }
84 84
 
85 85
   private function arrayToMultiLineString($array) {
86
-    $lines = array();
87
-    foreach ($array as $comp_array) {
88
-      $lines[] = $this->arrayToLineString($comp_array);
89
-    }
90
-    return new MultiLineString($lines);
86
+	$lines = array();
87
+	foreach ($array as $comp_array) {
88
+	  $lines[] = $this->arrayToLineString($comp_array);
89
+	}
90
+	return new MultiLineString($lines);
91 91
   }
92 92
 
93 93
   private function arrayToMultiPolygon($array) {
94
-    $polys = array();
95
-    foreach ($array as $comp_array) {
96
-      $polys[] = $this->arrayToPolygon($comp_array);
97
-    }
98
-    return new MultiPolygon($polys);
94
+	$polys = array();
95
+	foreach ($array as $comp_array) {
96
+	  $polys[] = $this->arrayToPolygon($comp_array);
97
+	}
98
+	return new MultiPolygon($polys);
99 99
   }
100 100
 
101 101
   private function objToGeometryCollection($obj) {
102
-    $geoms = array();
103
-    if (empty($obj->geometries)) {
104
-      throw new Exception('Invalid GeoJSON: GeometryCollection with no component geometries');
105
-    }
106
-    foreach ($obj->geometries as $comp_object) {
107
-      $geoms[] = $this->objToGeom($comp_object);
108
-    }
109
-    return new GeometryCollection($geoms);
102
+	$geoms = array();
103
+	if (empty($obj->geometries)) {
104
+	  throw new Exception('Invalid GeoJSON: GeometryCollection with no component geometries');
105
+	}
106
+	foreach ($obj->geometries as $comp_object) {
107
+	  $geoms[] = $this->objToGeom($comp_object);
108
+	}
109
+	return new GeometryCollection($geoms);
110 110
   }
111 111
 
112 112
   /**
@@ -118,32 +118,32 @@  discard block
 block discarded – undo
118 118
    * @return string The GeoJSON string
119 119
    */
120 120
   public function write(Geometry $geometry, $return_array = FALSE) {
121
-    if ($return_array) {
122
-      return $this->getArray($geometry);
123
-    }
124
-    else {
125
-      return json_encode($this->getArray($geometry));
126
-    }
121
+	if ($return_array) {
122
+	  return $this->getArray($geometry);
123
+	}
124
+	else {
125
+	  return json_encode($this->getArray($geometry));
126
+	}
127 127
   }
128 128
 
129 129
   public function getArray($geometry) {
130
-    if ($geometry->getGeomType() == 'GeometryCollection') {
131
-      $component_array = array();
132
-      foreach ($geometry->components as $component) {
133
-        $component_array[] = array(
134
-          'type' => $component->geometryType(),
135
-          'coordinates' => $component->asArray(),
136
-        );
137
-      }
138
-      return array(
139
-        'type'=> 'GeometryCollection',
140
-        'geometries'=> $component_array,
141
-      );
142
-    }
143
-    else return array(
144
-      'type'=> $geometry->getGeomType(),
145
-      'coordinates'=> $geometry->asArray(),
146
-    );
130
+	if ($geometry->getGeomType() == 'GeometryCollection') {
131
+	  $component_array = array();
132
+	  foreach ($geometry->components as $component) {
133
+		$component_array[] = array(
134
+		  'type' => $component->geometryType(),
135
+		  'coordinates' => $component->asArray(),
136
+		);
137
+	  }
138
+	  return array(
139
+		'type'=> 'GeometryCollection',
140
+		'geometries'=> $component_array,
141
+	  );
142
+	}
143
+	else return array(
144
+	  'type'=> $geometry->getGeomType(),
145
+	  'coordinates'=> $geometry->asArray(),
146
+	);
147 147
   }
148 148
 }
149 149
 
Please login to merge, or discard this patch.
require/libs/geoPHP/lib/adapters/WKB.class.php 1 patch
Indentation   +161 added lines, -161 removed lines patch added patch discarded remove patch
@@ -29,120 +29,120 @@  discard block
 block discarded – undo
29 29
    * @return Geometry
30 30
    */
31 31
   public function read($wkb, $is_hex_string = FALSE) {
32
-    if ($is_hex_string) {
33
-      $wkb = pack('H*',$wkb);
34
-    }
32
+	if ($is_hex_string) {
33
+	  $wkb = pack('H*',$wkb);
34
+	}
35 35
 
36
-    if (empty($wkb)) {
37
-      throw new Exception('Cannot read empty WKB geometry. Found ' . gettype($wkb));
38
-    }
36
+	if (empty($wkb)) {
37
+	  throw new Exception('Cannot read empty WKB geometry. Found ' . gettype($wkb));
38
+	}
39 39
 
40
-    $mem = fopen('php://memory', 'r+');
41
-    fwrite($mem, $wkb);
42
-    fseek($mem, 0);
40
+	$mem = fopen('php://memory', 'r+');
41
+	fwrite($mem, $wkb);
42
+	fseek($mem, 0);
43 43
 
44
-    $geometry = $this->getGeometry($mem);
45
-    fclose($mem);
46
-    return $geometry;
44
+	$geometry = $this->getGeometry($mem);
45
+	fclose($mem);
46
+	return $geometry;
47 47
   }
48 48
 
49 49
   function getGeometry(&$mem) {
50
-    $base_info = unpack("corder/ctype/cz/cm/cs", fread($mem, 5));
51
-    if ($base_info['order'] !== 1) {
52
-      throw new Exception('Only NDR (little endian) SKB format is supported at the moment');
53
-    }
54
-
55
-    if ($base_info['z']) {
56
-      $this->dimension++;
57
-      $this->z = TRUE;
58
-    }
59
-    if ($base_info['m']) {
60
-      $this->dimension++;
61
-      $this->m = TRUE;
62
-    }
63
-
64
-    // If there is SRID information, ignore it - use EWKB Adapter to get SRID support
65
-    if ($base_info['s']) {
66
-      fread($mem, 4);
67
-    }
68
-
69
-    switch ($base_info['type']) {
70
-      case 1:
71
-        return $this->getPoint($mem);
72
-      case 2:
73
-        return $this->getLinstring($mem);
74
-      case 3:
75
-        return $this->getPolygon($mem);
76
-      case 4:
77
-        return $this->getMulti($mem,'point');
78
-      case 5:
79
-        return $this->getMulti($mem,'line');
80
-      case 6:
81
-        return $this->getMulti($mem,'polygon');
82
-      case 7:
83
-        return $this->getMulti($mem,'geometry');
84
-    }
50
+	$base_info = unpack("corder/ctype/cz/cm/cs", fread($mem, 5));
51
+	if ($base_info['order'] !== 1) {
52
+	  throw new Exception('Only NDR (little endian) SKB format is supported at the moment');
53
+	}
54
+
55
+	if ($base_info['z']) {
56
+	  $this->dimension++;
57
+	  $this->z = TRUE;
58
+	}
59
+	if ($base_info['m']) {
60
+	  $this->dimension++;
61
+	  $this->m = TRUE;
62
+	}
63
+
64
+	// If there is SRID information, ignore it - use EWKB Adapter to get SRID support
65
+	if ($base_info['s']) {
66
+	  fread($mem, 4);
67
+	}
68
+
69
+	switch ($base_info['type']) {
70
+	  case 1:
71
+		return $this->getPoint($mem);
72
+	  case 2:
73
+		return $this->getLinstring($mem);
74
+	  case 3:
75
+		return $this->getPolygon($mem);
76
+	  case 4:
77
+		return $this->getMulti($mem,'point');
78
+	  case 5:
79
+		return $this->getMulti($mem,'line');
80
+	  case 6:
81
+		return $this->getMulti($mem,'polygon');
82
+	  case 7:
83
+		return $this->getMulti($mem,'geometry');
84
+	}
85 85
   }
86 86
 
87 87
   function getPoint(&$mem) {
88
-    $point_coords = unpack("d*", fread($mem,$this->dimension*8));
89
-    return new Point($point_coords[1],$point_coords[2]);
88
+	$point_coords = unpack("d*", fread($mem,$this->dimension*8));
89
+	return new Point($point_coords[1],$point_coords[2]);
90 90
   }
91 91
 
92 92
   function getLinstring(&$mem) {
93
-    // Get the number of points expected in this string out of the first 4 bytes
94
-    $line_length = unpack('L',fread($mem,4));
95
-
96
-    // Return an empty linestring if there is no line-length
97
-    if (!$line_length[1]) return new LineString();
98
-
99
-    // Read the nubmer of points x2 (each point is two coords) into decimal-floats
100
-    $line_coords = unpack('d*', fread($mem,$line_length[1]*$this->dimension*8));
101
-
102
-    // We have our coords, build up the linestring
103
-    $components = array();
104
-    $i = 1;
105
-    $num_coords = count($line_coords);
106
-    while ($i <= $num_coords) {
107
-      $components[] = new Point($line_coords[$i],$line_coords[$i+1]);
108
-      $i += 2;
109
-    }
110
-    return new LineString($components);
93
+	// Get the number of points expected in this string out of the first 4 bytes
94
+	$line_length = unpack('L',fread($mem,4));
95
+
96
+	// Return an empty linestring if there is no line-length
97
+	if (!$line_length[1]) return new LineString();
98
+
99
+	// Read the nubmer of points x2 (each point is two coords) into decimal-floats
100
+	$line_coords = unpack('d*', fread($mem,$line_length[1]*$this->dimension*8));
101
+
102
+	// We have our coords, build up the linestring
103
+	$components = array();
104
+	$i = 1;
105
+	$num_coords = count($line_coords);
106
+	while ($i <= $num_coords) {
107
+	  $components[] = new Point($line_coords[$i],$line_coords[$i+1]);
108
+	  $i += 2;
109
+	}
110
+	return new LineString($components);
111 111
   }
112 112
 
113 113
   function getPolygon(&$mem) {
114
-    // Get the number of linestring expected in this poly out of the first 4 bytes
115
-    $poly_length = unpack('L',fread($mem,4));
116
-
117
-    $components = array();
118
-    $i = 1;
119
-    while ($i <= $poly_length[1]) {
120
-      $components[] = $this->getLinstring($mem);
121
-      $i++;
122
-    }
123
-    return new Polygon($components);
114
+	// Get the number of linestring expected in this poly out of the first 4 bytes
115
+	$poly_length = unpack('L',fread($mem,4));
116
+
117
+	$components = array();
118
+	$i = 1;
119
+	while ($i <= $poly_length[1]) {
120
+	  $components[] = $this->getLinstring($mem);
121
+	  $i++;
122
+	}
123
+	return new Polygon($components);
124 124
   }
125 125
 
126 126
   function getMulti(&$mem, $type) {
127
-    // Get the number of items expected in this multi out of the first 4 bytes
128
-    $multi_length = unpack('L',fread($mem,4));
129
-
130
-    $components = array();
131
-    $i = 1;
132
-    while ($i <= $multi_length[1]) {
133
-      $components[] = $this->getGeometry($mem);
134
-      $i++;
135
-    }
136
-    switch ($type) {
137
-      case 'point':
138
-        return new MultiPoint($components);
139
-      case 'line':
140
-        return new MultiLineString($components);
141
-      case 'polygon':
142
-        return new MultiPolygon($components);
143
-      case 'geometry':
144
-        return new GeometryCollection($components);
145
-    }
127
+	// Get the number of items expected in this multi out of the first 4 bytes
128
+	$multi_length = unpack('L',fread($mem,4));
129
+
130
+	$components = array();
131
+	$i = 1;
132
+	while ($i <= $multi_length[1]) {
133
+	  $components[] = $this->getGeometry($mem);
134
+	  $i++;
135
+	}
136
+	switch ($type) {
137
+	  case 'point':
138
+		return new MultiPoint($components);
139
+	  case 'line':
140
+		return new MultiLineString($components);
141
+	  case 'polygon':
142
+		return new MultiPolygon($components);
143
+	  case 'geometry':
144
+		return new GeometryCollection($components);
145
+	}
146 146
   }
147 147
 
148 148
   /**
@@ -153,90 +153,90 @@  discard block
 block discarded – undo
153 153
    * @return string The WKB string representation of the input geometries
154 154
    */
155 155
   public function write(Geometry $geometry, $write_as_hex = FALSE) {
156
-    // We always write into NDR (little endian)
157
-    $wkb = pack('c',1);
158
-
159
-    switch ($geometry->getGeomType()) {
160
-      case 'Point';
161
-        $wkb .= pack('L',1);
162
-        $wkb .= $this->writePoint($geometry);
163
-        break;
164
-      case 'LineString';
165
-        $wkb .= pack('L',2);
166
-        $wkb .= $this->writeLineString($geometry);
167
-        break;
168
-      case 'Polygon';
169
-        $wkb .= pack('L',3);
170
-        $wkb .= $this->writePolygon($geometry);
171
-        break;
172
-      case 'MultiPoint';
173
-        $wkb .= pack('L',4);
174
-        $wkb .= $this->writeMulti($geometry);
175
-        break;
176
-      case 'MultiLineString';
177
-        $wkb .= pack('L',5);
178
-        $wkb .= $this->writeMulti($geometry);
179
-        break;
180
-      case 'MultiPolygon';
181
-        $wkb .= pack('L',6);
182
-        $wkb .= $this->writeMulti($geometry);
183
-        break;
184
-      case 'GeometryCollection';
185
-        $wkb .= pack('L',7);
186
-        $wkb .= $this->writeMulti($geometry);
187
-        break;
188
-    }
189
-
190
-    if ($write_as_hex) {
191
-      $unpacked = unpack('H*',$wkb);
192
-      return $unpacked[1];
193
-    }
194
-    else {
195
-      return $wkb;
196
-    }
156
+	// We always write into NDR (little endian)
157
+	$wkb = pack('c',1);
158
+
159
+	switch ($geometry->getGeomType()) {
160
+	  case 'Point';
161
+		$wkb .= pack('L',1);
162
+		$wkb .= $this->writePoint($geometry);
163
+		break;
164
+	  case 'LineString';
165
+		$wkb .= pack('L',2);
166
+		$wkb .= $this->writeLineString($geometry);
167
+		break;
168
+	  case 'Polygon';
169
+		$wkb .= pack('L',3);
170
+		$wkb .= $this->writePolygon($geometry);
171
+		break;
172
+	  case 'MultiPoint';
173
+		$wkb .= pack('L',4);
174
+		$wkb .= $this->writeMulti($geometry);
175
+		break;
176
+	  case 'MultiLineString';
177
+		$wkb .= pack('L',5);
178
+		$wkb .= $this->writeMulti($geometry);
179
+		break;
180
+	  case 'MultiPolygon';
181
+		$wkb .= pack('L',6);
182
+		$wkb .= $this->writeMulti($geometry);
183
+		break;
184
+	  case 'GeometryCollection';
185
+		$wkb .= pack('L',7);
186
+		$wkb .= $this->writeMulti($geometry);
187
+		break;
188
+	}
189
+
190
+	if ($write_as_hex) {
191
+	  $unpacked = unpack('H*',$wkb);
192
+	  return $unpacked[1];
193
+	}
194
+	else {
195
+	  return $wkb;
196
+	}
197 197
   }
198 198
 
199 199
   function writePoint($point) {
200
-    // Set the coords
201
-    $wkb = pack('dd',$point->x(), $point->y());
200
+	// Set the coords
201
+	$wkb = pack('dd',$point->x(), $point->y());
202 202
 
203
-    return $wkb;
203
+	return $wkb;
204 204
   }
205 205
 
206 206
   function writeLineString($line) {
207
-    // Set the number of points in this line
208
-    $wkb = pack('L',$line->numPoints());
207
+	// Set the number of points in this line
208
+	$wkb = pack('L',$line->numPoints());
209 209
 
210
-    // Set the coords
211
-    foreach ($line->getComponents() as $point) {
212
-      $wkb .= pack('dd',$point->x(), $point->y());
213
-    }
210
+	// Set the coords
211
+	foreach ($line->getComponents() as $point) {
212
+	  $wkb .= pack('dd',$point->x(), $point->y());
213
+	}
214 214
 
215
-    return $wkb;
215
+	return $wkb;
216 216
   }
217 217
 
218 218
   function writePolygon($poly) {
219
-    // Set the number of lines in this poly
220
-    $wkb = pack('L',$poly->numGeometries());
219
+	// Set the number of lines in this poly
220
+	$wkb = pack('L',$poly->numGeometries());
221 221
 
222
-    // Write the lines
223
-    foreach ($poly->getComponents() as $line) {
224
-      $wkb .= $this->writeLineString($line);
225
-    }
222
+	// Write the lines
223
+	foreach ($poly->getComponents() as $line) {
224
+	  $wkb .= $this->writeLineString($line);
225
+	}
226 226
 
227
-    return $wkb;
227
+	return $wkb;
228 228
   }
229 229
 
230 230
   function writeMulti($geometry) {
231
-    // Set the number of components
232
-    $wkb = pack('L',$geometry->numGeometries());
231
+	// Set the number of components
232
+	$wkb = pack('L',$geometry->numGeometries());
233 233
 
234
-    // Write the components
235
-    foreach ($geometry->getComponents() as $component) {
236
-      $wkb .= $this->write($component);
237
-    }
234
+	// Write the components
235
+	foreach ($geometry->getComponents() as $component) {
236
+	  $wkb .= $this->write($component);
237
+	}
238 238
 
239
-    return $wkb;
239
+	return $wkb;
240 240
   }
241 241
 
242 242
 }
Please login to merge, or discard this patch.
require/libs/geoPHP/lib/adapters/KML.class.php 1 patch
Indentation   +168 added lines, -168 removed lines patch added patch discarded remove patch
@@ -31,7 +31,7 @@  discard block
 block discarded – undo
31 31
    * @return Geometry|GeometryCollection
32 32
    */
33 33
   public function read($kml) {
34
-    return $this->geomFromText($kml);
34
+	return $this->geomFromText($kml);
35 35
   }
36 36
 
37 37
   /**
@@ -42,218 +42,218 @@  discard block
 block discarded – undo
42 42
    * @return string The KML string representation of the input geometries
43 43
    */
44 44
   public function write(Geometry $geometry, $namespace = FALSE) {
45
-    if ($namespace) {
46
-      $this->namespace = $namespace;
47
-      $this->nss = $namespace.':';
48
-    }
49
-    return $this->geometryToKML($geometry);
45
+	if ($namespace) {
46
+	  $this->namespace = $namespace;
47
+	  $this->nss = $namespace.':';
48
+	}
49
+	return $this->geometryToKML($geometry);
50 50
   }
51 51
 
52 52
   public function geomFromText($text) {
53 53
 
54
-    // Change to lower-case and strip all CDATA
55
-    $text = mb_strtolower($text, mb_detect_encoding($text));
56
-    $text = preg_replace('/<!\[cdata\[(.*?)\]\]>/s','',$text);
57
-
58
-    // Load into DOMDOcument
59
-    $xmlobj = new DOMDocument();
60
-    @$xmlobj->loadXML($text);
61
-    if ($xmlobj === false) {
62
-      throw new Exception("Invalid KML: ". $text);
63
-    }
64
-
65
-    $this->xmlobj = $xmlobj;
66
-    try {
67
-      $geom = $this->geomFromXML();
68
-    } catch(InvalidText $e) {
69
-        throw new Exception("Cannot Read Geometry From KML: ". $text);
70
-    } catch(Exception $e) {
71
-        throw $e;
72
-    }
73
-
74
-    return $geom;
54
+	// Change to lower-case and strip all CDATA
55
+	$text = mb_strtolower($text, mb_detect_encoding($text));
56
+	$text = preg_replace('/<!\[cdata\[(.*?)\]\]>/s','',$text);
57
+
58
+	// Load into DOMDOcument
59
+	$xmlobj = new DOMDocument();
60
+	@$xmlobj->loadXML($text);
61
+	if ($xmlobj === false) {
62
+	  throw new Exception("Invalid KML: ". $text);
63
+	}
64
+
65
+	$this->xmlobj = $xmlobj;
66
+	try {
67
+	  $geom = $this->geomFromXML();
68
+	} catch(InvalidText $e) {
69
+		throw new Exception("Cannot Read Geometry From KML: ". $text);
70
+	} catch(Exception $e) {
71
+		throw $e;
72
+	}
73
+
74
+	return $geom;
75 75
   }
76 76
 
77 77
   protected function geomFromXML() {
78
-    $geometries = array();
79
-    $geom_types = geoPHP::geometryList();
80
-    $placemark_elements = $this->xmlobj->getElementsByTagName('placemark');
81
-    if ($placemark_elements->length) {
82
-      foreach ($placemark_elements as $placemark) {
83
-        foreach ($placemark->childNodes as $child) {
84
-          // Node names are all the same, except for MultiGeometry, which maps to GeometryCollection
85
-          $node_name = $child->nodeName == 'multigeometry' ? 'geometrycollection' : $child->nodeName;
86
-          if (array_key_exists($node_name, $geom_types)) {
87
-            $function = 'parse'.$geom_types[$node_name];
88
-            $geometries[] = $this->$function($child);
89
-          }
90
-        }
91
-      }
92
-    }
93
-    else {
94
-      // The document does not have a placemark, try to create a valid geometry from the root element
95
-      $node_name = $this->xmlobj->documentElement->nodeName == 'multigeometry' ? 'geometrycollection' : $this->xmlobj->documentElement->nodeName;
96
-      if (array_key_exists($node_name, $geom_types)) {
97
-        $function = 'parse'.$geom_types[$node_name];
98
-        $geometries[] = $this->$function($this->xmlobj->documentElement);
99
-      }
100
-    }
101
-    return geoPHP::geometryReduce($geometries);
78
+	$geometries = array();
79
+	$geom_types = geoPHP::geometryList();
80
+	$placemark_elements = $this->xmlobj->getElementsByTagName('placemark');
81
+	if ($placemark_elements->length) {
82
+	  foreach ($placemark_elements as $placemark) {
83
+		foreach ($placemark->childNodes as $child) {
84
+		  // Node names are all the same, except for MultiGeometry, which maps to GeometryCollection
85
+		  $node_name = $child->nodeName == 'multigeometry' ? 'geometrycollection' : $child->nodeName;
86
+		  if (array_key_exists($node_name, $geom_types)) {
87
+			$function = 'parse'.$geom_types[$node_name];
88
+			$geometries[] = $this->$function($child);
89
+		  }
90
+		}
91
+	  }
92
+	}
93
+	else {
94
+	  // The document does not have a placemark, try to create a valid geometry from the root element
95
+	  $node_name = $this->xmlobj->documentElement->nodeName == 'multigeometry' ? 'geometrycollection' : $this->xmlobj->documentElement->nodeName;
96
+	  if (array_key_exists($node_name, $geom_types)) {
97
+		$function = 'parse'.$geom_types[$node_name];
98
+		$geometries[] = $this->$function($this->xmlobj->documentElement);
99
+	  }
100
+	}
101
+	return geoPHP::geometryReduce($geometries);
102 102
   }
103 103
 
104 104
   protected function childElements($xml, $nodename = '') {
105
-    $children = array();
106
-    if ($xml->childNodes) {
107
-      foreach ($xml->childNodes as $child) {
108
-        if ($child->nodeName == $nodename) {
109
-          $children[] = $child;
110
-        }
111
-      }
112
-    }
113
-    return $children;
105
+	$children = array();
106
+	if ($xml->childNodes) {
107
+	  foreach ($xml->childNodes as $child) {
108
+		if ($child->nodeName == $nodename) {
109
+		  $children[] = $child;
110
+		}
111
+	  }
112
+	}
113
+	return $children;
114 114
   }
115 115
 
116 116
   protected function parsePoint($xml) {
117
-    $coordinates = $this->_extractCoordinates($xml);
118
-    return new Point($coordinates[0][0],$coordinates[0][1]);
117
+	$coordinates = $this->_extractCoordinates($xml);
118
+	return new Point($coordinates[0][0],$coordinates[0][1]);
119 119
   }
120 120
 
121 121
   protected function parseLineString($xml) {
122
-    $coordinates = $this->_extractCoordinates($xml);
123
-    $point_array = array();
124
-    foreach ($coordinates as $set) {
125
-      $point_array[] = new Point($set[0],$set[1]);
126
-    }
127
-    return new LineString($point_array);
122
+	$coordinates = $this->_extractCoordinates($xml);
123
+	$point_array = array();
124
+	foreach ($coordinates as $set) {
125
+	  $point_array[] = new Point($set[0],$set[1]);
126
+	}
127
+	return new LineString($point_array);
128 128
   }
129 129
 
130 130
   protected function parsePolygon($xml) {
131
-    $components = array();
132
-
133
-    $outer_boundary_element_a = $this->childElements($xml, 'outerboundaryis');
134
-    $outer_boundary_element = $outer_boundary_element_a[0];
135
-    $outer_ring_element_a = $this->childElements($outer_boundary_element, 'linearring');
136
-    $outer_ring_element = $outer_ring_element_a[0];
137
-    $components[] = $this->parseLineString($outer_ring_element);
138
-
139
-    if (count($components) != 1) {
140
-      throw new Exception("Invalid KML");
141
-    }
142
-
143
-    $inner_boundary_element_a = $this->childElements($xml, 'innerboundaryis');
144
-    if (count($inner_boundary_element_a)) {
145
-      foreach ($inner_boundary_element_a as $inner_boundary_element) {
146
-        foreach ($this->childElements($inner_boundary_element, 'linearring') as $inner_ring_element) {
147
-          $components[] = $this->parseLineString($inner_ring_element);
148
-        }
149
-      }
150
-    }
151
-
152
-    return new Polygon($components);
131
+	$components = array();
132
+
133
+	$outer_boundary_element_a = $this->childElements($xml, 'outerboundaryis');
134
+	$outer_boundary_element = $outer_boundary_element_a[0];
135
+	$outer_ring_element_a = $this->childElements($outer_boundary_element, 'linearring');
136
+	$outer_ring_element = $outer_ring_element_a[0];
137
+	$components[] = $this->parseLineString($outer_ring_element);
138
+
139
+	if (count($components) != 1) {
140
+	  throw new Exception("Invalid KML");
141
+	}
142
+
143
+	$inner_boundary_element_a = $this->childElements($xml, 'innerboundaryis');
144
+	if (count($inner_boundary_element_a)) {
145
+	  foreach ($inner_boundary_element_a as $inner_boundary_element) {
146
+		foreach ($this->childElements($inner_boundary_element, 'linearring') as $inner_ring_element) {
147
+		  $components[] = $this->parseLineString($inner_ring_element);
148
+		}
149
+	  }
150
+	}
151
+
152
+	return new Polygon($components);
153 153
   }
154 154
 
155 155
   protected function parseGeometryCollection($xml) {
156
-    $components = array();
157
-    $geom_types = geoPHP::geometryList();
158
-    foreach ($xml->childNodes as $child) {
159
-      $nodeName = ($child->nodeName == 'linearring') ? 'linestring' : $child->nodeName;
160
-      if (array_key_exists($nodeName, $geom_types)) {
161
-        $function = 'parse'.$geom_types[$nodeName];
162
-        $components[] = $this->$function($child);
163
-      }
164
-    }
165
-    return new GeometryCollection($components);
156
+	$components = array();
157
+	$geom_types = geoPHP::geometryList();
158
+	foreach ($xml->childNodes as $child) {
159
+	  $nodeName = ($child->nodeName == 'linearring') ? 'linestring' : $child->nodeName;
160
+	  if (array_key_exists($nodeName, $geom_types)) {
161
+		$function = 'parse'.$geom_types[$nodeName];
162
+		$components[] = $this->$function($child);
163
+	  }
164
+	}
165
+	return new GeometryCollection($components);
166 166
   }
167 167
 
168 168
   protected function _extractCoordinates($xml) {
169
-    $coord_elements = $this->childElements($xml, 'coordinates');
170
-    $coordinates = array();
171
-    if (count($coord_elements)) {
172
-      $coord_sets = explode(' ', preg_replace('/[\r\n]+/', ' ', $coord_elements[0]->nodeValue));
173
-      foreach ($coord_sets as $set_string) {
174
-        $set_string = trim($set_string);
175
-        if ($set_string) {
176
-          $set_array = explode(',',$set_string);
177
-          if (count($set_array) >= 2) {
178
-            $coordinates[] = $set_array;
179
-          }
180
-        }
181
-      }
182
-    }
183
-
184
-    return $coordinates;
169
+	$coord_elements = $this->childElements($xml, 'coordinates');
170
+	$coordinates = array();
171
+	if (count($coord_elements)) {
172
+	  $coord_sets = explode(' ', preg_replace('/[\r\n]+/', ' ', $coord_elements[0]->nodeValue));
173
+	  foreach ($coord_sets as $set_string) {
174
+		$set_string = trim($set_string);
175
+		if ($set_string) {
176
+		  $set_array = explode(',',$set_string);
177
+		  if (count($set_array) >= 2) {
178
+			$coordinates[] = $set_array;
179
+		  }
180
+		}
181
+	  }
182
+	}
183
+
184
+	return $coordinates;
185 185
   }
186 186
 
187 187
   private function geometryToKML($geom) {
188
-    $type = strtolower($geom->getGeomType());
189
-    switch ($type) {
190
-      case 'point':
191
-        return $this->pointToKML($geom);
192
-        break;
193
-      case 'linestring':
194
-        return $this->linestringToKML($geom);
195
-        break;
196
-      case 'polygon':
197
-        return $this->polygonToKML($geom);
198
-        break;
199
-      case 'multipoint':
200
-      case 'multilinestring':
201
-      case 'multipolygon':
202
-      case 'geometrycollection':
203
-        return $this->collectionToKML($geom);
204
-        break;
205
-    }
188
+	$type = strtolower($geom->getGeomType());
189
+	switch ($type) {
190
+	  case 'point':
191
+		return $this->pointToKML($geom);
192
+		break;
193
+	  case 'linestring':
194
+		return $this->linestringToKML($geom);
195
+		break;
196
+	  case 'polygon':
197
+		return $this->polygonToKML($geom);
198
+		break;
199
+	  case 'multipoint':
200
+	  case 'multilinestring':
201
+	  case 'multipolygon':
202
+	  case 'geometrycollection':
203
+		return $this->collectionToKML($geom);
204
+		break;
205
+	}
206 206
   }
207 207
 
208 208
   private function pointToKML($geom) {
209
-    return '<'.$this->nss.'Point><'.$this->nss.'coordinates>'.$geom->getX().",".$geom->getY().'</'.$this->nss.'coordinates></'.$this->nss.'Point>';
209
+	return '<'.$this->nss.'Point><'.$this->nss.'coordinates>'.$geom->getX().",".$geom->getY().'</'.$this->nss.'coordinates></'.$this->nss.'Point>';
210 210
   }
211 211
 
212 212
   private function linestringToKML($geom, $type = FALSE) {
213
-    if (!$type) {
214
-      $type = $geom->getGeomType();
215
-    }
213
+	if (!$type) {
214
+	  $type = $geom->getGeomType();
215
+	}
216 216
 
217
-    $str = '<'.$this->nss . $type .'>';
217
+	$str = '<'.$this->nss . $type .'>';
218 218
 
219
-    if (!$geom->isEmpty()) {
220
-      $str .= '<'.$this->nss.'coordinates>';
221
-      $i=0;
222
-      foreach ($geom->getComponents() as $comp) {
223
-        if ($i != 0) $str .= ' ';
224
-        $str .= $comp->getX() .','. $comp->getY();
225
-        $i++;
226
-      }
219
+	if (!$geom->isEmpty()) {
220
+	  $str .= '<'.$this->nss.'coordinates>';
221
+	  $i=0;
222
+	  foreach ($geom->getComponents() as $comp) {
223
+		if ($i != 0) $str .= ' ';
224
+		$str .= $comp->getX() .','. $comp->getY();
225
+		$i++;
226
+	  }
227 227
 
228
-      $str .= '</'.$this->nss.'coordinates>';
229
-    }
228
+	  $str .= '</'.$this->nss.'coordinates>';
229
+	}
230 230
 
231
-    $str .= '</'. $this->nss . $type .'>';
231
+	$str .= '</'. $this->nss . $type .'>';
232 232
 
233
-    return $str;
233
+	return $str;
234 234
   }
235 235
 
236 236
   public function polygonToKML($geom) {
237
-    $components = $geom->getComponents();
238
-    if (!empty($components)) {
239
-      $str = '<'.$this->nss.'outerBoundaryIs>' . $this->linestringToKML($components[0], 'LinearRing') . '</'.$this->nss.'outerBoundaryIs>';
240
-      foreach (array_slice($components, 1) as $comp) {
241
-        $str .= '<'.$this->nss.'innerBoundaryIs>' . $this->linestringToKML($comp) . '</'.$this->nss.'innerBoundaryIs>';
242
-      }
243
-    }
244
-
245
-    return '<'.$this->nss.'Polygon>'. $str .'</'.$this->nss.'Polygon>';
237
+	$components = $geom->getComponents();
238
+	if (!empty($components)) {
239
+	  $str = '<'.$this->nss.'outerBoundaryIs>' . $this->linestringToKML($components[0], 'LinearRing') . '</'.$this->nss.'outerBoundaryIs>';
240
+	  foreach (array_slice($components, 1) as $comp) {
241
+		$str .= '<'.$this->nss.'innerBoundaryIs>' . $this->linestringToKML($comp) . '</'.$this->nss.'innerBoundaryIs>';
242
+	  }
243
+	}
244
+
245
+	return '<'.$this->nss.'Polygon>'. $str .'</'.$this->nss.'Polygon>';
246 246
   }
247 247
 
248 248
   public function collectionToKML($geom) {
249
-    $components = $geom->getComponents();
250
-    $str = '<'.$this->nss.'MultiGeometry>';
251
-    foreach ($geom->getComponents() as $comp) {
252
-      $sub_adapter = new KML();
253
-      $str .= $sub_adapter->write($comp);
254
-    }
255
-
256
-    return $str .'</'.$this->nss.'MultiGeometry>';
249
+	$components = $geom->getComponents();
250
+	$str = '<'.$this->nss.'MultiGeometry>';
251
+	foreach ($geom->getComponents() as $comp) {
252
+	  $sub_adapter = new KML();
253
+	  $str .= $sub_adapter->write($comp);
254
+	}
255
+
256
+	return $str .'</'.$this->nss.'MultiGeometry>';
257 257
   }
258 258
 
259 259
 }
Please login to merge, or discard this patch.
require/libs/geoPHP/lib/geometry/GeometryCollection.class.php 1 patch
Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -12,14 +12,14 @@
 block discarded – undo
12 12
   // MultiPoint or a LineString, since they share the same structure (collection
13 13
   // of points). So we need to call out the type explicitly. 
14 14
   public function asArray() {
15
-    $array = array();
16
-    foreach ($this->components as $component) {
17
-      $array[] = array(
18
-        'type' => $component->geometryType(),
19
-        'components' => $component->asArray(),
20
-      );
21
-    }
22
-    return $array;
15
+	$array = array();
16
+	foreach ($this->components as $component) {
17
+	  $array[] = array(
18
+		'type' => $component->geometryType(),
19
+		'components' => $component->asArray(),
20
+	  );
21
+	}
22
+	return $array;
23 23
   }
24 24
   
25 25
   // Not valid for this geomettry
Please login to merge, or discard this patch.
require/libs/geoPHP/lib/geometry/Polygon.class.php 1 patch
Indentation   +117 added lines, -117 removed lines patch added patch discarded remove patch
@@ -9,70 +9,70 @@  discard block
 block discarded – undo
9 9
   protected $geom_type = 'Polygon';
10 10
 
11 11
   public function area($exterior_only = FALSE, $signed = FALSE) {
12
-    if ($this->isEmpty()) return 0;
12
+	if ($this->isEmpty()) return 0;
13 13
     
14
-    if ($this->geos() && $exterior_only == FALSE) {
15
-      return $this->geos()->area();
16
-    }
14
+	if ($this->geos() && $exterior_only == FALSE) {
15
+	  return $this->geos()->area();
16
+	}
17 17
     
18
-    $exterior_ring = $this->components[0];
19
-    $pts = $exterior_ring->getComponents();
18
+	$exterior_ring = $this->components[0];
19
+	$pts = $exterior_ring->getComponents();
20 20
     
21
-    $c = count($pts);
22
-    if((int)$c == '0') return NULL;
23
-    $a = '0';
24
-    foreach($pts as $k => $p){
25
-      $j = ($k + 1) % $c;
26
-      $a = $a + ($p->getX() * $pts[$j]->getY()) - ($p->getY() * $pts[$j]->getX());
27
-    }
21
+	$c = count($pts);
22
+	if((int)$c == '0') return NULL;
23
+	$a = '0';
24
+	foreach($pts as $k => $p){
25
+	  $j = ($k + 1) % $c;
26
+	  $a = $a + ($p->getX() * $pts[$j]->getY()) - ($p->getY() * $pts[$j]->getX());
27
+	}
28 28
     
29
-    if ($signed) $area = ($a / 2);
30
-    else $area = abs(($a / 2));
29
+	if ($signed) $area = ($a / 2);
30
+	else $area = abs(($a / 2));
31 31
     
32
-    if ($exterior_only == TRUE) {
33
-      return $area;
34
-    }
35
-    foreach ($this->components as $delta => $component) {
36
-      if ($delta != 0) {
37
-        $inner_poly = new Polygon(array($component));
38
-        $area -= $inner_poly->area();
39
-      }
40
-    }
41
-    return $area;
32
+	if ($exterior_only == TRUE) {
33
+	  return $area;
34
+	}
35
+	foreach ($this->components as $delta => $component) {
36
+	  if ($delta != 0) {
37
+		$inner_poly = new Polygon(array($component));
38
+		$area -= $inner_poly->area();
39
+	  }
40
+	}
41
+	return $area;
42 42
   }
43 43
   
44 44
   public function centroid() {
45
-    if ($this->isEmpty()) return NULL;
45
+	if ($this->isEmpty()) return NULL;
46 46
     
47
-    if ($this->geos()) {
48
-      return geoPHP::geosToGeometry($this->geos()->centroid());
49
-    }
47
+	if ($this->geos()) {
48
+	  return geoPHP::geosToGeometry($this->geos()->centroid());
49
+	}
50 50
     
51
-    $exterior_ring = $this->components[0];
52
-    $pts = $exterior_ring->getComponents();
51
+	$exterior_ring = $this->components[0];
52
+	$pts = $exterior_ring->getComponents();
53 53
     
54
-    $c = count($pts);
55
-    if((int)$c == '0') return NULL;
56
-    $cn = array('x' => '0', 'y' => '0');
57
-    $a = $this->area(TRUE, TRUE);
54
+	$c = count($pts);
55
+	if((int)$c == '0') return NULL;
56
+	$cn = array('x' => '0', 'y' => '0');
57
+	$a = $this->area(TRUE, TRUE);
58 58
     
59
-    // If this is a polygon with no area. Just return the first point.
60
-    if ($a == 0) {
61
-      return $this->exteriorRing()->pointN(1);
62
-    }
59
+	// If this is a polygon with no area. Just return the first point.
60
+	if ($a == 0) {
61
+	  return $this->exteriorRing()->pointN(1);
62
+	}
63 63
     
64
-    foreach($pts as $k => $p){
65
-      $j = ($k + 1) % $c;
66
-      $P = ($p->getX() * $pts[$j]->getY()) - ($p->getY() * $pts[$j]->getX());
67
-      $cn['x'] = $cn['x'] + ($p->getX() + $pts[$j]->getX()) * $P;
68
-      $cn['y'] = $cn['y'] + ($p->getY() + $pts[$j]->getY()) * $P;
69
-    }
64
+	foreach($pts as $k => $p){
65
+	  $j = ($k + 1) % $c;
66
+	  $P = ($p->getX() * $pts[$j]->getY()) - ($p->getY() * $pts[$j]->getX());
67
+	  $cn['x'] = $cn['x'] + ($p->getX() + $pts[$j]->getX()) * $P;
68
+	  $cn['y'] = $cn['y'] + ($p->getY() + $pts[$j]->getY()) * $P;
69
+	}
70 70
     
71
-    $cn['x'] = $cn['x'] / ( 6 * $a);
72
-    $cn['y'] = $cn['y'] / ( 6 * $a);
71
+	$cn['x'] = $cn['x'] / ( 6 * $a);
72
+	$cn['y'] = $cn['y'] / ( 6 * $a);
73 73
     
74
-    $centroid = new Point($cn['x'], $cn['y']);
75
-    return $centroid;
74
+	$centroid = new Point($cn['x'], $cn['y']);
75
+	return $centroid;
76 76
   }
77 77
 
78 78
 	/**
@@ -98,41 +98,41 @@  discard block
 block discarded – undo
98 98
   }
99 99
 
100 100
   public function exteriorRing() {
101
-    if ($this->isEmpty()) return new LineString();
102
-    return $this->components[0];
101
+	if ($this->isEmpty()) return new LineString();
102
+	return $this->components[0];
103 103
   }
104 104
   
105 105
   public function numInteriorRings() {
106
-    if ($this->isEmpty()) return 0;
107
-    return $this->numGeometries()-1;
106
+	if ($this->isEmpty()) return 0;
107
+	return $this->numGeometries()-1;
108 108
   }
109 109
   
110 110
   public function interiorRingN($n) {
111
-    return $this->geometryN($n+1);
111
+	return $this->geometryN($n+1);
112 112
   }
113 113
   
114 114
   public function dimension() {
115
-    if ($this->isEmpty()) return 0;
116
-    return 2;
115
+	if ($this->isEmpty()) return 0;
116
+	return 2;
117 117
   }
118 118
 
119 119
   public function isSimple() {
120
-    if ($this->geos()) {
121
-      return $this->geos()->isSimple();
122
-    }
120
+	if ($this->geos()) {
121
+	  return $this->geos()->isSimple();
122
+	}
123 123
     
124
-    $segments = $this->explode();
124
+	$segments = $this->explode();
125 125
     
126
-    foreach ($segments as $i => $segment) {
127
-      foreach ($segments as $j => $check_segment) {
128
-        if ($i != $j) {
129
-          if ($segment->lineSegmentIntersect($check_segment)) {
130
-            return FALSE;
131
-          }
132
-        }
133
-      }
134
-    }
135
-    return TRUE;
126
+	foreach ($segments as $i => $segment) {
127
+	  foreach ($segments as $j => $check_segment) {
128
+		if ($i != $j) {
129
+		  if ($segment->lineSegmentIntersect($check_segment)) {
130
+			return FALSE;
131
+		  }
132
+		}
133
+	  }
134
+	}
135
+	return TRUE;
136 136
   }
137 137
 
138 138
   /**
@@ -146,59 +146,59 @@  discard block
 block discarded – undo
146 146
    * @return boolean
147 147
    */
148 148
   public function pointInPolygon($point, $pointOnBoundary = true, $pointOnVertex = true) {
149
-    $vertices = $this->getPoints();
149
+	$vertices = $this->getPoints();
150 150
 
151
-    // Check if the point sits exactly on a vertex
152
-    if ($this->pointOnVertex($point, $vertices)) {
153
-      return $pointOnVertex ? TRUE : FALSE;
154
-    }
151
+	// Check if the point sits exactly on a vertex
152
+	if ($this->pointOnVertex($point, $vertices)) {
153
+	  return $pointOnVertex ? TRUE : FALSE;
154
+	}
155 155
   
156
-    // Check if the point is inside the polygon or on the boundary
157
-    $intersections = 0; 
158
-    $vertices_count = count($vertices);
156
+	// Check if the point is inside the polygon or on the boundary
157
+	$intersections = 0; 
158
+	$vertices_count = count($vertices);
159 159
 
160
-    for ($i=1; $i < $vertices_count; $i++) {
161
-      $vertex1 = $vertices[$i-1]; 
162
-      $vertex2 = $vertices[$i];
163
-      if ($vertex1->y() == $vertex2->y() 
164
-      && $vertex1->y() == $point->y() 
165
-      && $point->x() > min($vertex1->x(), $vertex2->x()) 
166
-      && $point->x() < max($vertex1->x(), $vertex2->x())) {
167
-        // Check if point is on an horizontal polygon boundary
168
-        return $pointOnBoundary ? TRUE : FALSE;
169
-      }
170
-      if ($point->y() > min($vertex1->y(), $vertex2->y())
171
-      && $point->y() <= max($vertex1->y(), $vertex2->y())
172
-      && $point->x() <= max($vertex1->x(), $vertex2->x())
173
-      && $vertex1->y() != $vertex2->y()) {
174
-        $xinters = 
175
-          ($point->y() - $vertex1->y()) * ($vertex2->x() - $vertex1->x())
176
-          / ($vertex2->y() - $vertex1->y()) 
177
-          + $vertex1->x();
178
-        if ($xinters == $point->x()) {
179
-          // Check if point is on the polygon boundary (other than horizontal)
180
-          return $pointOnBoundary ? TRUE : FALSE;
181
-        }
182
-        if ($vertex1->x() == $vertex2->x() || $point->x() <= $xinters) {
183
-          $intersections++;
184
-        }
185
-      } 
186
-    } 
187
-    // If the number of edges we passed through is even, then it's in the polygon.
188
-    if ($intersections % 2 != 0) {
189
-      return TRUE;
190
-    }
191
-    else {
192
-      return FALSE;
193
-    }
160
+	for ($i=1; $i < $vertices_count; $i++) {
161
+	  $vertex1 = $vertices[$i-1]; 
162
+	  $vertex2 = $vertices[$i];
163
+	  if ($vertex1->y() == $vertex2->y() 
164
+	  && $vertex1->y() == $point->y() 
165
+	  && $point->x() > min($vertex1->x(), $vertex2->x()) 
166
+	  && $point->x() < max($vertex1->x(), $vertex2->x())) {
167
+		// Check if point is on an horizontal polygon boundary
168
+		return $pointOnBoundary ? TRUE : FALSE;
169
+	  }
170
+	  if ($point->y() > min($vertex1->y(), $vertex2->y())
171
+	  && $point->y() <= max($vertex1->y(), $vertex2->y())
172
+	  && $point->x() <= max($vertex1->x(), $vertex2->x())
173
+	  && $vertex1->y() != $vertex2->y()) {
174
+		$xinters = 
175
+		  ($point->y() - $vertex1->y()) * ($vertex2->x() - $vertex1->x())
176
+		  / ($vertex2->y() - $vertex1->y()) 
177
+		  + $vertex1->x();
178
+		if ($xinters == $point->x()) {
179
+		  // Check if point is on the polygon boundary (other than horizontal)
180
+		  return $pointOnBoundary ? TRUE : FALSE;
181
+		}
182
+		if ($vertex1->x() == $vertex2->x() || $point->x() <= $xinters) {
183
+		  $intersections++;
184
+		}
185
+	  } 
186
+	} 
187
+	// If the number of edges we passed through is even, then it's in the polygon.
188
+	if ($intersections % 2 != 0) {
189
+	  return TRUE;
190
+	}
191
+	else {
192
+	  return FALSE;
193
+	}
194 194
   }
195 195
   
196 196
   public function pointOnVertex($point) {
197
-    foreach($this->getPoints() as $vertex) {
198
-      if ($point->equals($vertex)) {
199
-        return true;
200
-      }
201
-    }
197
+	foreach($this->getPoints() as $vertex) {
198
+	  if ($point->equals($vertex)) {
199
+		return true;
200
+	  }
201
+	}
202 202
   }
203 203
 
204 204
 
Please login to merge, or discard this patch.