The need to break stands apart is often necessary. This typically comes from regulatory requirements. This routine will do this however you will loose spatial reference.
<?php
require_once("FPSOpen.php");
echo "\nFSD FPS Stand Split\n\n";
$MinArea = 25;
$SQL = "SELECT Std_ID, Area_GIS, Area_Net, Area_Rpt FROM ADMIN WHERE Area_GIS > $MinArea AND STD_ID > 0;";
foreach($dbh->query($SQL, PDO::FETCH_ASSOC) as $row) {
$row['Area25s'] = $row['Area_GIS'] / $MinArea;
$row['Remainder25'] = $row['Area25s'] - floor($row['Area25s']);
$row['RemainderAc'] = $row['Remainder25'] * $MinArea;
for($a = 1; $a <= $row['Area25s'];$a++) {
$row['Admins'][$a]['Std_ID'] = ((100 + $a) * 10000) + $row['Std_ID'];
$row['Admins'][$a]['Area_GIS'] = $MinArea;
$row['Admins'][$a]['Area_Net'] = ($row['Area_Net'] / $row['Area_GIS']) * $MinArea;
$row['Admins'][$a]['Area_Rpt'] = ($row['Area_Rpt'] / $row['Area_GIS']) * $MinArea;
}
$row['Admins'][0]['Std_ID'] = ((100 + 0) * 10000) + $row['Std_ID'];
$row['Admins'][0]['Area_GIS'] = $row['RemainderAc'];
$row['Admins'][0]['Area_Net'] = ($row['Area_Net'] / $row['Area_GIS']) * $row['RemainderAc'];
$row['Admins'][0]['Area_Rpt'] = ($row['Area_Rpt'] / $row['Area_GIS']) * $row['RemainderAc'];
$SQLAdmin = "SELECT * FROM ADMIN WHERE Std_ID = {$row['Std_ID']};";
foreach($dbh->query($SQLAdmin, PDO::FETCH_ASSOC) as $AdminRec){
$AdminRec = array_change_key_case($AdminRec,CASE_UPPER);
foreach($AdminRec as $Key=>$Value) {
if(!is_numeric($Value)) $AdminRec[$Key] = "'$Value'";
}
foreach($row['Admins'] as $NewStand) {
$AdminRec['STD_ID'] = $NewStand['Std_ID'];
$AdminRec['AREA_GIS'] = $NewStand['Area_GIS'];
$AdminRec['AREA_NET'] = $NewStand['Area_Net'];
$AdminRec['AREA_RPT'] = $NewStand['Area_Rpt'];
$AddAdmin = 'INSERT INTO `ADMIN` (`';
$AddAdmin .= implode('`,`',array_keys($AdminRec));
$AddAdmin .= '`) VALUES (';
$AddAdmin .= implode(',',$AdminRec);
$AddAdmin .= ');';
$dbh->query($AddAdmin);
}
}
$SQLStand = "SELECT * FROM STAND WHERE Std_ID = {$row['Std_ID']};";
foreach($dbh->query($SQLStand, PDO::FETCH_ASSOC) as $StandRec){
$StandRec = array_change_key_case($StandRec,CASE_UPPER);
foreach($StandRec as $Key=>$Value) {
if(!is_numeric($Value)) {
if(trim($Value) == '') {
$StandRec[$Key] = 'NULL';
} else {
$StandRec[$Key] = "'$Value'";
}
}
}
foreach($row['Admins'] as $NewStand) {
$StandRec['STD_ID'] = $NewStand['Std_ID'];
$AddStand = 'INSERT INTO `STAND` (`';
$AddStand .= implode('`,`',array_keys($StandRec));
$AddStand .= '`) VALUES (';
$AddStand .= implode(',',$StandRec);
$AddStand .= ');';
$dbh->query($AddStand);
}
}
$SQLDBH = "SELECT * FROM DBHCLS WHERE Std_ID = {$row['Std_ID']};";
foreach($dbh->query($SQLDBH, PDO::FETCH_ASSOC) as $DBHRec){
$DBHRec = array_change_key_case($DBHRec,CASE_UPPER);
foreach($DBHRec as $Key=>$Value) {
if(!is_numeric($Value)) {
if(trim($Value)!='') {
$DBHRec[$Key] = "'".trim($Value)."'";
} else {
$DBHRec[$Key] = 'NULL';
}
}
}
foreach($row['Admins'] as $NewStand) {
$DBHRec['STD_ID'] = $NewStand['Std_ID'];
$AddDBH = 'INSERT INTO `DBHCLS` (`';
$AddDBH .= implode('`,`',array_keys($DBHRec));
$AddDBH .= '`) VALUES (';
$AddDBH .= implode(',',$DBHRec);
$AddDBH .= ');';
$dbh->query($AddDBH);
}
}
$AdminClean = "UPDATE ADMIN SET STD_ID = -`STD_ID` WHERE STD_ID = {$row['Std_ID']};";
$dbh->query($AdminClean);
echo $row['Std_ID'] . "\n";
}
?>