Saya memiliki satu set besar titik data yang pada dasarnya mewakili garis pantai dunia. Saya tidak tahu resolusi persisnya tetapi saya akan mengatakan itu berada di sekitar 5-10m.
Bayangkan satu set poin yang mewakili garis pantai yang bergerigi. Pada resolusi 1m, kita melihat semua detail dan membutuhkan 50 titik data untuk mewakili pantai dengan benar, namun pada resolusi 10 km pantai terlihat seperti garis lurus dan kita hanya perlu 2 titik.
Saya sedang menulis aplikasi pemetaan yang akan membutuhkan data untuk ditingkatkan dari resolusi "full-planet" ke resolusi "jalan". Saya butuh bantuan mengurangi resolusi poin data saya, dan kemudian jumlah data untuk resolusi yang lebih luas.
Saya sudah membaca tentang Vector-Tiling dan berpikir ini akan menjadi solusi terbaik (saya sudah melakukan sesuatu seperti ini), namun, pada resolusi rendah, set data saya masih sangat berarti bahwa proses render membutuhkan waktu yang relatif lama waktu, di mana resolusi tinggi cepat karena dataset 'efektif' itu kecil (subset dari keseluruhan).
Saya mencoba menentukan cara mengambil dataset besar saya dan mengurangi skala sehingga data ubin tampilan 'planet penuh' saya adalah ukuran yang dapat dikelola. Bagaimana cara membuat sub-dataset ubin dari dataset lengkap yang lebih besar?
Saya senang menggunakan alat tetapi saya lebih suka melakukannya sendiri dalam upaya untuk mempelajari bagaimana hal itu dilakukan.
Jawaban:
Bagaimana Anda menyelesaikan masalah ini benar-benar tergantung pada kasusnya, dan seberapa penting topologi yang sebenarnya bagi Anda (dibandingkan hanya waktu visual / rendering). Karena tujuan akhir Anda adalah menggeneralisasi garis pantai, Anda mungkin menemukan beberapa ide tentang generalisasi bermanfaat.
Salah satu pendekatan menggunakan buffering, seperti yang terlihat di sini . Saya juga punya masalah serupa beberapa waktu lalu dan menjelaskan solusi saya di sini .
Singkatnya, Anda dapat menggunakan dataset vektor yang terpisah (atau setidaknya geometri yang terpisah), digeneralisasi ke tingkat yang berbeda. Ini mengatasi masalah dasar Anda meskipun tidak menggunakan ubin, tetapi tentu saja Anda masih bisa menggunakannya jika Anda mau. Tentu saja, jika Anda akan membagi dataset Anda menjadi ubin berdasarkan kotak, pastikan untuk menggeneralisasi terlebih dahulu, atau Anda akan berakhir dengan kesenjangan antara ubin.
sumber
Anda harus menyiapkan versi umum berbeda dari data Anda yang ditetapkan untuk level zoom "full planet" ke bawah untuk zoom close-up.
Algoritma generalisasi klasik adalah algoritma Douglas-Peucker . Anda harus menghubungkan titik ke garis pantai terlebih dahulu jika Anda belum melakukannya.
sumber
Sudahkah Anda menyelidiki Tilemill karena memproduksi ubin Anda? Secara otomatis akan mengurangi node pada level zoom yang berbeda. https://github.com/mapbox/tilemill
sumber
Mungkin tidak menjawab pertanyaan Anda, tetapi cukup terkait - ini adalah cara Google menyandikan polyline termasuk informasi generalisasi: http://code.google.com/apis/maps/documentation/utilities/polylinealgorithm.html
sumber