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&request=GetFeature&version=1.0.
0&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