Saya memiliki kelas kontur Contour, dengan interval 0,2 meter. Saya hanya ingin memilih Kontur tersebut, yang berada pada interval 1 m?
Saya telah mencoba menggunakan sintaks berikut dalam dialog 'Pilih berdasarkan Atribut' (dalam ArcMap), tetapi memilih semua kontur:
Mod("ELEVATION", 1)=0
Kueri apa yang harus saya jalankan?
arcgis-desktop
sql
select-by-attribute
contour
Devdatta Tengshe
sumber
sumber
Jawaban:
Trik sederhana untuk memilih hanya nilai Integer, adalah dengan menggunakan sintaks berikut:
Mod(Round("ELEVATION", 0)*10, 10)=0
Penggandaan ini dengan 10, membuat semua nilai Integer, dan kemudian kami memilih hanya yang merupakan kelipatan dari 10.
Jika Anda ingin memilih Kelipatan dari beberapa nomor lain, kalikan saja 10 dengan intervalnya.
Untuk mendapatkan kontur pada interval 5 m, gunakan:
Mod(Round("ELEVATION",0) * 10, 50)=0
Untuk mendapatkan kontur pada interval 100 m, gunakan:
Mod(Round("ELEVATION", 0) * 10, 1000)=0
Pembaruan
Sesuai saran Whuber yang diberikan dalam komentar di bawah, saya telah menambahkan fungsi pembulatan dalam ekspresi kueri.
sumber
MOD
akan dikenakan kesalahan pembulatan titik-mengambang - dan itu penting di sini: jika Anda rendah bahkan dengan angka paling tidak signifikan,MOD
dapat mengembalikan nilai yang salah (tergantung bagaimana penerapannya). Saya ingin menyarankan pembulatan nilai-nilai sebelum menerapkanMOD
sebagai cara untuk mencegah kesalahan-kesalahan halus (dan berbahaya) ini.ROUND
untuk mencapai ketepatan yang lebih dalam dalam pembulatan.Berikut ini opsi permintaan lain. Sebagian besar melakukan hal yang sama dengan jawaban yang tercantum di atas tetapi (menurut saya) sedikit lebih mudah untuk menyesuaikan skenario yang berbeda.
Untuk menampilkan kontur yang dapat dibagi 10
Untuk menampilkan kontur yang dapat dibagi 50
Untuk menampilkan kontur setengah meter
Untuk menampilkan kontur 10 meter dengan offset arbiter (mis. 10.2, 20.2, 30.2)
Pada akhirnya, ini hanyalah pilihan lain untuk dipertimbangkan.
sumber
Ini dimaksudkan sebagai komentar atas jawaban di atas - maaf .
Sintaks akan bervariasi tergantung pada jenis DB tempat Kontur Anda disimpan tetapi solusi yang diberikan tampaknya memilih kontur setelah membulatkan nilainya. Jadi misalnya dalam pengujian saya ini mencapai set yang dipilih yang termasuk 0,3 m dan 0,4 m. Bahkan, itu tidak termasuk nilai-nilai.
Persamaan ini
Mod(Round("ELEVATION" * 10, 0), 2)=0
Memberi saya hasil yang tampaknya cocok dengan apa yang ditanyakan si penanya.
sumber
Untuk mendapatkan kontur Indeks, saya menggunakan ini di Kalkulator Bidang:
Di ARCMAP
'Ketik "c" (tanpa tanda kutip) di bidang input teks di bagian bawah kotak dialog dan klik OK.
Di QGIS
"" level "" Setel ke bidang ketinggian kontur "200" Setel ke interval kontur indeks
Lalu: "1" adalah kontur indeks dan "0" bukan kontur indeks
sumber
Lipat gandakan kontur dengan 10 dan kemudian modulus dengan 10 untuk menentukan apakah ada sisanya. Jika tidak ada yang tersisa dari itu adalah bilangan bulat, selain itu itu mengambang.
sumber