Ik wil graag items in een bepaald gebied selecteren. Onderstaande query levert echter geen resultaat.
Zonder de de regel ‘AND ST_Within(…)’ krijg ik normale uitvoer. Wat doe ik fout?
<Layer name="Schiphol" status="on" srs="&osm2pgsql_projection;">
<StyleName>Schiphol</StyleName>
<Datasource>
<Parameter name="table">
(select way,aeroway
from &prefix;_line
where aeroway in ('runway','taxiway')
AND ST_Within(way, ST_GeomFromText('POLYGON((4.7 52.2,4.8 52.2,4.8 52.4,4.7 52.4,4.7 52.2))',4326))
order by z_order) as roads
</Parameter>
&datasource-settings;
</Datasource>
</Layer>
Groeten, Ed
ps Ik werk op Windows 7 met Mapnik 2.0.1 en de data is met osm2pgsql in een Postgis database geladen.
Na wat proberen heb ik zelf de oplossing gevonden. Mijn PostGIS database bevat data in EPSG:900913 projectie. Ik was ervan utgegaan dat de bounding box die gebruikte voor de selectie automatisch van lat/lon (4326) naar 900913 zou worden vertaald. Blijkbaar een foute aanname want ST_Transform(…, 90913) lost het probleem op. Zie onderstaande code:
Groeten, Ed
<Layer name="Schiphol" status="on" srs="&osm2pgsql_projection;">
<StyleName>Schiphol</StyleName>
<Datasource>
<Parameter name="table">
(select way,aeroway
from &prefix;_line
where aeroway in ('runway','taxiway')
AND ST_Within(way, ST_Transform(ST_GeomFromText('POLYGON((4.7 52.2,4.8 52.2,4.8 52.4,4.7 52.4,4.7 52.2))',4326), 900913))
order by z_order) as roads
</Parameter>
&datasource-settings;
</Datasource>
</Layer>