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