File: MapThread.java

package info (click to toggle)
mapserver 5.6.5-2%2Bsqueeze3
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 15,900 kB
  • ctags: 25,593
  • sloc: ansic: 201,813; cpp: 49,629; cs: 11,792; python: 5,233; perl: 3,249; sh: 1,199; makefile: 884; lex: 592; java: 466; xml: 373; yacc: 334; tcl: 158; ruby: 53
file content (104 lines) | stat: -rw-r--r-- 2,773 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// $Id: MapThread.java 6896 2007-09-19 13:09:13Z tbonfort $
//
// See README_THREADTEST.TXT for usage details.
//


import edu.umn.gis.mapscript.*;

public class MapThread extends Thread {
    MapThread(String mapfile, int iterations, int id) {
        this.mapfile = mapfile;
        this.iterations = iterations;
	this.id=id;
    }

    public void run() {
	System.out.println("Thread "+id+" running...");

	/*
		Uncomment this if you need to reschedule threads
	if (id>=5) {
		try {
			sleep(10000);
		} catch(InterruptedException ie) {
			ie.printStackTrace();
		}
	}
	*/

        for( int i = 0; i < iterations; i++ ) {
            mapObj  map = new mapObj(mapfile);
	    long path=Math.round(Math.random()*10);

	    if ( path > 5  ) {
	       System.out.println("Thread "+id+"-"+i+" querying...");
	       query(map);
	    } else {
	       System.out.println("Thread "+id+"-"+i+" using geos to create a buffer...");
	       try {
               	  createBuffer(map);
	       } catch(Exception e) {
		   System.out.println("have you enabled GEOS support? "+e.getMessage());
	       }
	    }
   	    // We use this to test swig's memory management code
	    System.gc();
            //map.draw().save("/tmp/mapthread"+id+"-"+i+".png", map);
            map.draw();
	    
        }
	mapscript.msConnPoolCloseUnreferenced();
	System.out.println("Thread "+id+" done.");
    }

    public void createBuffer(mapObj map) {

	layerObj layer = map.getLayer(3);
	if (layer!=null) {
		layer.open();
		shapeObj shape=layer.getFeature(0,-1);
		if (shape!=null) {
			shapeObj buffer=shape.buffer(0.1);
			if (buffer != null) {
				layerObj bufferLayer=new layerObj(map);
				bufferLayer.setStatus(mapscriptConstants.MS_DEFAULT);
				bufferLayer.setDebug(mapscriptConstants.MS_ON);
				bufferLayer.setName("BUFFER");
				//bufferLayer.setType(mapscriptConstants.MS_LAYER_POLYGON);
				bufferLayer.setProjection("init=epsg:4326");
				bufferLayer.setType(MS_LAYER_TYPE.MS_LAYER_POINT);
				bufferLayer.setOpacity(50);
				classObj clazz=new classObj(bufferLayer);
				clazz.setName("Buffer class");
				styleObj style=new styleObj(clazz);
				colorObj green=new colorObj(0,254,0,-4);
				//green.setRGB(0,254,0);
				style.setColor(green);
				bufferLayer.addFeature(buffer);

			} else {
				System.out.println("Buffer shape is NULL!");
			}
		}
	}	
    }

    public void query(mapObj map) {

	layerObj layer = map.getLayer(3);
	if (layer!=null) {
	   layer.setTemplate("template.html");
	   String filter="A Point";

	   layer.queryByAttributes(map,"FNAME", filter, mapscriptConstants.MS_MULTIPLE);
	   layer.open();
	   System.out.println( " numresults: " +layer.getNumResults() );
	   layer.close();
	}
    }

    String      mapfile;
    int         iterations;
    int 	id;
}