Как изменить порядок объектов в шейп-файле?

18

У меня есть шейп-файл, и я хочу изменить порядок функций. Это возможно?

Я хочу отсортировать функции в шейп-файле, потому что я встраиваю этот шейп-файл в мобильное приложение. Приложение отобразит список функций, и хотя я мог бы выполнить сортировку во время загрузки, я бы предпочел отсортировать их.

тато
источник
4
Цель законна, а цель нет. Если вам нужно, чтобы они были отсортированы, используйте результат запроса, не думайте, что они есть и останутся отсортированными.
Гийом,

Ответы:

6

Вы всегда можете открыть таблицу атрибутов в ArcMap и щелкнуть правой кнопкой мыши заголовок столбца и выбрать Sort Ascending ... / Descending ... для отдельных полей.

Для нескольких полей вы бы вместо этого щелкнули Расширенную сортировку, чтобы выбрать несколько полей.

ПРИМЕЧАНИЕ. Добавление, например, поля последовательного идентификатора на основе текущей сортировки (которая является временной, хранится только в этой карте / mxd) при использовании вышеуказанного метода будет упорядочено по исходному OID / ObjectID класса объектов.

Доступен ArcScripts, который будет постоянно сортировать записи и выводить новый шейп-файл: http://arcscripts.esri.com/details.asp?dbid=16771

Я очень надеюсь, что когда вы заявляете «порядок элементов», это порядок, найденный в таблице атрибутов, а не порядок рисования для уровней содержания / символов.

SaultDon
источник
7

Вот решение переписать новый и отсортированный шейп-файл с помощью инструмента командной строки GDAL / OGR ogr2ogr.

Например, шейп-файл orig.shpимеет числовое поле volumeдля сортировки. Этот конкретный оператор SQL выполняет обратную сортировку (с DESC), чтобы объекты с большими volumeзначениями отображались перед (под) объектами с небольшими значениями:

ogr2ogr -sql "SELECT * FROM orig ORDER BY volume DESC" sorted.shp orig.shp
Майк Т
источник
5

Если у вас есть доступ к лицензии arcinfo, вы можете использовать Сортировку в ( Набор инструментов управления данными), который записывает записи в новые шейп-файлы или пространственную сортировку атрибутов на основе GDB или сортировку атрибутов.

gotchula
источник
к сожалению, он работает с FGDB, а не с фигурами
tato
1
Тато, инструмент работает с fgdb или shapefile в качестве ввода и вывода, я не знаю, что означает ваш комментарий выше.
получил
4

Утилита MapServer (бесплатная и с открытым исходным кодом) может сортировать фигуры в соответствии со значениями атрибутов:

http://mapserver.org/utilities/sortshp.html

Лоран Жегу
источник
2

Очень, очень БЫСТРЫЙ и простой способ сортировки слоя шейп-файла (с использованием различных полей)

1 - Экспорт шейп-файла в CSV (выберите хороший разделитель, например точку с запятой) и добавьте GEOMETRY, используя «параметры слоя» -> «AS WKT»

введите описание изображения здесь

2 - Откройте файл file.csv с помощью LIBREOFFICE (calc) и используйте MENU-> DATA-> SORT (очень интуитивно понятный, мощный и ОЧЕНЬ БЫСТРЫЙ (сортировка на лету 50000 функций с использованием 3 столбцов, таких как ключ сортировки, параметры возрастания и убывания, и я иметь очень медленную тетрадь;))

3 - Снова сохраните файл из LIBREOFFICE (calc) как «Текст CSV» (пометьте «Редактировать настройки фильтра» и выберите разделитель как «точку с запятой», не обращайте внимания на предупреждение из libreoffice, сохраните как CSV и выберите «точку с запятой» в качестве разделителя)

4 - В Qgis откройте новый файл .csv (и отсортированный) из меню «Добавить слой» -> Добавить разделитель текстового слоя.

ПРОФИ: - Очень, очень быстро, сортировка по различным полям - Работает нормально с данными в кодировке UTF_8

Минусы: - Нужно LIBREOFFICE (но это программное обеспечение с открытым исходным кодом)

Альтернативный метод сортировки (точки 2 и 3 и самый быстрый) с использованием консоли (BASH)

  • Откройте консоль и перейдите туда, где у вас есть файл .csv

    Предположим, вы хотите отсортировать файл с ключом:

    field6 (по убыванию) + поле1 (ascen) + field3 (desce)

    поэтому команда будет:

    сортировать -t ';' -k6,6r -k1,1 -k3,3r file.csv> file_sort.csv

    ПРИМЕЧАНИЯ:

    • вы можете добавить -kn, n для каждого номера столбца 'n' (поле), которое вам нужно добавить в свой "ключ сортировки"
    • добавление 'r' после каждого n, n будет сортировать в обратном режиме (спуск)
    • Необходимо передать разделитель символов, используемый в CSV-файл с параметром -t
Juanma Font
источник
Альтернативный метод сортировки без LibreOffice, используя bash (console):
Juanma Font
-3
  1. Экспорт данных в формате CSV
  2. Открыть с помощью Excel перейдите в Data ---- Sort --- Расширьте выбор, и все готово
user102129
источник