[mapserver-users] tinyows
Alexandre Dubé
adube at mapgears.com
Fri Nov 9 05:50:08 PST 2012
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-users at 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="adube at 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.email.a at googlemail.com]
>> Lähetetty: 9. marraskuuta 2012 11:27
>> Vastaanottaja: sdikiy at volz.ua
>> Kopio: Rahkonen Jukka; mapserver-users at 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.email.a at 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-users at 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 at lists.osgeo.org
>>>>> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> mapserver-users mailing list
>>>>> mapserver-users at lists.osgeo.org
>>>>> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>>>>>
> _______________________________________________
> mapserver-users mailing list
> mapserver-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-users
--
Alexandre Dubé
Mapgears
www.mapgears.com
More information about the MapServer-users
mailing list