I'm using PHPShapefile library for generating KML and displaying data to the google map but while it comes to 'Point' shape its not working and not generating KML for same. Here is the code snippet for Polygon shape help me to create for Point shape.
//this shape data i'm fetching from shapefile library.
$shp_data = $record->getShpData();
if (isset($shp_data['parts'])) {
$counter1 = 0;
if ($shp_data['numparts']) {
$polygon_array['polygon']['status'] = 'multi-polygon';
} else {
$polygon_array['polygon']['status'] = 'single-polygon';
}
$polygon_array['polygon']['total_polygon'] = $shp_data['numparts'];
foreach ($shp_data['parts'] as $polygon) {
foreach ($polygon as $points) {
$counter = 0;
$polygon_string = '';
while ($counter < count($points)) {
if ($counter == 0) {
$polygon_string = $points[count($points) - 1]['x'] . ',';
$polygon_string .= $points[$counter]['y'] . ' ' . $points[$counter]['x'] . ',';
} else if ($counter == count($points) - 1) {
$polygon_string .= $points[$counter]['y'];
} else {
$polygon_string .= $points[$counter]['y'] . ' ' . $points[$counter]['x'] . ',';
}
$counter = $counter + 1;
}
$polygon_single[$counter1] = $polygon_string;
$polygon_array['polygon']['view'] = $polygon_single;
$counter1 = $counter1 + 1;
}
}
$arr[$i] = $polygon_array;
$i++;
}
This condition will fail for point geometries:
if (isset($shp_data['parts'])) {
Unfortunately it looks like that the ShapeFile PHP library you are using does not have a proper way to identify the geometry type.
As a workaround, if the above check fails, you can then check if the geometry has an x
and y
coordinate like so:
if (isset($shp_data['parts'])) {
// probably a polygon
// ... your code here ...
} elseif(isset($shp_data['y']) && isset($shp_data['x'])) {
// probably a point
$point = [];
$point["coordinates"] = $shp_data['y'] .' '. $shp_data['x'];
$arr[$i]['point'] = $point;
}
This should result in an array that looks something like this:
[0]=>
array(1) {
["point"]=>
array(1) {
["coordinates"]=>
string(34) "0.75712656784493 -0.99201824401368"
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With