<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&#44;</font>    </p>
<br>      
    <p style="margin-bottom: 0; margin-top: 0">
      <font face="Comic Sans MS" size="3">I thought about the template process&#44; and this would likely work with the first pass&#44; where MapServer does a basic or simple version of a set of settings after looking at the datasource&#44;</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. &nbsp;If all the setting from the user or site config are already known&#44; then that would work. &nbsp;I was looking at how to augment or adjust a specific ramp value within a set of them&#44; 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&#39;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>
      &gt;&gt;&gt; &quot;Lime&#44; Steve D &#40;DNR&#41;&quot; &lt;Steve.Lime@state.mn.us&gt; 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&#8217;re always mixing things up aren&#8217;t you&#8230;&#160;<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&#8217;t think you need a&#160;&nbsp;special mode. This strikes me as just another special form of template output based on a query.&nbsp;&#160;Presently you can get layer level&#160;&nbsp;query data &#40;e.g. number of results&#41; and of course spatial and non-spatial attributes for each feature. What&#8217;s needed here is the mechanism to gather layer stats &#40;and a definition of what those are&#41; in either draw or query context and then a means of using or presenting them.&#160;&nbsp;Imaging in a new&#160;&#8220;stats&#8221;&#160;tag within a result set like so &#40;within a resultset tag&#41;:<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">
            &#160;&nbsp;&#160;&#160;&#91;stats item&#61;&#8221;foo&#8221;&#160;format&#61;&#8221;&#36;stddev&#44;&#36;min&#44;&#36;max&#8221;&#93;<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&#44; 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&#8217;s&#8230;&#160;&nbsp;You could populate those objects on-the-fly or perhaps even from a file. Would probably need a new STATS&#160;&#8230;&#160;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 &#91;mailto:Bob.Basques@ci.stpaul.mn.us&#93;<br><b>Sent:</b>&nbsp;Thursday&#44; February 04&#44; 2010 8:19 AM<br><b>To:</b>&nbsp;Lime&#44; Steve D &#40;DNR&#41;&#59; Stephen Woodbridge&#59; Jan Hartmann<br><b>Cc:</b>&nbsp;MapServer Dev Mailing List&#59; mapserver-users@lists.osgeo.org<br><b>Subject:</b>&nbsp;RE: &#91;mapserver-dev&#93; RE: &#91;mapserver-users&#93; colorramp and datarangeon the fly&#63;<o p="#DEFAULT"></o>              </p>
            </div>
          </div>
        </div>
        <p class="msonormal" style="margin-bottom: 0; margin-top: 0">
          <o p="#DEFAULT">
          &#160;</o>        </p>
