¿Cómo cambiar el orden de las características en un shapefile?

18

Tengo un archivo de formas y quiero cambiar el orden de las características. ¿Es eso posible?

Quiero ordenar las características en el shapefile porque estoy incrustando este shapefile en una aplicación móvil. La aplicación mostrará una lista de características, y aunque podría hacer la clasificación en el momento de la carga, preferiría ordenarlas.

tato
fuente
44
El objetivo es legítimo, la media no lo es. Si necesita ordenarlos, use el resultado de una consulta, no asuma que están ordenados y que seguirán ordenados.
GuillaumeC

Respuestas:

6

Siempre puede abrir la tabla de atributos en ArcMap y hacer clic con el botón derecho en el encabezado de las columnas y seleccionar Ordenar ascendente ... / Descendente ... para campos individuales.

Para múltiples campos, en su lugar, haga clic en Clasificación avanzada para seleccionar múltiples campos.

NOTA: Agregar, por ejemplo, un campo de ID secuencial basado en la clasificación actual (que es temporal, almacenada solo en este mapa / mxd) cuando se usa el método anterior será ordenado por el OID / ObjectID original de la clase de entidad.

Hay disponibles ArcScripts que ordenarán los registros de forma permanente y generarán un nuevo shapefile: http://arcscripts.esri.com/details.asp?dbid=16771

Espero que cuando establezca 'orden de características', este sea el orden encontrado en la tabla de atributos y no el orden de dibujo para la tabla de contenido / niveles de simbología.

SaultDon
fuente
7

Aquí hay una solución para reescribir un archivo de formas nuevo y ordenado usando la herramienta de línea de comandos GDAL / OGR ogr2ogr.

Por ejemplo, un archivo de forma orig.shptiene un campo numérico volumepara ordenar. Esta instrucción SQL particular hace una ordenación inversa (con DESC) de modo que las entidades con volumevalores grandes se dibujan antes (debajo) de las entidades con valores pequeños:

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

Si tiene acceso a una licencia de arcinfo, puede usar Ordenar en la ( Caja de herramientas de Administración de datos) que escribe los registros en un nuevo shapefiles o ordenación espacial o de atributos basada en gdb fc

gotchula
fuente
desafortunadamente funciona con FGDB, no con formas
tato
1
Sin embargo, la herramienta funciona con fgdb o shapefile como entrada y salida, no tengo idea de lo que significa tu comentario anterior.
gotchula
2

Un método muy, muy RÁPIDO y fácil de ordenar una capa de shapefile (usando varios campos).

1 - Exporte el archivo de forma a CSV (seleccione un buen separador, como punto y coma) y agregue GEOMETRÍA usando "opciones de capa" -> "AS WKT"

ingrese la descripción de la imagen aquí

2 - Abra file.csv con LIBREOFFICE (calc) y use MENU-> DATA-> SORT (muy intuitivo, potente y MUY RÁPIDO (Clasifique sobre la marcha las características 50000 usando 3 columnas como las opciones de ordenación, ascendente y descendente, e i tener un cuaderno muy lento;))

3 - Guarde nuevamente el archivo de LIBREOFFICE (calc) como "Text CSV" (marque "Editar configuración de filtro" y elija el separador como 'punto y coma', no importa la advertencia de libreoffice, guarde como CSV y seleccione 'punto y coma' como separador)

4 - Desde Qgis abra el nuevo archivo.csv (y ordenado) desde el menú 'Agregar capa "-> Agregar capa de texto delimitador.

PROS: - Muy, muy rápido, ordenar desde varios campos - Funciona bien con datos codificados UTF_8

CONTRAS: - Necesita LIBREOFFICE (pero es un software de código abierto)

Método alternativo para ordenar (sustituye los puntos 2 y 3, y es el más rápido) usando la consola (BASH)

  • Abra la consola y vaya a donde tiene file.csv

    Supongamos que desea ordenar el archivo con la clave:

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

    entonces el comando será:

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

    NOTAS

    • puede agregar -kn, n para cada número de columna 'n' (campo) que necesita agregar a su "clave de clasificación"
    • agregando 'r' después de cada n, n se ordenará en modo inverso (descenso)
    • Debe pasar el separador de caracteres utilizado en el archivo csv con -t param
Juanma Font
fuente
Método alternativo para ordenar sin LibreOffice, usando bash (consola):
Juanma Font
-3
  1. Exportar datos como csv
  2. Abra con Excel, vaya a Datos ---- Ordenar --- Expanda la selección y listo
usuario102129
fuente