I found a work around to the problem –
posting here in case someone else runs into the problem
I changed the initial select * to separate
the attributes and cast them as real
Example: Select cast(LAT2 as real), cast(lon2
as real), cast(confidence as real), cast(intensity as real), date_time from (
I don’t know where in the overall package
the attributes were converted to integer but this method at least lets the SQL
code work
GetField as string does not work in this
case but that does not really surprise me since the resulting data does not
come from a table rather it is processed data.
It just means we have to be very careful
of the fieldIndex alignment
Bruce
It seems like I encountered this problem before but I can not
find any information about it now.
If I run a SQ script like the following
Select * from
(Select MIN_LAT - (round((MIN_LAT - LATITUDE) /
(MAX_LAT - MIN_LAT) * 1728.497600)) * 0.000579 LAT2,
MAX_LON -
(round((LONGITUDE - MAX_LON) / (MIN_LON - MAX_LON) * 1814.921600)) * 0.000551
LON2,
Round(sum(TRACK_SIZE) / 1.000000) CONFIDENCE,
max(B_TEMP)
Intensity,
min(TO_CHAR(DATE_TIME, 'MM-DD-YYYY HH24:MI:SS')) DATE_TIME
FROM
WACDS.MODIS_ACTIVE_FIRE
WHERE
LATITUDE
BETWEEN MIN_LAT AND MAX_LAT AND
LONGITUDE BETWEEN MIN_LON AND MAX_LON AND
DATE_TIME BETWEEN TO_DATE('03/01/2007 00:00:00' , 'MM-DD-YYYY HH24:MI:SS') AND
TO_DATE('04/30/2007 23:59:59' , 'MM-DD-YYYY HH24:MI:SS') AND
CONFIDENCE > 1.000000
GROUP BY
round((MIN_LAT -
LATITUDE) / (MAX_LAT - MIN_LAT) * 1728.497600),
round((LONGITUDE
- MAX_LON) / (MIN_LON - MAX_LON) * 1814.921600))
where
(CONFIDENCE * 1.000000) > 1.000000
ORDER BY DATE_TIME
From sqlPal I get LAT2 and LON2 data back as doubles
If I run it through OGR ExecuteSql the LAT2 and LON2 data
comes back as integers and can not be used to plot the data
OGRFieldDefn
*fieldDef = featureDef->GetFieldDefn(fieldIndex);
if (fieldDef !=
NULL)
{
fieldType = fieldDef->GetType();
}
Returns type integer
And both
const char *latStr = (char *)feature->GetFieldAsString("LAT2");
double latitude =
feature->GetFieldAsDouble("LAT2");
return(only the whole portion of what I see in sqlPal.
Does anyone see / know what might be going wrong?
Bruce