[mapserver-users] Mapserver Layer Filter

2012-01-12 Thread Hawk AA
Hi there, Mailing List,

 

We have a customer that wants their maps to be published online, but some of
the features is confidential and should not be displayed.

 

We have added following to the layer definition:

FILTER ('[type]' != GRØFT )

It works, the features with type GRØFT are not showed in the map.

 

However, we have a window that let the user browse the data, and it will be
possible to access the features of type GRØFT. When you press “show in map”,
the JavaScript clients triggers a WFS request with a filter asking for
elements with the current ID. By doing this, WFS omits the LAYER FILTER
definition, so the element can be showed in the map, even if it is of type
GRØFT. I need a way to make sure the WFS can’t deliver any data of type
GRØFT.

 

I’ve seen three possible solutions:

1.   We have a service that automatically converts uploaded MapInfo
*.TAB-files to SHP. If I am correct, I could use the “-where”-argument on
the ogr2ogr to filter data and only get features which does not have type
GRØFT. I hope I do not have to do this, since debugging and developing a
windows service is quite tricky.

2.   Add additional filter values to the WFS query. I could also define
the types not to show in the JavaScript, and let the application
automatically add PropertyIsNotEqualTo-tags to the AJAX query. This would
be less secure, and I need to define types not to show at two places.

3.   The best solution in my eyes is to let the magic happen in the
MAP-file, and that is mostly why I am posting here. Is there a way to add a
query to the Layer Data definition, like you do if you are querying a MSSQL
database? I can imagine a syntax like this:
CONNECTIONTYPE OGR
CONNECTION TM_Nett/TM_Points
DATA SELECT * FROM tm_points WHERE type!=’GRØFT’”
It does not seem to work.

 

Any suggestions, especially regarding the third solution?

 

Best regards,

Håkon Åmdal

 

 

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


RE: [mapserver-users] Mapserver Layer Filter

2012-01-12 Thread Gabe Codina
We do something similar here is how we implement your solution 3

 

CONNECTIONTYPE PLUGIN

PLUGIN .\msplugin_mssql2008.dll

CONNECTION
server=SERVER\MSSQL;uid=USERID;pwd=PASSWORD;database=DATABASE;Integrated
Security=false

DATA gExtent FROM (SELECT * FROM tm_points WHERE type!=’GRØFT’)AS FOO
USING UNIQUE [iId] USING SRID=4326

 

 

Note the connection string needs to access your MSSQL Instance and the
plugin dll  must be available the format of the data statement lets you put
quite a complex SQL statement inside the ()s.

 

Gabe Codina

 

 

From: mapserver-users-boun...@lists.osgeo.org
[mailto:mapserver-users-boun...@lists.osgeo.org] On Behalf Of Hawk AA
Sent: Friday, 13 January 2012 3:24 AM
To: mapserver-users@lists.osgeo.org
Subject: [mapserver-users] Mapserver Layer Filter

 

Hi there, Mailing List,

 

We have a customer that wants their maps to be published online, but some of
the features is confidential and should not be displayed.

 

We have added following to the layer definition:

FILTER ('[type]' != GRØFT )

It works, the features with type GRØFT are not showed in the map.

 

However, we have a window that let the user browse the data, and it will be
possible to access the features of type GRØFT. When you press “show in map”,
the JavaScript clients triggers a WFS request with a filter asking for
elements with the current ID. By doing this, WFS omits the LAYER FILTER
definition, so the element can be showed in the map, even if it is of type
GRØFT. I need a way to make sure the WFS can’t deliver any data of type
GRØFT.

 

I’ve seen three possible solutions:

1.   We have a service that automatically converts uploaded MapInfo
*.TAB-files to SHP. If I am correct, I could use the “-where”-argument on
the ogr2ogr to filter data and only get features which does not have type
GRØFT. I hope I do not have to do this, since debugging and developing a
windows service is quite tricky.

2.   Add additional filter values to the WFS query. I could also define
the types not to show in the JavaScript, and let the application
automatically add PropertyIsNotEqualTo-tags to the AJAX query. This would
be less secure, and I need to define types not to show at two places.

3.   The best solution in my eyes is to let the magic happen in the
MAP-file, and that is mostly why I am posting here. Is there a way to add a
query to the Layer Data definition, like you do if you are querying a MSSQL
database? I can imagine a syntax like this:
CONNECTIONTYPE OGR
CONNECTION TM_Nett/TM_Points
DATA SELECT * FROM tm_points WHERE type!=’GRØFT’”
It does not seem to work.

 

Any suggestions, especially regarding the third solution?

 

Best regards,

Håkon Åmdal

 

 

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


[mapserver-users] Changing the gap parameter of a style via a URL

