Mapnik bus_stop zusammenfassen

Hallo miteinander,

wie man zum Beispiel auf dieser ÖPNV Karte (ZoomStufe 15) sehen kann, werde die Bushaltestellen jeweils zusammengefasst (zwei Haltestellen mit gleichem Namen) und ab Zoom 17/18 werden die genauen Positionen der Haltestellen angezeigt.

Dies würde ich gerne in meinem eigenen mapnik style ebenfalls so haben. Derzeit ist es so, das für jeden bus_stop eine Beschriftung zu sehen ist, falls sie sich nicht überlappt. Das ist alles ein wenig unschön.

Die frage ist ob ich das in der SQL Abfrage abhandeln muss mit z.B. nen Group By oder das ganze mit der Style Regel machen kann?

Die derzeitige Styleregel sieht wiefolgt aus:

    <Rule>
      &maxscale_zoom15;
      &minscale_zoom16;
      <Filter>[highway]='bus_stop'</Filter>
      <TextSymbolizer name="name"  allow_overlap="false" fontset_name="bold-fonts" size="10" fill="#61FF61" dy="-8" halo_fill="#FFFFFF" halo_radius="1" wrap_width="0">[name]</TextSymbolizer>
	</Rule>
    <Rule>
      &maxscale_zoom17;
      &minscale_zoom18;
      <Filter>[highway]='bus_stop'</Filter>
      <TextSymbolizer name="name"  allow_overlap="false" fontset_name="bold-fonts" size="8" fill="#61FF61" dy="-8" halo_fill="#FFFFFF" halo_radius="1" wrap_width="0">[name]</TextSymbolizer>
</Rule>
<Layer name="Bushalte" status="on" srs="&osm2pgsql_projection;">
	<StyleName>Bushalt-text</StyleName> <!--Halstestellenname -->
    <StyleName>Bushalte</StyleName> <!-- SYMBOL -->
    <Datasource>
      <Parameter name="table">
      (select way,amenity,name,highway,public_transport,railway     
      from &prefix;_point
      where ( amenity='bus_station'
         or highway='bus_stop'
		 or public_transport in ('platform','stop_position') )
		 and railway is null
      ) as points</Parameter>
      &datasource-settings;
    </Datasource>
</Layer> 

Über hilfe wäre ich sehr erfreut.

Mapnik 0.7.1

Gruß
mvollmer

Habe das ganze gelöst indem ich ein distinct on (name) in der abfrage hinzugefügt habe.

Mit einem distinct wird ja nur eine der beiden Haltestellen angezeigt. Bei der ÖPNV-Karte wird aber die Position gemittelt. Das könnte bei größeren Haltestellen durchaus sinnvoll sein.
Dafür müsste es reichen die Koordinaten in der Abfrage mit avg() zu mitteln wenn du mit group by name abfragst.