<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Jim,<br>
    <br>
      Yes, this is my thinking as well.  The additional mapbook syntax
    is a bit of a question mark, but I guess that would depend on how
    much of the OpenLayers filter syntax we would want to support.<br>
    <br>
      For my purposes I've added to my wfs mapsource:<br>
                <tt><filter type="equal_to" property="image_id"
      value="204"/></tt><br>
    <br>
    but this will likely be too trivial for general cases since
    OpenLayers allows queries like:<br>
    <br>
    <tt>                filter: new OpenLayers.Filter.Logical({</tt><tt><br>
    </tt><tt>                    type: OpenLayers.Filter.Logical.OR,</tt><tt><br>
    </tt><tt>                    filters: [</tt><tt><br>
    </tt><tt>                        new OpenLayers.Filter.Comparison({</tt><tt><br>
    </tt><tt>                            type:
      OpenLayers.Filter.Comparison.EQUAL_TO,</tt><tt><br>
    </tt><tt>                            property: "TYPE",</tt><tt><br>
    </tt><tt>                            value: "highway"</tt><tt><br>
    </tt><tt>                        }),</tt><tt><br>
    </tt><tt>                        new OpenLayers.Filter.Comparison({</tt><tt><br>
    </tt><tt>                            type:
      OpenLayers.Filter.Comparison.EQUAL_TO,</tt><tt><br>
    </tt><tt>                            property: "TYPE",</tt><tt><br>
    </tt><tt>                            value: "road"</tt><tt><br>
    </tt><tt>                        })</tt><tt><br>
    </tt><tt>                    ]</tt><tt><br>
    </tt><tt>                })</tt><br>
    <br>
    Not impossible but might take a little bit of design.<br>
    <br>
    Another possibility would be be to use CQL and let the user specify
    the CQL text then have OpenLayers parse it.  I've run across
    references to this in my Googling, but I don't know much about it.<br>
    <br>
    As for the Geomoose code, I'm hacking together some code to do:<br>
    <br>
    from my extension code:<br>
    <tt>    params['image_id'] = id;</tt><tt><br>
    </tt><tt>    GeoMOOSE.updateLayerFilter("Icebergs_WFS",params);</tt><br>
    <br>
    where geomoose.js has<br>
    <tt>    updateLayerFilter : function(layerName, paramObject) {</tt><tt><br>
    </tt><tt>       
      Application.getMapSource(layerName).updateFilter(paramObject);</tt><br>
    <br>
    Now I have to do the rest of the coding...<br>
    <pre class="moz-signature" cols="72">Best Regards,
Brent Fraser</pre>
    <div class="moz-cite-prefix">On 3/17/2016 9:03 AM, James Klassen
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAHqX796_3fSvnqc5n=k3kSq=ksOBXRus_W1zjBFUuxMoRPuUTg@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div>
          <div>
            <div>I'm not sure this will work with the WFS layer, but
              this sounds like something that
              GeoMOOSE.updateLayerParameters() would accomplish for WMS.<br>
              <br>
              Currently (and subject to change between versions), you
              can get at the underlying OpenLayers layer object with:<br>
            </div>
          </div>
          Application.getMapSource('mapbook/path')._ol_layer<br>
          <br>
        </div>
        <div>This is something you could call from a script return from
          a service or from a custom tab.<br>
        </div>
        <div><br>
          Having to dig in the internals in an unsupported way is what
          usually prompts me to suggest additions to GeoMOOSE.* 
          Generally, I just do what I need to get done and after it
          shakes out for a bit figure out how it could be done more
          generically.<br>
          <br>
        </div>
        <div>Jim<br>
        </div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">On Tue, Mar 15, 2016 at 9:58 PM, Brent
          Fraser <span dir="ltr"><<a moz-do-not-send="true"
              href="mailto:bfraser@geoanalytic.com" target="_blank">bfraser@geoanalytic.com</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div bgcolor="#FFFFFF" text="#000000"> Hey Eli,<br>
              <br>
                The filtering is for visual purposes: since images from
              different dates may be in the same location I want to see
              only those polygons related to the image being shown.<br>
              <br>
                My particular use-case is such that there will never be
              very many polygons served via WFS at once. but I do have
              some performance concerns in general.  Fortunately
              Geomoose/OpenLayers sends a bounding box filter based on
              the display window so that will tend to minimize the
              problem.  <br>
              <br>
                I've hard-coded an OpenLayers attribute filter in WFS.js
              for testing purposes:<br>
              <br>
              <tt>        this._ol_layer = new
                OpenLayers.Layer.Vector(this.title, {</tt><tt><br>
              </tt><tt>            strategies: strategies,</tt><tt><br>
              </tt><tt>            projection: this.srsName,</tt><tt><br>
              </tt><tt>            styleMap : this.style_map,</tt><tt><br>
              </tt><tt>            visibility: false,</tt><tt><br>
              </tt><b><tt>            filter: new
                  OpenLayers.Filter.Comparison({         //BWF</tt></b><b><tt><br>
                </tt></b><b><tt>                type:
                  OpenLayers.Filter.Comparison.EQUAL_TO,</tt></b><b><tt><br>
                </tt></b><b><tt>                property: "image_id",</tt></b><b><tt><br>
                </tt></b><b><tt>                value: "204"</tt></b><b><tt><br>
                </tt></b><b><tt>            }),</tt></b><b><tt><br>
                </tt></b><tt><b>            proto</b>col: new
                OpenLayers.Protocol.WFS({</tt><tt><br>
              </tt><tt>                version: '1.1.0',</tt><tt><br>
              </tt><tt>                srsName: this.srsName,</tt><tt><br>
              </tt><tt>                url: this.url,</tt><tt><br>
              </tt><tt>                featureNS: this.featureNS,</tt><tt><br>
              </tt><tt>                featurePrefix:
                this.featurePrefix,</tt><tt><br>
              </tt><tt>                featureType: this.featureType,</tt><tt><br>
              </tt><tt>                geometryName:
                this.featureGeometryName,</tt><tt><br>
              </tt><tt>                schema: this.featureSchema</tt><tt><br>
              </tt><tt>            })</tt><tt><br>
              </tt><tt>        });</tt><br>
              <br>
              and it works fine (the above code causes only those
              polygons digitized from image 204 to be shown).  Now I
              need to hack in some code to change the filter value when
              the user selects a different image.  While it will be ok
              for my project, it would be nice to come up with a more
              general approach.  Maybe I'll get some inspiration while
              hacking...<br>
              <br>
              <pre cols="72">Best Regards,
Brent Fraser</pre>
              <div>
                <div class="h5">
                  <div>On 3/15/2016 5:57 PM, Eli Adam wrote:<br>
                  </div>
                  <blockquote type="cite">
                    <pre>Hi Brent,


On Tue, Mar 15, 2016 at 7:38 AM, Brent Fraser <a moz-do-not-send="true" href="mailto:bfraser@geoanalytic.com" target="_blank"><bfraser@geoanalytic.com></a> wrote:
</pre>
                    <blockquote type="cite">
                      <pre>Hi All,

  Now that I've configured my Geomoose demo to do WFS-T, I need to think
about how to use it in my old Geomoose v2.4  Ice Digitizing application.
</pre>
                    </blockquote>
                    <pre>Cool, good to hear that it is working.

</pre>
                    <blockquote type="cite">
                      <pre>  That application grouped digitized polygons by "image_id" (representing
the Landsat image used as a backdrop).  There are hundreds of images and
thousands of polygons in the system and when the user selected an image,
Geomoose passed the image_id to mapserver to do a substitution in the
mapfile SQL so only those polygons related to that image were displayed (and
available for edits etc).  That worked great.
</pre>
                    </blockquote>
                    <pre>Is filtering for visual purposes so that you can see what is going on?
 Or is filtering for performance and browser limits?  Did you try
solution 0 which is to do no filtering and see if it works?


</pre>
                    <blockquote type="cite">
                      <pre>How do I do the same thing with Geomoose v2.8 for my app?  Some possible
"solutions" (I like #3):

1.  Convert the old 2.4 vector editing system to a user extension and use it
instead of WFS-T
        - a lot of work, uses deprecated code, and no benefit to the
Geomoose community
or

2. Create a layer per image_id in the TingyOWS config.xml file and have
Geomoose switch layer name when the user selects the image.
    - as images get added to the system the config.xml file must be updated
(could be automated, but clunky)
    - each layer would point to a table in the database which would make the
database ugly
(hundreds of tables).  I might be able to use views instead of tables to
make it slightly less ugly, but TinyOWS might not do inserts into a view.
Dunno about that.
    - could be some limitations on the number of layers in the config.xml
file (or performance issues?).

or

3.  Add functionality to Geomoose to accept attribute filters in the mapbook
and pass the filters to the OpenLayers definition.
    - adds complexity to the mapbook syntax (so more documentation, testing,
maint., etc).
    - the logic may be similar to the  mapbook's search/query mechanism of
specifying input types of layer,template,fieldname,comparitor,value so maybe
some of the code could be used.
</pre>
                    </blockquote>
                    <pre>This sounds like an option worth exploring and may have other general
applicaitons.

</pre>
                    <blockquote type="cite">
                      <pre>or

4.  Other?
</pre>
                    </blockquote>
                    <pre>My ideas are sort of light on this one, hopefully others have further ideas.

Best regards, Eli

</pre>
                    <blockquote type="cite">
                      <pre>Thanks for any input!

--
Best Regards,
Brent Fraser


_______________________________________________
Geomoose-users mailing list
<a moz-do-not-send="true" href="mailto:Geomoose-users@lists.osgeo.org" target="_blank">Geomoose-users@lists.osgeo.org</a>
<a moz-do-not-send="true" href="http://lists.osgeo.org/mailman/listinfo/geomoose-users" target="_blank">http://lists.osgeo.org/mailman/listinfo/geomoose-users</a>
</pre>
                    </blockquote>
                  </blockquote>
                  <br>
                </div>
              </div>
            </div>
            <br>
            _______________________________________________<br>
            Geomoose-users mailing list<br>
            <a moz-do-not-send="true"
              href="mailto:Geomoose-users@lists.osgeo.org">Geomoose-users@lists.osgeo.org</a><br>
            <a moz-do-not-send="true"
              href="http://lists.osgeo.org/mailman/listinfo/geomoose-users"
              rel="noreferrer" target="_blank">http://lists.osgeo.org/mailman/listinfo/geomoose-users</a><br>
          </blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <br>
  </body>
</html>