Lagi

Menyalin XY ke clipboard menggunakan Python Add-In (ArcMap)


Saya mencoba membuat alat sederhana untuk menyalin XY dari tempat saya mengklik tombol mouse. Yang sudah saya lakukan adalah:

  1. buat file add-in menggunakan Python Add-In Wizard
  2. buat bilah alat dan alat di dalamnya

dalam file *.py saya dapatkan:

import arcpy import pythonaddins import win32clipboard sebagai clipboard class p_tool(object): def __init__(self): self.enabled = True self.shape = "NONE" def onMouseDownMap(self, x, y, button, shift): button = 1 shift = 2 clipboard.OpenClipboard() clipboard.EmptyClipboard() xy = str(x)+"+str(y) clipboard.SetClipboardData(xy, clipboard.CF_TEXT) clipboard.closeClipboard() pesan = xy pythonaddins.MessageBox(message, " Koordinat Saya", 0)

Tentang win32clipboard - saya menguji di python windon di ArcMap dan saya dapat mengimpornya dan openclipboard() tetapi emptyclipboard() tidak berfungsi dan memberi saya kesalahan itu:

Berkas "", baris 1, dalam kesalahan: (1418, 'EmptyClipboard', 'Utas tidak membuka papan klip.')


Kode berikut menggunakan pendekatan memanggil subproses dan menyalurkan teks ke clipboard.

Beberapa hal yang perlu diperhatikan:

  1. saya menggunakan diMouseUpMap peristiwa, ini mengembalikan koordinat XY dalam unit peta.
  2. Saya menempatkan koma di antara angka-angka sehingga tidak ada spasi di antara mereka.
  3. Membungkus kode dalam percobaan-kecuali untuk menangkap kegagalan apa pun.
import arcpy import pythonaddins import subprocess class p_tool(object): """Implementasi untuk pythonaddintest_addin.tool (Tool)""" def __init__(self): self.enabled = True self.shape = "NONE" def onMouseUpMap(self, x , y, tombol, shift): coba: xy = str(x)+','+str(y) command = "echo " + xy + " | klip" i=subprocess.check_call(command, shell=True) pesan = xy pythonaddins.MessageBox(pesan, 'Koordinat Saya', 0) kecuali Pengecualian sebagai e: pythonaddins.MessageBox(str(e),"Error",0)

Tentukan sistem koordinat baru

Peta atau pemandangan selalu memiliki sistem koordinat horizontal, dan secara opsional memiliki sistem koordinat vertikal. Sistem koordinat horizontal default adalah WGS84 Web Mercator untuk peta dan pemandangan. Untuk pemandangan global, sistem koordinat horizontal default adalah WGS84.

Peta dan pemandangan kosong memperoleh sistem koordinatnya dari lapisan pertama yang ditambahkan padanya. Saat Anda menambahkan lapisan ke peta atau pemandangan, mereka secara otomatis ditampilkan menggunakan sistem koordinat yang sama dari peta atau pemandangan. Anda dapat menentukan sistem koordinat untuk peta atau pemandangan, atau Anda dapat menentukan yang baru. Anda dapat membuat sistem koordinat jika Anda mengetahui parameter pasti yang diperlukan, atau Anda dapat membuat sistem koordinat yang disarankan berdasarkan tingkat data Anda dan aspek apa yang ingin Anda pertahankan.


Fitur yang akan disalin.

Kelas fitur yang akan dibuat dan fitur yang akan disalin. Jika kelas fitur keluaran sudah ada dan opsi penimpaan disetel ke true, keluaran akan dihapus terlebih dahulu. Jika kelas fitur keluaran sudah ada dan opsi penimpaan disetel ke salah, operasi akan gagal.

Kata kunci konfigurasi geodatabase yang akan diterapkan jika outputnya adalah geodatabase ArcSDE atau file geodatabase.

