Hi,

Yeah, playing with WFS in OpenLayers and TinyOWS can be tricky. I've had similar problem to yours in the past and I'm on Linux platforms, so I don't think it's related to Windows.

Jukka gave good advices, but I wouldn't give up trying using TinyOWS yet. Here's some more advices.

First, I'd recommend that you create a small OpenLayers demo map with less tools possible only to test your layer. Then, choose EPSG:32740 as your demo projection. Worry about reprojection later.

  Double-check each configuration elements :

<tinyows online_resource="localhost/cgi-bin/tinyows.exe"
----> use a full url : http://localhost/cgi-bin/tinyows

       schema_dir="C:\ms4w\apps\tinyows\schema\">
<pg host="localhost" user="postgres" password="postgres" dbname="watergis" port="5432"/>
<metadata name="TinyOWS Server"
          title="TinyOWS Server - WFS-T Frida Service" />
<contact name="TinyOWS Server"
         site="http://www.tinyows.org/";
         email="tinyows-us...@lists.maptools.org" />
<layer retrievable="1"
       writable="1"

       ns_prefix="water"
----> use a word you would use for all your layers. The tinyows demo config proposes "tows". Make sure it's also used in your OpenLayers.Protocol.WFS configuration

       ns_uri="http://localhost/";
       name="pipeline_segment"
       title="pipeline_segment"
       table= "pipeline_segment"
       srid="32740"
       schema="water"/>
</tinyows>



wfs = new OpenLayers.Layer.Vector("Editable Features", {
        strategies: [new OpenLayers.Strategy.BBOX(), saveStrategy],
        projection: new OpenLayers.Projection("EPSG:31467"),
        // use 32740 instead

        protocol: new OpenLayers.Protocol.WFS({
              version: "1.1.0",
              // ----> try with 1.0.0 too

              srsName: "EPSG:32740",
              url: "http://127.0.0.1:8000/redir/cgi-bin/tinyows.exe";,
// Use the exact same url host has you have setup as your layer ns_uri

              featureNS :  "tows",
// the featureNS has to be equal to the 'ns_uri' you defined in your config, so "http://localhost/";

              featureType: "pipeline_segment",
              geometryName: "geometry",
schema: "http://127.0.0.1:8000/redir/cgi-bin/tinyows.exe?service=wfs&request=DescribeFeatureType&version=1.1.0&typename=water:pipeline_segment"; // I usually don't define the schema property at all assuming that the config 'schema_dir' is properly set (you should make sure its value is ok)

        })
});


For comparison, here's a tows config and OL layer definition that worked for me.

### TinyOWS config
<tinyows online_resource="http://labs.mapgears.com/weather-sites-tinyows-1.0.0.fcgi";
     schema_dir="/usr/local/share/tinyows/schema/">
  <pg host="127.0.0.1"
      user="*********"
      password="*******"
      dbname="*********"
      port="****"/>
  <metadata name="TinyOWS Server"
        title="TinyOWS Server - labs.mapgears.com" />
  <contact name="TinyOWS Server"
           site="http://labs.mapgears.com/";
          email="ad...@mapgears.com" />
  <layer retrievable="1"
     writable="0"
     ns_prefix="tows"
     ns_uri="http://labs.mapgears.com/";
     name="root" >
    <layer name="sites" title="Sites" />
    <layer name="sites_view" title="Sites (view)" />
    <layer name="alerts" title="Alerts" />
  </layer>
</tinyows>

### The apache config used to bind TinyOWS to this config using a different url FastCgiServer /usr/lib/cgi-bin/tinyows-1.0.0-weather-sites.fcgi -initial-env TINYOWS_CONFIG_FILE=/opt/labs/weather-sites/etc/tinyows/config.xml ScriptAlias "/weather-sites-tinyows-1.0.0.fcgi" "/usr/lib/cgi-bin/tinyows-1.0.0-weather-sites.fcgi"

### The OpenLayers.Layer object using the OpenLayers.Protocol.WFS
var layer = new OpenLayers.Layer.Vector("Sites", {
    strategies: [new OpenLayers.Strategy.BBOX()],
    projection: new OpenLayers.Projection("EPSG:4326"),
    protocol: new OpenLayers.Protocol.WFS({
        version: "1.0.0",
        srsName: "EPSG:4326",
        url: 'http://labs.mapgears.com/weather-sites-tinyows-1.0.0.fcgi',
        featureNS :  'http://labs.mapgears.com/',
        featureType: "sites_view",
        outputFormat: "application/json",
        readFormat: new OpenLayers.Format.GeoJSON(),
        geometryName: "pos"
    })
});


Finally, here's a trick I use when debuggin POST requests. I use the wget command to quickly launch requests and see their result using the --post-data argument to send the GML GetFeature request.

wget "http://localhost/cgi-bin/tinyows"; --post-data='<your_wfs_getfeature_xml_goes_here>' --header="Content-Type: application/xml; charset=UTF-8" -O /tmp/ttt.txt


