assegnare un ID univoco alle funzioni punto


10

Lo standard del pacchetto MassGIS (http://www.mass.gov/mgis/ParstndrdVer1_5_1.pdf) utilizza una concatenazione dell'intera porzione numerica delle coordinate xey per creare un ID univoco (LOC_ID) per le funzionalità. Sto pensando di fare lo stesso per una lezione di punti. Mi piace la metodologia coerente, ma forse sto trascurando qualcosa. Esiste una procedura standard o ottimale per la creazione di ID univoci per le funzionalità dei punti?


Domanda di follow-up: è meglio creare e mantenere l'id univoco nel DBMS (SQL Server) o nel software GIS (ArcGIS)?
cwb,

1
Puoi fornire maggiori dettagli sul tuo progetto. Cosa rappresentano le funzionalità? Hanno già un ID univoco naturale. Per cosa stai pianificando di usare questo numero (ad es. Funzione di tracciamento, collegamento ad altre fonti di dati, ecc.) Tutti questi fattori contribuiscono al modo migliore di gestire la creazione di ID.
Chris M,

Le funzioni punto rappresentano i bacini di cattura. Non esiste un ID univoco naturale. Il personale di DPW desidera collegarsi a una tabella di informazioni sul programma di pulizia del bacino di raccolta. Non ho maggiori dettagli, ma suppongo che il personale sul campo prenderà appunti su quando avrà luogo la pulizia, le condizioni del bacino di raccolta, ecc.
cwb,

per i bacini si ha il numero ottobasins. La mia ipotesi è che sia unico. cercare ottobacia (ottobasins) per avere un'idea della metodologia. Ho trovato risultati solo in portoghese.
George Silva,

Risposte:


18

Se si utilizza quell'ID per qualcosa come una chiave esterna in relazione a un'altra tabella, l'intero database avrà grossi problemi se si deve spostare un punto per qualche motivo. Probabilmente dovrai quindi mantenere l'id anche se non descrive più le coordinate xy.

Poiché una chiave unica è spesso la migliore per avere qualcosa che non dice nulla sui dati, perché la maggior parte dei dati potrebbe cambiare.

/ Nicklas


7
+1 Mai e poi mai e poi mai usare ID che significano qualcosa o usano i dati aziendali in essi. Qualcuno nel mio lavoro si è appena bruciato perché hanno usato i nomi delle strade nell'ID e ecco, ed è stato necessario cambiare il nome della strada, ora l'ID è sbagliato.
Nathan W,

4

Aggiungendo dalla risposta Nicklas e il mio commento.

Direi che la convenzione più utilizzata e più consigliata è solo quella di utilizzare un ID auto-incrementante, ad esempio iniziare da 1 e continuare. Nessuna logica e semplice.

Se disponi di un sistema distribuito o non ti piacciono i numeri a incremento automatico, puoi utilizzare un GUID. La maggior parte dei database gestirà la creazione di questo tipo di ID per te. Tuttavia, è difficile per un utente inserirlo manualmente, per la ricerca, ecc., Quindi tienilo a mente.

L'altra opzione è quella di utilizzare un qualche tipo di hash dei dati, ma non lo consiglierei. Significherebbe che avresti bisogno di scrivere un algoritmo per farlo per te, non puoi sempre garantire l'unicità, tendono anche a essere un dolore per entrare nella ricerca.

Queste sono solo le mie opinioni, ma per esperienza personale, fidati di me, non utilizzare mai i dati aziendali negli ID.


4

Domanda di follow-up: è meglio creare e mantenere l'id univoco nel DBMS (SQL Server) o nel software GIS (ArcGIS)?

Consiglio vivamente di verificare l'univocità all'interno del DBMS. Questo è uno dei tanti punti di forza dei DBMS. Ti consente anche di accedere ai tuoi dati con diversi software GIS che probabilmente non sarebbero a conoscenza dei vincoli univoci.


3

Il nostro schema di identificazione non è stato scelto da me ma è il seguente: codice di 2,3,4 caratteri che è la classe di attività e un numero sequenziale di 6 cifre (sceglieresti qualunque numero di cifre funzioni per te). Una procedura memorizzata crea questi ID e si basa su un paio di tabelle non geodatabase nello stesso database di SQL Server.

Conservo un ID di incremento automatico sequenziale separato. Tengo anche un campo geohash di 13 caratteri (per le caratteristiche dei punti), ma non lo userei mai come chiave. Il campo viene popolato automaticamente (da un'estensione dell'editor personalizzata) ogni volta che la funzione viene spostata.

Se i tuoi dati GIS devono essere utilizzati con qualsiasi tipo di sistema di gestione delle risorse, vorrai che i tuoi ID siano globalmente univoci all'interno del tuo geodatabase (e forse unici in tutti i geodatabase all'interno della tua organizzazione). Ciò renderà anche un po 'più semplice eseguire il refactoring del geodatabase in futuro.


1

Perrsonally ho usato i calcoli CRC in passato per creare valori simili. Non troppo difficile da creare e librerie / algoritmi sono disponibili online.

Il vantaggio è che puoi fare funzioni più grandi dei punti, mentre una concatenazione dovrebbe essere solo funzioni punto (a meno che tu non voglia una chiave davvero massiccia).

E penso che sia improbabile che un utente finale cerchi comunque con questo ID, quindi non lo vedo come un problema.

Detto questo, non vedo molti vantaggi espliciti nell'assegnare un ID simile. Potrei usare il metodo per il rilevamento delle modifiche (perché è più efficiente confrontare due valori CRC rispetto a due serie di geometrie) ma anche allora - perché usarlo come ID primario?


1

"I GUID possono, ovviamente, essere generati usando VB Script. Ma data la graduale deifasi di VB Script da ESRI, eseguiremo la generazione di GUID in ArcMap usando la nona meraviglia del mondo, Python. Per quelli di voi che non sono già nel Sai, Python è il dono di Dio per inveterare gli hacker GIS. Il mio consiglio: imparalo! Vivi! Adoro! "

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


0

Arc Hydro Tools di ESRI viene fornito con una barra degli strumenti che installa anche un gestore ID univoco che viene eseguito in background. La barra degli strumenti consente di assegnare ID univoci per classe di caratteristiche o per geodatabase. Il gestore ID per impostazione predefinita gestisce solo attributi ID univoci chiamati ad esempio HydroID, che fa parte del modello di dati Arc Hydro. Ma può essere impostato per gestire anche altri attributi. Gli strumenti vengono forniti con molta documentazione, quindi la configurazione del gestore ID in base alle proprie esigenze non dovrebbe essere un problema.

L'ID univoco è, per quanto ne sappia, sempre un numero intero. Dopo aver assegnato gli ID univoci una volta che il gestore si occupa dell'assegnazione di nuovi ID univoci per ogni funzione appena creata che si adatta alla configurazione.

Il gestore ID univoco potrebbe essere utile per i back-end del database che (AFAIK) non supportano i numeri a incremento automatico come il geodatabase personale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.