atribuir ID exclusivo para apontar recursos

10

O padrão de encomendas do MassGIS (http://www.mass.gov/mgis/ParstndrdVer1_5_1.pdf) utiliza uma concatenação da parte do número inteiro das coordenadas x e y para criar um ID exclusivo (LOC_ID) para os recursos. Estou pensando em fazer o mesmo para uma classe de recurso de ponto. Eu gosto da metodologia consistente, mas talvez eu esteja ignorando alguma coisa. Existe uma prática recomendada ou padrão para criar IDs exclusivos para recursos de ponto?

cwb
fonte
Pergunta de acompanhamento: É melhor criar e manter o ID exclusivo no DBMS (SQL Server) ou no software GIS (ArcGIS)?
Cwb
1
Você pode fornecer mais detalhes sobre seu projeto. O que os recursos representam? Eles já têm um ID exclusivo natural. Para o que você planeja usar esse número (por exemplo, rastrear recurso, vincular-se a outras fontes de dados, etc.), todos esses fatores são a melhor maneira de lidar com a criação de ID.
Chris M
As características dos pontos representam bacias de captura. Não existe um ID exclusivo natural. A equipe da DPW deseja vincular a uma tabela de informações sobre o programa de limpeza das bacias de captura. Eu não tenho mais detalhes, mas suposição que o pessoal no campo estará fazendo anotações sobre quando a limpeza teve lugar, a condição da bacia de captura, etc.
CWB
para bacias você tem o número de otomanas. Meu palpite é que é único. procure ottobácia (ottobasins) para entender a metodologia. Só encontrei resultados em português.
George Silva

Respostas:

18

Se você usar esse ID para algo como uma chave estrangeira em relação a outra tabela, todo o banco de dados terá grandes problemas se você precisar mover um ponto por algum motivo. Provavelmente você terá que manter o id, mesmo que ele não descreva mais as coordenadas xy.

Como uma chave única, muitas vezes é melhor ter algo que não conte nada sobre os dados, porque a maioria dos dados pode mudar.

/ Nicklas

Nicklas Avén
fonte
7
+1 Nunca, jamais, use IDs que signifiquem algo ou utilize dados comerciais neles. Alguém no meu trabalho acabou de se queimar porque usava nomes de estradas no ID e eis que o nome da estrada tinha que ser alterado, agora o ID está errado.
Nathan W
4

Adição da resposta de Nicklas e meu comentário.

Eu diria que a convenção mais usada e a mais recomendada é apenas usar um ID de incremento automático, por exemplo, comece em 1 e continue. Sem lógica e simples.

Se você possui um sistema distribuído ou não gosta de números com incremento automático, pode usar um GUID. A maioria dos bancos de dados manipula a criação desse tipo de ID para você. No entanto, é muito difícil para um usuário entrar manualmente, pesquisar etc., portanto, lembre-se disso.

A outra opção é usar algum tipo de hash dos dados, mas eu não recomendaria isso. Isso significaria que você precisaria escrever um algoritmo para fazer isso por você, nem sempre é possível garantir a exclusividade, pois eles também tendem a ser uma dor para entrar na pesquisa.

Essas são apenas minhas opiniões, mas por experiência pessoal, confie em mim, nunca use dados comerciais em IDs.

Nathan W
fonte
4

Pergunta de acompanhamento: É melhor criar e manter o ID exclusivo no DBMS (SQL Server) ou no software GIS (ArcGIS)?

Eu sugiro fortemente verificar a exclusividade dentro do DBMS. Esse é um dos muitos pontos fortes dos DBMSs. Também permite acessar seus dados com diferentes softwares GIS que provavelmente não estariam cientes das restrições exclusivas.

underdark
fonte
3

Nosso esquema de identificação não foi escolhido por mim, mas é o seguinte: código de 2,3,4 caracteres, que é a classe do ativo e um número seqüencial de 6 dígitos (você escolheria qualquer contagem de dígitos que funcione para você). Um procedimento armazenado cria esses IDs e se baseia em algumas tabelas que não são de banco de dados geográfico no mesmo banco de dados do SQL Server.

Eu mantenho um ID de incremento automático sequencial separado. Também mantenho um campo de geohash de 13 caracteres (para recursos de ponto), mas nunca o usaria como chave. O campo é preenchido automaticamente (por uma extensão de editor personalizada) sempre que o recurso é movido.

Se seus dados GIS forem usados ​​com qualquer tipo de sistema de gerenciamento de ativos, você desejará que seus IDs sejam globalmente exclusivos em seu banco de dados geográficos (e talvez únicos em todos os bancos de dados geográficos de sua organização). Isso também facilitará um pouco a refatoração de geodatabase no futuro.

Jay Cummins
fonte
1

Perrsonally Eu usei cálculos de CRC no passado para criar valores semelhantes. Não é muito difícil criar e bibliotecas / algoritmos estão disponíveis online.

A vantagem é que você pode criar recursos maiores que pontos, enquanto uma concatenação realmente precisaria ser apenas recursos de pontos (a menos que você queira uma chave realmente grande).

E acho improvável que um usuário final esteja pesquisando com esse ID de qualquer maneira, então não vejo isso como um problema.

Dito isto, não vejo muitos benefícios explícitos ao atribuir ID desse tipo. Eu poderia usar o método para detecção de alterações (porque é mais eficiente comparar dois valores de CRC do que dois conjuntos de geometria), mas mesmo assim - por que usá-lo como o ID principal?

Mark Ireland
fonte
1

"É claro que os GUIDs podem ser gerados usando o VB Script. Mas, dada a ênfase gradual do VB Script pela ESRI, executaremos a geração do GUID no ArcMap usando a nona maravilha do mundo, Python. Para aqueles que ainda não estão no sabe, Python é um presente de Deus para inveterar hackers GIS. Meu conselho: Aprenda! Viva! Ame! "

http://eaglemap.com/blog/bid/45555/How-to-Generate-GUIDs-in-ArcMap

Simon
fonte
0

O Arc Hydro Tools da ESRI vem com uma barra de ferramentas que também instala um gerenciador de ID exclusivo que é executado em segundo plano. A barra de ferramentas permite atribuir IDs exclusivos por classe de recurso ou por geodatabase. O gerenciador de ID por padrão lida apenas com atributos de ID exclusivos chamados, por exemplo, HydroID, que faz parte do modelo de dados do Arc Hydro. Mas também pode ser configurado para lidar com outros atributos. As ferramentas vêm com muita documentação, portanto, configurar o gerenciador de ID para suas necessidades não deve ser um problema.

O ID exclusivo é, que eu saiba, sempre um número inteiro. Depois de atribuir IDs únicos, uma vez que o gerente se encarrega de atribuir novos IDs exclusivos para cada recurso recém-criado que se encaixa na configuração.

O gerenciador de ID exclusivo pode ser útil para back-ends de bancos de dados que (AFAIK) não suportam números de incremento automático como o geodatabase pessoal.

E um
fonte