Bagaimana saya bisa menemukan titik terjauh dari sekumpulan titik yang ada?

17

Saya memiliki satu set titik sebagai shapefile dan saya ingin menemukan (koordinat) dari titik baru yang akan memiliki jarak terpanjang yang mungkin dari masing-masing titik yang ada. Apakah itu mungkin? Jika ya, apakah ada kode sampel VB? Terima kasih Demetris

Demetris
sumber
Maksud Anda, Anda menginginkan titik baru untuk setiap titik yang sudah ada, atau satu titik yang entah bagaimana "terjauh" dari semuanya? Dan yang terjauh, maksud Anda "sisi lain dunia"? Jika demikian, Anda bisa mengalikan lintang dengan -1, dan menambahkan 180 ke garis bujur (kurangi 360 jika nilai yang dihasilkan adalah> 180) jika Anda memilikinya dalam derajat desimal.
nmpeterson
Saya pikir pertanyaan yang menarik adalah: mengingat titik yang ada tersebar di seluruh dunia, temukan titik baru di dunia terjauh dari semua titik yang ada.
Kirk Kuykendall
Ini akan, secara efektif menjadi titik di ujung segitiga sama kaki, di mana jarak hanya dibatasi oleh seberapa jauh Anda ingin pergi. Jika saya telah membaca pertanyaan dengan benar, Anda ingin poin terjauh dari keduanya? Sama?
Berbulu
1
Oh! Posting saya membuat diskusi dan materi yang fantastis! NMpeterson: Pertama-tama, saya harus mengatakan bahwa poin saya berada dalam area datar kecil; jadi tidak perlu untuk perhitungan globe. Saya mencari masalah kedua yang diangkat; yaitu titik yang entah bagaimana "terjauh" dari semua titik yang ada. Jadi, tolong fokus pada ini.
Demetris
Saya bertanya-tanya apakah ada sampel kode VB yang tersedia seperti yang diminta dalam pertanyaan asli. Mungkin kode semacam itu sudah jelas diberikan tanggapan para ahli. Tetapi sebagai pemula, saya berharap untuk memulai dengan menciptakan kembali solusi yang disediakan oleh whuber. Di muka saya minta maaf karena mengajukan ini sebagai jawaban, bukan komentar.

Jawaban:

12

Rekomendasi Kirk Kuykendall untuk membangun diagram Voronoi bulat (poligon Thiessen) adalah yang baik, tetapi mungkin memiliki beberapa kendala teknis untuk dikerjakan. Sementara itu, sebagai alternatif, seseorang dapat menerapkan solusi raster standar seperti yang dijelaskan di utas lainnya . Gunakan jarak bola sebagai ganti jarak Euclidean.

Berikut adalah contoh menggunakan lima poin, di sini diberikan sebagai (lat, lon):

 82.7051   -145.256
 60.3321     81.2881
-17.076     105.125
-38.792    -122.686
  0.000     180.000

Peta jarak

Peta jarak bola ini mencakup bola dunia dari -180 hingga 180 derajat bujur secara horizontal dan -90 hingga 90 derajat lintang secara vertikal. Poin ditunjukkan dengan titik-titik merah besar. Jarak meningkat dengan kecerahan. Punggungan yang jelas harus menjadi bagian dari lingkaran besar. Titik hitam kecil dekat (-15,3268, -2,04352) menandai titik jarak maksimum 11.227 km. (Jarak dihitung dalam datum ellipsoidal ITRF00.)

Resolusi dari grid ini adalah satu derajat. Untuk mendapatkan solusi yang lebih tepat, seseorang dapat memperbesar titik tersebut (dan ke maksimum lokal lainnya dengan nilai yang cukup dekat dengan maksimum global) dan mengulangi perhitungan pada kisi yang lebih kecil tetapi dengan resolusi lebih tinggi.

whuber
sumber
jauh lebih cantik dari vektor. Tidak yakin mengapa saya pikir raster memerlukan model bumi yang datar.
Kirk Kuykendall
Cantik, ya, tapi tidak efisien. Akan menyenangkan untuk melihat solusi Voronoi bola berbasis vektor bekerja.
whuber
@Whuber: Bagaimana Anda bisa mendapatkan secara otomatis koordinat titik hitam? "
Demetris
@ Demetris Salah satu caranya adalah menghitung nilai maksimum pada kisi, pilih semua sel yang sama dengan nilai itu, dan gunakan koordinat pusat sel itu.
whuber
@ Wouber: Terima kasih banyak. Ini ide yang bagus. Namun, saya harus klip output raster berdasarkan kelas fitur (poligon unik). Bisakah saya melakukan ini?
Demetris
8

masukkan deskripsi gambar di sini

Saya belum pernah mencoba ini tetapi sepertinya ini akan berhasil:

Buat diagram voronoi 3D bola. Poligon yang dihasilkan ini akan dipusatkan secara kasar pada titik (benih) asli yang ada.

Loop melalui setiap simpul yang dihasilkan untuk menemukan yang paling jauh dari titik terdekat yang ada. Titik ini harus menjadi titik paling jauh di dunia.

