More OracleSpatial queryByAttributes

Fernando Simon fsimon at UNIVALI.BR
Mon Apr 2 08:21:03 EDT 2007


Hi Johan,
   Sorry for the delay to reply your message. My internet provider just 
turn on the DSL link this weekend in my new home, and I couldn't read my 
e-mail from a week.
   About the error, I will investigate more about the source of the 
error and analyze the solutions (inclusive yours).
   Sorry again for the delay.
   Best regards.

Fernando Simon


Hallgren Johan E wrote:
>
> I think I found the error myself
>
>  
>
> I have to have the "USING UNIQUE objected" in the string, otherwise 
> the functions will return wrong shapeindex.
>
>  
>
> I also have to place the NONE parameter at the correct place in the 
> string (NONE tells mapserver to not use any Spatial operator and it 
> will be fast when querying). As I have found out, the datastring 
> should be USING UNIQUE objectid NONE VERSION 10g when doing 
> QueryByAttribute with good performance.
>
>  
>
> The only change I should prefer here is to change the OracleSpatial 
> interface so the order wasn't so important. Why not "USING UNIQUE 
> objectid FUNCTION NONE VERSION 10g"
>
>  
>
> /Johan
>
>
>       *___________________________________*
>
>
>       *Johan Hallgren*
>
>  
>
> *WM-data* a LogicaCMG company 
>
> Pelle Bergs backe 3
>
> Box 1938, 791 19 Falun
>
> Tel: 023-547 46 (int: +46-2354746)
>
> Mobil: 070-588 44 28 (int: +46-705884428)
>
> _johan.e.hallgren_ at wmdata.com 
> <BLOCKED::mailto:johan.e.hallgren at wmdata.com>
>
> http://www.wmdata.se 
> <BLOCKED::/exchweb/bin/redir.asp?URL=http://www.wmdata.se/>
>
> ------------------------------------------------------------------------
>
> *From:* UMN MapServer Developers List 
> [mailto:MAPSERVER-DEV at LISTS.UMN.EDU] *On Behalf Of *Hallgren Johan E
> *Sent:* den 30 mars 2007 22:40
> *To:* MAPSERVER-DEV at LISTS.UMN.EDU
> *Subject:* [UMN_MAPSERVER-DEV] More OracleSpatial queryByAttributes
>
>  
>
> I have tested more to isolate the problem.
>
>  
>
> Here is the MapFile
>
>   LAYER
>
>     NAME SDOLayer
>
>     TYPE POLYGON
>
>     STATUS OFF
>
>             CONNECTION "user/pwd at tnsname"
>
>             CONNECTIONTYPE oraclespatial
>
>             DATA "shape FROM SDOLayer USING UNIQUE objectid VERSION 10g"
>
>     TEMPLATE "c:\temp\template.txt"
>
>             STATUS DEFAULT
>
>             MAXSCALE 150000
>
>  
>
>             DEBUG ON
>
>     CLASS
>
>       STYLE
>
>         OUTLINECOLOR 0 0 255
>
>         COLOR 255 0 0
>
>       END
>
>     END
>
>   END
>
>  
>
>  
>
>  
>
> Here is a samplecode.
>
> mapObj mapObj = new 
> mapObj(@"C:\Project\applications\GMS\GMSAgent\MapFiles\Map.map");
>
> layerObj oLayerObj = mapObj.getLayerByName("SDOLayer");
>
>  
>
> string orgDataStr = oLayerObj.data;
>
> string tmpDataStr = oLayerObj.data;
>
> int iUsingLocation = tmpDataStr.LastIndexOf(" USING ");
>
> if (iUsingLocation > 0)
>
>   tmpDataStr = orgDataStr.Substring(0, iUsingLocation);
>
>  
>
> tmpDataStr += " USING NONE";
>
>  
>
> // CREATE ERROR.
>
> // This is used to speed up the query, no spatial operator will be used.
>
> oLayerObj.data = tmpDataStr;
>
>  
>
> string strFld = "OBJECTID";
>
> string strWhere = "OBJECTID = 2000";
>
>  
>
> oLayerObj.queryByAttributes(mapObj, strFld, strWhere, 
> mapscript.MS_MULTIPLE);
>
>  
>
> oLayerObj.data = orgDataStr;
>
> resultCacheObj oResultCacheObj = oLayerObj.getResults();
>
> if (oResultCacheObj.numresults > 0)
>
> {
>
>   int lFeat = 0;
>
>   oLayerObj.open();
>
>   for (lFeat = 0; lFeat < oResultCacheObj.numresults; lFeat++)
>
>   {
>
>     resultCacheMemberObj oResultCacheMemberObj = 
> oResultCacheObj.getResult(lFeat);
>
>     // ERROR - ERROR - ERROR - ERROR - ERROR - ERROR - ERROR - ERROR - 
> ERROR - ERROR
>
>     // HERE IS THE ERROR.
>
>     // oResultCacheMemberObj.shapeindex will always return the first 
> record. If the oLayerObj.data
>
>     // is not changed, the result is correct but the perforamce is 
> terrible.
>
>     shapeObj oShapeObj = 
> oLayerObj.getFeature(oResultCacheMemberObj.shapeindex, 
> oResultCacheMemberObj.tileindex);
>
>     for (int item = 0; item < oLayerObj.numitems; item++)
>
>     {
>
>       string strUFldName = oLayerObj.getItem(item).ToUpper();
>
>  
>
>       if (strUFldName != "SHAPE")
>
>       {
>
>         string strVal = oShapeObj.getValue(item);
>
>         System.Diagnostics.Debug.Write(strUFldName + "=" + strVal + ", ");
>
>       }
>
>  
>
>     }
>
>     System.Diagnostics.Debug.Write(Environment.NewLine);
>
>     System.Diagnostics.Debug.WriteLine("-------------------");
>
>   }
>
>   oLayerObj.close();
>
> }
>
>  
>
>
>       *___________________________________*
>
>
>       *Johan Hallgren*
>
>  
>
> *WM-data* a LogicaCMG company 
>
> Pelle Bergs backe 3
>
> Box 1938, 791 19 Falun
>
> Tel: 023-547 46 (int: +46-2354746)
>
> Mobil: 070-588 44 28 (int: +46-705884428)
>
> _johan.e.hallgren_ at wmdata.com 
> <BLOCKED::mailto:johan.e.hallgren at wmdata.com>
>
> http://www.wmdata.se 
> <BLOCKED::/exchweb/bin/redir.asp?URL=http://www.wmdata.se/>
>
>  
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapserver-dev/attachments/20070402/d3ed7f78/attachment.html


More information about the mapserver-dev mailing list