come creare un modello di dati per il seguente problema

2

Come affrontare lo spazio 2-D e 3-D nei dati? diciamo che stai lavorando su un problema di rete elettrica. Devi rappresentare Towers; linee di trasmissione; trasformatori e ogni altra cosa in uno spazio bidimensionale. Come progetteresti un modello di dati per questo spazio bidimensionale? Posso usare un

class tower  {
int x_cor;
int y_cor;
string power_properties
}

Ma come rappresentare la ... dire la mappa della rete elettrica stessa? c'è qualche soluzione standard a questo? alcuni modelli logici seguono qui?

voglio poter suddividere questa mappa per forma o area ecc; dovrei essere in grado di comporre piccole mappe per farne una grande .. Allora, qual è la soluzione qui ?? Tra l'altro, non sto lavorando su un progetto di rete elettrica (LOL) quindi per favore tieni le risposte generiche ..

P.S. non-noobs per favore aiutami a migliorare la domanda.

    
posta Chani 10.06.2011 - 07:53
fonte

4 risposte

3

Lavoro molto con Geographic Information Systems (GIS). Parte del lavoro in questo settore richiede la gestione e la memorizzazione di tutti i tipi di dati spaziali, che solitamente lasciamo ai fornitori di software come ESRI o utilizzano soluzioni open source come GDAL. GDAL può anche essere facilmente collegato a programmi C ++ e python.

Ci sono anche diversi database spaziali come Oracle Spatial, Postgis e Sql Server Spatial che gestiranno l'archiviazione di questi dati e l'elaborazione di esso (trovami tutte le torri di trasmissione che si trovano all'interno di quest'area) attraverso un'estensione della sintassi SQL. Questi database spaziali tendono ad implementare diverse operazioni che normalmente si trovano in un libro di geometria computazionale.

I sistemi GIS come ArcGIS e qGIS offrono anche la possibilità di creare e stampare mappe visive e di salvare mappe dai dati come parte della soluzione.

In breve, sto sostenendo di non reinventare la ruota e di prendere a prestito funzionalità da queste soluzioni ben collaudate a problemi di decisione spaziale.

    
risposta data 10.06.2011 - 15:50
fonte
3

Quello che sto per dire probabilmente suona molto generico, e fino a un certo punto lo è, ma può essere applicato a qualsiasi problema di ingegneria.

Il software viene generalmente utilizzato per gestire i problemi nel mondo reale. Di conseguenza, modella quelle parti del mondo reale con cui si occupa. Più il modello è accurato, migliore è il modo di affrontare il problema reale, ma allo stesso tempo aumenta la complessità del modello.

La tua classe di esempio è ovviamente un modello estremamente semplice di una torre, più simile a una classe base. Prima di poter prendere ulteriori decisioni sulla modellazione dei tuoi dati 2D e 3D, devi chiederti quali aspetti di questa rete elettrica devo affrontare? E di quali proprietà ho bisogno per questo?

Lo sviluppo di un modello di dati appropriato può essere fatto come approccio dal basso verso l'alto o dall'alto verso il basso. Il bottom-up di solito funziona bene se si ha una buona conoscenza del dominio del problema, e le strutture dati e le strutture di classe sono intrinsecamente chiare. Tuttavia, se questo non è il caso, l'approccio top-down può anche funzionare, dove fondamentalmente si creano le descrizioni di tutte le entità coinvolte e quindi si prova a trovare una struttura. Sorprendentemente scoprirai che spesso le cose che normalmente non avresti pensato fossero dello stesso tipo si rivelano per condividere proprietà o attributi.

Preparati a un sacco di refactoring quando usi l'approccio top-down. Man mano che la tua comprensione del dominio del problema cresce, comprenderà anche il modello di dati richiesto.

Inoltre: per qualsiasi lavoro in dati 2D o 3D, consiglierei di leggere i grafici diretti e non diretti.

    
risposta data 10.06.2011 - 11:14
fonte
2

Caratteristiche semplici Il modello dati è sia uno standard OGC che ISO (ISO 19125) che specifica un modello di archiviazione comune di dati geografici per lo più bidimensionali (punto, linea, poligono, multipunto, multilinea, ecc.).

La maggior parte delle estensioni spaziali per SQL (Oracle Spatial, Postgis, MySQL Spatial Extensions, ecc ...) implementano in misura diversa questo standard.

    
risposta data 03.10.2013 - 17:58
fonte
0

Potresti creare una classe per la mappa, con le funzioni per determinare le torri all'interno di un'area:

Class Map{
Tower[] towers;
Tower[] towersInArea(int x1, int y1, int x2, int y2)
}
    
risposta data 10.06.2011 - 08:07
fonte

Leggi altre domande sui tag