Saya menggunakan TileStache untuk melayani ubin vektor saya sendiri menggunakan sumber data postgis. Pertama saya memproyeksikan kembali shapefile yang saya gunakan ArcMap (diproyeksikan kembali ke Web Mercator (Auxilary Sphere)) dan memuatnya di Postgres menggunakan shp2pgsql (SRID: 900913).
Saya dapat membuat ubin menggunakan file konfigurasi ini:
{ "cache": { "name": "test", "path": "/ tmp / stache", "umask": "0000" }, "lapisan": { "tpl": { "asal yang diizinkan": "*", "proyeksi": "mercator bola", "pemberi": { "class": "TileStache.Goodies.VecTiles: Provider", "kwargs": { "dbinfo": { "host": "localhost", "pengguna": "postgres", "kata sandi": "postgres", "database": "tpl" }, "pertanyaan": { "7": "SELECT geom AS __geometry __, nama, prioritas DARI isl_roads_sm WHERE priority IN (5,4) - zoom 7+", "8": "SELECT geom AS __geometry __, nama, prioritas DARI isl_roads_sm WHERE priority IN (5,4)", "9": "SELECT geom AS __geometry __, nama, prioritas DARI isl_roads_sm WHERE priority IN (5,4)", "10": "SELECT geom AS __geometry __, nama, prioritas DARI isl_roads_sm WHERE priority IN (5,4)", "11": "SELECT geom AS __geometry __, nama, prioritas DARI isl_roads_sm WHERE priority IN (5,4,3,2)", "12": "SELECT geom AS __geometry __, nama, prioritas DARI isl_roads_sm WHERE priority IN (5,4,3,2)", "13": "SELECT geom AS __geometry __, nama, prioritas DARI isl_roads_sm WHERE priority IN (5,4,3,2)", "14": "SELECT geom AS __geometry __, nama, prioritas DARI isl_roads_sm - zoom 14+" } } }, "preview": {"ext": "json"} } } }
Saya merender ubin yang dihasilkan menggunakan Leaflets TileLayer.GeoJSON. Masalah yang saya miliki adalah bahwa ubin tidak overlay dengan basemap, ada celah yang cukup besar antara ubin saya dan fitur-fitur pada basemap.
Ketika saya menggunakan WGS84 sebagai proyeksi dalam file konfigurasi (menggunakan data dalam WGS84) saya mendapatkan ubin kosong, tidak ada kesalahan lain.
Bagaimana saya bisa membuat ubin untuk overlay dengan benar? Mengapa WGS84 tidak berfungsi?
sumber
+proj=merc +lon_0=0 +lat_ts=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs
. Atau periksa dengan qry:,SELECT * FROM geometry_columns
lihat apakah srid memang 900913900913
. Saya mencobanya dengan SRID3857
juga (setelah mengejar proyeksi ke 3857 di QGIS) tetapi itu hanya memberi saya kesalahan mengatakan bahwa tilestache tidak bekerja dengan SRID campuran.Jawaban:
Saya mendapatkan ubin untuk dilapis dengan benar. Masalahnya adalah pada proyeksi ulang yang dilakukan oleh ArcMap dan QGIS. Ketika saya sedang memeriksa shapefile yang diproyeksi ulang di ArcMap dan QGIS, mereka overlay dengan benar dan memiliki SRID yang benar.
Jadi saya mengimpor shapefile di WGS84 di PostgreSQL menggunakan SRID
4326
dengan shp2pgsql kemudian digunakanST_Transfrom
untuk memproyeksi ulang tabel dalam900913
tabel menggunakan kueri:Tetapi saya masih tidak dapat menghasilkan ubin
WGS84
, Apa yang saya lewatkan?sumber
Untuk umpan balik, ini penting bagi orang lain yang menemukan pertanyaan ini di masa depan. Apakah Anda menggunakan WGS84 dalam konfigurasi tilestache Anda? Ada juga atribut 'proyeksi' yang mungkin harus Anda atur.
Anda menggunakan kelas VecTile, saya belum bermain dengan yang itu, tetapi Anda mungkin bisa membuatnya bekerja (atau setidaknya itu akan memberi Anda beberapa petunjuk / ide untuk memecahkan masalah) dengan penyedia yang berbeda, seperti ini. Anda bisa mengubah driver menjadi postgresql bukan postgis dan memberikan kueri alih-alih nama tab. Tapi alasan saya menunjukkannya untuk atribut 'proyeksi'.
sumber
WGS84
dengan penyedia yang berbeda danprojected
atributnya juga tetapi itu masih memberi saya hasil yang sama, tidak ada kesalahan tetapi fitur kosong. Sekarang saya memilikispherical mercator
ubin overlay dengan benar, saya pikir saya bisa melakukannya tanpa menggunakanWGS84
tetapi saya masih ingin mencari tahu apa masalahnya.spherical mercator
tanpa mendefinisikanprojected
atribut (secarafalse
default) dan itu berfungsi dengan baik untuk saya. UntukWGS84
itu bisa menjadi masalah dengan kotak pembatas tetapi saya tidak yakin, saya memiliki masalah yang sama dengan vektor. Terima kasih atas umpan baliknya, Anda menempatkan saya di jalan yang benar.