Melakukan seleksi "sebagian besar dalam" menggunakan ArcMap?

8

Saya mencari cara untuk menentukan apakah polyline "sebagian besar dalam" poligon. Karena sebagian besar di dalam adalah arbitrer, saya harus dapat memasukkan persentase pada pelaksanaannya.

Saya pikir mungkin ada opsi di ArcMap menggunakan Select By Location, tetapi sepertinya tidak ada. Ada metode serupa, seperti "sepenuhnya di dalam" tetapi saya tidak melihat bagaimana saya dapat menggunakan salah satu dari mereka untuk mencapai apa yang saya cari.

Apakah fungsi atau metode ini ada untuk mencapai ini?

amasephy
sumber
mendefinisikan 'sebagian besar dalam' ... 75% dalam?
DPSSpatial
Ini adalah centroid di dalam opsi, sehingga biasanya sebagian besar di dalam
HeikkiVesanto
@mapBaker Poin bagus tentang persentasenya. Mungkin jika menggunakan ArcPy ini bisa menjadi variabel yang dapat disesuaikan untuk menghasilkan hasil yang diinginkan.
amasephy
1
@Vesanto Centroid tidak akan berfungsi, jika polyline memotong klip sudut poligon, centroid bisa berada di dalam poligon, tetapi sebagian besar mungkin tidak.
amasephy
2
Saya akan melakukan perpotongan antara poligon dan garis FC dan kemudian statistik untuk menentukan% dari setiap baris dalam poligon tertentu (atau poligon apa pun). Dari sini, maka saya akan melakukan seleksi saya.
dklassen

Jawaban:

8

maka Anda hanya perlu melakukan join table to table pada dua file baris (asli dan output dari alat GP) dan kemudian menghitung perbedaan persentase antara dua bidang Shape.Len (jika segmen garis dalam file asli adalah 100 kaki panjang , dan segmen garis yang sama, yang terpotong pada poligon, panjangnya 75ft, maka 75% dari garis itu akan berada dalam poligon). Maka Anda bisa melakukan pemilihan dengan atribut berdasarkan persentase ini.

Sekali lagi, saya tahu ini agak terlibat, ini menciptakan dataset perantara, dan mungkin ada cara yang lebih mudah untuk melakukan ini yang saya tidak tahu; tetapi, jika Anda menulis model atau skrip untuk melakukan hal itu, dan menghapus garis output FC ketika Anda selesai melakukannya, itu tidak akan tampak terlalu sulit bagi pengguna akhir ... bahkan jika itu sedikit menyebalkan untuk membangun awalnya.

Hanya beberapa pemikiran, dan beri tahu saya jika itu tidak masuk akal dan saya akan mencoba dan menjelaskan dengan lebih baik.

John
sumber
+1 Itu kedengarannya seperti pemikiran yang cukup baik bagi saya karena mereka memanfaatkan kemampuan ArcGIS dengan baik dan, tidak peduli bagaimana itu dilakukan, benar-benar tidak ada cara untuk menghindari beberapa bentuk operasi overlay poligon-vs poligon. (BTW, saya pikir Anda adalah korban drive-by downvoter dan saya minta maaf untuk itu.)
whuber
@ John itulah yang saya pikirkan juga ... TETAPI - untuk melakukan gabung, garis input akan membutuhkan bidang UNIQUEID (bukan bidang ArcGIS OBJECTID yang memikirkan Anda) yang dapat Anda lakukan dengan bergabung di ...
DPSSpatial
1
@mapBaker Terima kasih, itu poin yang bagus (saya lupa jika klip mempertahankan input OID dalam output seperti beberapa alat lakukan). Anda dapat menghitung OID ke bidang lain sebelum Anda menjalankan klip untuk memberi Anda UniqueID jika belum tersedia.
John
@ John ohhhh K ...
DPSSpatial
Solusi ini akan bekerja untuk saya, tapi saya pikir penggunaan dklassen dari Intersect bukan Clip membuatnya lebih mudah. Saya akhirnya menggunakan kombinasi dari tanggapan yang saya terima. Saya tidak yakin siapa yang harus mendapat pujian karena menjawab pertanyaan itu.
amasephy
3

Berdasarkan tanggapan yang saya terima di sini, saya menggunakan kombinasi ide yang disediakan.

Pertama yang saya lakukan adalah menambahkan bidang Panjang dan Persen ke dataset asli saya. Saya menyalin nilai Shape.Length ke bidang Length.

Kedua, alih-alih menggunakan Klip, yang secara signifikan lebih berfungsi dalam hal ini, saya menggunakan alat Intersect. Ini "klip" polylines yang memotong poligon dan menambahkan beberapa atribut yang berpotensi berharga. Meskipun memiliki bidang ID yang benar-benar unik, saya tidak berpikir itu benar-benar diperlukan saat menggunakan bidang panjang statis.

Akhirnya, saya hanya cukup menghitung persentase perbedaan antara Shape.Length baru dan bidang Panjang statis ke bidang Persen. Setiap polyline yang memotong batas poligon akan memiliki persentase kurang dari 100.

amasephy
sumber
2
  1. Membagi polyline di setiap titik,
  2. untuk setiap panggilan segmen sepenuhnya dalam pada titik akhir,
  3. setiap segmen yang sepenuhnya dalam memiliki 100% dari panjangnya dalam poligon, (dengan asumsi tidak ada poligon masuk kembali), dan panjangnya dapat ditambahkan ke total,
  4. setiap garis parsial dapat dipisah menjadi mengatakan 10 segmen dan perhitungan yang sama diterapkan.
  5. Bandingkan total dengan panjang yang dihitung untuk mendapatkan resolusi 10%, (jika Anda membutuhkan hasil yang lebih akurat maka Anda dapat membagi lebih halus pada garis parsial).
  6. Anda bahkan dapat menyimpan total panjang garis yang benar-benar di luar juga dan hanya melakukan perhitungan garis parsial hanya jika Anda tidak memiliki jawaban yang melewati ambang Anda.
Steve Barnes
sumber