Parameter Spatial Grid 1, 2, dan 3 hanya berlaku untuk file geodatabases dan workgroup tertentu dan kelas fitur geodatabase perusahaan. Jika Anda tidak terbiasa dengan pengaturan ukuran grid, biarkan opsi ini sebagai 0,0,0 dan ArcGIS akan menghitung ukuran optimal untuk Anda. Untuk informasi selengkapnya tentang parameter ini, lihat dokumentasi alat Tambahkan Indeks Spasial.

Ukuran sel dari grid spasial kedua. Biarkan ukurannya pada 0 jika Anda hanya ingin satu kotak. Jika tidak, atur ukurannya setidaknya tiga kali lebih besar dari Spatial Grid 1.

Ukuran sel dari grid spasial ketiga. Biarkan ukurannya pada 0 jika Anda hanya ingin dua kisi. Jika tidak, atur ukurannya setidaknya tiga kali lebih besar dari Spatial Grid 2.


Pemetaan

Penerbitan

Saat Anda menerbitkan layanan fitur, properti Perbolehkan pembaruan kurva sebenarnya sekarang diaktifkan secara default. Selain itu, Anda sekarang memiliki opsi untuk membatasi editor agar hanya memperbarui kurva sebenarnya dalam layanan fitur menggunakan klien yang mampu membuat dan mengedit kurva sebenarnya.

Anda juga memiliki opsi saat memublikasikan layanan fitur untuk secara otomatis memasukkan nilai-m NaN saat geometri pengeditan klien dalam layanan fitur tidak menyediakan nilai-m. Anda diblokir dari layanan fitur pengeditan yang berisi lapisan m-enabled dari klien tertentu, seperti ArcGIS Online dan Portal untuk ArcGIS . Jika lapisan Anda tidak memerlukan nilai-m, Anda dapat mengaktifkan properti Perbolehkan pembaruan geometri tanpa nilai-m pada layanan fitur untuk secara otomatis memasukkan nilai NaN.

Geodatabase

Daftarkan tampilan dengan geodatabase

Alat geoprocessing Daftar dengan Geodatabase telah diperluas untuk memungkinkan Anda mendaftarkan tampilan. Saat Anda mendaftarkan tampilan dengan geodatabase, geodatabase menyimpan properti tampilan seperti bidang mana yang digunakan untuk ObjectID dan informasi tentang atribut spasial. Ini meningkatkan kinerja saat Anda menambahkan tampilan ke peta, karena ArcMap tidak harus meminta Anda atau menanyakan konten tampilan untuk menemukan informasi ini.

Anda juga dapat membuat metadata untuk tampilan yang terdaftar dengan geodatabase, karena metadata disimpan di geodatabase.

Tampilan terdaftar dapat disertakan dalam peta yang Anda terbitkan sebagai layanan fitur khusus kueri.

Tabel file log di geodatabase di PostgreSQL dan SQL Server

Saat Anda menggunakan klien ArcGIS 10.5 dengan geodatabase di PostgreSQL atau SQL Server, tabel file log dibuat sebagai tabel sementara. Tabel file log sementara ini dibuat per pengguna, jadi tidak ada perebutan sumber daya untuk beberapa koneksi yang dibuat oleh pengguna yang sama, dan tabel secara otomatis dihapus saat sesi klien berakhir. Penggunaan tabel sementara juga meningkatkan kinerja, karena data yang dimasukkan ke dalam tabel sementara tidak harus ditulis ke dalam log transaksi database.

Klien ArcGIS 10.5 akan selalu menggunakan tabel sementara untuk tabel file log di PostgreSQL dan SQL Server oleh karena itu, administrator geodatabase tidak perlu lagi mengubah pengaturan tabel file log untuk geodatabase di kedua database ini. Perhatikan bahwa klien ArcGIS 10.5 akan mengabaikan perubahan file log yang dibuat menggunakan alat Configure Geodatabase Log File Tables.

Metode penyimpanan baru untuk atribut geometri di geodatabase di SQL Server

