Estoy utilizando TileStache para servir mis propios mosaicos vectoriales utilizando una fuente de datos postgis. Primero reproyecté los shapefiles que tenía usando ArcMap ( reproyectados a Web Mercator (Esfera Auxiliar)) y los cargué en Postgres usando shp2pgsql (SRID:900913).
Soy capaz de generar las baldosas utilizando este archivo de configuración:
{
"cache":
{
"name": "test",
"path":"/tmp/stache",
"umask": "0000"
},
"layers":
{
"tpl":
{
"allowed origin":"\*",
"projection": "spherical mercator",
"provider":
{
"class": "TileStache.Goodies.VecTiles:Provider",
"kwargs":{
"dbinfo":
{
"host":"localhost",
"user":"postgres",
"password":"postgres",
"database":"tpl"
},
"queries":
{
"7":"SELECT geom AS \_\_geometry\_\_,name, priority FROM isl\_roads\_sm WHERE priority IN (5,4) -- zoom 7+",
"8":"SELECT geom AS \_\_geometry\_\_,name, priority FROM isl\_roads\_sm WHERE priority IN (5,4)",
"9":"SELECT geom AS \_\_geometry\_\_,name, priority FROM isl\_roads\_sm WHERE priority IN (5,4)",
"10":"SELECT geom AS \_\_geometry\_\_,name, priority FROM isl\_roads\_sm WHERE priority IN (5,4)",
"11":"SELECT geom AS \_\_geometry\_\_,name, priority FROM isl\_roads\_sm WHERE priority IN (5,4,3,2)",
"12":"SELECT geom AS \_\_geometry\_\_,name, priority FROM isl\_roads\_sm WHERE priority IN (5,4,3,2)",
"13":"SELECT geom AS \_\_geometry\_\_,name, priority FROM isl\_roads\_sm WHERE priority IN (5,4,3,2)",
"14":"SELECT geom AS \_\_geometry\_\_,name, priority FROM isl\_roads\_sm -- zoom 14+"
}
}
},
"preview":{"ext":"json"}
}
}
}
Estoy renderizando las baldosas generadas con Leaflets TileLayer.GeoJSON. El problema que tengo es que las baldosas no se superponen con el mapa base, hay un espacio bastante grande entre mis baldosas y las características en el mapa base.
Cuando utilizo WGS84 como proyección en el archivo de configuración (utilizando datos en WGS84) obtengo baldosas vacías, sin otros errores.
¿Cómo puedo conseguir que los azulejos se superpongan correctamente? Por qué no funciona el WGS84?
0 votos
Revisa este hilo, puede que te ayude, creo que se debe a la diferencia entre mercator esférico y mercator final. gis.stackexchange.com/questions/34276/
0 votos
He mirado en el hilo anterior y no creo que sea el problema porque Leaflet (que estoy usando para mostrar los azulejos) lleva Mercator esférico como proyección por defecto
1 votos
Abra su db postgis en QGIS y compruebe las propiedades de la capa. Seguro que tus datos no están almacenados como
+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs
. O comprueba con un qry:SELECT * FROM geometry_columns
, ver si srid es efectivamente 9009131 votos
Eso fue lo que pensé al principio también, pero tuve bastante cuidado cuando importé los datos en Postgres, mi SRID es efectivamente
900913
. Lo he probado con SRID3857
también (después de cambiar la proyección a 3857 en QGIS) pero eso sólo me da un error diciendo que tilestache no funciona con SRIDs mixtos.