PDA

View Full Version : Aiuto x aprire file hdr


dejsav
01-11-2006, 13:45
salve, io avrei un problema a creare quasto programmino:

creare un programma che legge il file hdr, ne ricava I parametri
del file dati associato, apre il file dati associato

questi sono i 2 files: DOWNLOAD (http://img1.freeforumzone.it/upload1/255795_hdr + bin.rar)

:help:

grazie

andbin
01-11-2006, 14:28
salve, io avrei un problema a creare quasto programmino:

creare un programma che legge il file hdr, ne ricava I parametri
del file dati associato, apre il file dati associato

questi sono i 2 files: DOWNLOAD (http://img1.freeforumzone.it/upload1/255795_hdr + bin.rar)Il primo file "Pavia_XS_Envi.bin" è un file binario con un formato, almeno a me, sconosciuto. Il secondo "Pavia_XS_Envi.hdr" è un file di testo che, da quanto ho capito, fornisce qualche informazione sul file bin.
Ma in ogni non è affatto chiaro come è strutturato il file .bin. Senza delle informazioni e delle specifiche precise su cosa contiene il file bin, dubito che si possa fare qualcosa con quel file.

Inoltre dovresti specificare con quale linguaggio vuoi/devi fare questo programmino. ;)

dejsav
01-11-2006, 14:39
le uniche informazioni che ho sono quelle e dovrei farlo con java

ho anche questa documentazione: DOWNLOAD (http://img1.freeforumzone.it/upload1/255795_documentazione.rar)

e le istruzioni totali sarebbero queste:

Passo 1: creare un programma che legge il file hdr, ne ricava I parametri
del file dati associato, apre il file dati associato

Passo 2: usando la banda 1 e la banda 4 del file dati, calcolo del NDVI e
sua visualizzazione

Passo3: diesegnare un'interfaccia che opermetta all'utente di scegliere il
valore del NDVI di soglia visualizzando cosa succede un real time per la
scelta di un valore o di un altro

Passo 4: scelta la soglia, l'utente salva il file in formato ENVI 8 cioe'
dati e HDR). Il file contiene il valore dell'NDVI nei punti dove è piu' alto
della soglia, 0 negli altri punti.

andbin
01-11-2006, 15:07
le uniche informazioni che ho sono quelle e dovrei farlo con java

ho anche questa documentazione: DOWNLOAD (http://img1.freeforumzone.it/upload1/255795_documentazione.rar)Beh, ok ... così è già un po' più chiaro! ;)

Credo di aver capito quale è la struttura del file. Il file bin è lungo 524288 (esattamente 512KiB). Nell'header c'è scritto:
samples = 256
lines = 256
bands = 4
data type = 2

Cioè il file binario è suddiviso in 4 blocchi. Ogni blocco è composto da un array di 256x256 interi a 16 bit (data type 2). I conti tornano: 256 * 256 * 2 * 4 = 524288. :)

e le istruzioni totali sarebbero queste:
...Non ti so dire molto di più sui calcoli perché non so cosa siano :(

Comunque, a grandi linee, puoi fare così:
Crei una classe (es. EnviHeader) che incapsula i dati dell'header. Tramite un metodo apposito, apri, leggi il file riga x riga, interpreti i valori e li metti nella classe.
Poi crei una seconda classe (es. EnviData) a cui passi un oggetto della precedente classe. A quel punto, apri il file binario e in base ai parametri, leggi i dati. Ad esempio potresti ottenere un array bidimensionale con tutti i dati di una banda.

dejsav
01-11-2006, 22:47
ok grazie ci provo

anche se non ho la + pallida idea di come si faccia lol

andbin
02-11-2006, 08:37
ok grazie ci provo

anche se non ho la + pallida idea di come si faccia lolC'è una cosa che non ho capito: per il data type parla di 1=byte, 2=integer, 3=long integer. Ma questi tipi interi sono con segno o senza segno???

Comunque, se mi permetti un suggerimento, inizia a creare la classe che si occupa esclusivamente di leggere ed incapsulare le informazioni del file di header. Tieni presente che nell'header ci sono diverse informazioni che influenzano il modo con cui si devono poi leggere i dati dal file .bin. E cioè i valori di "interleave" e "byte order".