Statistics
| Revision:

gvsig-scripting / org.gvsig.scripting / trunk / org.gvsig.scripting / org.gvsig.scripting.app / org.gvsig.scripting.app.mainplugin / src / main / resources-plugin / scripting / scripts / tools / photo2shape / imagegpsmetadata.py @ 475

History | View | Annotate | Download (2.78 KB)

1

    
2

    
3
#
4
# ============================================
5
#
6
#  Lector de los metadatos de GPS de las imagenes
7
#
8
execfile( script.getResource("../libs/import_utils.py").getAbsolutePath() )
9

    
10
import_from_jars("libs","com.drew.imaging.ImageMetadataReader")
11

    
12

    
13
class ImageGPSMetadata:
14
  def __init__(self,pathname=None):
15
    self.load(pathname)
16
    
17
  def load(self, pathname):
18
    self.__pathname = pathname
19
    self.__values = dict()
20
    if pathname != None:
21
      metadata = ImageMetadataReader.readMetadata(pathname)
22
      for directory in metadata.getDirectories():
23
        if directory.getName() == "GPS":
24
          for tag in directory.getTags():
25
            self.__values[tag.getTagName().strip()] = tag.getDescription().strip()
26
  
27
  def getLatitude(self, defaultValue=None):
28
    return self.__values.get("GPS Latitude",defaultValue)
29
    
30
  def getLatitudeRef(self, defaultValue=None):
31
    return self.__values.get("GPS Latitude Ref",defaultValue)
32

    
33
  def getLongitude(self, defaultValue=None):
34
    return self.__values.get("GPS Longitude",defaultValue)
35
    
36
  def getLongitudeRef(self, defaultValue=None):
37
    return self.__values.get("GPS Longitude Ref",defaultValue)
38
    
39
  def getAltitude(self, defaultValue=None):
40
    return self.__values.get("GPS Altitude",defaultValue)
41
    
42
  def getAltitudeRef(self, defaultValue=None):
43
    return self.__values.get("GPS Altitude Ref",defaultValue)
44
        
45
  def getDatum(self, defaultValue=None):
46
    return self.__values.get("GPS Map Datum",defaultValue)
47
        
48
  def getDate(self, defaultValue=None):
49
    return self.__values.get("GPS Date Stamp",defaultValue)
50
        
51
  def getTime(self, defaultValue=None):
52
    return self.__values.get("GPS Time-Stam",defaultValue)
53

    
54
  def hasPosition(self):
55
    if self.getLatitude() == None or self.getLatitudeRef() == None or self.getLongitude() == None or self.getLongitudeRef() == None:
56
      return False
57
    return True
58
    
59
  def getPoint(self):
60
    import re
61

    
62
    def getFloat(s):
63
      return float(s.replace(",","."))
64

    
65
    if not self.hasPosition():
66
      return None
67
      
68
    latitud_ref = self.getLatitudeRef().strip().lower()
69
    longitud_ref = self.getLongitudeRef().strip().lower()
70
    
71
    m = re.search("[ ]*([0-9,]+).* ([0-9,]+).* ([0-9,]+)", self.getLatitude())
72
    la = getFloat(m.group(1)) + getFloat(m.group(2))/60 + getFloat(m.group(3))/3600 
73
    if latitud_ref == "S":
74
      la = -la
75
  
76
    m = re.search("[ ]*([0-9,]+).* ([0-9,]+).* ([0-9,]+)", self.getLongitude())
77
    lo = getFloat(m.group(1)) + getFloat(m.group(2))/60 + getFloat(m.group(3))/3600 
78
    if longitud_ref in ("O", "W"):
79
      lo = -lo
80

    
81
    from org.gvsig.fmap.geom import GeometryLocator
82
    from org.gvsig.fmap.geom import Geometry
83

    
84
    geomManager = GeometryLocator.getGeometryManager()
85
    point = geomManager.createPoint(lo,la, Geometry.SUBTYPES.GEOM2D)
86
    return point