Commit a15394f59cb37d1b64bb65439409ecc664ccf2d0
1 parent
fe22e2de
Exists in
master
and in
7 other branches
--no commit message
Showing
5 changed files
with
0 additions
and
523 deletions
Show diff stats
classesphp/lews/index.php
... | ... | @@ -1,64 +0,0 @@ |
1 | -<HTML> | |
2 | -<HEAD> | |
3 | -<TITLE>PHP WMS Client</TITLE> | |
4 | -<LINK REL='stylesheet' TYPE='text/css' HREF='wms_style.css'> | |
5 | -</HEAD> | |
6 | -<BODY BGCOLOR=#FFFFFF> | |
7 | - | |
8 | -<H1>PHP WMS Client</H1> | |
9 | - | |
10 | -<P>This client uses the XML capabilities of PHP and standard web application | |
11 | -programming techniques to present an HTML/JavaScript view of | |
12 | -<A HREF='http://www.opengis.org'>OpenGIS</A> Web Map Server (WMS) internet | |
13 | -mapping servers.</P> | |
14 | - | |
15 | -<H2>Test Servers</H2> | |
16 | - | |
17 | -<P>Our goal is to "do the right thing" with all these servers. It will be | |
18 | -a long hard road.</P> | |
19 | - | |
20 | -<? | |
21 | - | |
22 | -$servers = array( | |
23 | - | |
24 | - array("Refractions USA","http://office.refractions.net/ms/cgi-bin/mapserv?map=/home/httpd/mapserver/html/usa/usa.map&","Good"), | |
25 | - array("Refractions PostGIS","http://mapserver.refractions.net/cgi-bin/mapserv?map=/home/www/mapserv/maps/postgis.map&","OK"), | |
26 | - array("CubeWerx World","http://www.cubewerx.com/demo/cubeserv/cubeserv.cgi?","Bad"), | |
27 | - array("DMSolutions GMAP","http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?","Good") | |
28 | -); | |
29 | - | |
30 | -print "<TABLE WIDTH=100% BORDER=1 CELLPADDING=5>"; | |
31 | -print "<TR BGCOLOR=#EEEEEE><TH>WMS Site</TH><TH>Online Resource URL</TH><TH>Status</TH></TR>"; | |
32 | -foreach ( $servers as $s ) { | |
33 | - $hurl = urlencode($s[1]); | |
34 | - print "<TR><TH ALIGN=CENTER>$s[0]</TH><TD><A HREF='wms.php?onlineresource=$hurl'>$s[1]</A></TD><TD>$s[2]</TD></TR>"; | |
35 | -} | |
36 | - | |
37 | -?> | |
38 | - | |
39 | -<FORM ACTION='wms.php' METHOD='get'> | |
40 | -<TR> | |
41 | - <TH ALIGN=RIGHT>Enter a Server</TH> | |
42 | - <TD COLSPAN=2><INPUT NAME='onlineresource' TYPE='text' SIZE='50'> | |
43 | - <INPUT TYPE='submit' VALUE=' Try Server '></TD> | |
44 | -</TR> | |
45 | -</FORM> | |
46 | - | |
47 | -</TABLE> | |
48 | - | |
49 | - | |
50 | -<H2>To Do List</H2> | |
51 | - | |
52 | -<UL> | |
53 | -<LI>Properly handle heirarchical <Layer> objects and provide a | |
54 | -tree-based layer list. | |
55 | -<LI>Enable and disable layer entries appropriately based on the | |
56 | -<ScaleHint> provided for <Layer>s. | |
57 | -<LI>Continue to test against new and unknown WMS servers to obtain maximum | |
58 | -compatibility. | |
59 | -<LI>Aesthetic improvements to the interface. Graphical mode selectors, | |
60 | -rollovers, highlighting. "Themability" of the interface. | |
61 | -</UL> | |
62 | - | |
63 | -</BODY> | |
64 | -</HTML> |
classesphp/lews/wms.php
... | ... | @@ -1,129 +0,0 @@ |
1 | -<HTML> | |
2 | -<HEAD> | |
3 | -<TITLE>WMS</TITLE> | |
4 | -<LINK REL="stylesheet" TYPE="text/css" HREF="wms_style.css"> | |
5 | -<SCRIPT LANGUAGE='JavaScript'> | |
6 | - | |
7 | -function doSetup() { | |
8 | - // | |
9 | - // Initialize the mapframe variables for future wraparound, copying | |
10 | - // data out of layerframe, which read the information from the | |
11 | - // XML capabilities file. | |
12 | - // | |
13 | - var flds = new Array( "bbox", "format", "mode", "width", "height", "srs", "onlineresource" ); | |
14 | - for ( i = 0; i < flds.length; i++ ) { | |
15 | - mapframe.document.mapform.elements[flds[i]].value = | |
16 | - layerframe.document.layerform.elements[flds[i]].value; | |
17 | - } | |
18 | - // | |
19 | - // Read the mapframe size and set the state variables. | |
20 | - // | |
21 | - doSize(); | |
22 | - // | |
23 | - // Have the layerframe initiate the first update. This gets all | |
24 | - // the layer states to match the form values. | |
25 | - // | |
26 | - layerframe.toggle(); | |
27 | -} | |
28 | - | |
29 | -function doSize() { | |
30 | - // | |
31 | - // Read the mapframe size using javascript and set the | |
32 | - // width and height variables in the mapframe. | |
33 | - // | |
34 | - var width = 500; | |
35 | - var height = 500; | |
36 | - // | |
37 | - // IE has different ways of reading frame size. | |
38 | - // | |
39 | - if( navigator.appName.indexOf('Microsoft') != -1 ) { // IE | |
40 | - if ( window.createPopup ) { // IE >= 5.5 | |
41 | - width = top.mapframe.frameElement.clientWidth; | |
42 | - height = top.mapframe.frameElement.clientHeight; | |
43 | - } else { // IE < 5.5 | |
44 | - width = top.mapframe.document.body.clientWidth; | |
45 | - height = top.mapframe.document.body.clientHeight; | |
46 | - } | |
47 | - } | |
48 | - // | |
49 | - // Other browsers are fairly consistent. | |
50 | - // | |
51 | - else { // Not IE | |
52 | - width = top.mapframe.innerWidth; | |
53 | - height = top.mapframe.innerHeight; | |
54 | - } | |
55 | - // | |
56 | - // Set the size state values in the mapframe. | |
57 | - // | |
58 | - mapframe.document.mapform.width.value = width; | |
59 | - mapframe.document.mapform.height.value = height; | |
60 | -} | |
61 | - | |
62 | -function doResize() { | |
63 | - // | |
64 | - // On a resize event, read the new size, then | |
65 | - // redraw the map. | |
66 | - // | |
67 | - doSize(); | |
68 | - mapframe.document.mapform.submit(); | |
69 | -} | |
70 | - | |
71 | -</SCRIPT> | |
72 | -<SCRIPT LANGUAGE='JavaScript'> | |
73 | - | |
74 | -// | |
75 | -// Netscape 4 event handling requires us to capture | |
76 | -// the resize event at the top. | |
77 | -// | |
78 | -if ( navigator.appName.indexOf('Netscape') != -1 ) { | |
79 | - self.captureEvents( Event.RESIZE ); | |
80 | -} | |
81 | - | |
82 | -// | |
83 | -// Set some event handlers. | |
84 | -// | |
85 | -self.onload = doSetup; | |
86 | -self.onresize = doResize; | |
87 | - | |
88 | -</SCRIPT> | |
89 | -</HEAD> | |
90 | - | |
91 | -<FRAMESET | |
92 | - border=1 | |
93 | - rows=55,* | |
94 | - framespacing=0 | |
95 | - > | |
96 | - | |
97 | - <FRAME | |
98 | - name=titleframe | |
99 | - frameBorder=Yes | |
100 | - scrolling=No | |
101 | - src="wms_titleframe.php" | |
102 | - > | |
103 | - | |
104 | - <FRAMESET | |
105 | - border=1 | |
106 | - cols=250,* | |
107 | - frameSpacing=0 | |
108 | - > | |
109 | - | |
110 | - <FRAME | |
111 | - name=layerframe | |
112 | - frameBorder=Yes | |
113 | - scrolling=Yes | |
114 | - src="wms_layerframe.php?onlineresource=<? echo urlencode($_GET['onlineresource']) ?>" | |
115 | - > | |
116 | - <FRAME | |
117 | - name=mapframe | |
118 | - frameBorder=Yes | |
119 | - marginHeight=0 | |
120 | - marginWidth=0 | |
121 | - scrolling=No | |
122 | - src="wms_mapframe.php" | |
123 | - > | |
124 | - | |
125 | - </FRAMESET> | |
126 | - | |
127 | -</FRAMESET> | |
128 | - | |
129 | -</HTML> |
classesphp/lews/wms_layerframe.php
... | ... | @@ -1,99 +0,0 @@ |
1 | -<HTML> | |
2 | -<HEAD> | |
3 | -<LINK REL='stylesheet' TYPE='text/css' HREF='wms_style.css'> | |
4 | - | |
5 | -<SCRIPT LANGUAGE='JavaScript'> | |
6 | - | |
7 | -function toggle(event) { | |
8 | - var lyrs = new Array(); | |
9 | - var qlyrs = new Array(); | |
10 | - for( i = 0; i < document.layerform.elements.length; i++ ) { | |
11 | - if( document.layerform.elements[i].name == "checks" ) { | |
12 | - if( document.layerform.elements[i].checked ) { | |
13 | - lyrs.push(document.layerform.elements[i].value); | |
14 | - if( eval("document.layerform.query_" + document.layerform.elements[i].value + ".value") ) { | |
15 | - qlyrs.push(document.layerform.elements[i].value); | |
16 | - } | |
17 | - } | |
18 | - } | |
19 | - } | |
20 | - top.mapframe.document.mapform.layers.value = lyrs.join(","); | |
21 | - top.mapframe.document.mapform.qlayers.value = qlyrs.join(","); | |
22 | - top.mapframe.doSubmit(); | |
23 | -} | |
24 | - | |
25 | -</SCRIPT> | |
26 | - | |
27 | -</HEAD> | |
28 | -<BODY> | |
29 | - | |
30 | -<? | |
31 | - | |
32 | - | |
33 | -# ------------------------------------------------------------- | |
34 | -# Import the WMS support functions for PHP. These are mostly responsible for | |
35 | -# handling the XML capabilities request, and creating appropriate JavaScript | |
36 | -# objects from that data.8 | |
37 | -# | |
38 | -# PHP functions are also used to generate the query result page. | |
39 | -# | |
40 | -include("wms_functions.php"); | |
41 | - | |
42 | -# ------------------------------------------------------------- | |
43 | -# Test that there is a wms service defined before proceding. | |
44 | -# | |
45 | -if ( ! $onlineresource ) { | |
46 | - # No WMS service provided. | |
47 | - wms_fatal("No 'onlineresource' defined."); | |
48 | - } | |
49 | - | |
50 | -$wms_service_request = $onlineresource . "REQUEST=GetCapabilities&SERVICE=WMS"; | |
51 | - | |
52 | - | |
53 | -# ------------------------------------------------------------- | |
54 | -# Test that the capabilites file has successfully downloaded. | |
55 | -# | |
56 | -if( !($wms_capabilities = file($wms_service_request)) ) { | |
57 | - # Cannot download the capabilities file. | |
58 | - wms_fatal("Unable to retrieve capabilities file '$wms_service_request'."); | |
59 | -} | |
60 | - | |
61 | -$wms_capabilities = implode("",$wms_capabilities); | |
62 | - | |
63 | -# ------------------------------------------------------------- | |
64 | -# Test that the capabilites file has successfully parsed. | |
65 | -# | |
66 | -if( !($dom = xmldoc($wms_capabilities)) ) { | |
67 | - # Cannot parse the capabilities file. | |
68 | - wms_fatal("Unable to parse capabilities file from '$onlineresource'.<P>" . xml2html($wms_capabilities)); | |
69 | -} | |
70 | - | |
71 | -# ------------------------------------------------------------- | |
72 | -# Create the JavaScript map object and layer objects. | |
73 | -# Set the layer objects to have a valid reference to the map object. | |
74 | -# | |
75 | -#print xml2html($wms_capabilities); exit; | |
76 | -print "<H1>" . wms_title($dom) . "</H1>"; | |
77 | -print "<FORM NAME='layerform'>"; | |
78 | -foreach (wms_layers($dom) as $layer) { | |
79 | - print wms_layer2html($layer); | |
80 | -} | |
81 | -$bbox = wms_bbox($dom); | |
82 | -print wms_hidden("bbox",$bbox); | |
83 | -print wms_hidden("format","image/png"); | |
84 | -print wms_hidden("mode","PAN"); | |
85 | -print wms_hidden("width","500"); | |
86 | -print wms_hidden("height","500"); | |
87 | -print wms_hidden("onlineresource",$onlineresource); | |
88 | -print wms_hidden("srs",wms_srs($dom)); | |
89 | -print "</FORM>"; | |
90 | -$bbox = explode(",",$bbox); | |
91 | -print "<TABLE BORDER=0 WIDTH=100% CELLPADDING=3>"; | |
92 | -print "<TR VALIGN=TOP><TH CLASS=SMALL ALIGN=RIGHT>BBOX:</TH><TD CLASS=SMALL>LL $bbox[0],$bbox[1]<BR> UR $bbox[2],$bbox[3]</TD></TR>"; | |
93 | -print "<TR VALIGN=TOP><TH CLASS=SMALL ALIGN=RIGHT>SRS:</TH><TD CLASS=SMALL>".wms_srs($dom)."</TD></TR>"; | |
94 | -print "</TABLE>"; | |
95 | - | |
96 | -?> | |
97 | - | |
98 | -</BODY> | |
99 | -</HTML> |
classesphp/lews/wms_mapframe.php
... | ... | @@ -1,156 +0,0 @@ |
1 | -<HTML> | |
2 | -<HEAD> | |
3 | -<LINK REL='stylesheet' TYPE='text/css' HREF='wms_style.css'> | |
4 | -<SCRIPT LANGUAGE='JavaScript'> | |
5 | - | |
6 | -function doQuery() { | |
7 | - // | |
8 | - // If we are in query mode, we want a new window | |
9 | - // to submit the form into. | |
10 | - // | |
11 | - var win_size = "width=280,height=450"; | |
12 | - var win_frame = "status=no,menubar=no,toolbar=no,resizeable=yes,scrollbars=yes"; | |
13 | - window.qwin = open("","queryframe",win_size + "," + win_frame); | |
14 | - window.qwin.focus(); | |
15 | - return(true); | |
16 | -} | |
17 | - | |
18 | -function doSubmit() { | |
19 | - // | |
20 | - // This function takes submissions from the layer list and | |
21 | - // ensures they go to the right target if we happen to be | |
22 | - // in query mode at the time. | |
23 | - // | |
24 | - if ( document.mapform.mode.value == "qry" ) { | |
25 | - document.mapform.action = "wms_mapframe.php"; | |
26 | - document.mapform.target = "mapframe"; | |
27 | - } | |
28 | - document.mapform.submit(); | |
29 | -} | |
30 | - | |
31 | -function setMode(mode) { | |
32 | - // | |
33 | - // This takes mode changes from the titleframe and handles | |
34 | - // the interface state appropriately. | |
35 | - // | |
36 | - document.mapform.mode.value = mode; | |
37 | - if ( mode == "qry" ) { | |
38 | - // | |
39 | - // Set the target and action appropriately for query mode. | |
40 | - // | |
41 | - document.mapform.onsubmit = doQuery; | |
42 | - document.mapform.action = "wms_query.php"; | |
43 | - document.mapform.target = "queryframe"; | |
44 | - } | |
45 | - else { | |
46 | - // | |
47 | - // Set the target and action appropriately for other modes. | |
48 | - // | |
49 | - document.mapform.action = "wms_mapframe.php"; | |
50 | - document.mapform.onsubmit = null; | |
51 | - document.mapform.target = "mapframe"; | |
52 | - if( window.qwin != null ) { | |
53 | - window.qwin.close(); | |
54 | - } | |
55 | - } | |
56 | - if ( mode == "all" ) { | |
57 | - document.mapform.submit(); | |
58 | - } | |
59 | -} | |
60 | - | |
61 | - | |
62 | -</SCRIPT> | |
63 | -</HEAD> | |
64 | -<BODY TOPMARGIN=0 BOTTOMMARGIN=0 RIGHTMARGIN=0 LEFTMARGIN=0> | |
65 | -<FORM NAME='mapform' TARGET='mapframe' METHOD='post' ACTION='wms_mapframe.php'> | |
66 | - | |
67 | -<? | |
68 | - | |
69 | -include("wms_functions.php"); | |
70 | - | |
71 | -if ( $_POST["onlineresource"] ) { | |
72 | - | |
73 | - $size = array($_POST["width"],$_POST["height"]); | |
74 | - $bbox = explode(",",$_POST["bbox"]); | |
75 | - | |
76 | - if( $_POST["mapimg_x"] && $_POST["mapimg_y"] ) { | |
77 | - | |
78 | - $click = array($_POST["mapimg_x"],$_POST["mapimg_y"]); | |
79 | - | |
80 | - if( $_POST["mode"] == "pan" ) { | |
81 | - $bbox = wms_pan( $bbox, $size, $click ); | |
82 | - } | |
83 | - elseif( $_POST["mode"] == "zin" ) { | |
84 | - $bbox = wms_pan( $bbox, $size, $click ); | |
85 | - $bbox = wms_zoom( $bbox, 0.5 ); | |
86 | - } | |
87 | - elseif( $_POST["mode"] == "zout" ) { | |
88 | - $bbox = wms_pan( $bbox, $size, $click ); | |
89 | - $bbox = wms_zoom( $bbox, 2.0 ); | |
90 | - } | |
91 | - } | |
92 | - | |
93 | - # | |
94 | - # We are in zoom-to-extents mode, to override current | |
95 | - # extent with saved original extent. Then switch to | |
96 | - # the default mode (pan). | |
97 | - # | |
98 | - if( $_POST["mode"] == "all" ) { | |
99 | - $bbox = explode(",",$_POST["bbox0"]); | |
100 | - $_POST["mode"] = "pan"; | |
101 | - } | |
102 | - # | |
103 | - # Resize the spatial extents to match the image | |
104 | - # aspect. | |
105 | - # | |
106 | - $bbox = wms_scale( $bbox, $size ); | |
107 | - $_POST["bbox"] = implode(",",$bbox); | |
108 | - # | |
109 | - # Store the initial extent for future use. | |
110 | - # | |
111 | - if( ! $_POST["bbox0"] ) { | |
112 | - $_POST["bbox0"] = $_POST["bbox"]; | |
113 | - } | |
114 | - # | |
115 | - # Create the GETMAP URL. | |
116 | - # | |
117 | - $url = $_POST["onlineresource"] . | |
118 | - "VERSION=" . urlencode("1.1.0") . "&" . | |
119 | - "REQUEST=GetMap&" . | |
120 | - "BBOX=" . urlencode($_POST["bbox"]) . "&" . | |
121 | - "LAYERS=" . urlencode($_POST["layers"]) . "&" . | |
122 | - "SRS=" . urlencode($_POST["srs"]) . "&" . | |
123 | - "WIDTH=" . urlencode($_POST["width"]) . "&" . | |
124 | - "HEIGHT=" . urlencode($_POST["height"]) . "&" . | |
125 | - "FORMAT=" . urlencode($_POST["format"]); | |
126 | - # | |
127 | - # Get the map image. | |
128 | - # | |
129 | - print "<INPUT BORDER=0 TYPE='image' NAME='mapimg' SRC='$url'>"; | |
130 | - | |
131 | -} | |
132 | - | |
133 | -# | |
134 | -# Fill out the wraparound information. This saves the state of the | |
135 | -# system for use in the next action. | |
136 | -# | |
137 | -$wms_vars = array("bbox","format","width","height","layers","mode","srs","onlineresource","bbox0","qlayers"); | |
138 | -foreach ( $wms_vars as $var ) { | |
139 | - print wms_hidden($var,$_POST[$var]); | |
140 | -} | |
141 | - | |
142 | -?> | |
143 | - | |
144 | -</FORM> | |
145 | -<SCRIPT LANGUAGE='JavaScript'> | |
146 | -// | |
147 | -// A silly hack to ensure that if we are in query mode the | |
148 | -// form target and action correspond to the query mode. | |
149 | -// | |
150 | -if ( document.mapform.mode.value == "qry" ) { | |
151 | - document.mapform.target = "queryframe"; | |
152 | - document.mapform.action = "wms_query.php"; | |
153 | -} | |
154 | -</SCRIPT> | |
155 | -</BODY> | |
156 | -</HTML> |
classesphp/lews/wms_titleframe.php
... | ... | @@ -1,75 +0,0 @@ |
1 | -<HTML> | |
2 | -<HEAD> | |
3 | -<LINK REL='stylesheet' TYPE='text/css' HREF='wms_style.css'> | |
4 | -</HEAD> | |
5 | -<SCRIPT LANGUAGE='JavaScript'> | |
6 | -function doClick(mode) { | |
7 | - // | |
8 | - // Ensure that buttons behave the way we want. When we | |
9 | - // get graphical buttons, this behavior will still exist, | |
10 | - // but the javascript will be more complex with rollovers | |
11 | - // and so on. | |
12 | - // | |
13 | - if( mode == "all" ) { | |
14 | - // | |
15 | - // If zooming to all, set the mode back to the default | |
16 | - // mode (pan) right away, then initiate the action. | |
17 | - // | |
18 | - top.mapframe.setMode(mode); | |
19 | - mode = "pan"; | |
20 | - } | |
21 | - // | |
22 | - // Blank all modes then set the mode to the current one. | |
23 | - // | |
24 | - for ( var i = 0; i < document.controls.elements.length; i++ ) { | |
25 | - document.controls.elements[i].checked = false; | |
26 | - } | |
27 | - eval("document.controls." + mode + ".checked = true"); | |
28 | - // | |
29 | - // Pass the mode on through. | |
30 | - // | |
31 | - top.mapframe.setMode(mode); | |
32 | - return false; | |
33 | -} | |
34 | -</SCRIPT> | |
35 | -<BODY> | |
36 | -<FORM NAME=controls> | |
37 | - | |
38 | -<TABLE WIDTH=100% BORDER=0> | |
39 | -<TR> | |
40 | -<TD ALIGN=LEFT><A HREF="index.php" TARGET="_top">Home</A></TD> | |
41 | -<TD ALIGN=RIGHT> | |
42 | -<INPUT | |
43 | - TYPE=radio | |
44 | - NAME=all | |
45 | - onClick='doClick("all")' | |
46 | - > ALL | |
47 | -<INPUT | |
48 | - TYPE=radio | |
49 | - NAME=pan | |
50 | - CHECKED | |
51 | - onClick='doClick("pan")' | |
52 | - > PAN | |
53 | -<INPUT | |
54 | - TYPE=radio | |
55 | - NAME=zin | |
56 | - onClick='doClick("zin")' | |
57 | - > ZIN | |
58 | -<INPUT | |
59 | - TYPE=radio | |
60 | - NAME=zout | |
61 | - onClick='doClick("zout")' | |
62 | - > ZOUT | |
63 | -<INPUT | |
64 | - TYPE=radio | |
65 | - NAME=qry | |
66 | - onClick='doClick("qry")' | |
67 | - > QRY | |
68 | -</TD> | |
69 | -</TR> | |
70 | -</TABLE> | |
71 | - | |
72 | -</FORM> | |
73 | - | |
74 | -</BODY> | |
75 | -</HTML> |