La classe "\fire\source\vector\ConnectionVector" consente di gestire una connessione vettoriale.
Source code:
include("fxcore.php");
\fire\gis\data\PlugInItemFactory::getInstance()->setPath(getenv("FIRE_PATH") . "/plugins");
$parameters = new \fire\map_int_std_string();
$parameters->set(1, "geosystems.fire.connection.postgres");
$parameters->set(2, "10.199.50.89");
$parameters->set(3, "FIRE8");
$parameters->set(4, "postgres");
$parameters->set(5, "demodb1pwd");
$parameters->set(6, "5432");
$poolId = \fire\gis\data\DataService::createPool($parameters, 1);
$vectorConnection = \fire\gis\data\DataService::getConnectionVector($poolId);
echo "vector connection type: " . \fire\source\ConnectionType::toString($vectorConnection->getType()) . "\n";
if ($vectorConnection->isOpen()) {
echo "vector connection " . $vectorConnection->getNamespace() . " is open\n";
} else {
echo "vector connection " . $vectorConnection->getNamespace() . " is not open\n";
}
$dataSet = $vectorConnection->execQuery("SELECT count(*) AS count FROM comune_small");
$dataRow = $dataSet->next();
$dataValue = $dataRow->get(0);
$count = $dataValue->getInt();
echo "count: " . $count . "\n";
$chrono = new \fire\time\Chrono();
$chrono->start();
$dataSet = $vectorConnection->execQuery("SELECT gid, geom FROM comune_small LIMIT 10");
$partialTime = $chrono->getPartialTime();
echo "partial time: " . $partialTime . "\n";
$index = 0;
$geometries = new \fire\vector_fire_gear_geom_Geometry_pointer();
while ($index < 10) {
$dataRow = $dataSet->next();
$dataValue = $dataRow->get(0);
$gid = $dataValue->getText();
$dataValue = $dataRow->get(1);
$geometry = $dataValue->getGeometry();
$geometries->push($geometry->c_clone());
$index++;
}
$stopTime = $chrono->stop();
echo "stop time: " . $stopTime . "\n";
$vectorConnection->close();
$utility = new \fire\gear\op\Utility();
$mergedGeometry = $utility->geometrymerge($geometries);
echo "merged geometry: " . $mergedGeometry->toString() . "\n";