FW: [gdal-dev] OGR - Oracle problem
    Clay, Bruce 
    bclay at ball.com
       
    Mon Mar  9 15:44:12 EDT 2009
    
    
  
Follow up
 
I am not sure which is a better solution speed wise but I did find 2
solutions to the problem I was having - 
 
 
The first solution that appears to work is to cast the returned distance
field to a real in the outer select statement
 
select OBJECTID, cast(Dist as real) from
    (select OBJECTID, sdo_nn_distance(1) Dist from
                    GEONAMES_SDO a1 where DSG LIKE 'PPL%' AND
                    sdo_nn(a1.shape, 
                        sdo_geometry(2001, null,
                            sdo_point_type((-84.48500000,-21.98100000,
NULL), null, null),
                            'sdo_num_res=100',1) = 'TRUE') where
                  Dist <= 0.09633643;
 
The second approach that appeared to work id from as code perspective is
to set the field type after the Execute SQL.  I am not sure how stable
this method is because the firt time I tried it after the first
GetNextFeature it did not work on the first feature but did work on the
rest.  I guess that indicates that the change has to be performed before
requesting the feature not before requesting the attribute.
 
            OGRLayer *queryLayer = outputDataSrc->ExecuteSQL(sqlquery,
NULL, "generic");
 
            if (queryLayer != NULL)
            {
                  OGRFeatureDefn *featureDef =
queryLayer->GetLayerDefn();
                  if (featureDef != NULL)
                  {
 
                        OGRFieldDefn *fieldDef =
featureDef->GetFieldDefn(1);
 
                        if (fieldDef != NULL)
                        {
                              fieldDef->SetType(OFTReal);
                        }
 
                        queryLayer->ResetReading();
 
                        OGRFeature *feature =
queryLayer->GetNextFeature();
                        while (feature != NULL)
                        {
 
 
Bruce
 
________________________________
From: gdal-dev-bounces at lists.osgeo.org
[mailto:gdal-dev-bounces at lists.osgeo.org] On Behalf Of Clay, Bruce
Sent: Friday, March 06, 2009 3:52 PM
To: gdal-dev at lists.osgeo.org
Subject: [gdal-dev] OGR - Oracle problem
 
 
When I issue the following SQL query through SqlPal I get 2 columns of
what appears to be valid data
 
select * from
 (select OBJECTID, sdo_nn_distance(1) Dist from
GEONAMES_SDO a1 where DSG LIKE 'PPL%' AND sdo_nn(a1.shape,
sdo_geometry(2001, null, sdo_point_type(-84.48500000,-21.98100000,
NULL), null, null),
'sdo_num_res=100',1) = 'TRUE');
 
Results
 
OBJECTID Dist
451323  .397194968358102
432828  .647925639080596
447967  .239182235498376
453566  .495207228227733
454057  .270980772175814
392983  .165016165538413
407235  .325487083888139
408026  .647925639080596
399747  .647925639080596
399036  .325487083888139
409567  .165016165538413
423135  .239182235498376
 
If I issue the same query through OGR ExecuteSql I get the first column
(OBJECTID) as it appears in SqlPal but the second column which should be
the distance comes back as type OFTInteger and the value is always zero
reguardless of where I call GetFieldAsString or GetFieldAsDouble.
 
Is there something else that has to be specified to get the correct data
type on this type of a query where a column is created dynamically?
 
Bruce
 
 
 
This message and any enclosures are intended only for the addressee.
Please  
notify the sender by email if you are not the intended recipient.  If
you are  
not the intended recipient, you may not use, copy, disclose, or
distribute this  
message or its contents or enclosures to any other person and any such
actions  
may be unlawful.  Ball reserves the right to monitor and review all
messages  
and enclosures sent to or from this email address.
This message and any enclosures are intended only for the addressee.  Please  
notify the sender by email if you are not the intended recipient.  If you are  
not the intended recipient, you may not use, copy, disclose, or distribute this  
message or its contents or enclosures to any other person and any such actions  
may be unlawful.  Ball reserves the right to monitor and review all messages  
and enclosures sent to or from this email address.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/gdal-dev/attachments/20090309/91260fe0/attachment-0001.html
    
    
More information about the gdal-dev
mailing list