$func(); return drupal_strtoupper($type) . ' (' . $wkt . ')'; } return 'POINT (0 0)'; } function random_point() { $lon = $this->dd_generate(-180, 180); $lat = $this->dd_generate(-84, 84); return array($lon, $lat); } function wkt_generate_point($point = FALSE) { $point = $point ? $point : $this->random_point(); return implode(' ', $point); } function wkt_generate_multipoint() { $num = $this->dd_generate(1, 5, TRUE); $start = $this->random_point(); $points[] = $this->wkt_generate_point($start); for ($i = 0; $i < $num; $i += 1) { $diff = $this->random_point(); $start[0] += $diff[0] / 100; $start[1] += $diff[1] / 100; $points[] = $this->wkt_generate_point($start); } return implode(', ', $points); } // make a line that looks like a line function wkt_generate_linestring($start = FALSE, $segments = FALSE) { $start = $start ? $start : $this->random_point(); $segments = $segments ? $segments : $this->dd_generate(1, 5, TRUE); $points[] = $start[0] . ' ' . $start[1]; // Points are at most 1km away from each other for ($i = 0; $i < $segments; $i += 1) { $diff = $this->random_point(); $start[0] += $diff[0] / 100; $start[1] += $diff[1] / 100; $points[] = $start[0] . ' ' . $start[1]; } return implode(", ", $points); } // make a line that looks like a line function wkt_generate_multilinestring() { $start = $this->random_point(); $num = $this->dd_generate(1, 3, TRUE); $lines[] = $this->wkt_generate_linestring($start); for ($i = 0; $i < $num; $i += 1) { $diff = $this->random_point(); $start[0] += $diff[0] / 100; $start[1] += $diff[1] / 100; $lines[] = $this->wkt_generate_linestring($start); } return '(' . implode('), (', $lines) . ')'; } function wkt_generate_polygon($start = FALSE, $segments = FALSE) { $start = $start ? $start : $this->random_point(); $segments = $segments ? $segments : $this->dd_generate(2, 4, TRUE); $poly = $this->wkt_generate_linestring($start, $segments); // close the polygon return '(' . $poly . ' , ' . $start[0] . ' ' . $start[1] . ')'; } function wkt_generate_multipolygon() { $start = $this->random_point(); $num = $this->dd_generate(1, 5, TRUE); $segments = $this->dd_generate(2, 3, TRUE); $poly[] = $this->wkt_generate_polygon($start, $segments); for ($i = 0; $i < $num; $i += 1) { $diff = $this->random_point(); $start[0] += $diff[0] / 100; $start[1] += $diff[1] / 100; $poly[] = $this->wkt_generate_polygon($start, $segments); } return '(' . implode(', ', $poly) . ')'; } }