$cmd->addOption('filter', array('short_name' => '-w', 'description' => 'Extra WHERE filter for the main zone query', 'optional' => true, 'help_name' => 'FILTER')); $cmd->addOption('outputfile', array('short_name' => '-o', 'description' => 'Output filename', 'default' => 'overlay.json', 'optional' => true, 'help_name' => 'FILE')); $cmd = $parser->addCommand('exportsql', array('description' => 'Convert Polygonal data from a spatialite DB into a raw SQL insert script')); $cmd->addOption('spatialite', array('short_name' => '-s', 'description' => 'Spatialite DB', 'optional' => false, 'help_name' => 'FILE')); $cmd->addOption('table', array('short_name' => '-t', 'description' => 'The Table to load the geometry', 'optional' => false, 'help_name' => 'table')); $cmd->addOption('filter', array('short_name' => '-w', 'description' => 'Extra WHERE filter for the main zone query', 'optional' => true, 'help_name' => 'FILTER')); $cmd->addOption('outputfile', array('short_name' => '-o', 'description' => 'Output filename', 'default' => 'insert.sql', 'optional' => true, 'help_name' => 'FILE')); try { $args = $parser->parse(); } catch (Exception $ex) { $parser->displayError($ex->getMessage()); } $zonestable = $config->tables->zones; $pointstable = $config->tables->points; $polytable = $config->tables->polygons; Database::setDSN($config->db->dsn, $config->db->user, $config->db->password); $dbh = Database::get(); $zonebounds = $dbh->prepare("SELECT MIN(y) t, MIN(x) l, MAX(y) b, MAX(x) r FROM {$pointstable} WHERE zone_id = ?"); $zonepointrange = $dbh->prepare("SELECT y,MIN(x) minx,MAX(x) maxx FROM {$pointstable} WHERE zone_id = ? GROUP BY y"); $zonepoly = $dbh->prepare("INSERT IGNORE INTO {$polytable} (zone_id,polygon) VALUES (?, PolyFromText(?))"); $zoneinfo = $dbh->prepare("SELECT * FROM {$zonestable} WHERE zone_id = ?"); $zonepoints = $dbh->prepare("SELECT x, y FROM {$pointstable} WHERE zone_id = ? ORDER BY x, y"); if (empty($args->command->args['zoneids'])) { $bounds = (object) array('l' => 0, 't' => 0, 'b' => 6110, 'r' => 6130, 'width' => 6132, 'height' => 6112); } else { $stmt = $dbh->query("SELECT MIN(y) t, MIN(x) l, MAX(y) b, MAX(x) r FROM {$pointstable}" . (empty($args->command->args['zoneids']) ? "" : " WHERE zone_id IN (" . implode(',', $args->command->args['zoneids']) . ")")); $bounds = $stmt->fetchObject(); $bounds->width = $bounds->r - $bounds->l + 2; $bounds->height = $bounds->b - $bounds->t + 2; $stmt->closeCursor(); }