mapnik et postgis

Re-bonjour par ici,
J’avance avec Mapnik en version fichier .py… Après la démo, le déminage des tests avec des fichiers shapefile sans définition correcte des projections, le coup tordu des polices d’écriture, j’arrive à l’utilisation de données postgis… Et cette fois, je ne vois pas ce qui ne marche pas.
Lorsque j’exécute le fichier .py de génération avec les instructions, il me sort bien un fichier, mais avec juste l’aplat de la couleur de fond, et Postgre, qui est relativement lent sous Tilemill ne semble même pas démarrer. Dans la feuille de style .xml, je crois bien n’avoir aucune limitation de niveau de zoom.
Question subsidiaire : Y a-t-il une astuce (sous W7), pour que la fenêtre d’exécution du code python ne se ferme pas toute seule immédiatement à la fin de l’exécution ? (Les messages d’erreur, s’ils existent (?) peuvent parfois être utiles.
Et voici là feuille de style d’essai, directe sortie de Tilemill :

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Map[]>
<Map srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over" background-color="#00ffff" maximum-extent="-20037508.34,-20037508.34,20037508.34,20037508.34">

<Parameters>
  <Parameter name="bounds">5.2816,46.4955,7.1218,48.0899</Parameter>
  <Parameter name="center">6.026,47.2419,8</Parameter>
  <Parameter name="format">png</Parameter>
  <Parameter name="interactivity_layer"></Parameter>
  <Parameter name="interactivity_fields"></Parameter>
  <Parameter name="minzoom">0</Parameter>
  <Parameter name="maxzoom">18</Parameter>
  <Parameter name="name"><![CDATA[Diocese_Besancon_pgis]]></Parameter>
</Parameters>


<Style name="village_point-point" filter-mode="first" >
  <Rule>
    <MarkersSymbolizer fill="#0000ff" width="2" opacity="0.5" allow-overlap="true" ignore-placement="true" />
  </Rule>
</Style>
<Layer name="village_point"
  srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over">
    <StyleName>village_point-point</StyleName>
    <Datasource>
       <Parameter name="type"><![CDATA[postgis]]></Parameter>
       <Parameter name="table"><![CDATA[(SELECT p1.name, ST_Contains(p2.way,p1.way) AS st_contains, p1.place, char_length(p1.name) AS len, p1.way AS way
FROM planet_osm_point p1, planet_osm_polygon p2
WHERE p2."ref:FR:CEF"='Be' AND p1.place IN('village','town','city')
ORDER BY len DESC
)as toto]]></Parameter>
       <Parameter name="key_field"><![CDATA[]]></Parameter>
       <Parameter name="geometry_field"><![CDATA[]]></Parameter>
       <Parameter name="extent_cache"><![CDATA[auto]]></Parameter>
       <Parameter name="extent"><![CDATA[587532.02,5822879.53,794726.98,6103717.79]]></Parameter>
       <Parameter name="dbname"><![CDATA[dio2]]></Parameter>
       <Parameter name="host"><![CDATA[localhost]]></Parameter>
       <Parameter name="user"><![CDATA[postgres]]></Parameter>
       <Parameter name="password"><![CDATA[osm]]></Parameter>
       <Parameter name="id"><![CDATA[village_point]]></Parameter>
       <Parameter name="project"><![CDATA[Archidiocese]]></Parameter>
       <Parameter name="srs"><![CDATA[+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over]]></Parameter>
    </Datasource>
  </Layer>

</Map>

et le fichier python :

#!/usr/bin/env python
import mapnik

stylesheet = 'Ac3.xml'
image = 'Ac.png'
m = mapnik.Map(1000, 1000)
mapnik.load_map(m, stylesheet)
m.zoom_to_box(mapnik.Box2d(5.2816,46.4955,7.1218,48.0899))
m.zoom_to_box(mapnik.Box2d(0,40,10,50))
mapnik.render_to_file(m, image)
print "rendered image to '%s'" % image

Salut,
Je vois un potentiel loup dans la ligne python :
m.zoom_to_box(mapnik.Box2d(0,40,10,50))
où les coordonnées sont en lon/lat alors que tout le reste de tes coordonnées sont en Proj. Mercator.
Du coup j’ai l’impression que le centrage se fait sur les coordonnées mercator (0,40,10,50) qui sont plutôt hors cadre si tu compares à ton extent : 587532.02,5822879.53,794726.98,6103717.79

C’est juste une piste en lecture rapide, j’ai peut-être loupé un truc.

vincent

Super, nikel, trop bien, c’est ça !
Par contre, je suis surpris, avec les fichiers shapefile, ça marchait pourtant comme ça…
Euh, non, en fait, ça « marchait » avec deux erreurs de projection/reprojection à la suite… Mon bricolage pour recoller dans la zone n’était pas très propre…
Est-ce que quelqu’un connait de tête la fonction pour revenir à une BBox d’export en mercator ?
JB.

Salut,
Le style.xml est généré par Tilemill qui fonctionnait correctement ? Alors le pb viens du python, et je penche pour un pb de projection. Regarde le code de la fondation: ils reprojettent la BBox lon/lat en mercator.

http://svn.openstreetmap.org/applications/rendering/mapnik/generate_image.py

Edit: trop tard :slight_smile:

Pour w7, lance tes scripts python depuis la ligne de commande.
Shift + clic droit sur le dossier, ouvrir dans un terminal.

Pas mal, je connaissais pas…