Bagaimana cara mengubah urutan fitur dalam sebuah shapefile?

18

Saya memiliki shapefile dan saya ingin mengubah urutan fitur. Apakah itu mungkin?

Saya ingin mengurutkan fitur di shapefile karena saya menanamkan shapefile ini di aplikasi seluler. Aplikasi ini akan menampilkan daftar fitur, dan meskipun saya bisa melakukan penyortiran pada waktu buka, saya lebih suka menyortirnya.

tato
sumber
4
Tujuannya sah, artinya tidak. Jika Anda membutuhkannya diurutkan, gunakan hasil kueri, jangan menganggap itu dan akan tetap diurutkan.
GuillaumeC

Jawaban:

6

Anda selalu dapat membuka tabel atribut di ArcMap dan klik kanan header kolom dan pilih Sort Ascending ... / Descending ... untuk bidang tunggal.

Untuk beberapa bidang, Anda lebih suka mengklik Penyortiran Lanjutan untuk memilih beberapa bidang.

CATATAN: Menambahkan, misalnya, bidang ID berurutan berdasarkan penyortiran saat ini (yang bersifat sementara, hanya disimpan di peta ini / mxd) saat menggunakan metode di atas akan dipesan oleh OID / ObjectID asli dari kelas fitur.

Ada ArcScripts yang tersedia yang akan mengurutkan catatan secara permanen dan menampilkan bentuk file baru: http://arcscripts.esri.com/details.asp?dbid=16771

Saya berharap ketika Anda menyatakan 'urutan fitur' bahwa ini adalah urutan yang ditemukan di tabel atribut dan tidak menggambar urutan untuk daftar isi / tingkat simbologi.

SaultDon
sumber
7

Berikut adalah solusi untuk menulis ulang shapefile baru dan diurutkan menggunakan alat baris perintah GDAL / OGR ogr2ogr.

Misalnya, sebuah shapefile orig.shpmemiliki bidang angka volumeuntuk disortir. Pernyataan SQL khusus ini melakukan penyortiran terbalik (dengan DESC) sehingga fitur dengan volumenilai besar digambarkan sebelum (di bawah) fitur dengan nilai kecil:

ogr2ogr -sql "SELECT * FROM orig ORDER BY volume DESC" sorted.shp orig.shp
Mike T
sumber
5

Jika Anda memiliki akses ke lisensi arcinfo, Anda dapat menggunakan Urutkan di (kotak alat Manajemen Data) yang menulis catatan ke dalam shapefile baru atau pengurutan spasial atau atribut berdasarkan gdb fc berdasarkan atribut

Gotchula
sumber
sayangnya ia bekerja dengan FGDB, bukan dengan bentuk
tato
1
tato, alat ini bekerja dengan fgdb atau shapefile sebagai input dan output, saya tidak tahu apa artinya komentar Anda di atas.
Gotchula
2

Metode yang sangat, sangat CEPAT dan mudah untuk mengurutkan lapisan shapefile (menggunakan berbagai bidang).

1 - Ekspor shapefile ke CSV (pilih pemisah yang baik, seperti titik koma) dan tambahkan GEOMETRI menggunakan "opsi lapisan" -> "AS WKT"

masukkan deskripsi gambar di sini

2 - Buka file.csv dengan LIBREOFFICE (calc) dan gunakan MENU-> DATA-> SORT (sangat intuitif, kuat dan SANGAT CEPAT (Sortir dengan cepat fitur 50000 menggunakan 3 kolom seperti opsi pengurutan, naik dan turun, dan saya) punya notebook yang sangat lambat;))

3 - Simpan lagi file dari LIBREOFFICE (calc) sebagai "Teks CSV" (tandai "Edit pengaturan filter" dan pilih pemisah sebagai 'titik koma', tidak masalah peringatan dari libreoffice, simpan seperti CSV dan pilih 'titik koma' sebagai pemisah)

4 - Dari Qgis buka file.csv baru (dan diurutkan) dari menu 'Add Layer "-> Add Delimiter Text Layer.

PROS: - Sangat, sangat cepat, urutkan dari berbagai bidang - Bekerja ok dengan data yang disandikan UTF_8

Kon: - Butuh LIBREOFFICE (tetapi apakah itu perangkat lunak open source)

Metode alternatif untuk mengurutkan (mempertahankan poin 2 dan 3, dan merupakan yang paling cepat) menggunakan konsol (BASH)

  • Buka konsol dan pergi ke tempat Anda memiliki file.csv

    Misalkan Anda ingin mengurutkan file dengan kunci:

    field6 (desc) + field1 (ascen) + field3 (desce)

    jadi perintahnya adalah:

    sort -t ';' -k6,6r -k1,1 -k3,3r file.csv> file_sort.csv

    CATATAN:

    • Anda dapat menambahkan -kn, n untuk setiap nomor kolom 'n' (bidang) yang perlu Anda tambahkan ke "kunci sortir" Anda
    • menambahkan 'r' setelah setiap n, n akan mengurutkan dalam mode terbalik (keturunan)
    • Harus melewati pemisah karakter yang digunakan ke file csv dengan -t param
Juanma Font
sumber
Metode alternatif untuk menyortir tanpa LibreOffice, menggunakan bash (konsol):
Juanma Font
-3
  1. Mengekspor data sebagai csv
  2. Buka dengan Excel, buka Data ---- Sortir --- Perbanyak pilihan dan selesai
pengguna102129
sumber