2012-01-12 Thread Jean Pierre MALOBERTI
Hi all,

I'm working on an administration tool for our Flex/PHP/Mapserver
application. The goal is to render the styles and change parameters
dynamically on the clien application by using a URL like this :

http://my_server/fcgi-bin/mapserv?map=my_mapfile.mapmap.layer[couche_s].class[0].style[0]=ANGLE+30+COLOR+200+100+50+SYMBOL+hachure+SIZE+5icon=couche_s,0mode=legendicon

It works for parameters like COLOR, OUTLINECOLOR, SYMBOL, WIDTH, SIZE but
with parameter GAP it throws an error : loadStyle(): Unknown identifier.
Parsing error near (GAP):(line 1)

If the style is written in the mapfile, the legend icon renders using this
URL :
http://my_server/fcgi-bin/mapserv?map=my_mapfile.mapicon=couche_s,0mode=legendicon

  STYLE
ANGLE 30
COLOR 200 100 50
GAP 3
SIZE 5
SYMBOL hachure
 END

Where is the problem ?

Thanks
-- 
Jean Pierre MALOBERTI
___
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users


AW: [mapserver-users] Mapserver Layer Filter

2012-01-12 Thread Eichner, Andreas - SID-NLKM

You might try OGR Virtual Data Driver: http://www.gdal.org/ogr/drv_vrt.html. 

 -Ursprüngliche Nachricht-
 Von: mapserver-users-boun...@lists.osgeo.org 
 [mailto:mapserver-users-boun...@lists.osgeo.org] Im Auftrag 
 von Hawk AA
 Gesendet: Donnerstag, 12. Januar 2012 17:24
 An: mapserver-users@lists.osgeo.org
 Betreff: [mapserver-users] Mapserver Layer Filter
 
 Hi there, Mailing List,
 
  
 
 We have a customer that wants their maps to be published 
 online, but some of the features is confidential and should 
 not be displayed.
 
  
 
 We have added following to the layer definition:
 
 FILTER ('[type]' != GRØFT )
 
 It works, the features with type GRØFT are not showed in the map.
 
  
 
 However, we have a window that let the user browse the data, 
 and it will be possible to access the features of type GRØFT. 
 When you press show in map, the JavaScript clients triggers 
 a WFS request with a filter asking for elements with the 
 current ID. By doing this, WFS omits the LAYER FILTER 
 definition, so the element can be showed in the map, even if 
 it is of type GRØFT. I need a way to make sure the WFS can't 
 deliver any data of type GRØFT.
 
  
 
 I've seen three possible solutions:
 
 1.   We have a service that automatically converts 
 uploaded MapInfo *.TAB-files to SHP. If I am correct, I could 
 use the -where-argument on the ogr2ogr to filter data and 
 only get features which does not have type GRØFT. I hope I do 
 not have to do this, since debugging and developing a windows 
 service is quite tricky.
 
 2.   Add additional filter values to the WFS query. I 
 could also define the types not to show in the JavaScript, 
 and let the application automatically add 
 PropertyIsNotEqualTo-tags to the AJAX query. This would be 
 less secure, and I need to define types not to show at two places.
 
 3.   The best solution in my eyes is to let the magic 
 happen in the MAP-file, and that is mostly why I am posting 
 here. Is there a way to add a query to the Layer Data 
 definition, like you do if you are querying a MSSQL database? 
 I can imagine a syntax like this:
 CONNECTIONTYPE OGR
 CONNECTION TM_Nett/TM_Points
 DATA SELECT * FROM tm_points WHERE type!='GRØFT'
 It does not seem to work.
 
  
 
 Any suggestions, especially regarding the third solution?
 
  
 
 Best regards,
 
 Håkon Åmdal
 
  
 
  
 
 
___
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users


Re: [mapserver-users] Mapserver Layer Filter

2012-01-12 Thread Umberto Nicoletti
Even better: use solution 3, but create a view on the database and query
the view instead.
I'm not sure if it can be done it but I guess that a malicious user could
trick mapserver and add a filter like ' OR 1=1 ' and in that case ALL
features (including GROFT) will be shown.

HTH,
Umberto

