Exemplo n.º 1
0
 public function save(Syj_Model_Path $path, $formData)
 {
     /* setting geom property */
     $geom = null;
     foreach (array("WKT", "KML", "GPX", "geoJSON") as $dectype) {
         $classname = 'gisconverter\\' . $dectype;
         $decoder = new $classname();
         try {
             $geom = $decoder->geomFromText($formData["geom_data"]);
         } catch (Exception $e) {
         }
         if ($geom) {
             break;
         }
     }
     if (!$geom) {
         throw new Syj_Exception_InvalidGeomUpload();
     }
     // merge linestrings for gpx containting multiple trkseg elements.
     if ($classname == 'gisconverter\\GPX' && $geom::name == 'GeometryCollection') {
         $geomstring = "";
         foreach (array_filter($geom->components, function ($geom) {
             return $geom::name == "LineString";
         }) as $linestring) {
             $geomstring .= str_replace("<trkseg>", "", str_replace("</trkseg>", "", $linestring->toGPX()));
         }
         $geom = $decoder->geomFromText("<trkseg>" . $geomstring . "</trkseg>");
     }
     if ($geom::name != "LineString") {
         throw new Syj_Exception_InvalidGeomUpload();
     }
     $path->geom = $geom;
     /* setting title property */
     if (isset($formData["geom_title"])) {
         $path->title = $formData["geom_title"];
     }
     /* now, saving !*/
     $pathMapper = new Syj_Model_PathMapper();
     $pathMapper->save($path);
 }