Ich verwende TileStache, um meine eigenen Vektorkacheln mithilfe einer Postgis-Datenquelle bereitzustellen. Zuerst habe ich die Shapefiles, die ich mit ArcMap hatte (neu projiziert in Web Mercator (Auxilary Sphere)), neu projiziert und sie mit shp2pgsql (SRID: 900913) in Postgres geladen.
Ich kann die Kacheln mit dieser Konfigurationsdatei generieren:
{ "Zwischenspeicher": { "name": "test", "Pfad": "/ tmp / stache", "umask": "0000" }, "Schichten": { "tpl": { "erlaubter Ursprung": "*", "Projektion": "sphärischer Mercator", "Anbieter": { "class": "TileStache.Goodies.VecTiles: Provider", "kwargs": { "dbinfo": { "host": "localhost", "user": "postgres", "Passwort": "postgres", "Datenbank": "tpl" }, "Abfragen": { "7": "SELECT geom AS __geometry __, Name, Priorität FROM isl_roads_sm WHERE Priorität IN (5,4) - Zoom 7+", "8": "SELECT geom AS __geometry __, Name, Priorität FROM isl_roads_sm WHERE Priorität IN (5,4)", "9": "SELECT geom AS __geometry __, Name, Priorität FROM isl_roads_sm WHERE Priorität IN (5,4)", "10": "SELECT geom AS __geometry __, Name, Priorität FROM isl_roads_sm WHERE Priorität IN (5,4)", "11": "SELECT geom AS __geometry __, Name, Priorität FROM isl_roads_sm WHERE Priorität IN (5,4,3,2)", "12": "SELECT geom AS __geometry __, Name, Priorität FROM isl_roads_sm WHERE Priorität IN (5,4,3,2)", "13": "SELECT geom AS __geometry __, Name, Priorität FROM isl_roads_sm WHERE Priorität IN (5,4,3,2)", "14": "SELECT geom AS __geometry __, Name, Priorität FROM isl_roads_sm - Zoom 14+" }} }} }, "Vorschau": {"ext": "json"} }} }} }}
Ich rendere die mit Leaflets TileLayer.GeoJSON generierten Kacheln. Das Problem, das ich habe, ist, dass die Kacheln nicht mit der Grundkarte überlagern. Es gibt eine ziemlich große Lücke zwischen meinen Kacheln und den Merkmalen auf der Grundkarte.
Wenn ich WGS84 als Projektion in der Konfigurationsdatei verwende (unter Verwendung von Daten in WGS84), erhalte ich leere Kacheln, keine weiteren Fehler.
Wie kann ich die Kacheln richtig überlagern? Warum funktioniert WGS84 nicht?
quelle
+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs
. Oder überprüfen Sie mit einem qry:,SELECT * FROM geometry_columns
sehen Sie, ob srid tatsächlich 900913 ist900913
. Ich habe es auch mit SRID versucht3857
(nachdem ich die Projektion in QGIS auf 3857 geändert habe), aber das gibt mir nur den Fehler, dass Tilestache mit gemischten SRIDs nicht funktioniert.Antworten:
Ich habe die Kacheln richtig überlagern lassen. Das Problem lag in der Neuprojektion von ArcMap und QGIS. Als ich die neu projizierten Shapefiles in ArcMap und QGIS überprüfte, überlagerten sie sich korrekt und hatten die richtigen SRIDs.
Also habe ich die Shapefiles in WGS84 in PostgreSQL mithilfe der SRID
4326
mit shp2pgsql importiert und dann verwendetST_Transfrom
, um die Tabellen in900913
den Tabellen mithilfe einer Abfrage neu zu projizieren :Aber ich bin immer noch nicht in der Lage, die Kacheln in zu generieren
WGS84
. Was fehlt mir?quelle
Tx für das Feedback, dies ist wichtig für andere, die diese Frage in Zukunft finden. Verwenden Sie WGS84 in Ihrer Tilestache-Konfiguration? Es gibt auch ein 'projiziertes' Attribut, das Sie möglicherweise festlegen müssen.
Sie verwenden die VecTile-Klasse, mit der ich noch nicht gespielt habe, aber Sie können sie möglicherweise bei einem anderen Anbieter wie diesem zum Laufen bringen (oder zumindest erhalten Sie einige Hinweise / Ideen zur Fehlerbehebung). Sie können den Treiber in postgresql anstelle von postgis ändern und die Abfragen anstelle von tabellennamen angeben. Aber der Grund, warum ich es für das 'projizierte' Attribut gezeigt habe.
quelle
WGS84
mit verschiedenen Anbietern und demprojected
Attribut zu arbeiten, aber das gibt mir immer noch das gleiche Ergebnis, keine Fehler, aber leere Funktionen. Jetzt, wo ichspherical mercator
Kacheln richtig überlagert habe, denke ich, dass ich ohne Verwendung auskommen kann,WGS84
aber ich möchte trotzdem herausfinden, wo das Problem liegt.spherical mercator
ohne dasprojected
Attribut zu definieren (false
standardmäßig), und das funktioniert gut für mich. FürWGS84
sie ein Problem mit dem Begrenzungsrahmen sein könnte , aber ich bin mir nicht sicher, ich habe das gleiche Problem mit den Vektoren. Vielen Dank für das Feedback, Sie haben mich auf den richtigen Weg gebracht.