Como alterar a ordem dos recursos em um shapefile?

18

Eu tenho um shapefile e quero alterar a ordem dos recursos. Isso é possível?

Quero classificar os recursos no shapefile porque estou incorporando esse shapefile em um aplicativo móvel. O aplicativo exibirá uma lista de recursos e, embora eu possa fazer a classificação no tempo de carregamento, prefiro ordená-los.

tato
fonte
4
O objetivo é legítimo, a média não é. Se você precisar deles classificados, use o resultado de uma consulta, não assuma que eles estejam e permanecerão classificados.
GuillaumeC

Respostas:

6

Você sempre pode abrir a tabela de atributos no ArcMap e clicar com o botão direito do mouse no cabeçalho das colunas e selecionar Classificar Crescente ... / Decrescente ... para campos únicos.

Para vários campos, clique em Classificação avançada para selecionar vários campos.

NOTA: A adição, por exemplo, de um campo de ID seqüencial com base na classificação atual (temporária, armazenada apenas neste mapa / mxd) ao usar o método acima, será solicitada pelo OID / ObjectID original da classe de recurso.

Existe um ArcScripts disponível que classifica os registros permanentemente e gera um novo shapefile: http://arcscripts.esri.com/details.asp?dbid=16771

Espero que, quando você declara 'ordem dos recursos', essa seja a ordem encontrada na tabela de atributos e não a ordem de desenho para os níveis da tabela de conteúdo / simbologia.

SaultDon
fonte
7

Aqui está uma solução para reescrever um shapefile novo e classificado usando a ferramenta de linha de comando GDAL / OGR ogr2ogr.

Por exemplo, um shapefile orig.shppossui um campo numérico volumepara classificar. Essa instrução SQL específica faz uma classificação inversa (com DESC) para que os recursos com volumevalores grandes sejam desenhados antes dos recursos (abaixo) com valores pequenos:

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

Se você tiver acesso a uma licença arcinfo, poderá usar a Classificação na (caixa de ferramentas Gerenciamento de dados), que grava os registros em uma nova classificação espacial ou de atributo baseada em shapefiles ou gdb fc

Gotchula
fonte
infelizmente, ele funciona com FGDB, não com formas
tato
1
tato, a ferramenta funciona com fgdb ou shapefile como entrada e saída, não tenho idéia do que o seu comentário acima significa.
gotchula
2

Um método muito, muito rápido e fácil de classificar uma camada de shapefile (usando vários campos).

1 - Exporte o shapefile para CSV (selecione um bom separador, como ponto e vírgula) e adicione GEOMETRIA usando "opções de camada" -> "AS WKT"

insira a descrição da imagem aqui

2 - Abra file.csv com LIBREOFFICE (calc) e use MENU-> DADOS-> CLASSIFICAR (muito intuitivo, poderoso e MUITO RÁPIDO (recursos rápidos e fáceis de classificar 50000 usando 3 colunas como chave de classificação, opções de subida e descida) ei tem um notebook muito lento;))

3 - Salve novamente o arquivo do LIBREOFFICE (calc) como "CSV de texto" (marque "Editar configurações de filtro" e escolha o separador como 'ponto e vírgula', não importa o aviso do libreoffice, salve como CSV e selecione 'ponto e vírgula' como separador)

4 - No Qgis, abra o novo arquivo.csv (e classificado) no menu 'Adicionar camada' -> Adicionar camada de texto delimitadora.

PRÓS: - Muito, muito rápido, classifique de vários campos - Funciona bem com dados codificados em UTF_8

CONTRAS: - Precisa de LIBREOFFICE (mas é um software de código aberto)

Método alternativo para classificar (substitua os pontos 2 e 3 e é o mais rápido) usando o console (BASH)

  • Abra o console e vá para onde você tem o arquivo.csv

    Suponha que você queira classificar o arquivo com a chave:

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

    então o comando será:

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

    NOTAS:

    • você pode adicionar -kn, n para cada número de coluna 'n' (campo) que você precisa adicionar à sua "chave de classificação"
    • adicionar 'r' após cada n, n será ordenado no modo reverso (descida)
    • Deve passar o separador de caracteres usado no arquivo csv com -t param
Juanma Font
fonte
Método alternativo para classificar sem o LibreOffice, usando o bash (console):
Juanma Font
-3
  1. Exportar dados como csv
  2. Abra com o Excel, vá para Dados ---- Classificar --- Expanda a seleção e pronto
user102129
fonte