Di ArcGIS 10.5, kelas fitur yang Anda buat di geodatabase di SQL Server yang menggunakan penyimpanan Geometri atau Geografi akan menyimpan atribut seperti ID titik, multipatch, dan entitas parametrik (kurva sebenarnya) langsung di tabel bisnis. Sebelum ArcGIS 10.5, informasi ini disimpan di tabel samping yang bergabung dengan tabel bisnis. Penggabungan ini dapat menyebabkan kinerja yang buruk jika tabel samping berisi banyak atribut geometri. Performa yang menurun ini sering terlihat saat bekerja dengan kumpulan data parcel fabric misalnya.

Kelas fitur yang Anda migrasikan dari jenis penyimpanan SDEBINARY ke penyimpanan Geometri atau Geografi juga akan menggunakan format ini.

Jika Anda membuat kelas fitur Geometri atau Geografi atau memigrasikan data ke penyimpanan Geometri atau Geografi sebelum 10.5, Anda dapat menjalankan alat pemrosesan geo Migrate Storage untuk memindahkan atribut geometri ke dalam tabel bisnis dan memanfaatkan peningkatan kinerja.

Perhatikan bahwa klien 10.3 dan yang lebih lama tidak dapat tersambung ke kelas fitur yang menggunakan jenis penyimpanan baru ini.

Jenis penyimpanan raster default baru

Saat Anda membuat geodatabase menggunakan ArcGIS 10.5, parameter RASTER_STORAGE di bawah kata kunci konfigurasi DEFAULTS diatur ke RASTERBLOB di geodatabase di Oracle, PostgreSQL, dan SQL Server. Rasterblob menyediakan penyimpanan BLOB yang dioptimalkan dari data raster di tabel bisnis dari dataset raster atau dataset mosaik, yang mengurangi operasi I/O dan meningkatkan kinerja.

Jika Anda meningkatkan geodatabase ke 10.5, pengaturan RASTER_STORAGE default Anda tidak akan berubah. Untuk memanfaatkan penyimpanan raster baru yang dioptimalkan ini, ubah pengaturan di bawah kata kunci DEFAULTS Anda atau buat kata kunci yang menggunakan pengaturan ini dan tentukan kata kunci baru saat membuat atau menyalin kumpulan data raster atau kumpulan data mosaik. Untuk informasi tentang mengubah atau membuat kata kunci konfigurasi, lihat Mengubah kata kunci konfigurasi.

Perhatikan bahwa versi klien ArcGIS sebelum 10.5 tidak dapat membuka kumpulan data raster atau kumpulan data mosaik yang menggunakan penyimpanan rasterblob. Jika geodatabase 10.5 Anda akan diakses oleh klien ArcGIS lama yang perlu bekerja dengan raster, ubah parameter RASTER_STORAGE default di geodatabase menjadi BINARY (PostgreSQL atau SQL Server) atau BLOB (Oracle).

Sinkronkan pengaturan open_cursors untuk geodatabase di Oracle

10.5 geodatabases di Oracle berisi prosedur tersimpan— sde.gdb_util.update_open_cursors —yang memungkinkan Anda untuk menyinkronkan nilai open_cursors yang telah Anda tetapkan di Oracle dengan pengaturan di geodatabase Anda.

Fungsi ST_Transform diperluas untuk data ST_Geometry di PostgreSQL

Fungsi ST_Transform SQL di PostgreSQL sekarang menggunakan SRID kedua sebagai input untuk memungkinkan Anda mengonversi data antara dua sistem koordinat geografis yang berbeda.

Akhir dukungan

Anda tidak dapat membuat atau menggunakan pencari di geodatabase menggunakan ArcGIS 10.5.

ArcGIS tidak lagi mendukung pembuatan kumpulan data yang berisi Oracle SDO_GeoRaster. Anda masih dapat melihat data SDO_GeoRaster di geodatabase lama, tetapi Anda tidak dapat membuat kumpulan data baru yang berisi bidang SDO_GeoRaster menggunakan klien ArcGIS 10.5.

Raster

Jendela Penyesuaian Blok telah diperbarui dengan alat baru untuk membantu Anda menyesuaikan kumpulan data mosaik Anda. Ada juga empat alat geoproses baru untuk membantu proyek pemetaan orto Anda: Build Stereo Model , Compute Camera Model , Generate Point Cloud , dan Interpolate From Point Cloud .

Ada tiga fungsi raster yang tersedia untuk melakukan pemrosesan on-the-fly pada raster: Fungsi Metadata Kunci, Fungsi Atribut Rasterisasi, dan Fungsi Zonal Remap.

Jenis raster dan sensor berikut didukung, dimulai dengan rilis ArcGIS 10.5: ADS, Deimos-2, DubaiSat-2, Jilin-1, dan KOMPSAT-3.

Geocoding

Pencari alamat yang disimpan di geodatabases tidak lagi didukung dan tidak akan muncul sebagai input ke alat atau terlihat di ArcGIS 10.5 atau yang lebih baru. Pencari lokasi juga tidak dapat lagi dibuat dan disimpan ke geodatabase.

Sebelum memperbarui ke ArcGIS 10.5, Anda harus menyalin semua pencari yang disimpan dalam geodatabase ke folder file. Ini akan memastikan pencari Anda tetap terlihat saat menggunakan ArcGIS 10.5 dan mencegah Anda untuk membuat pencari lagi.

Peningkatan kualitas dan kinerja telah dilakukan pada gaya pencari alamat.

Anda sekarang dapat membuat pencari alamat yang mendukung pencarian nama kota alternatif selain nama jalan alternatif.


Jawaban @ nichijou baik-baik saja. Tetapi tidak perlu benar-benar meletakkan buffer di jendela. Anda dapat menggunakan find-file-noselect untuk mengunjungi buffer tanpa menampilkannya.

Saya tidak dapat mereproduksi kesalahan Anda, dan ingin menyarankan bahwa Anda mungkin menggunakan xclip secara tidak benar. Jawaban ini juga harus bermanfaat bagi orang lain karena tidak ada yang perlu membuat fungsi emacs khusus agar ini berfungsi.

Dari buffer dired, saya memilih file berukuran kecil, dan masuk & untuk mendapatkan dialog async. Lalu saya masukkan xclip -i . Itu mengirimkan konten file yang dipilih ke clipboard PRIMARY, salah satu dari tiga clipboard yang ada di semua lingkungan GUI modern (dua lainnya disebut SECONDARY dan CLIPBOARD). Kemudian, dari emulator terminal di luar emacs, saya menjalankan xclip -o dan saya melihat isi file itu dimasukkan ke terminal.

Jika Anda ingin xclip beroperasi pada clipboard CLIPBOARD (saya tahu, ini membingungkan, saya tidak mendesainnya), lalu berikan argumen -selection clipboard . Secara pribadi, saya mendefinisikannya sebagai alias shell. Ada juga program baris perintah xsel , yang memiliki nama opsi yang lebih pendek.


Saat menghapus konten buffer di Vim, Anda dapat mengirimkannya ke lubang hitam daftar "_ . Dari :help quote_ :

Saat menulis ke register ini, tidak ada yang terjadi. Ini dapat digunakan untuk menghapus teks tanpa mempengaruhi register normal.

Jadi cukup gunakan perintah ini di langkah Anda 2:

Atau Anda juga bisa menggunakan perintah :delete dengan range:

Perintah Ex ini menghapus setiap baris ke dalam register lubang hitam.

Tentu saja, semuanya mungkin di Vim!

Ada sistem register di vim, dan clipboard adalah register + (atau * , itu tergantung)

Secara default, teks yang Anda potong dimasukkan ke dalam register clipboard, tetapi Anda dapat memasukkannya ke dalam register lubang hitam ( :h quote_ ) seperti:

"_ di sini memberi tahu vim untuk memasukkan apa yang akan Anda potong ke dalam register lubang hitam, jadi register + Anda (alias clipboard Anda) tetap tidak tersentuh.

Dan keajaiban tidak berhenti di situ, jika itu adalah tugas yang sering Anda lakukan, Anda dapat mengatur pemetaan untuk melakukan itu, misalnya:

Jadi lain kali Anda perlu menghapus seluruh file, Anda hanya perlu menekan gd


3 Jawaban 3

Ini tidak cukup sempurna untuk apa yang Anda inginkan, tetapi saya pikir itu mungkin membuat Anda lebih dekat. Quicksilver memiliki alat baris perintah. Saat diinstal, Anda dapat menyalurkan file dari baris perintah ke aplikasi Quicksilver, dan dari sana mengirimkannya sebagai lampiran di Mail.

Untuk menginstal alat baris perintah Quicksilver, aktifkan Quicksilver. Kemudian arahkan ke Quicksilver > Preferences untuk membuka jendela preferensi. Klik Preferensi di kanan atas jendela. Di sebelah kiri, klik Alat Baris Perintah dan instal.

Di Terminal, Anda dapat mengetik

Menekan enter akan mengirim file-file itu ke panel pertama Quicksilver. Tekan tab untuk berpindah ke panel tindakan dan pilih tindakan Mail/Email Baru Dengan Lampiran. Tekan enter, dan email baru dengan lampiran file yang Anda pilih akan muncul.

Perhatikan bahwa Anda juga harus menginstal plugin Mail dan Command Line di Quicksilver (Quicksilver > Preferences > Plug Ins).


Tidak ada +papan klip?

Vim memerlukan tanda fitur +clipboard agar semua ini berfungsi, Anda dapat memeriksa apakah Vim Anda memilikinya dengan menggunakan :echo has('clipboard') dari dalam Vim (jika outputnya 0 , itu bukan hadir, jika itu 1 , itu), atau memeriksa output dari vim --version untuk +clipboard .

Sebagian besar distribusi Linux dikirimkan dengan "minimal" Vim build secara default, yang tidak memiliki +clipboard , tetapi Anda biasanya dapat menginstalnya:

  • Debian & Ubuntu: Instal vim-gtk3 .
  • Fedora: instal vim-X11 , dan jalankan vimx alih-alih vim (info lebih lanjut).
  • Arch Linux: instal gvim (ini juga akan mengaktifkan +clipboard untuk vim normal).

Anda juga dapat menggunakan xclip , xcopy , atau xsel untuk menyalin teks ke clipboard, lihat pertanyaan berikut untuk solusi:

Anda juga dapat menggunakan clipboard pada mesin jarak jauh jika Anda mengaktifkan penerusan X11 melalui SSH. Ini sangat berguna dengan tip di atas karena Anda kemudian dapat menggunakan xclip untuk mengakses clipboard desktop Anda. Vim pada mesin yang Anda ssh-ing masih membutuhkan fitur +clipboard.

Ini memerlukan pengaturan ForwardX11Trusted, dan harus hanya dilakukan dengan server tepercaya, karena ini memberi server kontrol hampir penuh atas sesi X11 Anda:

Untuk membuat pengaturan ini tetap (sehingga Anda tidak perlu menambahkan -XY setiap saat), Anda dapat melakukan sesuatu seperti ini di


Berikut ini hanya akan berfungsi jika vim --version menunjukkan bahwa Anda memiliki fitur +xterm_clipboard. Jika tidak, Anda harus menginstal paket tambahan atau mengkompilasi ulang vim dengan menambahkan fitur tersebut.

Sebenarnya ada dua opsi untuk ini:

salinan ke buffer clipboard "biasa" (sehingga Anda dapat menempel menggunakan Ctrl + V, klik kanan dan pilih "Tempel" dll), sementara

salinan ke pilihan X11 - Anda dapat menempel dari buffer ini menggunakan klik tengah.

Perhatikan bahwa "* dan "+ bekerja dua arah. Jadi jika Anda telah memilih beberapa teks di aplikasi lain, Anda dapat menempelkannya ke vim menggunakan "*p dan jika Anda telah menyalin beberapa teks (menggunakan, katakanlah, Ctrl-C) maka Anda dapat menempelkannya ke vim menggunakan "+p .