HTH,

Alexandre


On 12-11-09 05:04 AM, Rahkonen Jukka wrote:
Hi,

Forum is right but obviously there are not many people doing WFS-T with 
OpenLayers against TinyOWS installed on Windows. If you are totally jammed I 
would recommend you to leave TinyOWS aside for a while and try to make your 
OpenLayers application to work with Geoserver WFS-T. I believe you will have 
success with it.

-Jukka Rahkonen-



-----Alkuperäinen viesti-----
Lähettäjä: aho [mailto:forum.emai...@googlemail.com]
Lähetetty: 9. marraskuuta 2012 11:27
Vastaanottaja: sdi...@volz.ua
Kopio: Rahkonen Jukka; mapserver-users@lists.osgeo.org
Aihe: Re: [mapserver-users] tinyows

Hi again,

I am still searching and not finding something. I setup everything again with
the WFS-T tutorial. Now I am getting the following error message:

[Thu Nov 08 16:32:21 2012] [ERROR] local list type: A type, derived by list or
union, must have the simple ur-type definition as base type, not
'{http://www.opengis.net/gml}doubleOrNullList'.

Am I right with this forum? Because actually nobody replies.




Am 11/6/2012 1:30 PM, schrieb aho:
Hey,

I still havn´t found the problem with the tinyows - but at the moment
there is no error message when i am loading the wfs. Also fiddler
doesn´t list the tinyows.exe anymore. But my proxy is correct - I can
load it via uDig and ArcMap. QGIS has a problem, but there is not a
single error in the tinyows log file - just events and sqls are
listed, that looks quite good. With Open layers there is nothing
logged - it seems like the request is not send.

Is there any limitation for the version? I downloaded the latest
(2.12) one, but on the tinyows page is version 2.09 listed?!

Kind regards

Am 11/2/2012 3:29 PM, schrieb Serge Dikiy:
Hi,


http://translate.google.com/translate?sl=ru&tl=en&js=n&prev=_t&hl=en&;
ie=UTF-8&layout=2&eotf=1&u=http%3A%2F%2Fgis-
lab.info%2Fforum%2Fviewto
pic.php%3Ff%3D41%26t%3D10329


BR

On Fri, Nov 2, 2012 at 4:15 PM, aho <forum.emai...@googlemail.com>
wrote:
Hi Jukka,

ok, I solved the problem with the requests. The following returns
from
tinyOWS:

<?xml version='1.0' encoding='UTF-8'?> <ows:ExceptionReport
   xmlns='http://www.opengis.net/ows'
   xmlns:ows='http://www.opengis.net/ows'
   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
   xsi:schemaLocation='http://www.opengis.net/ows
http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd'
   version='1.1.0' language='en'>
   <ows:Exception exceptionCode='InvalidParameterValue'
locator='request'>
    <ows:ExceptionText>XML request isn't valid</ows:ExceptionText>
   </ows:Exception>
</ows:ExceptionReport>

Here is the errorlog:

Fri Nov 02 15:11:46 2012] [EVENT] == FCGI START == [Fri Nov 02
15:11:46 2012] [QUERY] <wfs:GetFeature
xmlns:wfs="http://www.opengis.net/wfs"; service="WFS"
version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/wfs
http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd water
http://127.0.0.1:8000/redir/cgi-
bin/tinyows.exe?service=wfs&amp;request=GetFeature&amp;version=1.0.
0&amp;typename=water:armature"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance"><wfs:Query
typeName="feature:armature" xmlns:feature="water"><ogc:Filter

xmlns:ogc="http://www.opengis.net/ogc";><ogc:BBOX><ogc:PropertyName
g
eometry</ogc:PropertyName><gml:Box

xmlns:gml="http://www.opengis.net/gml";
srsName="EPSG:32740"><gml:coordinates
decimal="." cs="," ts=" ">-2866.3885602952,-1910.9257068634

2866.3885602952,1910.9257068634</gml:coordinates></gml:Box></ogc:BBO
X></ogc:Filter></wfs:Query></wfs:GetFeature>

[Fri Nov 02 15:11:46 2012] [ERROR] Element
'{http://www.w3.org/2001/XMLSchema}import': Failed to locate a
schema at location
'localhost/cgi-
bin/tinyows.exe?service=WFS&request=DescribeFeatureType&version=1.0.
0'.
Skipping the import.

[Fri Nov 02 15:11:46 2012] [ERROR] Element
'{http://www.opengis.net/wfs}GetFeature': No matching global
declaration available for the validation root.

[Fri Nov 02 15:11:46 2012] [ERROR] XML request isn't valid [Fri Nov
02 15:11:46 2012] [EVENT] == FCGI SHUTDOWN == [Fri Nov 02 15:11:46
2012] [EVENT] == TINYOWS SHUTDOWN ==