On Fri, Jan 13, 2012 at 1:09 AM, Gabe Codina g...@agtrix.com wrote:

 We do something similar here is how we implement your solution 3

 ** **

 CONNECTIONTYPE PLUGIN

 PLUGIN .\msplugin_mssql2008.dll

 CONNECTION
 server=SERVER\MSSQL;uid=USERID;pwd=PASSWORD;database=DATABASE;Integrated
 Security=false

 DATA gExtent FROM (SELECT * FROM tm_points WHERE type!=’GRØFT’)AS
 FOO USING UNIQUE [iId] USING SRID=4326

 ** **

 ** **

 Note the connection string needs to access your MSSQL Instance and the
 plugin dll  must be available the format of the data statement lets you put
 quite a complex SQL statement inside the ()s.

 ** **

 Gabe Codina

 ** **

 ** **

 *From:* mapserver-users-boun...@lists.osgeo.org [mailto:
 mapserver-users-boun...@lists.osgeo.org] *On Behalf Of *Hawk AA
 *Sent:* Friday, 13 January 2012 3:24 AM
 *To:* mapserver-users@lists.osgeo.org
 *Subject:* [mapserver-users] Mapserver Layer Filter

 ** **

 Hi there, Mailing List,

 ** **

 We have a customer that wants their maps to be published online, but some
 of the features is confidential and should not be displayed.

 ** **

 We have added following to the layer definition:

 FILTER ('[type]' != GRØFT )

 It works, the features with type GRØFT are not showed in the map.

 ** **

 However, we have a window that let the user browse the data, and it will
 be possible to access the features of type GRØFT. When you press “show in
 map”, the JavaScript clients triggers a WFS request with a filter asking
 for elements with the current ID. By doing this, WFS omits the LAYER FILTER
 definition, so the element can be showed in the map, even if it is of type
 GRØFT. I need a way to make sure the WFS can’t deliver any data of type
 GRØFT.

 ** **

 I’ve seen three possible solutions:

 **1.   **We have a service that automatically converts uploaded
 MapInfo *.TAB-files to SHP. If I am correct, I could use the
 “-where”-argument on the ogr2ogr to filter data and only get features which
 does not have type GRØFT. I hope I do not have to do this, since debugging
 and developing a windows service is quite tricky.

 **2.   **Add additional filter values to the WFS query. I could also
 define the types not to show in the JavaScript, and let the application
 automatically add PropertyIsNotEqualTo-tags to the AJAX query. This would
 be less secure, and I need to define types not to show at two places.

 **3.   **The best solution in my eyes is to let the magic happen in
 the MAP-file, and that is mostly why I am posting here. Is there a way to
 add a query to the Layer Data definition, like you do if you are querying a
 MSSQL database? I can imagine a syntax like this:
 CONNECTIONTYPE OGR
 CONNECTION TM_Nett/TM_Points
 DATA SELECT * FROM tm_points WHERE type!=’GRØFT’”
 It does not seem to work.

 ** **

 Any suggestions, especially regarding the third solution?

 ** **

 Best regards,

 Håkon Åmdal

 ** **

 ** **

 ___
 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


Re: [mapserver-users] Mapserver Layer Filter

2012-01-12 Thread adams
Dear Håkon,

