Hi Christopher,
This issue is related with the rownum in your data definition. The UNIQUE parameter accepts only number, usually the primary key for the table. The problem with rownum is because it's returns a sequence for the number of the rows returned, but it's not a real identifier for the row because it's can change. The maporaclespatial driver uses the UNIQUE to get the unique identifier for the row, but not rownum, because inside of the source code the function that retrieve the identifier and query for the non-spatial data is different functions. So if you use the rownum the return will be only one.
Best regards.

------------------------------------------------------------------------
Fernando Simon
Mapserver and Oracle Spatial developer
G10 - Laboratorio de Computacao Aplicada - Brazil
http://www.univali.br/g10 - UNIVALI/CTTMAR
------------------------------------------------------------------------


Christopher Condit wrote:

Ok – I finally got the C# MapScript query functionality to work (see below) – sort of…

I can query raster layers wonderfully – everything works as advertised. However, when I attempt to query the Oracle layer that appears below, I always get the same one result back – no matter what lat/lon I use for my pointObj. The result I get back was the first query I tested, which makes me suspicious. Is there something special I need to do for an Oracle query?

mapObj map = new mapObj(@"session.map");

layerObj myLayer = map.getLayerByName("mylayer");

myLayer.queryByPoint(map, new pointObj(-77.0, 18.0, 0, 0), mapscript.MS_MULTIPLE, 1.0 );

myLayer.open();

for (int i = 0; i < myLayer.getNumResults(); i++)

{

resultCacheMemberObj result = myLayer.getResult(i);

shapeObj shape = myLayer.getFeature(result.shapeindex, result.tileindex);

for (int j = 0; j < shape.numvalues; j++)

System.Console.Write(shape.getValue(j) + " ");

System.Console.WriteLine("");

}

obisLayer.close();

------------------------------------------------------------------------

*From:* UMN MapServer Users List [mailto:[EMAIL PROTECTED] *On Behalf Of *Christopher Condit
*Sent:* Thursday, January 19, 2006 11:15 AM
*To:* [email protected]
*Subject:* [UMN_MAPSERVER-USERS] mapscript query question

I’m using C# MapScript to build my MapFile. This is working great. Now I want to query the MapFile programmatically – but can’t seem to figure out how to do it. Is there a tutorial that I’m not seeing?

Here’s my code snippet:

layerObj queryLayer = map.getLayerByName("myLayer");

if (null != queryLayer)

{

int count = queryLayer.queryByPoint(myMap, new pointObj(-82, 25, 0, 0), mapscript.MS_MULTIPLE, 5.0d);

if (count > 0)

{

queryLayer.open();

for (int i = 0; i < count; i++)

{

resultCacheMemberObj result = queryLayer.getResult(i);

shapeObj shape = obisLayer.getFeature(result.shapeindex, result.tileindex);

}

queryLayer.close();

}

}

The resultCacheMemberObj never gets a value, even when query by point returns > 0. Here’s my layer definition:

LAYER

CONNECTION "user/pass"

CONNECTIONTYPE ORACLESPATIAL

DATA "SHAPE FROM (SELECT * FROM MYTABLE WHERE NAME LIKE 'S%') USING UNIQUE ROWNUM"

DUMP TRUE

METADATA

"wfs_title" "SimpleWFSTest"

"gml_include_items" "all"

END

NAME "myLayer"

PROJECTION

"init=epsg:4326"

END

SIZEUNITS PIXELS

STATUS DEFAULT

TOLERANCEUNITS PIXELS

TRANSPARENCY 100

TYPE POINT

UNITS DD

CLASS

METADATA

END

STYLE

ANGLE 360

COLOR 255 0 0

OUTLINECOLOR 0 255 0

SIZE 8

SYMBOL "circle"

END

END

END

Thanks,

Chris

Reply via email to