<br>          
        <div style="font-family: Comic Sans MS">
          <p style="margin-bottom: 0; margin-top: 0">
            All&#44;          </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">
          &#160;</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&#44; what about doing a half and half approach.&nbsp;&#160;MapServer could generate something simpler &#40;the data basics from a data read on the fly&#44; and return a simple ramping config file&#44; which could be used to pass back as a&nbsp;&#160;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">
          &#160;</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&#44; MapServer returning a simple ramp structure as a file&#44; could be used in a User interface to do more complicated theming for example.&nbsp;&#160;Once the basic data limits are known&#44; 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">
          &#160;</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&#63; or would it make more sense to build in&#44; &#63;&#63; Something similar to a mode&#61;legend sort of thing&#44; like mode&#61;ramp_txt &#63;&#63;          </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">
          &#160;</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">
          &#160;</o>        </p>
        <p style="margin-bottom: 0; margin-top: 0">
          <br>
          <br>
          &gt;&gt;&gt; &quot;Lime&#44; Steve D &#40;DNR&#41;&quot; &lt;Steve.Lime@state.mn.us&gt; 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 &#40;command-line&#41; that would populate it. The file would contain data like you&#39;re talking about. Doesn&#39;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 &#91;mailto:mapserver-users-bounces@lists.osgeo.org&#93; On Behalf Of Stephen Woodbridge<br>Sent: Wednesday&#44; February 03&#44; 2010 10:39 AM<br>To: Jan Hartmann<br>Cc: Lime&#44; Steve D &#40;DNR&#41;&#59; MapServer Dev Mailing List&#59; mapserver-users@lists.osgeo.org<br>Subject: Re: &#91;mapserver-dev&#93; RE: &#91;mapserver-users&#93; colorramp and datarange on the fly&#63;<br><br>Right&#44; I think there are two use cases:<br><br>1&#41; data exploration&#160;&#160;&#160;- can be slower but needs flexibility<br>2&#41; production serving - needs to be fast&#44; and probably limits<br>flexibility to some predefined models<br><br>I think that there is also another angle to this&#44; which is how the<br>summary data is computed for example:<br><br>1&#41; min/max/average/std<br>2&#41; statistical analysis<br>3&#41; binning into some number of classes<br>4&#41; removing outliers so the results are not skewed by them<br>5&#41; 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&#44; then you can add all the analysis&#44; slicing<br>and dicing to the database and the rendering to mapserver.<br><br>So&#44; I think that it would be nice to be able to read some &quot;metadata&quot;<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 &quot;metadata&quot; about a layer.<br>For example:<br><br>1&#41; define the &quot;metadata&quot; in the METADATA object<br>2&#41; define a .met file for a shapefile or tileindex that contained the<br>&quot;metadata&quot; for that layer<br>3&#41; define a separate SQL query that could be used to fetch the<br>&quot;metadata&quot; for the layer<br>4&#41; something similar for other layer providers.<br>5&#41; scan the data in two passes to compute some simple &quot;metadata&quot;<br><br>Thoughts&#63;<br><br>-Steve W<br><br><br>Jan Hartmann wrote:<br>&gt; If you allow two passes&#44; you can have all sorts of summarized values in<br>&gt; the template&#44; to be used in the second pass&#44; like Bart&#39;s actual extent<br>&gt; used for coloring. Doesn&#39;t look to difficult to implement to me&#44; as long<br>&gt; as the two passes only get called when really necessary. I&#39;m not sure if<br>&gt; performance is an issue for MapServer itself: if you really want high<br>&gt; performance&#44; you should use the underlying format or database directly.<br>&gt;<br>&gt; Jan<br>&gt;<br>&gt; On 3-2-2010 17:02&#44; Lime&#44; Steve D &#40;DNR&#41; wrote:<br>&gt;&gt; How big a change would depend on the implementation. The brute force<br>&gt;&gt; approach where you simply loop through features once to compute ranges<br>&gt;&gt; and then again to draw would be probably pretty straight forward and<br>&gt;&gt; driver independent. Wouldn&#39;t be fast &#40;but would be simple&#41;. Complexity<br>&gt;&gt; would be added as you try and boost performance by:<br>&gt;&gt;<br>&gt;&gt;&#160;&#160;&#160;&#160;- allowing drivers to compute stats in their own way &#40;e.g. add to<br>&gt;&gt; the layer API something like msLayerGetStats&#40;...&#41;&#41;<br>&gt;&gt;&#160;&#160;&#160;&#160;- caching geometries from a first pass through the shapes for the<br>&gt;&gt; second<br>&gt;&gt;<br>&gt;&gt; Steve<br>&gt;&gt;<br>&gt;&gt; BTW The color ramp support needs to be cleaned up first. I think we<br>&gt;&gt; scared the originator of that code away when an RFC was originally put<br>&gt;&gt; together.<br>&gt;&gt;<br>&gt;&gt; -----Original Message-----<br>&gt;&gt; From: mapserver-users-bounces@lists.osgeo.org<br>&gt;&gt; &#91;mailto:mapserver-users-bounces@lists.osgeo.org&#93; On Behalf Of Bart van<br>&gt;&gt; den Eijnden<br>&gt;&gt; Sent: Wednesday&#44; February 03&#44; 2010 5:12 AM<br>&gt;&gt; To: mapserver-users@lists.osgeo.org<br>&gt;&gt; Subject: &#91;mapserver-users&#93; colorramp and datarange on the fly&#63;<br>&gt;&gt;<br>&gt;&gt; Hi list&#44;<br>&gt;&gt;<br>&gt;&gt; is it possible to have a colorramp in Mapserver based on the min and<br>&gt;&gt; max value in the current extent&#63;<br>&gt;&gt;<br>&gt;&gt; So instead of predefining the min and max in DATARANGE&#44; have Mapserver<br>&gt;&gt; use the min and max value of the dataset in the current extent&#63;<br>&gt;&gt;<br>&gt;&gt; If not&#44; would it be an easy change or a very complex one&#63;<br>&gt;&gt;<br>&gt;&gt; Best regards&#44;<br>&gt;&gt; Bart_______________________________________________<br>&gt;&gt; mapserver-users mailing list<br>&gt;&gt; mapserver-users@lists.osgeo.org<br>&gt;&gt; <a href="http://lists.osgeo.org/mailman/listinfo/mapserver">http://lists.osgeo.org/mailman/listinfo/mapserver</a>-users<br>&gt;&gt; _______________________________________________<br>&gt;&gt; mapserver-dev mailing list<br>&gt;&gt; mapserver-dev@lists.osgeo.org<br>&gt;&gt; <a href="http://lists.osgeo.org/mailman/listinfo/mapserver">http://lists.osgeo.org/mailman/listinfo/mapserver</a>-dev<br>&gt;&gt;&#160;&#160;&#160;<br>&gt; _______________________________________________<br>&gt; mapserver-dev mailing list<br>&gt; mapserver-dev@lists.osgeo.org<br>&gt; <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>