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