Estoy tratando de modificar create_utfgrids.py para usar un archivo VRT de OGR, en lugar de shapefiles, y aunque el código relacionado con OGR en este código responde al VRT, el código de Mapnik no. Está fallando con..
ERROR 1: Error al abrir la fuente de datos `PG:host=127.0.0.1 user=postgres dbname=gis password=passw0rd tables=parcels_20140829_pmerc'.
Creo que el VRT está bien, porque no solo funciona con ogrinfo directamente, sino que como se mencionó anteriormente, el código relacionado con OGR en el archivo Python también funciona.
Aunque estoy bastante seguro de que el problema no es el VRT, para aquellos que puedan preguntar, el VRT que probé se ve así. Sé que hay cosas redundantes allí, pero pensé que tal vez Mapnik estaba buscando algo específico, así que estaba agregando cualquier nodo que pudiera ser relevante:
PG:host=127.0.0.1 user=postgres dbname=gis password=passw0rd tables=parcels_20140829_pmerc
parcels_20140829_pmerc
EPSG:3857
SELECT ST_AsBinary(wkb_geometry) as geomm, tms, owner_name, the_wkt FROM parcels_20140829_pmerc
Eventualmente logré resolver el problema pasando una cadena de conexión de PostgreSQL de OGR, analizando eso y luego insertando los valores en un constructor mapnik.PostGIS()
. Seguro, esto resuelve mi problema inmediato, pero no es tan genérico/universal como me gustaría.
Entonces me pregunto, dado que no puedo hacer que Mapnik acepte mi VRT, si es posible hacer referencia al objeto de fuente de datos existente de ogr.Open()
desde Mapnik y evitar tener que usar algo como mapnik.PostGIS()
o mapnik.Ogr()
en primer lugar.
Para obtener esta idea, así es como me lo imagino..
import mapnik
import ogr
# create_utfgrids.py usa shapefiles, por lo tanto "shppath".
# Pero para este ejercicio representa una ruta a un VRT.
ds = ogr.Open(shppath)
# Aquí va un montón de cosas de OGR.
# Aquí es donde quiero que ocurra la magia,
# insertando el conjunto de datos de OGR en Mapnik..
ds = mapnik.Ogr(ds)
# Y luego sigue lo de Mapnik.