Saya googling sekitar selama beberapa minggu tetapi saya memiliki beberapa kesulitan untuk mencari tahu di mana untuk memulai proyek saya dan bagian mana dari tumpukan Geo yang tersedia wajib untuk kebutuhan saya.
Saya memiliki latar belakang Java yang kuat, minat untuk Python dan benar-benar terbuka untuk mempelajari beberapa teknologi baru.
Sebagai hobi dan karena dekat dengan pekerjaan saya, saya berencana untuk mengembangkan web strategis MMO web yang sangat didasarkan pada peta interaktif (pada dasarnya untuk menampilkan situasi taktis dan memberikan perintah kepada unit).
Inilah yang saya pikirkan:
- Geoserver untuk melayani peta dan lapisan.
- PostGIS untuk menyimpan geodatas.
- GeoExt untuk ditampilkan di browser
- Apache Klik sebagai server aplikasi Java (resolusi tempur, manajemen unit)
Saya berhasil menggunakan GeoServer (perang di kucing jantan, lebih mudah sulit) Saya berhasil menginstal PostGreSQL Saya menjalankan beberapa tutorial tentang GeoExt. Saya perlu mengalami Javascript sedikit. Saya bermain dengan Apache Klik untuk melayani halaman dan formulir.
Inilah aliran yang saya pikirkan:
- GeoServer menyajikan latar belakang dan lapisan peta yang dibangun dari data PostGIS untuk objek statis (Kota, Poin Kemenangan, Wilayah, ...)
- Apache Click menghasilkan halaman HTML + GeoExt di browser klien.
- Apache Click mengirimkan perintah CRUD ke PostGIS sebagai respons atas tindakan pengguna.
- [sesuatu] memperbarui secara teratur PostGIS (pergerakan, resolusi tempur, manajemen karakteristik unit ...)
- Apache Click menghasilkan file KML secara dinamis untuk memperbarui browser (KML NetworkLink?) Untuk unit yang ditampilkan dengan ikon, zona (rentang, deteksi ...) ...
Dan sekarang, batu bata yang hilang di dinding kecilku:
- Bagaimana saya bisa menerapkan lapisan "laut / darat". Misalnya, untuk membatalkan gerakan kapal yang lewat di darat? Lapisan GeoServer? Zona yang ditentukan dalam PostGIS?
- Apakah aliran berikut cukup reaktif untuk memperbarui peta setelah tindakan pengguna: Acara HTML / GeoExt -> proses Apache Klik -> pembaruan PostGIS -> pembaruan lapisan GeoServer -> tampilan HTML / GeoExt
Poin utamanya adalah: di mana data jika saya ingin menggunakannya untuk perhitungan dan pembaruan? Lapisan statis GeoServer atau tabel PostGIS?
Jawaban:
Untuk menjawab Bagaimana saya bisa mengimplementasikan pertanyaan lapisan "laut / darat".
Anda bisa mendapatkan garis pantai dan lapisan laut dari Nature Earth v2 yang baru dirilis.
Mungkin terlalu akurat untuk kebutuhan Anda tetapi dengan beberapa generalisasi Anda akan dapat memuat ini ke postgis dan mendefinisikannya sebagai laut atau darat. Kemudian pergerakan kapal Anda dapat dimuat (http://www.postgis.org/docs/ST_Contains.html) dan sebaliknya dengan pergerakan tangki. Udara akan menjadi jalur yang berbeda dan lebih kompleks karena Anda perlu mengetahui lokasi saat ini dan bekerja di lapangan terbang darat atau kapal induk terdekat untuk pengisian ulang bahan bakar (kecuali jika pengisian ulang udara-ke-udara diizinkan ..)
Semoga berhasil dengan mengembangkan game.
http://www.naturalearthdata.com/blog/miscellaneous/natural-earth-v2-0-0-release-notes/
Unduh area http://www.naturalearthdata.com/downloads/
sumber
Anda kemungkinan akan memperbarui post gis melalui panggilan proses dari server Anda. Untuk satu hal, semua hal geografi tidak diperlukan dan memperkenalkan banyak kebingungan dan itu akan sangat lamban dan prosesor intensif bahkan untuk satu pengguna. Anda bisa memiliki poligon darat dan laut di dalam lapisan dan menambahkan ucapkan kolom +1 di tabel untuk baris laut dan -1 kolom untuk tanah. jika lat kembali dari lokasi kejadian adalah plus atau minus itu akan memicu aturan yang akan membatalkan langkah untuk unit laut atau darat. Anda bisa menggunakan model elevasi digital juga dengan level z sebagai plus atau minus. Game umumnya memiliki medan tetapi itu tidak berarti mereka dibangun menggunakan GIS! Saya akan mempelajari bagaimana mesin permainan yang populer menangani medan dan bagaimana pengembang membuat medan itu, pilih game sumber terbuka favorit Anda. Dalam kasus saya ini adalah BZFlag; )
sumber