Junções um para muitos em uma classe de recurso em uma tabela

10

Estou usando o ArcMap 10.2.2 com uma licença avançada. Eu usei o ArcMap para outras análises básicas, mas sou bastante novo no programa e tenho apenas habilidades básicas de codificação, sem experiência em SQL fora de consultas muito básicas usando os construtores de código SQL no ArcMap.

Tenho polígonos das áreas geográficas das espécies e tenho uma tabela com uma lista de patógenos / doenças transmitidas por essas espécies. Certas espécies carregam múltiplos patógenos. Em um mundo ideal, eu juntaria os polígonos dos intervalos à tabela das espécies + patógenos e manteria os dados poligonais / espaciais, mas não parece haver uma ferramenta GIS para fazer isso (eu vou mais tarde contam patógenos sobrepostos, por isso é importante que cada combinação espécie-patógeno tenha seu próprio recurso, em vez de um recurso que tenha informações sobre vários patógenos). Estes são os aspetos dos meus dados (os nºs 1 e 2, 3 são para mais tarde):

Tabela de atributos para recursos espaciais:

tabela de atributos para recursos espaciais

Tabela sem dados espaciais:

tabela sem dados espaciais

(Observe que esses dados não são reais e as combinações entre patógenos e espécies podem não ser reais. Na verdade, tenho 115 polígonos e 519 linhas de tabela. As espécies carregam entre 1-40 patógenos e, portanto, as espécies têm entre 1-40 linhas em minha mesa)

Como um bônus adicional, por causa das análises futuras que eu preciso fazer, eu gostaria de poder fazer essa junção um-para-muitos para que eu pudesse manter uma coluna extra de dados da tabela (veja abaixo um exemplo de como isso pode parecer). No entanto, isso é menos importante porque, se eu conseguir descobrir como fazer a junção, posso refazer a análise.

tabela sem dados espaciais, com campo extra

Encontrei algumas soluções para esse problema, mas elas não funcionaram para mim pelos motivos listados abaixo:

Solução 1: Blog de David Aalbers - Sou muito novato para descobrir como editar o script mais recente e como importá-lo para o ArcMap. Eu tentei o script mais antigo e ele gerou uma tonelada de polígonos vazios intitulados test, test_1, test_1_1, test_1_1_1 etc.

Solução 2: Junção um-para-muitos - tentei usar a ferramenta Criar tabela de consultas (e não tenho conhecimento de SQL, embora tenha usado o construtor de expressões) e recebi o erro ERRO 000383: Problema em uma tabela, não consigo encontrar o espaço de trabalho & Falha na execução (MakeQueryTable). Todos os meus arquivos estão na mesma pasta, mas eles não estão em um geodatabase.

MooseGirl
fonte
11
Faça Consulta Tabela vai trabalhar com banco de dados somente
FelixIP
11
Criar tabela de consulta requer todos os dados no mesmo fgdb.
klewis

Respostas:

22

Para multiplicar os recursos, faça isso (disponível para aqueles que possuem o ArcGIS 10.1 ou superior).

  1. Coloque os recursos e a tabela no mesmo banco de dados geográfico (você deve converter arquivos Shapefiles / Excel / DBF no banco de dados geográfico para que isso funcione).
  2. Verifique se seus polígonos têm um campo de ID exclusivo que será preservado (você pode criar um campo Longo e calcular o ObjectID para que o valor do ObjectID não seja perdido).
  3. Faça uma junção padrão da tabela (atributos, sem dados espaciais) para os recursos (dados espaciais) no campo correspondente. Observe que a tabela de atributos dos recursos (dados espaciais) terá o mesmo número de recursos que possuía antes, mas não se preocupe com isso, todos eles serão exibidos na próxima etapa.
  4. Exporte os recursos para o mesmo geodatabase que uma nova classe de recursos (clique com o botão direito do mouse na camada do índice e escolha exportar). Observe que o número de recursos na tabela de atributos dos recursos exportados agora possui o número certo de recursos, o mesmo da tabela original (com atributos, sem dados espaciais) ou, no caso de uma junção de muitos para muitos, um conjunto completo de recursos para todas as combinações de recursos e registros relacionados.

Os recursos se multiplicarão em uma nova classe de recursos, onde todos os recursos estarão presentes (mesmo se não houver uma correspondência na tabela) e onde houver uma correspondência 1: M antes, os recursos serão multiplicados para formar uma 1: 1 corresponder cada recurso a todas as entradas da tabela. O campo ID exclusivo que você criou na etapa 2 permitirá relacionar os polígonos multiplicados ao conjunto de polígonos único original. Com a nova classe de recursos multiplicados, você pode fazer seleções nos campos da tabela, resumos, junções espaciais, etc.

Se você deseja gerar um valor de ID exclusivo que represente cada combinação única de espécie e doença, use a versão 10.2 da ferramenta descrita nesta postagem do blog . Ter esse tipo de chave permite usá-lo para fazer associações padrão a tabelas e estatísticas de resumo com base em um relacionamento de vários campos como um substituto para a criação de um relacionamento real de vários campos usando uma configuração Criar Tabela de Consultas.

Aqui está uma boa referência da esri: https://support.esri.com/en/technical-article/000001228

Richard Fairhurst
fonte
Funciona perfeitamente quando exportado para dentro do geodatabase!
MooseGirl
11
Modifiquei minha etapa 4 para indicar que a exportação deve ser para uma nova classe de recurso no mesmo geodatabase que os dados originais. Seguir esse procedimento sempre deve funcionar, embora seja possível que algumas variações de onde os dados de origem e de saída estejam armazenados também sejam permitidas.
Richard Fairhurst
Estava claro antes (embora as pessoas desesperadas no futuro certamente gostem de ser explicado), mas originalmente eu não havia me conectado adequadamente à pasta de geodatabase (ou algo assim) porque não me permitia exportar para o geodatabase. Eu reiniciei e funcionou bem.
precisa saber é o seguinte
11
Eu adicionei que os recursos unidos não terão o número certo de atributos e os recursos exportados. Isso me frustrou muito quando tentei isso, até que passei por todas as etapas.
Nittyjee
Parece que falta um 'não' no número 3, "... terá noto mesmo número de recursos ..."
matt wilkie
-2

Consulta SQL:

SELECT spp, disease, type
FROM table1, table2
WHERE table1.bimonial = table2.spp;
Cy T
fonte