Hi list,

I've managed to setup a WMS server based on Mapnik. I'm able to read in the 
XML-Script for OSM data and I get a nice map out (code is at 
http://www.theossoft.net/mapnik/worldMapFactory.html). The 
linked code get it's raw data from a postGis database, where I've stored 
Europe. (for the complete XML file look at 
http://www.theossoft.net/mapnik/osm.xml) This works, but there is a layer 
called "minor-roads" I'm not able to read in completely correct. The roads 
are too fat and this makes the map look ugly (look at 
http://www.theossoft.net/mapnik/map.png).

I assume, It's not possible to copy the symbols correct by doing:

   for sym in r.symbols:
      rule.symbols.append(sym)

The above code is mostly correct, but maybe not for the following part of the 
XML file:

  <Layer name="minor-roads" status="on" srs="+proj=merc +datum=WGS84  +k=1.0 
+units=m +over +no_defs">
    <StyleName>minor-roads-casing</StyleName>
    <StyleName>minor-roads-fill</StyleName>
    <StyleName>aerialways</StyleName>
    <Datasource>
      <Parameter name="type">postgis</Parameter>
      <Parameter name="host">localhost</Parameter>
      <Parameter name="user">username</Parameter>
      <Parameter name="dbname">gis</Parameter>
      <Parameter name="table">
      (select * from planet_osm_line order by z_order) as roads
      </Parameter>
      <Parameter name="estimate_extent">false</Parameter>
      <Parameter 
name="extent">-20037508,-19929239,20037508,19929239</Parameter>
    </Datasource>
  </Layer>

The rules for the styles "minor-roads-casing", "minor-roads-fill" 
and "aerialways" are defined prior.

I've read a lot about Mapnik and looked at the source and the available 
examples. But I was not able to figure out, how I can copy the symbols 
correctly. I'm even not able to find out, what type of symbolizer I'm copying 
(line symbolizer, polygon symbolizer, ...). Is there an example somewhere or 
can anybody explain, how to do that?


Beside this I found out, that I have to define every style name as 
a "wmsextrastyle" to be able to make the WMS server draw one layer over the 
other. Without this, I can only request one single layer. If I try to request 
more than one layer, and give no style names, I get the error:

   <ServiceExceptionReport version="1.3.0" 
      xsi:schemaLocation="http://www.opengis.net/ogc 
      http://schemas.opengis.net/wms/1.3.0/exceptions_1_3_0.xsd";>
      <ServiceException>
         OGCException: STYLES length does not match LAYERS length.
      </ServiceException>
   </ServiceExceptionReport>

But simply registering the layers, allthough every style has a propper name, 
is not enough. I've to register the style names of the layer as extra styles 
to make the WMS server recognize them. To get more than one layer, the styles 
parameter on request must contain exactly one style name (if there are more 
than one, it doesn't matter which) for every layer I want:

   http://localhost/cgi-bin/wms?VERSION=1.3.0&REQUEST=GetMap&\
   LAYERS=water_areas,bridges&STYLES=water_areas,bridges&\
   FORMAT=image/png&SRS=EPSG:3395&CRS=EPSG:4326&\
   BBOX=16.254412,48.170568,16.375430,48.199311&width=800&height=600

Is this a bug? If not, it differs from other WMS servers, where I can leave 
the styles parameter blank.
-- 
Andreas Theofilu
http://www.TheosSoft.net/

                     --==| Enjoy the science of Linux! |==--
_______________________________________________
Mapnik-users mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/mapnik-users

Reply via email to