Has it something to do with the schema? I found a post with
something similar
(http://osgeo-org.1560.n6.nabble.com/TinyOWS-wrong-call-in-
OpenLayer
s-InvalidParameterValue-XML-request-isn-t-valid-td5009059.html)

and replaced all my old tinyows files and copied the ones from the
ms4w homepage.

Do you have some more ideas?

Am 11/2/2012 10:56 AM, schrieb Rahkonen Jukka:

Hi,

Yes, it seems to be OpenLayers question then. However, do still
capture the requests because without them you cannot understand
what
happens really.  My guess is that something in wrong in how
EPSG:31467 and EPSG:32740 are used and OpenLayers is requesting data
from a place where there are no data.

-Jukka-

aho wrote:


Hi Jukka,

thanks a lot for your answer and the good tips! I tried all of the
links

and they are working. Also I checked it in QGIS and there I can load
it too.

So I guess it will be better to write again to the openlayers
mailinglist?!

Am 11/2/2012 10:21 AM, schrieb Rahkonen Jukka:

Hi,

You must capture the traffic between OpenLayers and TinyOWS. I am
using myself Fiddler2 proxy but I suppose that Firebug can show you
what OpenLayers is sending and high enough TinyOWS logging level
will also gather requests into tinyows log. The software is not
important but you just have to get the requests so you can resend
them with a browser or some other tool that yuo can control and see
what happens. You can also include the requests in your further
mails. Then the question will be "OpenLayers is sending this and
TinyOWS is sending back that, what's wrong?" and it will be much
easier to answer.

As always with WFS, start with these requests with a browser before
doing anything with OpenLayers:
http://127.0.0.1:8000/redir/cgi-bin/tinyows.exe?service=wfs&request=
GetCapabilities&version=1.1.0


http://127.0.0.1:8000/redir/cgi-bin/tinyows.exe?service=wfs&request=

DescribeFeatureType&version=1.1.0&typename=water:pipeline_segment

http://127.0.0.1:8000/redir/cgi-bin/tinyows.exe?service=wfs&request=

GetFeature&version=1.1.0&typename=water:pipeline_segment&maxFeatu
res
=10


If all those requests work you know that TinyOWS works with those
basic requests and if OpenLayers application does not get data the
reason in probably in the application code.


-Jukka Rahkonen-

aho wrote:

hello!
I have a problem with the configuration of tinyows. I have the
following

settings in my xml file:

<tinyows online_resource="localhost/cgi-bin/tinyows.exe"

           schema_dir="C:\ms4w\apps\tinyows\schema\">
<pg host="localhost" user="postgres" password="postgres"
dbname="watergis" port="5432"/>
<metadata name="TinyOWS Server"
              title="TinyOWS Server - WFS-T Frida Service" />
<contact name="TinyOWS Server"
             site="http://www.tinyows.org/";
             email="tinyows-us...@lists.maptools.org" /> <layer
retrievable="1"
           writable="1"
           ns_prefix="water"
           ns_uri="http://localhost/";
           name="pipeline_segment"
           title="pipeline_segment"
           table= "pipeline_segment"
           srid="32740"
           schema="water"/>
</tinyows>

    >if I enter tinyows --check I get the following back:

C:\ms4w\Apache\cgi-bin>tinyows --check

TinyOWS version:   1.0.0rc3
FCGI support:      Yes
Config File Path:  C:\ms4w\apps\tinyows\tinyows.xml (TinyOWS XML)
PostGIS Version:   2.0.0
PostGIS dsn:       host=localhost user=postgres password=postgres
dbname=watergi
s port=5432
Output Encoding:   UTF-8
Database Encoding: UTF8
Schema dir:        C:\ms4w\apps\tinyows\schema\
Display bbox:      Yes
Estimated extent:  No
Check schema:      Yes
Check valid geoms: Yes
Available layers:
     - water.pipeline_segment (32740) -> water.pipeline_segment [RW]


which looks acutally quite good. But when i am trying to include
that

into my openlayer map - I always get 0 features back! Here the code
for
openlayers:

wfs = new OpenLayers.Layer.Vector("Editable Features", {
            strategies: [new OpenLayers.Strategy.BBOX(), saveStrategy],
            projection: new OpenLayers.Projection("EPSG:31467"),
            protocol: new OpenLayers.Protocol.WFS({
                  version: "1.1.0",
                  srsName: "EPSG:32740",
                  url:
"http://127.0.0.1:8000/redir/cgi-bin/tinyows.exe";,
                  featureNS :  "tows",
                  featureType: "pipeline_segment",
                  geometryName: "geometry",
                  schema:
"http://127.0.0.1:8000/redir/cgi-
bin/tinyows.exe?service=wfs&request=DescribeFeatureType&version=1.1.0
&typename=water:pipeline_segment"
            })
});

Someone an idea?
_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users



_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users

_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users


--
Alexandre Dubé
Mapgears
www.mapgears.com

_______________________________________________
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users

Reply via email to