Special thanks to sir Gery for the valuable assistance he provided us. Yours truly:
Julius ---------- Forwarded message ---------- From: Julius Sempio <[email protected]> Date: Tue, May 29, 2012 at 12:17 PM Subject: Re: [OpenLayers-Users] Getting specific data from a single vector feature with a large attribute table To: "Gery ." <[email protected]> Good day sir. [?] We're pretty happy to say that we finally managed to solve the issue. We made use of a ready-made drop-down box (from the free DHTMLx standard edition library) and made entries linked to the CQL_FILTER in the GetFeature. We're happy to share the solution for the reference of others: var survno; <== the repository of the survey number parameter, declared as a global variable Snippet within our init() function: var survnoOptions = []; survnoOptions.push(["0", "Select a survey #"]); survnoOptions.push(["1", "1"]); survnoOptions.push(["2", "2"]); survnoOptions.push(["3", "3"]); survnoOptions.push(["4", "4"]); survnoOptions.push(["5", "5"]); survnoOptions.push(["6", "6"]); survnoOptions.push(["7", "7"]); survnoOptions.push(["8", "8"]); survnoOptions.push(["9", "9"]); survnoOptions.push(["10", "10"]); survnoOptions.push(["11", "11"]); survnoOptions.push(["12", "12"]); survnoCombo = new dhtmlXCombo("tsncombobox", "survnosearch", 0.075*width); survnoCombo.addOption(survnoOptions); survnoCombo.selectOption(1, false, false); survno = survnoCombo.getSelectedValue(); survnoCombo.attachEvent("onChange", function(){ survno = survnoCombo.getSelectedValue(); }); var tsncomboboxDIV = document.getElementById('tsncombobox'); var survnoPage = "<p style=\"font-family:verdana;color:navy;font-size:11px;text-align:left;width:25%\">" + "<strong>Survey #: </strong></p>"; var statusinitDIV = document.getElementById('tributaryinformationstatusinit'); statusinitDIV.innerHTML = survnoPage; statusinitDIV.appendChild(tsncomboboxDIV); function getWQMS(wqms){ var paramsWQMS = { REQUEST: "GetFeature", SERVICE: "WFS", VERSION: "1.1.0", TYPENAME: ["prism:WQMS"], OUTPUTFORMAT: "GML2", SRSNAME: "EPSG:4326", CQL_FILTER: "wqms_id = \'" + wqms + "\' AND survey_num = " + survno}; <== the modified CQL_FILTER parameter that uses the survno global variable OpenLayers.Request.GET({ url: "http://202.92.159.15:8080/geoserver/prism/wfs", params: paramsWQMS, callback: handlerWQMS}); } We placed the data display in the handlerWQMS(feature) function, which is simply an "innerHTML-setting" function. Again, thank you for the assistance and insights, good sires. [?] Yours truly: Julius On Tue, May 29, 2012 at 10:55 AM, Julius Sempio <[email protected]>wrote: > Good day sir. > > While studying the idea on attaching innerHTML's in the drop-down box, we > also found out that the CQL_FILTER parameter in our WFS GetFeature request > can be utilized as well in outputting the row you need (as long as they > have unique values): > > > function getWQMS(wqms){ > var paramsWQMS = { > REQUEST: "GetFeature", > SERVICE: "WFS", > VERSION: "1.1.0", > TYPENAME: ["prism:WQMS"], > OUTPUTFORMAT: "GML2", > SRSNAME: "EPSG:4326", > CQL_FILTER: "wqms_id = \'" + wqms + "\'"}; <== can also help :D > > > OpenLayers.Request.GET({ > url: "http://202.92.159.15:8080/geoserver/prism/wfs", > params: paramsWQMS, > callback: handlerWQMS}); > } > > We'll try to work around on both ideas. > > Thanks for the insights given as of the moment. > > Yours truly: > > Julius > > > On Mon, May 28, 2012 at 9:05 PM, Gery . <[email protected]> wrote: > >> Hi Julius, >> >> Now I understand, probably this may work: >> http://www.mail-archive.com/[email protected]/msg04937.html. This is >> an example in html: http://www.echoecho.com/htmlforms11.htm. It should >> be a way to link that to your postgis table, perhaps through your geoserver >> but no idea about how. >> >> HTH, >> >> ------------------------------ >> Date: Mon, 28 May 2012 19:33:01 +0800 >> Subject: Re: [OpenLayers-Users] Getting specific data from a single >> vector feature with a large attribute table >> From: [email protected] >> To: [email protected] >> >> >> Good day, sir. Thank you for the prompt reply. >> >> The sample data we provided are stored in a single point vector, and in >> effect we can actually click on only a single vector (or, in essence, a >> single point vector storing multiple rows). >> >> We're planning to make a drop-down box that lists the Survey Numbers and >> then when the end user selects a survey number (which are, by the way, our >> means to display data in a temporal manner - that is, each survey number >> has an assigned date of the times the water quality surveys were done) the >> information regarding water quality on that particular date is displayed. >> >> We're thinking of displaying data one row at a time using that drop-down >> box, but right now we're still finding ways to do so. As of the moment, we >> were unsuccessful in linking the drop-down box to GetFeature or >> GetFeatureInfo. >> >> We do find the information you provided helpful when it comes to >> overlapping features, however, so we still appreciate the insight. >> >> Thank you for the time in considering this problem of ours. >> >> Yours truly: >> >> Julius >> >> On Mon, May 28, 2012 at 6:14 PM, Gery . <[email protected]> wrote: >> >> >> Hello Julius, >> >> I work with PostGis, Mapserver and Openlayers to plot my data. My tables >> are quite similar to what you have, but my code is different. If I >> understand well, you're trying to get the info stored in your tables after >> clicking each feature, is it that? if so, you have to play with the >> GetFeatureInfo code, here is the code: >> http://openlayers.org/dev/examples/getfeatureinfo-popup.html >> >> I understand also that you want to display all the rows in your table >> based on survey_no column, but just clicking one feature (this is one row), >> is it that? as far as I know you can assign info to one feature, this is >> one row, and then press each feature to get its corresponding info, I know >> that in that way works, probably you may make a query and select only the >> features that match certain pattern in your survey_no column, ie. all of >> them that are multiple of 10. >> >> Hope this helps, >> >> Gery >> >> ------------------------------ >> Date: Mon, 28 May 2012 17:30:05 +0800 >> From: [email protected] >> To: [email protected] >> Subject: [OpenLayers-Users] Getting specific data from a single vector >> feature with a large attribute table >> >> >> Good day, sires. >> >> I am currently working on a web-based GIS project that mainly concerns >> with the extraction of data for viewing purposes, and we're using PostGIS, >> Geoserver and OpenLayers for the said project. >> >> Right now we're trying to display data from several rows in the attribute >> table in a single vector, but right now we're pretty much stuck at >> displaying only the first line of the table (see example below): >> >> fid survey_no wqms_id do surveydate >> 135 1 WQS-10-1 8.45 1/27/2010 >> ==> only this line gets displayed right now >> 136 2 WQS-10-2 1.27 1/28/2010 >> 137 3 WQS-10-3 1.08 2/24/2010 >> ==> we would like to display this (and others) using survey_no as the >> parameter to do so >> 138 4 WQS-10-4 6.07 3/24/2010 >> ... ... ... ... ... >> >> We're currently using the following codes to get information on the >> feature: >> >> function linkToWQMS(wqms){ >> //clear focus layers from previous selection >> if (wqmsHoverFocus.features != null) { >> wqmsHoverFocus.removeAllFeatures(); >> } >> if (popup != null){ >> map.removePopup(popup); >> } >> >> //process wqmsid >> var wqmsSelected = wqms.name; >> getWQMS(wqmsSelected); >> } >> >> function getWQMS(wqms){ >> var paramsWQMS = { >> REQUEST: "GetFeature", >> SERVICE: "WFS", >> VERSION: "1.1.0", >> TYPENAME: ["prism:WQMS"], >> OUTPUTFORMAT: "GML2", >> SRSNAME: "EPSG:4326", >> CQL_FILTER: "wqms_id = \'" + wqms + "\'"}; >> >> OpenLayers.Request.GET({ >> url: "http://202.92.159.15:8080/geoserver/prism/wfs", >> params: paramsWQMS, >> callback: handlerWQMS}); >> } >> >> function handlerWQMS(response){ >> //Create gml format object >> var gml = new OpenLayers.Format.GML(); >> gml.extractAttributes = true; >> >> //Get array of OpenLayers.Feature.Vector >> var features = gml.read(response.responseText); >> >> //reproject geometry before buffering >> var wqmsid = features[0].attributes["wqms_id"]; >> //alert(wqmsid); >> var geom = features[0].geometry.clone(); >> geom.transform(geographic, mercator); >> >> //center tributary to center of bounds >> var parcelCenter = geom.getBounds().getCenterLonLat(); >> map.panTo(parcelCenter); >> >> //pass the control to prismParcelInformationUI.js >> wqmsInformationController(features[0]); >> drawFeatures ("wqms", features, 0); >> } >> >> function wqmsInformationController(feature){ >> //pass to create status info entry >> setTributaryInformationStatus(feature); >> } >> >> function setTributaryInformationStatus(feature){ >> //code to prepare data for viewing >> var id, survno, dopercent; >> id = feature.attributes["wqms_id"]; >> survno = feature.attributes["survey_no"]; >> dopercent = Math.round(feature.attributes["do"]*100)/100; >> >> var tributaryInformationStatusTablePage = "<table >> style=\"width:100%\">" >> + "<tr><td >> style=\"font-family:verdana;color:navy;font-size:11px;text-align:right;width:25%\"><strong>Station >> ID:</strong></td>" >> + "<td >> style=\"font-family:verdana;color:navy;font-size:11px;text-align:left\">" + >> id + "</td></tr>" >> + "<tr><td >> style=\"font-family:verdana;color:navy;font-size:11px;text-align:right;width:25%\"><strong>Survey >> No:</strong></td>" >> + "<td >> style=\"font-family:verdana;color:navy;font-size:11px;text-align:left\">" + >> survno + "</td></tr>" >> + "<tr><td >> style=\"font-family:verdana;color:navy;font-size:11px;text-align:right;width:25%\"><strong>Dissolved >> Oxygen %:</strong></td>" >> + "<td >> style=\"font-family:verdana;color:navy;font-size:11px;text-align:left\">" + >> checkIfEmpty(dopercent) + "</td></tr>" >> + "</table>"; >> >> //get html elements and attach tributaryInformationBasicPage >> >> var statustableDIV = >> document.getElementById('tributaryinformationstatustable'); >> statustableDIV.innerHTML = tributaryInformationStatusTablePage; >> statusinitDIV.appendChild(statustableDIV); >> toolsStatusBar.setText("~(^.^)~ Viewing Tributary Status >> Information"); >> } >> >> We've been surfing a lot of Internet sources the past weeks in trying to >> find the answer, but as of the moment we have found no success. So any >> enlightening insights would be most welcome. >> >> Yours truly: >> >> Julius Sempio >> Department of Geodetic Engineering >> University of the Philippines >> >> _______________________________________________ Users mailing list >> [email protected] >> http://lists.osgeo.org/mailman/listinfo/openlayers-users >> >> >> >
<<330.gif>>
_______________________________________________ Users mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/openlayers-users