I am not quite sure about MSSQL databases, but for postgres I would
suggest creating a view on the datatable and using the view as datasource.
This gives you higher flexibility, although a WHERE-clause in the
datarequest in the mapfile is possible at all (see this postgis examples
here: http://mapserver.org/input/vector/postgis.html).

You get the highest flexibility, if you use a kind of variable
substitution as filter by passing a vendor specific parameter to the
map-request. (http://mapserver.org/mapfile/variable_sub.html), use this
in combination with the WHERE clause from above.
In order to make sure, that unauthorized users could not access the
forbidden attributes, you have to use something like a proxy between
the requesting client and the mapserver, which adds this parameter for
you and in the same state deletes all other possibly added parameters
and also checks for authorization.


Regards, Till



On 13.01.2012 08:24, Eichner, Andreas - SID-NLKM wrote:
 
 You might try OGR Virtual Data Driver: http://www.gdal.org/ogr/drv_vrt.html. 
 
 -Ursprüngliche Nachricht-
 Von: mapserver-users-boun...@lists.osgeo.org 
 [mailto:mapserver-users-boun...@lists.osgeo.org] Im Auftrag 
 von Hawk AA
 Gesendet: Donnerstag, 12. Januar 2012 17:24
 An: mapserver-users@lists.osgeo.org
 Betreff: [mapserver-users] Mapserver Layer Filter

 Hi there, Mailing List,

  

 We have a customer that wants their maps to be published 
 online, but some of the features is confidential and should 
 not be displayed.

  

 We have added following to the layer definition:

 FILTER ('[type]' != GRØFT )

 It works, the features with type GRØFT are not showed in the map.

  

 However, we have a window that let the user browse the data, 
 and it will be possible to access the features of type GRØFT. 
 When you press show in map, the JavaScript clients triggers 
 a WFS request with a filter asking for elements with the 
 current ID. By doing this, WFS omits the LAYER FILTER 
 definition, so the element can be showed in the map, even if 
 it is of type GRØFT. I need a way to make sure the WFS can't 
 deliver any data of type GRØFT.

  

 I've seen three possible solutions:

 1.   We have a service that automatically converts 
 uploaded MapInfo *.TAB-files to SHP. If I am correct, I could 
 use the -where-argument on the ogr2ogr to filter data and 
 only get features which does not have type GRØFT. I hope I do 
 not have to do this, since debugging and developing a windows 
 service is quite tricky.

 2.   Add additional filter values to the WFS query. I 
 could also define the types not to show in the JavaScript, 
 and let the application automatically add 
 PropertyIsNotEqualTo-tags to the AJAX query. This would be 
 less secure, and I need to define types not to show at two places.

 3.   The best solution in my eyes is to let the magic 
 happen in the MAP-file, and that is mostly why I am posting 
 here. Is there a way to add a query to the Layer Data 
 definition, like you do if you are querying a MSSQL database? 
 I can imagine a syntax like this:
 CONNECTIONTYPE OGR
 CONNECTION TM_Nett/TM_Points
 DATA SELECT * FROM tm_points WHERE type!='GRØFT'
 It does not seem to work.

  

 Any suggestions, especially regarding the third solution?

  

 Best regards,

 Håkon Åmdal

  

  


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


-- GO Mobile - make WebGIS on Smartphones --
! Achtung - terrestris hat eine neue Adresse !

-
terrestris GmbH  Co. KG
Puetzchens Chaussee 56
53227 Bonn
Germany

Till Adams
Geschaeftsfuehrung

Tel:+49 (0)228 / 962 899-52
Mobile: +49 (0)151 / 25394429
Fax:+49 (0)228 / 962 899-57

ad...@terrestris.de
http://www.terrestris.de
Amtsgericht Bonn, HRA 6835
-

Komplementaerin:

terrestris Verwaltungs GmbH

vertreten durch:
Hinrich Paulsen, Till Adams
___
mapserver-users mailing list
mapserver-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/mapserver-users


Re: [mapserver-users] Mapserver Layer Filter

2012-01-12 Thread Rahkonen Jukka
Hi,

I made a test with a shapefile with ogrinfo as

ogrinfo  -al roads.shp -sql select * from roads where type!='motorway'

It gives a correct result (everything that is not motorways). I would check 
first what happens with a type value which has just ASCII characters. Perhaps 
OGR just has troubles with  GRØFT.

-Jukka Rahkonen-

Eichner, Andreas wrote:


 You might try OGR Virtual Data Driver: http://www.gdal.org/ogr/drv_vrt.html.

 -Ursprüngliche Nachricht-
 Von: mapserver-users-boun...@lists.osgeo.org
 [mailto:mapserver-users-boun...@lists.osgeo.org] Im Auftrag
 von Hawk AA
 Gesendet: Donnerstag, 12. Januar 2012 17:24
 An: mapserver-users@lists.osgeo.org
 Betreff: [mapserver-users] Mapserver Layer Filter

 Hi there, Mailing List,



 We have a customer that wants their maps to be published
 online, but some of the features is confidential and should
 not be displayed.



 We have added following to the layer definition:

 FILTER ('[type]' != GRØFT )

 It works, the features with type GRØFT are not showed in the map.



 However, we have a window that let the user browse the data,
 and it will be possible to access the features of type GRØFT.
 When you press show in map, the JavaScript clients triggers
 a WFS request with a filter asking for elements with the
 current ID. By doing this, WFS omits the LAYER FILTER
 definition, so the element can be showed in the map, even if
 it is of type GRØFT. I need a way to make sure the WFS can't
 deliver any data of type GRØFT.



 I've seen three possible solutions:

 1.   We have a service that automatically converts
 uploaded MapInfo *.TAB-files to SHP. If I am correct, I could
 use the -where-argument on the ogr2ogr to filter data and
 only get features which does not have type GRØFT. I hope I do
 not have to do this, since debugging and developing a windows
 service is quite tricky.

 2.   Add additional filter values to the WFS query. I
 could also define the types not to show in the JavaScript,
 and let the application automatically add
 PropertyIsNotEqualTo-tags to the AJAX query. This would be
 less secure, and I need to define types not to show at two places.

 3.   The best solution in my eyes is to let the magic
 happen in the MAP-file, and that is mostly why I am posting
 here. Is there a way to add a query to the Layer Data
 definition, like you do if you are querying a MSSQL database?
 I can imagine a syntax like this:
 CONNECTIONTYPE OGR
 CONNECTION TM_Nett/TM_Points
 DATA SELECT * FROM tm_points WHERE type!='GRØFT'
 It does not seem to work.



 Any suggestions, especially regarding the third solution?



 Best regards,

 Håkon Åmdal






___
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