Bagaimana selanjutnya jika KML kami terlalu besar / kompleks untuk Google Maps API? [Tutup]

29

Aplikasi web kami mencakup kemampuan pemetaan sederhana (saat ini hanya marker dan overlay KML pada Google Map yang disematkan). Ini bekerja dengan cukup baik; satu-satunya batasan nyata yang kami hadapi adalah hamparan KML yang melampaui batasan ukuran & kompleksitas Google untuk KML .

Kami sedang mempertimbangkan untuk berdiri di server kami sendiri (mis. GeoServer atau ArcGIS Server); tapi itu sepertinya langkah besar hanya untuk melayani (misalnya) 15 MB KML ketika batas Google adalah 10 MB.

Saya memerlukan pemeriksaan kewarasan: Apakah ada jalan tengah antara Google gratis dan API mudah untuk overlay KML, dan menyiapkan server ubin saya sendiri?

Ramuan Caudill
sumber
5
pisahkan satu KML Anda menjadi 2 file KML lebih kecil - aktifkan dan matikan data yang tidak Anda perlukan.
Mapperz
1
tabel fusi penggunaan opsional (batas baris 100rb atau data dalam 100 MB ) - gmaps-samples.googlecode.com/svn/trunk/fusiontables/… lihat groups.google.com/group/fusion-tables-users-group/browse_thread/…
Mapperz
@mapperz Anda hanya dapat mengunggah 100MB data sekaligus, tetapi Anda kemudian dapat mengimpor baris lebih lanjut ke tabel yang sama hingga 250MB penyimpanan.
geografi
Meskipun saya melihat Anda sudah tahu itu .. gis.stackexchange.com/questions/6615/…
geografi
Layanan Fusion Tables ditutup 3 Desember 2019, jadi opsi yang saya lihat adalah untuk membuat file kml lebih kecil dengan perangkat lunak - desktop QGIS. ada juga perpustakaan python qgis. Saya menggunakan desktop QGIS dengan opsi Sederhanakan geometri menggunakan 0,0005. Lalu saya ekspor layer yang dibuat sebagai kml. Anda dapat melakukan ini sebagai pekerjaan sekaligus dari menu yang sama. Kemudian Anda dapat membuka semua lapisan yang dibuat dalam proyek terpisah dan menggunakan Konsol di dalam desktop QGIS untuk mengonversi semua file .shp ke .kml
makkasi

Jawaban:

12

Karena Anda telah berinvestasi dalam pengembangan Google Maps, saya sangat menyarankan mendorong semua data ke dalam Google Fusion Tables, yang kemudian dapat diuraikan ke peta dengan cara yang sama seperti KML dengan kinerja luar biasa (lihat aplikasi WNYC Fusion Tables ). Anggap saja upgrade ke KML tanpa harus secara drastis memodifikasi front-end.

Gady
sumber
Saya pikir ini adalah ide bagus jika data Anda tidak pada jadwal pembaruan> 24 jam. Ini adalah apa yang Google katakan kepada kami (jika kml memperlambat browser menggunakan tabel fusion) untuk melakukannya, saya akan mengatakan ini adalah jawaban terbaik.
Steve
1
Terima kasih telah menunjukkan Tabel Fusion - entah bagaimana ini benar-benar luput dari perhatian saya, sangat keren. Sayangnya ini akan sedikit canggung untuk bekerja dengan data yang sering berubah; dan batasan penyimpanan keseluruhan (250MB per pengguna) tidak memungkinkan kami untuk meningkatkan skala.
Herb Caudill
2
Perhatikan bahwa layanan Fusion Tables eksperimental dimatikan 3 Desember 2019.
Jonas
12

Anda dapat memecah KML Anda menjadi beberapa KML dengan KML Induk yang mereferensikan kml yang lebih kecil. Setidaknya ini akan membawa ukuran file Anda ke tingkat yang terhormat dan memungkinkan Anda untuk merujuk set data yang jauh lebih besar sebagai KML.

