Saat ini saya sedang mengembangkan situs pemetaan OpenLayers. Pengukuran dapat dilakukan menggunakan alat garis, dan alat area. Kedua hal ini saat ini ditetapkan untuk menghitung pengukuran geodesik sebagaimana diuraikan dalam API OpenLayers .
Saya menggunakan pengukuran geodesi daripada pengukuran planar karena selama pengujian pengguna, orang mempertanyakan pengukuran alat untuk jarak yang sudah mereka ketahui (seperti mengemudi antar kota).
Fitur baru dari situs ini adalah agar pengguna dapat menggambar lingkaran di peta radius yang ditetapkan. OpenLayers hanya memungkinkan untuk menggambar lingkaran menggunakan jarak planar, jadi ketika pengguna mengukur lingkaran dengan alat pengukuran geodesik, nilai tidak cocok. Pada gambar di bawah ini lingkaran radius planar adalah 10 km, tetapi pengukuran garis geodesik untuk diameternya adalah 12 km.
Jelas ini akan membuat pengguna (dan saya sendiri) bertanya-tanya mana yang benar.
Melihat jawaban ini, tampaknya sebagian besar sistem GIS desktop "mengabaikan" masalah ini, dan mengembalikan pengukuran dan jarak planar. Jadi apa praktik terbaik dalam hal antarmuka pengguna dan akurasi untuk menangani pengukuran planar dan geodesik?
Memperbarui
Saya menemukan contoh Google ini yang menggambarkan masalah jari-jari dan proyeksi Mercator:
http://maps.forum.nu/gm_sensitive_circle2.html
Kode JavaScript untuk menggambar lingkaran adalah sebagai berikut:
var lat1 = (PI/180)* center.lat(); // radians
var lng1 = (PI/180)* center.lng(); // radians
for (var a = 0 ; a < 361 ; a++ ) {
var tc = (PI/180)*a;
var y = asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc));
var dlng = atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(y));
var x = ((lng1-dlng+PI) % (2*PI)) - PI ; // MOD function
var point = new GLatLng(parseFloat(y*(180/PI)),parseFloat(x*(180/PI)));
circlePoints.push(point);
bounds.extend(point);
}
Apakah lingkaran ini memperhitungkan kelengkungan bumi?
Pembaruan Terakhir
Kode kerja diposting di http://geographika.co.uk/creating-a-geodesic-circle-in-openlayers
sumber
Jawaban:
Jika Anda membuat bir rumahan di peramban, Anda bisa mendapatkan "lingkaran" (itu tidak akan membulat di layar karena proyeksi Anda; lebih tepatnya didekati dengan poligon dengan poin sebanyak yang Anda inginkan), gunakan bentuk langsung perhitungan geodesik: diberi titik, arah (azimuth), dan jarak yang memberi Anda titik yang dihasilkan. Detail berdarah: http://en.wikipedia.org/wiki/Vincenty%27s_formulae#Direct_Method
Sepertinya seseorang telah melakukan terjemahan ke javascript: http://www.movable-type.co.uk/scripts/latlong-vincenty-direct.html . Beruntungnya kamu!
Untuk menyelesaikannya:
Bersulang!
sumber
Untuk mendapatkan lingkaran geodesik, Anda bisa menggunakan operasi buffer di layanan geometri ESRI.
Yang dapat diakses secara bebas tersedia di sini .
sumber