Ich habe einen PHP-Code, der eine Abfrage ausführt, um das Multilinestring-Geom-Feld aus der Datenbank in Geojson-Daten zu konvertieren. Dieser Code funktioniert gut für Multipolygon- und Geom-Punkt-Daten, aber es gibt einen Fehler beim Parsen eines Multilinien-Geom-Felds.ST_asGeoJson für Multilinestring in PHP für Flugblatt
<?php
include('../config.php'); // the db config file
function createFeature() {
$feature = new stdClass();
$feature->type = 'Feature';
$feature->geometry = new stdClass();
$feature->geometry->type = 'Multilinestring';
$feature->properties = new stdClass();
return $feature;
}
function createCollection() {
$collection = new stdClass();
$collection->type = 'FeatureCollection';
$collection->features = array();
return $collection;
}
$query = 'SELECT ST_AsGeoJson(geom) as geom,name FROM table_name';
if($result = pg_query($query)) {
$collection = createCollection();
while($row = pg_fetch_row($result))
{
$feature = createFeature();
$feature->geometry = $row[0];
$feature->properties->name=$row[1];
$collection->features[] = $feature;
}
echo (json_encode($collection,JSON_NUMERIC_CHECK));
}
Die Antwort, die ich auf Ausführung des Codes erhalten, ist
{"type":"FeatureCollection",
"features":
[
{
"type":"Feature",
"geometry":
"{\"type\":\"MultiLineString\",
\"coordinates\":[[[73.9750168196755,15.2410462374959],
[73.974612433675,15.2415698937723],
[73.9733813019535,15.2431183375569],
[73.9727337832775,15.2439091075613]]]
}",
"properties":{"name":"NH - 17"}
}
]
}
Wenn ich versuche, die \ entfernen schlitzt die Funktion mit stripslashes
echo stripslashes(json_encode($collection,JSON_NUMERIC_CHECK));
ich immer noch den Fehler
SyntaxError: Unexpected token t in JSON at position 72
Ich denke, die Der Fehler liegt hauptsächlich an den Anführungszeichen vor den Werten der Geometrie. Ich weiß nicht, wie ich es lösen soll.
Gibt es eine andere Möglichkeit, Multilinestring Geom-Daten als Geojson zu erhalten?