[MapServer-users] How do I use an SQL query in a Postgis tileindex of vector files?

Scott public at postholer.com
Tue Dec 6 10:45:03 PST 2022


Your connectiontype is ogr, you need postgis for a query


CONNECTIONTYPE POSTGIS

On 12/6/22 10:39, Peter Schmitt wrote:
> Hi,
> 
> How do I get a tileindex of vector files working from data in a Postgis 
> database and accessed via an SQL query of my choosing?
> 
> I would like to make a vector tile index as described at 
> https://mapserver.org/optimization/vector.html#index-your-data 
> <https://mapserver.org/optimization/vector.html#index-your-data> using 
> data stored in a Postgis database and a SQL query of my choosing.  Here 
> is one approach that works:
> 
> 1.  create a test table in postgres database:
>       > create table testtable (id int, location text, geom 
> geometry(Polygon,4326));
> 
> 2.  insert data into the table:
> 
>       insert into testtable (id, location, geom) values (1, 
> '/test_data/test.geojson,0', 'POLYGON((122.01377475333321 
> 29.96355712017804,122.01424752183958 
> 29.915620560607106,122.06927507957919 
> 29.91602043815968,122.0688286928125 
> 29.963957768165944,122.01377475333321 29.96355712017804))'::geometry);
> 
> 3. Define a layer using the OGR connection:
> 
> LAYER
>    NAME "vector"
>    TYPE POLYGON
>    CONNECTIONTYPE OGR
>    CONNECTION "PG:\"host=localhost user=postgres dbname=mydatabase 
> password=mypwd tables=testtable(geom)\""
>    STATUS OFF
>    CLASS
>      STYLE
>        WIDTH 1
>        OUTLINECOLOR 255 105 180
>      END
>    END
> END
> 
> 4. Issue a request:
> 
>      mapserv 
> QUERY_STRING='SERVICE=WMS&map=/tmpp/mapfile.map&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image/png&layers=vector&width=256&height=256&crs=EPSG:3857&bbox=13580108.193257555,3487974.474709164,13585000.163067807,3492866.4445194146'
> 
> and I get an image of my vectors back.
> 
> How do I use a more complex query than `testtable(geom)`?  I tried 
> specifying a query via a DATA block:
> 
> LAYER
>      NAME "vector"
>      TYPE POLYGON
>      CONNECTIONTYPE OGR
>      CONNECTION "PG:\"host=localhost user=postgres dbname=mydatabase 
> password=mypwd\""
>      DATA "geom FROM (SELECT
>          id,
>          geom,
>          location
>        FROM testtable
>      ) AS subquery USING unique id USING SRID=4326"
>      PROJECTION
>        "init=epsg:4326"
>      END
>      STATUS OFF
>      CLASS
>        STYLE
>          WIDTH 1
>          OUTLINECOLOR 255 105 180
>        END
>      END
>    END
> 
> However, the same query generates an error:
> 
> mapserv 
> QUERY_STRING='SERVICE=WMS&map=/tmpp/mapfile.map&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image/png&layers=vector&width=256&height=256&crs=EPSG:3857&bbox=13580108.193257555,3487974.474709164,13585000.163067807,3492866.4445194146'
> 
> "msOGRFileOpen(): OGR error. Open failed for OGR connection in layer 
> `vector'.  File not found or unsupported format. Check server logs.
> msDrawMap(): Image handling error. Failed to draw layer named 'vector'"
> 
> I tried using a postgis connectiontype, but could not get that working 
> either 
> https://mapserver.org/mapfile/layer.html#mapfile-layer-connectiontype 
> <https://mapserver.org/mapfile/layer.html#mapfile-layer-connectiontype>
> 
> How do I get a tileindex of vector files working from data in a Postgis 
> database and accessed via an SQL query of my choosing?
> 
> Thanks!
> Pete
> 
> _______________________________________________
> MapServer-users mailing list
> MapServer-users at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/mapserver-users


More information about the MapServer-users mailing list