Skip to content

Instantly share code, notes, and snippets.

@roy-bukapeta
Created October 27, 2017 09:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save roy-bukapeta/62c5272ac07a7568a5dc651644bf8053 to your computer and use it in GitHub Desktop.
Save roy-bukapeta/62c5272ac07a7568a5dc651644bf8053 to your computer and use it in GitHub Desktop.
Cacah Grab
// Hitung jumlah data
$rows = file_get_contents($_POST['url'].'/'.$_POST['layer'].'/MapServer/'.$_POST['id'].'/query?where=1%3D1&returnCountOnly=true&f=pjson');
$row = json_decode($rows);
$jumlah = $row->count / 1000;
$jumlah = ceil($jumlah);
if ($row->count > 1000) {
$dataId = file_get_contents($_POST['url'].'/'.$_POST['layer'].'/MapServer/'.$_POST['id'].'/query?where=1%3D1&returnIdsOnly=true&f=pjson');
$dataId = json_decode($dataId);
$dataId = $dataId->objectIds;
$dataIdMin = min($dataId);
$dataIdMax = max($dataId);
$langkah = $dataIdMax / $jumlah;
$langkahAwal= $langkah;
for ($i=0; $i < $jumlah; $i++) {
// Simpan ke GrabQueue
$modelQueue = new GrabQueue();
$modelQueue->id_layer = $model->id;
$modelQueue->status = 0;
$modelQueue->syntax = 'ogr2ogr -f "PostgreSQL" PG:"dbname='.$credential["dbName"].' user='.$credential["dbUsername"].'" "'.$_POST['url'].'/'.$_POST['layer'].'/MapServer/'.$_POST['id'].'/query?where=&text=&objectids>'.ceil($dataIdMin).'AND<'.ceil($langkah).'&returnGeometry=true&outSR=4326&outfields=*&f=json" OGRGeoJSON -lco GEOMETRY_NAME=the_geom -nln "'.\app\models\data\DataGrab::DATA_SCHEMA.'.'.$tableName.'" -append -nlt PROMOTE_TO_MULTI';
if ($modelQueue->save()) {
continue;
}else{
print_r($modelQueue->getErrors());die();
}
$dataIdMin = $dataIdMin + $langkahAwal;
$langkah = $langkah + $langkahAwal;
}
}else{
// Simpan ke GrabQueue
$modelQueue = new GrabQueue();
$modelQueue->id_layer = $model->id;
$modelQueue->status = 0;
$modelQueue->syntax = 'ogr2ogr -f "PostgreSQL" PG:"dbname='.$credential["dbName"].' user='.$credential["dbUsername"].'" "'.$_POST['url'].'/'.$_POST['layer'].'/MapServer/'.$_POST['id'].'/query?where=1+%3D+1&returnGeometry=true&outSR=4326&outfields=*&f=json" OGRGeoJSON -lco GEOMETRY_NAME=the_geom -nln "'.\app\models\data\DataGrab::DATA_SCHEMA.'.'.$tableName.'" -nlt PROMOTE_TO_MULTI';
if ($modelQueue->save()) {
return $this->redirect(['/data']);
}else{
print_r($modelQueue->getErrors());die();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment