Ini spesifik untuk ArcGIS.
Saya memiliki 2 titik shapefile A
dan B
, yang pertama ( A
) adalah satu titik yang berisi panjang lat, yang kedua ( B
) adalah banyak titik (lebih dari 12k) yang masing-masing berisi lat dan panjangnya. Apa yang saya coba lakukan adalah mengotomatiskan pemilihan 75% B
titik shapefile berdasarkan jarak dari shapefile A
. Dengan kata lain saya ingin memilih 75% B
titik shapefile terdekat untuk A
satu titik shapefile .
arcgis-10.0
spatial-statistics
Furlong
sumber
sumber
Jawaban:
Anda bisa membuat Multiple Ring Buffer pada shapefile A, dan kemudian melakukan join spasial dari Buffer ke shapefile B. Ketika Anda melakukan join spasial dari poligon dan titik, Anda mendapatkan hitungan jumlah titik di setiap poligon dalam atribut. tabel bergabung. Kemudian, dengan memeriksa jumlah total poin dalam buffer, Anda bisa mendapatkan 75% dari poin dalam shapefile B.
Pendekatan yang sedikit berbeda adalah dengan skrip ini di Python, dan periksa 75% dalam satu lingkaran, tetapi jika itu adalah perhitungan sekali mati Anda mungkin tidak memerlukan itu.
sumber
Untuk 1.200 poin (atau bahkan hingga 12 juta poin?) Saya baru saja memasukkannya ke dalam memori sebagai Koleksi Generik - dalam hal ini adalah SortedList dari daftar . Ini bisa disederhanakan dengan hanya melewatkan titik ketika Anda mengalami situasi dengan beberapa titik yang jaraknya sama dari titik asal. Selain itu, untuk kinerja, pertimbangkan untuk menggunakan hashtable alih-alih SortedList, dan menyortir sekali setelah memasukkan semua jarak. Itu akan membutuhkan beberapa baris kode lagi (?).
Saya tidak punya waktu untuk menguji ini, tetapi c # ini dapat membantu Anda memulai:
sumber
Script geoprocessing Python adalah pilihan yang jelas:
sumber
Saya memiliki masalah ini beberapa tahun yang lalu. Saya merasa lebih mudah untuk menyimpan data sebagai 'data datar', mengulang semua data dan menghitung jarak secara manual, lalu mengambil 75% teratas (saya benar-benar mempertahankan 10% teratas). Saya kemudian melakukan hal yang sama di ArcIMS menggunakan perhitungan jarak mereka dan butuh waktu lebih lama.
Buffering adalah overhead yang besar, namun perhitungan matematika adalah keahlian 'puters'. Jika Anda buffer 12k poin, saya pikir Anda akan memiliki masalah kinerja.
sumber