Creazione di join spaziali "Many to one"


10

Sto cercando di creare quello che chiamo un join "molti a uno". Non so se sarebbe il termine corretto o meno. Ho una tabella con numeri di conto univoci per le case mobili (ad es. - M1007970) per numero di conto pacchi (R0003285). (Molte case mobili per pacco - molte a una.) Devo unire questa tabella alla nostra geometria dei pacchi - e ho ancora un solo poligono per pacco.

Quindi, ad esempio, la tabella può avere tre righe con numeri di conto della casa mobile M1007370 su una riga, M1007371 su un'altra e un'altra con M1059370, ma tutte hanno lo stesso numero di pacco R0032585. La nostra geometria dei pacchi avrebbe solo lo stesso campo di R0032585.

Al momento dell'iscrizione ho 12.088 record di case mobili e 44.103 pacchi. Se "conservo tutti i record", ho 44.103 record con solo 7.947 numeri di account di casa mobile (dell'originale 12.088). Se mi unisco in base a "mantieni solo i record corrispondenti", finirò con solo 7.947 record in totale.

L'ho fatto con successo in passato e ho creato un modello. In questo modello uso la tabella delle case mobili per unirmi al livello pacchi (.lyr - l'unico modo in cui puoi / potresti unirti a un modello) in base al numero del conto pacchi. Copio le funzionalità mantenendo solo i record corrispondenti a un file geodatabase. Dal file geodatabase lo aggiungo quindi al nostro sistema SDE. Questo attualmente smette di funzionare per motivi che non riesco a capire, poiché nulla è cambiato.

Forse qualcuno può trasmettere meglio di me ciò che sto cercando di fare, e se si chiama qualcosa di diverso da una relazione molti-a-uno (non credo che sia uno a molti ...).

Risposte:


9

A volte è confuso, ma è davvero una questione di prospettiva. Vedi questo diagramma (da questo argomento ) per un riferimento:

Diagramma delle relazioni

Questo è un esempio di cinque relazioni (e tre diverse cardinalità ).

  1. Uno-a-molti: i pacchi sono correlati alla tabella ParcelToOwner in una relazione uno-a-molti; un pacco può avere molti proprietari (proprietà parziale).
  2. Many-to-one: la tabella ParcelToOwner è correlata a Parcels in una relazione molti-a-uno; molti proprietari possiedono (almeno una percentuale di) un pacco.
  3. Many-to-one: la tabella ParcelToOwner è correlata ai proprietari in una relazione molti-a-uno; molti pacchi possono essere di proprietà (almeno in parte) di un proprietario.
  4. Uno-a-molti: i proprietari sono correlati alla tabella ParcelToOwner in una relazione uno-a-molti; un proprietario può possedere molti pacchi (di nuovo, almeno in parte)
  5. Molti-a-molti: i pacchi sono collegati ai proprietari in una relazione molti-a-molti; molti pacchi possono essere (almeno parzialmente) di proprietà di molti proprietari e molti proprietari possono possedere (almeno parzialmente) molti pacchi. Questo è espresso attraverso la tabella ParcelToOwner e le relazioni di cui sopra. La maggior parte dei DBMS non è in grado di esprimere una relazione molti-a-molti senza una tabella intermedia ( sorgente ), quindi questo progetto.

Come puoi vedere, se una relazione è uno-a-molti o molti-a-uno dipende da come la vedi.

Detto questo, il modo più semplice per realizzare ciò che stai cercando è creare una tabella di query che crei molti pacchi identici, uno per ogni casa mobile. Vedi questo post del blog per maggiori dettagli: un breve consiglio per eseguire un join 1: M

Se tutti i tuoi dati si trovano in un geodatabase aziendale, puoi anche utilizzare un livello di query per fare la stessa cosa, al volo (nessuna classe di caratteristiche intermedia).

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.