48 lines
1.5 KiB
PHP
48 lines
1.5 KiB
PHP
<?php
|
|
/*
|
|
* Title: CSV to GeoJSON
|
|
* Notes: Convert a comma separated CSV file of points with x & y fields to GeoJSON format, suitable for use in OpenLayers, Leaflet, etc. Only point features are supported.
|
|
* Author: Bryan R. McBride, GISP
|
|
* Contact: bryanmcbride.com
|
|
* GitHub: https://github.com/bmcbride/PHP-Database-GeoJSON
|
|
*/
|
|
# Read the CSV file
|
|
$csvfile = 'positions.txt';
|
|
$handle = fopen($csvfile, 'r');
|
|
# Build GeoJSON feature collection array
|
|
$geojson = array(
|
|
'type' => 'FeatureCollection',
|
|
'features' => array()
|
|
);
|
|
# Loop through rows to build feature arrays
|
|
$header = NULL;
|
|
while (($row = fgetcsv($handle, 1000, ',')) !== FALSE) {
|
|
if (!$header) {
|
|
$header = $row;
|
|
} else {
|
|
$data = array_combine($header, $row);
|
|
$properties = $data;
|
|
# Remove x and y fields from properties (optional)
|
|
unset($properties['x']);
|
|
unset($properties['y']);
|
|
$feature = array(
|
|
'type' => 'Feature',
|
|
'geometry' => array(
|
|
'type' => 'Point',
|
|
'coordinates' => array(
|
|
$data['x'],
|
|
$data['y']
|
|
)
|
|
),
|
|
'properties' => $properties
|
|
);
|
|
# Add feature arrays to feature collection array
|
|
#array_push($geojson['features'], $feature);
|
|
}
|
|
}
|
|
array_push($geojson['features'], $feature);
|
|
fclose($handle);
|
|
header('Content-type: application/json');
|
|
header("Access-Control-Allow-Origin: *");
|
|
echo json_encode($geojson, JSON_NUMERIC_CHECK);
|
|
?>
|