Jujur KML benar-benar hanya baik untuk kumpulan data kecil dengan beberapa fitur dan atribut terkait. Saya tidak akan mendekatinya sebagai sumber data file. Jika Anda melihat file-file ini menjadi lebih besar, saya akan melihat tipe data lain, atau pasti menuju rute GeoServer / MapServer untuk kumpulan data yang didistribusikan.

OptimizePrime
sumber
2
Tetapi Network KML (dengan Superoverlays dirancang untuk dataset besar) tetapi membutuhkan server web dan perenderan perangkat lunak Geoserver melakukan pekerjaan yang baik dengan jenis KMZ ini - bekerja paling baik dengan Google Earth karena Google Maps API telah membatasi penggunaan KML.
Mapperz
Saya tidak pernah beruntung dengan superoverlays, kecuali dengan Klien Google Earth Enterprise. Meskipun saya tidak menghabiskan banyak waktu dengan ini. Jelas merupakan opsi untuk dijelajahi, +1 @Mapperz
OptimizePrime
1
Gunakan GeoServer dengan Oracle dan bekerja dengan sangat baik rendering KMZ (superoverlay) - data hidup (terus diperbarui) menarik sangat berguna bagi pengguna - harus men-tweak geoserver untuk mendapatkan kecepatan refresh.
Mapperz
8

Jika Anda belum menginvestasikan terlalu banyak waktu di Google Maps API, Anda dapat beralih ke OpenLayers yang memiliki parser KML sisi klien yang dapat membaca file KML Anda sendiri - lihat contoh di bawah ini:

http://openlayers.org/dev/examples/kml-layer.html

Namun untuk file 15MB ini kemungkinan akan membuat browser terhenti. Mungkin sangat lambat melalui server Google juga ketika Anda mendekati batas ukuran file.

Apakah benar-benar diperlukan tingkat detail 15MB atau dapatkah Anda menyederhanakan KML tanpa kehilangan terlalu banyak informasi?

Apakah Anda perlu mengakses vektor / geometri di sisi klien? Bisakah data ini disajikan sebagai gambar?

Jika tidak satu pun dari hal ini dimungkinkan, Anda harus melihat beberapa jenis perangkat lunak penyajian peta. Bersama GeoServer dari ArcGIS Server Anda dapat mempertimbangkan MapServer untuk melayani KML, atau sebagai WFS. Keuntungan menggunakan mapserver adalah bahwa permintaan hanya akan mengembalikan data di dalam peta - mengurangi lalu lintas jaringan dan mengurangi waktu muat.

geografi
sumber
Setelah mencoba tabel Google Fusion, pendekatan Guddie adalah yang paling mudah untuk diterapkan. Anda hanya dapat mengunggah 100MB KML pada satu waktu, tetapi setiap pengguna memiliki opsi penyimpanan 250MB (pada saat penulisan).
geografi
2

Jika Anda menggunakan versi 3, Anda dapat menghapus semua informasi atribut kecuali untuk pengidentifikasi unik dan meminta informasi melalui panggilan ajax ke layanan web setiap kali pengguna mengklik fitur. Jika Anda memiliki poin lebih dari 10 MB, mungkin ide yang baik untuk melakukan semacam pengelompokan alih-alih menampilkan semua poin itu sekaligus. Anda juga dapat memisahkan overlay tanah Anda menjadi file KML yang terpisah.

Peter Smith
sumber
2

MapLarge memiliki solusi menarik - mereka dapat mereplikasi data Anda di server mereka dan kemudian melakukan pengangkatan berat ubin dengan cepat menggunakan perangkat lunak berpemilik mereka. Mereka menawarkan Javascript API yang kemudian dapat overlay ini pada peta dasar dari Google Maps, OpenLayers, dll.

Lihat beberapa contohnya - kecepatannya mengesankan:

Ini tidak gratis, tetapi itu bisa menjadi pilihan yang baik untuk seseorang yang tidak ingin masalah & biaya berdiri server terpisah untuk menghasilkan lapisan ini.

Ramuan Caudill
sumber