Kirk Kuykendall
sumber
Ini adalah ide bagus (+1). Tapi seperti apa diagram Voronoi berbentuk bola ketika semua titik terletak di dalam belahan bumi yang sama? Kode yang Anda rujuk untuk memperolehnya dengan cembung cembung, tetapi tampaknya itu tidak akan berfungsi.
whuber
hmm, ya, saya kira bahkan jika mereka tidak semua berada di belahan bumi yang sama, akan ada satu poligon yang tidak memiliki titik benih. Bagaimana jika Anda membuat titik untuk itu dengan menggunakan titik antipodal sentroid cembung? Kemudian, sebagai tambahan dari pengulangan melalui setiap vertex, titik-cembung-antipode ini akan diperiksa untuk melihat apakah itu lebih jauh dari tetangganya daripada jarak max vertex.
Kirk Kuykendall
Itu adalah pemikiran awal saya, tetapi poin antipodal akan membuat poligon artefak. Pikirkan tentang apa yang akan terjadi dalam ilustrasi Anda jika antipode ke setiap titik dimasukkan, misalnya! Mungkin ada solusi dari sifat ini, tetapi sepertinya itu tidak langsung.
whuber
1

Anda bisa menggunakan Fungsi Jarak Berbobot Biaya untuk mengidentifikasi seberapa jauh setiap sel dalam raster Anda dari semua titik lainnya.

djq
sumber
Berapa biaya yang akan Anda gunakan?
whuber
Jika Anda menetapkan biaya menjadi satu unit; Anda bisa mengidentifikasi apa yang menjadi titik terjauh berdasarkan jarak.
djq
@whuber Meskipun mungkin ini tidak berbeda dengan menghitung pendekatan jarak euclidean yang telah disebutkan.
djq
Itu jarak Euclidean. Sebenarnya, bukan itu saja: itu semacam jarak oktagonal yang aneh (lingkaran sebenarnya oktagon). Dalam situasi ini (jarak dari titik saja, tanpa penghalang), itu jauh lebih akurat dan jauh lebih cepat untuk menghitung jarak Euclidean atau grid jarak bola secara langsung, daripada mencoba mengeksploitasi CostDistance untuk ini.
whuber
Saya tidak yakin bahwa fucntion jarak berbobot biaya akan membantu karena saya memerlukan koordinat hanya satu titik dan saya memiliki serangkaian vektor yang sangat besar, tetapi saya akan mencoba. Terima kasih.
Demetris
1

Sejauh yang saya tahu, analisis " Pole of Inaccessability " ini harus dilakukan secara iteratif.

Pendekatan raster berulang akan sesuai selama Anda melihat area kecil dengan distorsi minimal dari proyeksi. Untuk setiap sel, hitung jarak ke semua titik, lalu ambil jarak minimum. Sel dengan nilai tertinggi adalah kutub. Anda juga dapat menggunakan Euclidean Distance di Spatial Analyst untuk mencapai ini.

Pendekatan vektor berulang lebih rumit. Garcia-Castellanos et al 2007 menggambarkan metode berulang berdasarkan bumi bulat. Tampaknya mereka telah membuat kode C mereka tersedia secara online . Saya bisa membayangkan cara melakukan ini di Arc dengan buffer, tapi itu masih akan berulang dan lambat.

dmahr
sumber
0

Anda bisa menggunakan Point Distance (Analisis) Alat ini membuat tabel dengan jarak antara dua set titik. jika radius pencarian default digunakan, jarak dari semua titik input ke semua titik dekat dihitung. Tabel output bisa sangat besar. Misalnya, jika fitur input dan dekat masing-masing memiliki 1.000 poin, maka tabel output dapat berisi satu juta catatan.

salehamra
sumber
Bagaimana ini bisa diterapkan untuk menemukan koordinat titik baru yang tidak muncul dalam input? Mungkin Anda salah membaca pertanyaan?
whuber
0

Titik terjauh ke set poin Anda akan menjadi kebalikan dari titik paling dalam set Anda. Misalnya, jika titik paling dalam di set Anda memiliki koordinat 49 derajat Utara dan -144 derajat Timur, maka titik timbal balik dan terjauh akan memiliki koordinat 49 derajat Selatan dan 36 derajat Barat. Ini tidak sepenuhnya benar karena Bumi tidak bulat sempurna, melainkan geoidal; oleh karena itu, kebenaran poin hasil Anda sangat bergantung pada proyeksi dan sistem geografis apa (ortografis, ortorektifikasi ...) yang Anda gunakan. Akan sangat membantu untuk menemukan timbal balik untuk seluruh set (mentransfer antipode untuk satu set) dan kemudian menjalankan analisis permukaan dalam medan yang dicakup oleh set poin antipode, karena medan mungkin sangat. Saya berasumsi pertanyaan Anda bukan tentang poin pada benda luar angkasa, seperti planet lain, atau bulan. Maaf, Saya tidak punya kode VB untuk Anda. 🙄

Yuriy Shevchuk
sumber
Titik yang paling jauh dari semua titik lainnya dalam satu set akan menjadi yang paling dalam (titik yang paling jauh dari semua titik terluar di sepanjang tepi), itu akan tetap menjadi yang paling dekat ke setiap titik tepat di sebelahnya di sebelahnya. Ini adalah analisis cluster, tidak menyenangkan. Mungkin lebih baik untuk melihat atom muatan yang sama dalam Fisika.😐
Yuriy Shevchuk