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

Reply via email to