mapnik et postgis

Extraire des données OSM, créer sa carte, uMap, utiliser sur un GPS ou un smartphone...
JBosm
Messages : 78
Inscription : lun. avr. 22, 2013 12:43 pm

mapnik et postgis

Message par JBosm » lun. févr. 10, 2014 4:55 pm

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 :

Code : Tout sélectionner

<?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 :

Code : Tout sélectionner

#!/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

vdct
Messages : 225
Inscription : mar. janv. 22, 2013 10:16 pm

Re: mapnik et postgis

Message par vdct » lun. févr. 10, 2014 5:11 pm

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

JBosm
Messages : 78
Inscription : lun. avr. 22, 2013 12:43 pm

Re: mapnik et postgis

Message par JBosm » lun. févr. 10, 2014 5:23 pm

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.

BrunoC
Messages : 374
Inscription : sam. juin 23, 2012 11:07 am
Localisation : Nantes
Contact :

Re: mapnik et postgis

Message par BrunoC » lun. févr. 10, 2014 5:27 pm

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/applicatio ... e_image.py

Edit: trop tard :)

yves

Re: mapnik et postgis

Message par yves » mer. févr. 12, 2014 9:52 pm

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

JB

Re: mapnik et postgis

Message par JB » jeu. févr. 13, 2014 4:07 pm

Pas mal, je connaissais pas…

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 5 invités