Classificar uma tabela de recursos por localização geográfica


8

Aqui está um desafio interessante: preciso incorporar uma tabela em um layout de mapa para que os registros na tabela sejam classificados de acordo com sua posição geográfica no terreno. Por exemplo, em um mapa do norte para o topo, o recurso mais ao norte (neste caso, pontos) deve ser o primeiro registro e o mais ao sul o último.

A composição do mapa está no ArcGIS, mas estou disposto a usar gdal / ogr, qgis, etc. para a classificação da tabela, se necessário.

Para expandir essa questão além do meu caso de uso imediato e, assim, torná-lo mais útil para a comunidade, uma solução robusta permitiria escolher outros tipos geográficos, como oeste para leste ou interno para externo .

ilustração


Qual sistema de coordenadas você está usando?
Mapperz

@mapperz, graus decimais geográficos, mas poderia ser facilmente UTM ou Albers, se necessário.
226138

Respostas:


7

Para classificar na direcção com um rolamento de uma graus leste de norte, precompute o vector direccional unidade como (sin (a), COS (um)).

Com um cálculo de campo, obtenha as coordenadas (projetadas) [X] e [Y] de recursos (use seus centróides ou o que quer que seja para recursos não pontuais) se eles ainda não estiverem disponíveis e calcule um novo campo igual à distância ao longo do rolamento, dado pelo produto escalar do vetor de direção com as coordenadas:

z = sin(a) * [X] + cos(a) * [Y]

Classifique a tabela em [z] em ordem crescente.

Por exemplo, para uma classificação norte-sul, o rolamento é 180 graus, v = (sin (180), cos (180)) = (0, -1) e, portanto, a classificação resultante está em - [Y], que organiza os registros do maior [Y] (primeiro) até o menor [Y] (último), exatamente como pretendido.


Uma classificação "interna para externa" pode significar muitas coisas, mas uma interpretação é que a classificação deve ser à distância em relação a um local central. Uma solução semelhante se aplica, usando o teorema de Pitágoras para calcular a distância (ao quadrado) de um ponto fixo. (A aplicação da raiz quadrada é desnecessária porque não altera a ordem de classificação.)


Uma ordem de classificação mais fantasiosa é explicada e ilustrada em "Mapa unidimensional do mundo".


2

Para expressar a resposta do whuber em termos de uso de ferramentas, aqui está uma implementação simples do caso de uso Norte-Sul, Leste-Oeste ao usar dados de pontos no Arcgis:

  • Adicione Xe Y(ou Late Long) colunas à tabela de atributos, Calcular geometria
  • exportação para Excel ou qualquer outra coisa, tipo pela coluna de interesse (X para Leste-Oeste, Y para a Norte-Sul), e em seguida, trazer de volta com adicionar dados X / Y .

cortesia de Esri Artigo Técnico Como : Classificar recursos Norte / Sul ou Leste / Oeste para exportação

Como alterar a ordem dos recursos em um shapefile? possui soluções para fazer a parte de classificação da tabela para o Arcgis e o Qgis sem a necessidade de exportar para um programa externo (embora você ainda precise duplicar a tabela / classe de recurso) e a Classificação dos registros do shapefile no atributo para atualizar o novo campo de classificação usando o Python? tem um método arcpy.


3
O ArcGIS 10.0 e superior oferecem uma opção de Classificação espacial na ferramenta de classificação.
klewis

1

Como comentado por @klewis :

O ArcGIS 10.0 e superior oferecem uma opção de Classificação espacial na ferramenta de classificação

A ajuda da ferramenta Classificar , que precisa de uma licença de nível Avançado, descreve spatial_sort_methodquais são:

Specifies how features are spatially sorted. Sort method is only enabled when the Shape field is selected as one of the sort fields.
UR —Sorting starts at upper right corner. This is the default.
UL —Sorting starts at upper left corner.
LR —Sorting starts at lower right corner.
LL —Sorting starts at lower left corner.
PEANO —Sorting uses a space filling curve algorithm, also known as a Peano curve.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.