Anda harus menggunakan pintasan tmux. Dengan asumsi pintasan perintah tmux Anda adalah default: Ctrl + b , lalu:

Ctrl + b , [ Masuk ke mode salin(?).

Pindah ke awal/akhir teks untuk menyorot.

Mulai menyorot teks (di Arch Linux). Ketika saya telah mengkompilasi tmux dari sumber di OSX dan Linux lainnya, biasanya hanya Space saja yang berfungsi. Teks yang dipilih mengubah warna, jadi Anda akan tahu apakah perintahnya berfungsi.

Pindah ke ujung teks yang berlawanan untuk disalin.

Alt + w Menyalin teks yang dipilih ke clipboard tmux. (Di Mac gunakan Esc + w .)

Pindahkan kursor ke panel tmux yang berlawanan, atau jendela tmux yang sama sekali berbeda. Letakkan kursor di tempat Anda ingin menempelkan teks yang baru saja Anda salin.

Ctrl + b , ] Tempel teks yang disalin dari clipboard tmux.

tmux cukup bagus dalam memetakan perintah ke pintasan keyboard khusus.

Lihat Ctrl + b , ? untuk daftar lengkap pintasan keyboard yang disetel.

Sayangnya, saya belum dapat menambahkan komentar pada jawaban Alex Leach, jadi saya akan menyertakan tambahan di sini untuk pengguna Mac OS X:

Jika Anda menggunakan vim dan tmux di macOS (Diuji pada macOS 10.12.2, tmux 2.3):

(Asumsikan bahwa kombinasi tombol awalan tmux adalah awalan . Awalan adalah ctrl + b secara default.)

  • Salinan:
    1. Tekan awalan + [ untuk masuk ke mode salin.
    2. Gunakan tombol panah untuk menuju ke awal/akhir pemilihan teks.
    3. Tekan ctrl + spasi (Jika Anda telah menetapkan ctrl + spasi sebagai awalan, Tekan ctrl + spasi + spasi sebagai gantinya)
    4. Gunakan tombol panah untuk berpindah ke sisi lain pilihan.
    5. Tekan ctrl + w .
  • Tempel:
    1. Tekan awalan + ] dalam mode penyisipan.

Saya terhubung ke server CentOS saya di mesin Windows menggunakan klien ssh terminal ZOC. Inilah yang bekerja untuk saya:

  • Masuk ke mode salin: <prefix> + [
  • Mulai salin: <Space>
  • Salin teks: <Enter>
  • Tempel teks: <prefix> + ]

Jika Anda memiliki vim terbuka, lebih baik menggunakan vim copy paste untuk menyalin teks.

Salin tempel Tmux akan berfungsi, namun ada beberapa kelemahan.

Pertama, saat menyalin beberapa baris teks, Anda harus memilih beberapa baris. Tmux copy paste biasanya tidak mengerti bahwa vim memiliki nomor baris atau ada tanda di selokan vim (seperti nomor relatif/nomor absolut). Akibatnya, itu akan menyalinnya juga.

Kedua, saya telah menemukan bahwa jika teks memiliki pemformatan khusus bahasa tertentu, dan Anda langsung mencoba menyalin tempel menggunakan tmux ke vim, itu akan mengacaukan pemformatan. Ini dapat dihindari dengan menggunakan set pasta! . Namun, ini membutuhkan lebih banyak pekerjaan.

Gunakan "+y untuk menyalin dan "+p untuk menempel

Vim secara native menyediakan metode untuk menyalin tempel antara buffer vim dan clipboard sistem, menggunakan "+y atau "*y . Kemudian tempel menggunakan "+p atau "*p . Ini akan menghindari penyalinan nomor relatif di selokan atau tanda acak lainnya yang tidak relevan dengan vim


Tonton videonya: ArcGIS - Export shapefile attribute table to CSV or Text File (Oktober 2021).