<html st="" repl="http://schemas.microsoft.com/repl/" ss="urn:schemas-microsoft-com:office:spreadsheet" z="urn:schemas-microsoft-com:" sp="http://schemas.microsoft.com/sharepoint/" x="urn:schemas-microsoft-com:office:excel" w="urn:schemas-microsoft-com:office:word" xsi="http://www.w3.org/2001/XMLSchema-instance" v="urn:schemas-microsoft-com:vml" xmlns="http://www.w3.org/TR/REC-html40" s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xsd="http://www.w3.org/2001/XMLSchema" q="http://schemas.xmlsoap.org/soap/envelope/" p="urn:schemas-microsoft-com:office:powerpoint" o="urn:schemas-microsoft-com:office:office" dir="http://schemas.microsoft.com/sharepoint/soap/directory/" oa="urn:schemas-microsoft-com:office:activation" m="http://schemas.microsoft.com/office/2004/12/omml" wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" d="DAV:" c="urn:schemas-microsoft-com:office:component:spreadsheet" pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" b="urn:schemas-microsoft-com:office:publisher" a="urn:schemas-microsoft-com:office:access" rs="urn:schemas-microsoft-com:rowset" rtc="http://microsoft.com/officenet/conferencing" x2="http://schemas.microsoft.com/office/excel/2003/xml" dsss="http://schemas.microsoft.com/office/2006/digsig-setup" dsp="http://schemas.microsoft.com/sharepoint/dsp" ex12t="http://schemas.microsoft.com/exchange/services/2006/types" dssi="http://schemas.microsoft.com/office/2006/digsig" spwp="http://microsoft.com/sharepoint/webpartpages" sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" udc="http://schemas.microsoft.com/data/udc" udcxf="http://schemas.microsoft.com/data/udc/xmlfile" ois="http://schemas.microsoft.com/sharepoint/soap/ois/" udcp2p="http://schemas.microsoft.com/data/udc/parttopart" sps="http://schemas.microsoft.com/sharepoint/soap/" ec="http://www.w3.org/2001/04/xmlenc#" dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" ds="http://www.w3.org/2000/09/xmldsig#" mrels="http://schemas.openxmlformats.org/package/2006/relationships" odc="urn:schemas-microsoft-com:office:odc" mver="http://schemas.openxmlformats.org/markup-compatibility/2006" ppda="http://www.passport.com/NameSpace.xsd" udcs="http://schemas.microsoft.com/data/udc/soap" html="http://www.w3.org/TR/REC-html40">
<head>
<style type="text/css">
<!--
body { margin-top: 4px; margin-right: 4px; margin-left: 4px; font-variant: normal; margin-bottom: 1px; line-height: normal }
li.msonormal { font-family: Times New Roman,serif; font-size: 12.0pt; margin-right: 0in; margin-left: 0in }
span.emailstyle18 { font-family: Calibri,sans-serif; color: #1F497D }
a:visited { color: purple; text-decoration: underline }
p { margin-top: 0in; font-size: 12.0pt; font-family: Times New Roman,serif; margin-left: 0in; margin-right: 0in; margin-bottom: .0001pt }
.msochpdefault { font-size: 10.0pt }
span.msohyperlink { color: blue; text-decoration: underline }
span.msohyperlinkfollowed { color: purple; text-decoration: underline }
a:link { color: blue; text-decoration: underline }
p.msonormal { font-size: 12.0pt; font-family: Times New Roman,serif; margin-left: 3.0pt; margin-right: 0in }
div.msonormal { font-family: Times New Roman,serif; font-size: 12.0pt; margin-right: 0in; margin-left: 0in }
-->
</style>
</head>
<body vlink="purple" lang="EN-US" style="margin-top: 3.0pt; margin-left: 3.0pt; margin-right: 3.0pt; margin-bottom: .75pt" link="blue">
<p style="margin-bottom: 0; margin-top: 0">
<font face="Comic Sans MS" size="3">Steve,</font> </p>
<br>
<p style="margin-bottom: 0; margin-top: 0">
<font face="Comic Sans MS" size="3">I thought about the template process, and this would likely work with the first pass, where MapServer does a basic or simple version of a set of settings after looking at the datasource,</font> </p>
<br>
<p style="margin-bottom: 0; margin-top: 0">
<font face="Comic Sans MS" size="3">Using the preconceived STAT string seems limiting as far as user interaction. If all the setting from the user or site config are already known, then that would work. I was looking at how to augment or adjust a specific ramp value within a set of them, but you have that possibility in your example as well.</font> </p>
<br>
<p style="margin-bottom: 0; margin-top: 0">
<font face="Comic Sans MS" size="3">I'm interested for the most part in how to capture user input for the ramp classing.</font> </p>
<br>
<p style="margin-bottom: 0; margin-top: 0">
<font face="Comic Sans MS" size="3">bobb</font> </p>
<br>
<p style="margin-bottom: 0; margin-top: 0">
<br>
<br>
>>> "Lime, Steve D (DNR)" <Steve.Lime@state.mn.us> wrote:<br> </p>
<div style="border-left: solid 1px #050505; background-color: #f3f3f3; margin-top: 0; padding-left: 7px; margin-left: 15px; margin-right: 0; margin-bottom: 0">
<div class="section1">
<br>
<div style="font-family: Calibri,sans-serif; font-size: 11.0pt; color: #1F497D">
<p style="margin-bottom: 0; margin-top: 0">
You’re always mixing things up aren’t you… <o p="#DEFAULT"></o> </p>
</div>
<br>
<div style="font-family: Calibri,sans-serif; font-size: 11.0pt; color: #1F497D">
<p style="margin-bottom: 0; margin-top: 0">
I don’t think you need a special mode. This strikes me as just another special form of template output based on a query. Presently you can get layer level query data (e.g. number of results) and of course spatial and non-spatial attributes for each feature. What’s needed here is the mechanism to gather layer stats (and a definition of what those are) in either draw or query context and then a means of using or presenting them. Imaging in a new “stats” tag within a result set like so (within a resultset tag):<o p="#DEFAULT"></o> </p>
</div>
<br>
<div style="font-family: Calibri,sans-serif; font-size: 11.0pt; color: #1F497D">
<p style="margin-bottom: 0; margin-top: 0">
[stats item=”foo” format=”$stddev,$min,$max”]<o p="#DEFAULT"></o> </p>
</div>
<br>
<div style="font-family: Calibri,sans-serif; font-size: 11.0pt; color: #1F497D">
<p style="margin-bottom: 0; margin-top: 0">
You could use that to populate XML, JSON or just plain HTML output for use on the client. This tag would draw from a populated layerStatsObj which might consist of an array or hash of itemStatsObj’s… You could populate those objects on-the-fly or perhaps even from a file. Would probably need a new STATS … END block within a layer to drive this. Just thinking out loud.<o p="#DEFAULT"></o> </p>
</div>
<br>
<div style="font-family: Calibri,sans-serif; font-size: 11.0pt; color: #1F497D">
<p style="margin-bottom: 0; margin-top: 0">
Steve<o p="#DEFAULT"></o> </p>
</div>
<div>
<div style="padding-right: 0in; padding-top: 3.0pt; border: none; padding-left: 0in; border-top: solid #B5C4DF 1.0pt; padding-bottom: 0in">
<br>
<div style="font-family: Tahoma,sans-serif; font-size: 10.0pt">
<p style="margin-bottom: 0; margin-top: 0">
From: </p>
</div>
<div style="font-family: Tahoma,sans-serif; font-size: 10.0pt">
<p style="margin-bottom: 0; margin-top: 0">
Bob Basques [mailto:Bob.Basques@ci.stpaul.mn.us]<br><b>Sent:</b> Thursday, February 04, 2010 8:19 AM<br><b>To:</b> Lime, Steve D (DNR); Stephen Woodbridge; Jan Hartmann<br><b>Cc:</b> MapServer Dev Mailing List; mapserver-users@lists.osgeo.org<br><b>Subject:</b> RE: [mapserver-dev] RE: [mapserver-users] colorramp and datarangeon the fly?<o p="#DEFAULT"></o> </p>
</div>
</div>
</div>
<p class="msonormal" style="margin-bottom: 0; margin-top: 0">
<o p="#DEFAULT">
</o> </p>
<br>
<div style="font-family: Comic Sans MS">
<p style="margin-bottom: 0; margin-top: 0">
All, </p>
</div>
<p style="margin-bottom: 0; margin-top: 0">
<o p="#DEFAULT">
</o>
</p>
<p class="msonormal" style="margin-top: 0; margin-right: 0in; margin-left: 0in; margin-bottom: 0">
<o p="#DEFAULT">
</o> </p>
<br>
<div style="font-family: Comic Sans MS">
<p style="margin-bottom: 0; margin-top: 0">
Just to mix it up a little, what about doing a half and half approach. MapServer could generate something simpler (the data basics from a data read on the fly, and return a simple ramping config file, which could be used to pass back as a file for the custom aspects. </p>
</div>
<p style="margin-bottom: 0; margin-top: 0">
<o p="#DEFAULT">
</o>
</p>
<p class="msonormal" style="margin-top: 0; margin-right: 0in; margin-left: 0in; margin-bottom: 0">
<o p="#DEFAULT">
</o> </p>
<br>
<div style="font-family: Comic Sans MS">
<p style="margin-bottom: 0; margin-top: 0">
Just having these two options would open up some doors, MapServer returning a simple ramp structure as a file, could be used in a User interface to do more complicated theming for example. Once the basic data limits are known, the ramping divisions are much easier to decide on. </p>
</div>
<p style="margin-bottom: 0; margin-top: 0">
<o p="#DEFAULT">
</o>
</p>
<p class="msonormal" style="margin-top: 0; margin-right: 0in; margin-left: 0in; margin-bottom: 0">
<o p="#DEFAULT">
</o> </p>
<br>
<div style="font-family: Comic Sans MS">
<p style="margin-bottom: 0; margin-top: 0">
Could this work as a compiled in module for those that need/want it instead of always in? or would it make more sense to build in, ?? Something similar to a mode=legend sort of thing, like mode=ramp_txt ?? </p>
</div>
<p style="margin-bottom: 0; margin-top: 0">
<o p="#DEFAULT">
</o>
</p>
<p class="msonormal" style="margin-top: 0; margin-right: 0in; margin-left: 0in; margin-bottom: 0">
<o p="#DEFAULT">
</o> </p>
<br>
<div style="font-family: Comic Sans MS">
<p style="margin-bottom: 0; margin-top: 0">
bobb </p>
</div>
<p style="margin-bottom: 0; margin-top: 0">
<o p="#DEFAULT">
</o>
</p>
<p class="msonormal" style="margin-top: 0; margin-right: 0in; margin-left: 0in; margin-bottom: 0">
<o p="#DEFAULT">
</o> </p>
<p style="margin-bottom: 0; margin-top: 0">
<br>
<br>
>>> "Lime, Steve D (DNR)" <Steve.Lime@state.mn.us> wrote:<o p="#DEFAULT"></o> </p>
<div style="padding-right: 0in; padding-top: 0in; border-left: solid #050505 1.0pt; border: none; padding-left: 5.0pt; margin-left: 11.25pt; padding-bottom: 0in">
<p style="background-position: null; background-repeat: repeat; background-color: #F3F3F3; background-image: null; margin-top: 0; background-attachment: scroll; margin-bottom: 0">
At one point I toyed with the idea of supporting a .stats file for a layer and supplying a routine (command-line) that would populate it. The file would contain data like you're talking about. Doesn't help with the on-the-fly needs Bart was articulating.<br><br>Steve<br><br>-----Original Message-----<br>From: mapserver-users-bounces@lists.osgeo.org [mailto:mapserver-users-bounces@lists.osgeo.org] On Behalf Of Stephen Woodbridge<br>Sent: Wednesday, February 03, 2010 10:39 AM<br>To: Jan Hartmann<br>Cc: Lime, Steve D (DNR); MapServer Dev Mailing List; mapserver-users@lists.osgeo.org<br>Subject: Re: [mapserver-dev] RE: [mapserver-users] colorramp and datarange on the fly?<br><br>Right, I think there are two use cases:<br><br>1) data exploration - can be slower but needs flexibility<br>2) production serving - needs to be fast, and probably limits<br>flexibility to some predefined models<br><br>I think that there is also another angle to this, which is how the<br>summary data is computed for example:<br><br>1) min/max/average/std<br>2) statistical analysis<br>3) binning into some number of classes<br>4) removing outliers so the results are not skewed by them<br>5) etc<br><br>There are a lot of ways the people might need to summarize they data.<br><br>If the data is in a database, then you can add all the analysis, slicing<br>and dicing to the database and the rendering to mapserver.<br><br>So, I think that it would be nice to be able to read some "metadata"<br>about a layer and then use that for building the display using something<br>like colorramp and datarange. We might want to look at ways that we<br>could establish in mapserver for fetching the "metadata" about a layer.<br>For example:<br><br>1) define the "metadata" in the METADATA object<br>2) define a .met file for a shapefile or tileindex that contained the<br>"metadata" for that layer<br>3) define a separate SQL query that could be used to fetch the<br>"metadata" for the layer<br>4) something similar for other layer providers.<br>5) scan the data in two passes to compute some simple "metadata"<br><br>Thoughts?<br><br>-Steve W<br><br><br>Jan Hartmann wrote:<br>> If you allow two passes, you can have all sorts of summarized values in<br>> the template, to be used in the second pass, like Bart's actual extent<br>> used for coloring. Doesn't look to difficult to implement to me, as long<br>> as the two passes only get called when really necessary. I'm not sure if<br>> performance is an issue for MapServer itself: if you really want high<br>> performance, you should use the underlying format or database directly.<br>><br>> Jan<br>><br>> On 3-2-2010 17:02, Lime, Steve D (DNR) wrote:<br>>> How big a change would depend on the implementation. The brute force<br>>> approach where you simply loop through features once to compute ranges<br>>> and then again to draw would be probably pretty straight forward and<br>>> driver independent. Wouldn't be fast (but would be simple). Complexity<br>>> would be added as you try and boost performance by:<br>>><br>>> - allowing drivers to compute stats in their own way (e.g. add to<br>>> the layer API something like msLayerGetStats(...))<br>>> - caching geometries from a first pass through the shapes for the<br>>> second<br>>><br>>> Steve<br>>><br>>> BTW The color ramp support needs to be cleaned up first. I think we<br>>> scared the originator of that code away when an RFC was originally put<br>>> together.<br>>><br>>> -----Original Message-----<br>>> From: mapserver-users-bounces@lists.osgeo.org<br>>> [mailto:mapserver-users-bounces@lists.osgeo.org] On Behalf Of Bart van<br>>> den Eijnden<br>>> Sent: Wednesday, February 03, 2010 5:12 AM<br>>> To: mapserver-users@lists.osgeo.org<br>>> Subject: [mapserver-users] colorramp and datarange on the fly?<br>>><br>>> Hi list,<br>>><br>>> is it possible to have a colorramp in Mapserver based on the min and<br>>> max value in the current extent?<br>>><br>>> So instead of predefining the min and max in DATARANGE, have Mapserver<br>>> use the min and max value of the dataset in the current extent?<br>>><br>>> If not, would it be an easy change or a very complex one?<br>>><br>>> Best regards,<br>>> Bart_______________________________________________<br>>> mapserver-users mailing list<br>>> mapserver-users@lists.osgeo.org<br>>> <a href="http://lists.osgeo.org/mailman/listinfo/mapserver">http://lists.osgeo.org/mailman/listinfo/mapserver</a>-users<br>>> _______________________________________________<br>>> mapserver-dev mailing list<br>>> mapserver-dev@lists.osgeo.org<br>>> <a href="http://lists.osgeo.org/mailman/listinfo/mapserver">http://lists.osgeo.org/mailman/listinfo/mapserver</a>-dev<br>>> <br>> _______________________________________________<br>> mapserver-dev mailing list<br>> mapserver-dev@lists.osgeo.org<br>> <a href="http://lists.osgeo.org/mailman/listinfo/mapserver">http://lists.osgeo.org/mailman/listinfo/mapserver</a>-dev<br><br>_______________________________________________<br>mapserver-users mailing list<br>mapserver-users@lists.osgeo.org<br><a href="http://lists.osgeo.org/mailman/listinfo/mapserver">http://lists.osgeo.org/mailman/listinfo/mapserver</a>-users<br>_______________________________________________<br>mapserver-dev mailing list<br>mapserver-dev@lists.osgeo.org<br><a href="http://lists.osgeo.org/mailman/listinfo/mapserver">http://lists.osgeo.org/mailman/listinfo/mapserver</a>-dev<o p="#DEFAULT"></o>
</p>
</div>
</div>
</div>
</body>
</html>