73 lines
2.1 KiB
Plaintext
73 lines
2.1 KiB
Plaintext
# This is a testcase to obtain the location from an image on Server side
|
|
#
|
|
# The idea is to use the ImageMetadataReader Java Class :
|
|
# https://drewnoakes.com/code/exif/
|
|
#
|
|
# Downloads from:
|
|
# https://github.com/drewnoakes/metadata-extractor/releases
|
|
# Release 2.9.1 was used for this testcase
|
|
#
|
|
# Testcase based on example :
|
|
# https://github.com/drewnoakes/metadata-extractor/blob/master/Samples/com/drew/metadata/GeoTagMapBuilder.java
|
|
|
|
IMPORT JAVA com.drew.metadata.Metadata
|
|
IMPORT JAVA com.drew.metadata.exif.GpsDirectory
|
|
IMPORT JAVA com.drew.metadata.Directory
|
|
IMPORT JAVA com.drew.imaging.ImageMetadataReader
|
|
IMPORT JAVA com.drew.imaging.ImageProcessingException
|
|
IMPORT JAVA com.drew.lang.GeoLocation
|
|
IMPORT JAVA java.io.File
|
|
|
|
|
|
FUNCTION get_exif_latlong_bdl(filename)
|
|
|
|
DEFINE filename STRING
|
|
DEFINE msg STRING
|
|
DEFINE stat SMALLINT
|
|
DEFINE mdata com.drew.metadata.Metadata
|
|
DEFINE jfile java.io.File
|
|
DEFINE gpsdir com.drew.metadata.exif.GpsDirectory
|
|
DEFINE thedir com.drew.metadata.Directory
|
|
DEFINE latlong com.drew.lang.GeoLocation
|
|
DEFINE lat,lon FLOAT
|
|
|
|
LET lat=NULL
|
|
LET lon=NULL
|
|
DISPLAY "FILE ",filename
|
|
TRY
|
|
LET jfile = java.io.File.create(filename)
|
|
LET mdata = com.drew.imaging.ImageMetadataReader.readMetadata(jfile)
|
|
CATCH
|
|
LET stat=STATUS
|
|
LET msg=SFMT("Unable to create ImageMetadataReader for image file '%1'\nError code=%2\n%3",
|
|
filename, stat, err_get(stat))
|
|
CALL fgl_winmessage("Error",msg,"stop")
|
|
RETURN lat,lon
|
|
END TRY
|
|
|
|
TRY
|
|
LET gpsdir = com.drew.metadata.exif.GpsDirectory.create()
|
|
LET thedir = mdata.getFirstDirectoryOfType(gpsdir.getClass())
|
|
CATCH
|
|
LET stat=STATUS
|
|
LET msg=SFMT("Unable to obtain Gps information from image file '%1'\nError code=%2\n%3",
|
|
filename, stat, err_get(stat))
|
|
CALL fgl_winmessage("Error",msg,"stop")
|
|
RETURN lat,lon
|
|
END TRY
|
|
|
|
LET gpsdir = CAST(thedir AS com.drew.metadata.exif.GpsDirectory)
|
|
|
|
IF gpsdir IS NOT NULL THEN
|
|
LET latlong = gpsdir.getGeoLocation()
|
|
LET lat = latlong.getLatitude()
|
|
LET lon = latlong.getLongitude()
|
|
ELSE
|
|
LET lat = 0
|
|
LET lon = 0
|
|
END IF
|
|
|
|
RETURN lat,lon
|
|
|
|
END FUNCTION
|