Example #1
0
$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();
}