Can't read long expressions with MapScript
    B. Veldkamp (Berend) 
    b.veldkamp at ZONNET.NL
       
    Tue Aug 29 00:01:02 PDT 2006
    
    
  
Hi,
I wrote some code in PHP MapScript that generates expressions for 
classes in a layer. Basically the expressions look like: ( "[RIKZCODE]" 
IN "ID1,ID2,ID3" )
where IDx are feature IDs. Most of the time this works without any 
problem, but it looks like there's a limit to the number of ID's I can 
add. At least, I can /set/ the expression, but I can't /read/ it with 
$class->getExpression(). I did some testing, and it looks like 
getExpression() fails when the expression set in the map is over 512 
characters.
Here's what the code looks like:
// All expressions are initially set to "empty"
while(odbc_fetch_row($records))
{  $rikzcode = odbc_result ($records, odbc_field_name ($records, 1));
  $value = odbc_result ($records, odbc_field_name ($records, 2));
  // Determine class to which this ID belongs
  $classID = GetClassIDByValue($value);
  if ($classID > -1)
  {
    $cls = $layer->getClass($classID);
    $exp = $cls->getExpression();  // <== Crash here
    if ($exp == "\"empty\"")      $exp = "( \"[RIKZCODE]\" IN 
\"$rikzcode\" )"; // initial value
    else
      $exp = substr($exp, 0, -3) . ",$rikzcode\" )"; // append value
    $cls->setExpression($exp);
  }
}
-- 
Berend Veldkamp
Havikstraat 45C
3514 TM Utrecht
    
    
More information about the MapServer-users
mailing list