Saya adalah pengguna ArcGIS Desktop yang memasuki dunia pemetaan web untuk pertama kalinya. Mengikuti saran yang saya temukan di GIS.SE, saya mulai dengan tutorial gratis dari OpenGeo .
Namun, saya mulai menyadari bahwa sebagian besar demo dan contoh ditujukan untuk data vektor. Proyek utama saya melibatkan tampilan seri waktu 300 frame raster 5000 x 5000 piksel. Di komputer desktop saya ini disimpan dalam biner BIP integer 16-bit 5000x5000x300 tunggal, yang totalnya sekitar 8GB. Tujuan saya adalah untuk dapat mengklik sel (dari raster tunggal dalam seri waktu) dan memiliki grafik yang menampilkan nilai-nilai piksel itu dalam seri waktu 300-elemen. Data raster yang digunakan untuk setiap grafik deret waktu harus disimpan tanpa kehilangan, meskipun peta hamparan yang diklik dapat berupa cache yang hilang.
Apakah ada sesuatu yang mungkin lebih cocok untuk proyek ini (untuk pengembang GIS web pemula) daripada OpenGeo? Atau haruskah saya teruskan dengan pengaturan ini?
Sebagai referensi, saya memiliki pengalaman pemrograman dalam Python, Java, dan PHP. Saya tidak punya banyak pengalaman dengan SQL. Ini adalah proyek terbuka jadi saya punya banyak waktu untuk belajar bahasa baru jika perlu. Saya sudah memiliki server web, meskipun saya mungkin harus beralih host karena GoDaddy tampaknya tidak mendukung PostgreSQL tanpa mendapatkan VPS.
Terima kasih atas bantuan Anda!
EDIT: (13 Jan) Saya masih mencari informasi tentang cara terbaik untuk menyimpan raster BIP 16-bit 3-dimensi 3 dimensi dan dapat secara efisien meminta "kolom" data sumbu tunggal z. Saya tidak ingin mengonversinya ke format 32-bit (karena itu akan menggandakan ukuran file dari bentuk 16-bit saat ini).
Jawaban:
Meminta raster seperti itu seharusnya tidak benar-benar menimbulkan masalah besar. Anda dapat membaca data biner secara langsung menggunakan semua bahasa program, dan aksesnya cepat. Pastikan Anda menyimpan data dalam format file yang memiliki semua metadata dalam file terpisah. BIP adalah format seperti itu
misalnya dalam php, dengan asumsi bahwa file tersebut adalah urutan utama baris (jika tidak aktifkan x dan y), dengan $ x dan $ y posisi di kisi Anda (dihitung dari 0), $ nx, $ ny dan $ nz jumlah piksel dalam setiap dimensi dan $ nb jumlah byte per kotaksel:
Pastikan Anda mengakses piksel kanan: apakah penghitungan dimulai dari kiri atas atau tidak, ...
Beberapa info tambahan: Setelah membaca data, Anda harus mengubahnya menjadi float. Misalnya:
Jika tuan rumah Anda tidak mendukung mengunggah file besar, Anda dapat misalnya membagi file bip Anda menjadi misalnya 8 file bip.
Beberapa info lebih lanjut tentang bagaimana saya akan melakukan sisanya dari situs web: karena data Anda statis, Anda dapat menghasilkan mapviewer kecil menggunakan gdal2tiles dan openlayers. http://www.gdal.org/gdal2tiles.html Sebenarnya, karena Anda mengatakan bahwa "Saya tidak benar-benar membutuhkan skalabilitas - proyek ini sebagian besar memungkinkan beberapa peneliti sebaya untuk memiliki akses yang lebih mudah ke data saya daripada mengirim File 8GB dan memuatnya dalam ENVI. "Anda bahkan mungkin dapat melakukannya tanpa menggunakan kotak alat webgis: biarkan saja pengguna mengklik gambar tersebut dan menangkap koordinatnya: http://www.emanueleferonato.com/2006/09/02/klik -gambar-dan-dapatkan-koordinat -dengan javascript /
(meskipun Anda harus menemukan cara untuk menyajikan gambar 5000x5000 Anda dengan baik)
sumber
Ini terlihat seperti tiga masalah terpisah: satu infrastruktur, satu arsitektur dan satu lagi penanganan acara. Saya akan menjelaskan satu pendekatan yang mungkin, tetapi jawaban saya harus umum.
Infrastruktur
Saya sarankan menggunakan layanan hosting VPS seperti Linode (www.linode.com) untuk server Anda. Ini memberi Anda akses penuh (yaitu, root) ke server yang dikelola secara profesional - tidak ada kekhawatiran daya padam atau kehilangan koneksinya ke Internet.
Arsitektur
Ada begitu banyak opsi di sini yang bisa sangat luar biasa. Sebagai contoh, saya menjalankan beberapa sistem dengan GeoServer dan OpenLayers. GeoServer dilayani oleh Tomcat 7. Ujung depan OpenLayers / jQuery dilayani oleh Apache2. Anda dapat memasukkan Postgres / PostGIS untuk menyimpan data vektor, tetapi ini bukan pilihan yang baik untuk data raster. Anda juga dapat mengatur sistem Python menggunakan Django atau bahkan web.py (http://webpy.org/) untuk pengontrol yang agak sederhana. GeoServer memungkinkan Anda menyimpan data raster dalam format berikut:
Penanganan Acara
Ketika pengguna mengklik pada peta Anda ingin memunculkan plot time-series dari data bidang pada saat itu. Pertama, buat pengontrol, yang bisa ditulis dalam Python atau Java, yang mendengarkan permintaan url dengan lintang dan bujur. Pengontrol ini mengembalikan gambar statis yang diberikan pada server atau data json yang dapat diubah klien (jQuery) menjadi plot.
Selanjutnya, untuk mendapatkan data XY di peta Anda mungkin menggunakan fungsi seperti ini (lihat http://dev.openlayers.org/releases/OpenLayers-2.11/examples/click-handler.html ):
Saya harap itu membantu.
sumber
Jika saya memahami pertanyaan Anda dengan benar, saya akan membuat layanan WMS waktu, misalnya dengan MapServer .
Dengan cara ini akan mudah untuk menampilkan raster yang benar untuk setiap datetime (dengan permintaan GetMap), dan meminta nilai untuk sel dalam rentang datetime yang diberikan (dengan permintaan GetFeatureInfo).
sumber