Mencoba menemukan cara pemrograman (arcpy) memindahkan legenda jika ia memotong fitur dalam bingkai data, dalam skenario di bawah ini, jika legenda mengaburkan pandangan AOI, maka saya ingin itu pindah ke sudut yang berbeda sampai bukan isu. Ini harus di atas bingkai data yang bertentangan dengan membuat bingkai data lebih kecil dan hanya meletakkannya di samping.
arcpy
legend
data-frame
Slevy
sumber
sumber
Jawaban:
Input: Script:
KELUARAN:
CATATAN: Untuk setiap halaman dalam skrip halaman yang didorong data, upaya untuk menemukan ruang yang cukup di sudut bingkai data untuk menempatkan Legend (disebut myLegend) tanpa mencakup lapisan fitur apa pun yang terlihat. Script menggunakan fishnet untuk mengidentifikasi sel sudut. Dimensi sel sedikit lebih besar dari dimensi Legenda dalam unit tampilan data. Sel sudut adalah sel yang memiliki batas dengan 3 tetangga. Jika tidak ada sudut atau ruang ditemukan, Legenda ditempatkan di luar kerangka data pada halaman tata letak.
Sayangnya saya tidak tahu bagaimana mengelola permintaan definisi halaman. Poin yang ditampilkan pada awalnya tersebar di sekitar tingkat RECTANGLE, dengan beberapa dari mereka tidak memiliki hubungan dengan halaman. Arcpy masih melihat seluruh lapisan, meskipun saya menerapkan kueri definisi (kecocokan) ke poin.
sumber
Cara yang akan saya lakukan ini adalah dengan membuat kelas fitur "elemen legenda" yang mewakili elemen legenda Anda dalam sistem koordinat yang sama dengan fitur-fitur tersebut.
Dengan begitu Anda bisa menggunakan Select Layer By Location untuk menguji apakah elemen legenda Anda tumpang tindih dengan fitur apa pun, dan memindahkannya jika ada.
Ini non-sepele tetapi sangat bisa dilakukan dan ada T&J di situs ini ( Konversi titik XY ke unit halaman XY menggunakan arcpy? ) Yang dapat digunakan untuk mengerjakan bagian tersulit dari konversi antara koordinat halaman dan peta.
sumber
Di bawah ini adalah kode yang saya gunakan untuk memindahkan legenda dan inset peta agar tidak mengaburkan data. Anda bertanya tentang fungsi periksa perpotongan pada utas lainnya. Ini adalah implementasi kode orang lain. Saya tidak ingat persis dari mana asalnya. Itu adalah naskah untuk memindahkan peta inset untuk negara bagian di New England, kurasa.
inset adalah pegangan untuk elemen legenda atau inset map.
Kemudian, kode di bawah ini dari pos ini ( Halaman Data Didorong dengan Legenda Bergerak / Inset ) harus lebih masuk akal.
sumber