Hi all,

i'm using java mapscript from ms4w and i try to query a layer with inline feature (no direct data source).

I get the correct count of results from a querybyrect but i can't get the feature and it's values. This is because the resultCacheObj has an index of -1. So it is not possible to use the getFeature. The getFeature works for the inline features if i use a possible index like 0.

Any hint / solution?

Best regards

Norbert


*****************************************************************

-----------------
     test.java
-----------------

public class InlineFeatureTest {

   public static void main(String[] args) {
       URL mapURL = InlineFeatureTest.class.getResource("/test/test.map");
       StringBuffer sb = new StringBuffer(mapURL.getFile());
       sb.deleteCharAt(0);
       mapObj map = new mapObj(sb.toString());
       layerObj layer = map.getLayerByName("inline");
       if (layer == null) return;

shapeObj shape = new shapeObj(MS_SHAPE_TYPE.MS_SHAPE_POINT.swigValue());
       lineObj line = new lineObj();
       boolean error = false;
if (line.add(new pointObj(3500000, 5500000, 0)) == MS_RETURN_VALUE.MS_FAILURE.swigValue()) error = true; if (shape.add(line) == MS_RETURN_VALUE.MS_FAILURE.swigValue()) error = true;
       shape.setValue(0, "test1");
       shape.setValue(1, "test2");
       shape.setValue(2, "test3");
if (layer.addFeature(shape) == MS_RETURN_VALUE.MS_FAILURE.swigValue()) error = true; if (error) System.out.println("can't add point"); map.queryByRect(new rectObj(3400000, 5400000, 3600000, 5600000, 0)); int numRes = layer.getNumResults();
       resultCacheObj infoResults = null;
if (layer.open() == MS_RETURN_VALUE.MS_FAILURE.swigValue()) System.out.println("can't open layer");

       System.out.println("num res: " + numRes);
if (numRes > 0) {
           infoResults = layer.getResults();
           for (int resNr = 0; resNr < numRes; resNr++){
               resultCacheMemberObj resObj = infoResults.getResult(resNr);
int shpIndex = resObj.getShapeindex();
               System.out.println("shp " + resNr + ": " + shpIndex);

               if (shpIndex >= 0) {
                   shapeObj tmpFeature = layer.getFeature(shpIndex, -1);
System.out.println("num values = " + tmpFeature.getNumvalues());
               }
           }
       }
   }

}


---------------------
  test.map
---------------------
MAP
 EXTENT 3565000 5630000 3570000 5680000
 IMAGECOLOR 255 255 255
 IMAGETYPE png
 SIZE 500 500
 STATUS ON
 UNITS METERS
 NAME "MS"

 OUTPUTFORMAT
   NAME "PNG"
   MIMETYPE "image/png"
   DRIVER "GD/PNG"
   EXTENSION "png"
   IMAGEMODE "PC256"
   TRANSPARENT FALSE
 END

SYMBOL
 NAME "circle"
 TYPE ELLIPSE
 POINTS
   1 1
 END
FILLED TRUE END

 PROJECTION
   "init=epsg:31467"
 END

 QUERYMAP
   COLOR 255 255 0
   SIZE -1 -1
   STATUS OFF
   STYLE HILITE
 END

 WEB
   IMAGEPATH "../temp/"
   IMAGEURL "./mapserver/temp/"
 END

 LAYER
   NAME "inline"
   PROJECTION
     "init=epsg:31467"
   END
   SIZEUNITS PIXELS
   STATUS DEFAULT
   TOLERANCEUNITS PIXELS
   UNITS METERS
   TYPE POINT
   TEMPLATE "dummy"
CLASS
     METADATA
     END
     STYLE
       ANGLE 360
       COLOR 255 0 0
       SYMBOL "circle"
       SIZE 10
     END
   END
 END

END

Reply via email to