Differenze tra le versioni di "Ottenere la Longitudine e la Latitudine dell'angolo superiore sinistro dell'immagine di una mappa da un file GEOTIFF con le sole risorse di Gambas"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Il file GEOTIFF è un file di formato TIFF georeferenziato. Esso contiene Metadati in forma di tag che fanno riferimento ad informazioni geografiche. Il file GEOTIFF è strut...")
 
 
(5 versioni intermedie di uno stesso utente non sono mostrate)
Riga 11: Riga 11:
  
 
Mostriamo di seguito un possibile codice per la ricerca e la lettura dei valori della ''Longitudine'' e della ''Latitudine'' dell'<I>angolo superiore sinistro</i> dell'immagine georeferenziata della mappa, ivi rappresentata.
 
Mostriamo di seguito un possibile codice per la ricerca e la lettura dei valori della ''Longitudine'' e della ''Latitudine'' dell'<I>angolo superiore sinistro</i> dell'immagine georeferenziata della mappa, ivi rappresentata.
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim fl As File
 
   Dim fl As File
Riga 18: Riga 18:
 
   Dim lat, lon As Float
 
   Dim lat, lon As Float
 
    
 
    
   fl = Open "<FONT Color=gray>''/percorso/del/file/geotiff.tif''</font>" For Read
+
   fl = Open "<FONT Color=darkgreen>''/percorso/del/file/geotiff.tif''</font>" For Read
 
    
 
    
 
  <FONT Color=gray>' ''Per individuare il TAG "&h8482" presente nel file geotiff, carichiamo i dati in un vettore di tipo Short[ ]:''</font>
 
  <FONT Color=gray>' ''Per individuare il TAG "&h8482" presente nel file geotiff, carichiamo i dati in un vettore di tipo Short[ ]:''</font>
Riga 39: Riga 39:
 
   Print "Angolo superiore sinistro (Max Lat - min long):\n\nLatitudine:  "; lat; "\nLongitudine: "; lon
 
   Print "Angolo superiore sinistro (Max Lat - min long):\n\nLatitudine:  "; lat; "\nLongitudine: "; lon
 
    
 
    
  '''End'''
+
  End
  
  
  
 
=Note=
 
=Note=
[1] Vedi al riguardo: [https://www.awaresystems.be/imaging/tiff/tifftags/modeltiepointtag.html TIFF Tag ModelTiepointTag]
+
[1] Vedere assolutamente al riguardo: [https://www.awaresystems.be/imaging/tiff/tifftags/modeltiepointtag.html TIFF Tag ModelTiepointTag]
  
  
 
=Riferimenti=
 
=Riferimenti=
* http://geotiff.maptools.org/spec/geotiffhome.html
 
 
* https://www.mariocavicchi.it/tesi2/node14.html
 
* https://www.mariocavicchi.it/tesi2/node14.html
 
* https://www.loc.gov/preservation/digital/formats/fdd/fdd000279.shtml
 
* https://www.loc.gov/preservation/digital/formats/fdd/fdd000279.shtml
* https://earthdata.nasa.gov/esdis/eso/standards-and-references/geotiff
 
 
* https://www.usna.edu/Users/oceano/pguth/md_help/html/tbme9v52.htm
 
* https://www.usna.edu/Users/oceano/pguth/md_help/html/tbme9v52.htm
 
* https://trac.osgeo.org/geotiff/
 
* https://trac.osgeo.org/geotiff/
 
* https://web.archive.org/web/20100502061149/http://www.remotesensing.org/geotiff/spec/geotiffhome.html
 
* https://web.archive.org/web/20100502061149/http://www.remotesensing.org/geotiff/spec/geotiffhome.html
 +
* https://forensicsfromthesausagefactory.blogspot.com/2013/03/location-data-within-jpgs.html

Versione attuale delle 11:57, 18 lug 2024

Il file GEOTIFF è un file di formato TIFF georeferenziato. Esso contiene Metadati in forma di tag che fanno riferimento ad informazioni geografiche.

Il file GEOTIFF è strutturato secondo il protocollo che sostiene ogni file immagine di formato TIFF, condividendone i previsti TAG e supportandone altri specifici per la georeferenziazione.

In particolare il TAG &h8482, denominato "ModelTiepointTag", contiene - fra l'altro - anche i valori della Longitudine e della Latitudine dell'angolo superiore sinistro (Max Lat - min long) dell'immagine georeferenziata della mappa ivi rappresentata. [nota 1]

Bisognerà, pertanto, cercare detto TAG e portarsi all'indice offset, definito da un valore di tipo Intero nel 9° byte del campo di tale TAG.
L'area di memoria del file, assegnata ai valori correlati al TAG &h8482, è solitamente formata da 48 byte (6 valori di tipo Float in Gambas).
I due valori della Longitudine e della Latitudine dell'angolo superiore sinistro (Max Lat - min long) dell'immagine georeferenziata della mappa, ivi rappresentata, sono definiti (ovviamente come il tipo Float di Gambas) rispettivamente nel 25° byte e nel 33° byte di tale gruppo di 48 byte.


Mostriamo di seguito un possibile codice per la ricerca e la lettura dei valori della Longitudine e della Latitudine dell'angolo superiore sinistro dell'immagine georeferenziata della mappa, ivi rappresentata.

Public Sub Main()

 Dim fl As File
 Dim cc As New Short[]
 Dim i As Integer
 Dim lat, lon As Float
 
 fl = Open "/percorso/del/file/geotiff.tif" For Read
 
' Per individuare il TAG "&h8482" presente nel file geotiff, carichiamo i dati in un vettore di tipo Short[ ]:
 cc = New Short[Lof(fl)]
 cc.Read(fl, 0, cc.Count / (SizeOf(gb.Short)))
 
' I valori della Longitudine e della Latitudine dell'angolo superiore sinistro dell'immagine sono contenuti nell'area indicata negli ultimi 4 byte del TAG &h8482.
' Pertanto cerca la posizione del valore del predetto TAG (definito da due Byte) usando il Metodo ".Find( )" del vettore di tipo Short[ ]. Inoltre avanza di 8 byte per individuare l'offset ove leggere i dati della Longitudine e della Latitudine.
 Seek #fl, (cc.Find(&8482) * (SizeOf(gb.Short))) + 8
 
' Restituisce l'offset ove leggere i dati della Longitudine e della Latitudine dell'angolo superiore sinistro dell'immagine:
 Read #fl, i  
 
' Individuato l'offset dell'area del TAG &h8482, i valori di Longitudine e Latitudine  dell'angolo superiore sinistro dell'immagine sono indicati da un tipo Float rispettivamente al 25° byte per la "Longitudine" e al 33° byte per la "Latitudine":
 Seek #fl, i + 24
 Read #fl, lon
 Read #fl, lat
 fl.Close
 
 Print "Angolo superiore sinistro (Max Lat - min long):\n\nLatitudine:  "; lat; "\nLongitudine: "; lon
 
End


Note

[1] Vedere assolutamente al riguardo: TIFF Tag ModelTiepointTag


Riferimenti