vince7lf / aerial_wildlife_detection

Tools for detecting wildlife in aerial images using active learning
MIT License
0 stars 0 forks source link

script to inverse geotag jpg images (exiftool) to worldfile then convert to geotiff and then geojson #56

Open vince7lf opened 1 year ago

vince7lf commented 1 year ago

Use exiftoof

https://exiftool.org/geotag.html#Inverse

then use ogr2ogr (to be tested) to generate the geojson. maybe need to translate into shp

vince7lf commented 1 year ago

vince@vince-VirtualBox:~$ exiftool -fileOrder gpsdatetime -p ~/Downloads/AIDE+MELCC/gpx.fmt ~/Downloads/AIDE+MELCC/presence_AIDE > ~/Downloads/AIDE+MELCC/presence_AIDE/out.gpx

exiftool -fileOrder gpsdatetime -p ~/Downloads/AIDE+MELCC/gpx.fmt ~/Downloads/AIDE+MELCC/presence_AIDE/2019-Boucherville-13225474-13410695_tile.jpg > ~/Downloads/AIDE+MELCC/presence_AIDE/2019-Boucherville-13225474-13410695_tile.gpx

vince7lf commented 1 year ago
<?xml version="1.0" encoding="utf-8"?>
<gpx version="1.0"
 creator="ExifTool 10.80"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://www.topografix.com/GPX/1/0"
 xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
<trk>
<number>1</number>
<trkseg>
<trkpt lat="45.6261787050444" lon="-73.4666400120111">
  <ele>2.4</ele>
  <desc>2019-Boucherville-13225474-13410695_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6261898240306" lon="-73.4666252808222">
  <ele>2.4</ele>
  <desc>2019-Boucherville-13225474-13411674_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6261882428583" lon="-73.4666379797195">
  <ele>2.5</ele>
  <desc>2019-Boucherville-13225474-13411711_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6262013600194" lon="-73.4666352371083">
  <ele>2.5</ele>
  <desc>2019-Boucherville-13225474-13411740_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6262036046861" lon="-73.4666231179639">
  <ele>2.5</ele>
  <desc>2019-Boucherville-13225474-13411769_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6262053361417" lon="-73.4666109777417">
  <ele>2.5</ele>
  <desc>2019-Boucherville-13225474-13411821_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265679101417" lon="-73.4667029709167">
  <ele>2.4</ele>
  <desc>2019-Boucherville-13226091-13427708_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265746976306" lon="-73.4667058846984">
  <ele>2.6</ele>
  <desc>2019-Boucherville-13226091-13427732_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265741156083" lon="-73.4667129708532">
  <ele>2.6</ele>
  <desc>2019-Boucherville-13226091-13427763_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265734196694" lon="-73.4667244142262">
  <ele>2.6</ele>
  <desc>2019-Boucherville-13226091-13427791_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265835893889" lon="-73.4667249891032">
  <ele>2.6</ele>
  <desc>2019-Boucherville-13226091-13427830_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6270834458694" lon="-73.4653648664333">
  <ele>3.2</ele>
  <desc>2019-Boucherville-13226962-13426671_tile.jpg</desc>
</trkpt>
<trkpt lat="45.627083802775" lon="-73.4653778825917">
  <ele>3.2</ele>
  <desc>2019-Boucherville-13226962-13426700_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6270829287306" lon="-73.4653873426861">
  <ele>3.2</ele>
  <desc>2019-Boucherville-13226962-13426720_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6270921766389" lon="-73.4653849251417">
  <ele>3.2</ele>
  <desc>2019-Boucherville-13226962-13426740_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6270902563361" lon="-73.4653723169444">
  <ele>3.2</ele>
  <desc>2019-Boucherville-13226962-13426767_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6270874719639" lon="-73.4653604526833">
  <ele>3.2</ele>
  <desc>2019-Boucherville-13226962-13426795_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6266987078083" lon="-73.4648529325861">
  <ele>3.6</ele>
  <desc>2019-Boucherville-13228355-13413293_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6266970299806" lon="-73.464839086975">
  <ele>3.6</ele>
  <desc>2019-Boucherville-13228355-13413330_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6266955244417" lon="-73.4648286077194">
  <ele>3.6</ele>
  <desc>2019-Boucherville-13228355-13413362_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6267039645833" lon="-73.4648288816555">
  <ele>3.6</ele>
  <desc>2019-Boucherville-13228355-13413470_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6267064942528" lon="-73.4648398166639">
  <ele>3.6</ele>
  <desc>2019-Boucherville-13228355-13413503_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6267038739056" lon="-73.464853072825">
  <ele>3.6</ele>
  <desc>2019-Boucherville-13228355-13413529_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6267160531139" lon="-73.4648567137333">
  <ele>3.5</ele>
  <desc>2019-Boucherville-13228355-13413555_tile.jpg</desc>
</trkpt>
<trkpt lat="45.626716517025" lon="-73.4648424197694">
  <ele>3.5</ele>
  <desc>2019-Boucherville-13228355-13413582_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6267186342389" lon="-73.4648305181556">
  <ele>3.6</ele>
  <desc>2019-Boucherville-13228355-13413609_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265811573444" lon="-73.4647454636667">
  <ele>3.2</ele>
  <desc>2019-Boucherville-13228844-13413947_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265819448417" lon="-73.4647313870944">
  <ele>3.2</ele>
  <desc>2019-Boucherville-13228844-13414127_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265910870278" lon="-73.4647481172028">
  <ele>3.2</ele>
  <desc>2019-Boucherville-13228844-13414258_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265876111306" lon="-73.4647591509167">
  <ele>3.4</ele>
  <desc>2019-Boucherville-13228844-13414282_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265946217667" lon="-73.4647561864333">
  <ele>3.4</ele>
  <desc>2019-Boucherville-13228844-13414482_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265954120833" lon="-73.4647419148306">
  <ele>3.4</ele>
  <desc>2019-Boucherville-13228844-13414511_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6262981170389" lon="-73.4676422014406">
  <ele>4</ele>
  <desc>2019-Boucherville-13229812-13434270_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6262976521389" lon="-73.4676189192539">
  <ele>4.5</ele>
  <desc>2019-Boucherville-13229812-13434351_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6263076572583" lon="-73.4676164716706">
  <ele>4.5</ele>
  <desc>2019-Boucherville-13229812-13434375_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6263069371028" lon="-73.4676301227103">
  <ele>4.5</ele>
  <desc>2019-Boucherville-13229812-13434721_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6263056702611" lon="-73.4676399715239">
  <ele>4</ele>
  <desc>2019-Boucherville-13229812-13434748_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6263151642417" lon="-73.4676393026628">
  <ele>4</ele>
  <desc>2019-Boucherville-13229812-13434769_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6263168290444" lon="-73.4676280675119">
  <ele>4</ele>
  <desc>2019-Boucherville-13229812-13434792_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6262369997472" lon="-73.4684117933928">
  <ele>2.3</ele>
  <desc>2019-Boucherville-13230953-13463269_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6262344920389" lon="-73.46838727875">
  <ele>2.4</ele>
  <desc>2019-Boucherville-13230953-13463306_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6262447191306" lon="-73.468388670365">
  <ele>2.3</ele>
  <desc>2019-Boucherville-13230953-13463324_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6262445189611" lon="-73.4684128449444">
  <ele>2.8</ele>
  <desc>2019-Boucherville-13230953-13463369_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6262534584722" lon="-73.468414018385">
  <ele>2.8</ele>
  <desc>2019-Boucherville-13230953-13463408_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6262528375861" lon="-73.4683974815914">
  <ele>2.3</ele>
  <desc>2019-Boucherville-13230953-13463426_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6262547970833" lon="-73.4683872729206">
  <ele>2.3</ele>
  <desc>2019-Boucherville-13230953-13463448_tile.jpg</desc>
</trkpt>
<trkpt lat="45.62616457835" lon="-73.4685953497936">
  <ele>1.5</ele>
  <desc>2019-Boucherville-13231838-13463953_tile.jpg</desc>
</trkpt>
<trkpt lat="45.626159605675" lon="-73.4685798055794">
  <ele>1.5</ele>
  <desc>2019-Boucherville-13231838-13463976_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6261664087222" lon="-73.4685824615239">
  <ele>1.5</ele>
  <desc>2019-Boucherville-13231838-13464020_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6261809824056" lon="-73.4686145844286">
  <ele>1.5</ele>
  <desc>2019-Boucherville-13231838-13464073_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6261800844639" lon="-73.4685966660397">
  <ele>1.7</ele>
  <desc>2019-Boucherville-13231838-13464088_tile.jpg</desc>
</trkpt>
<trkpt lat="45.62617786875" lon="-73.4685822383017">
  <ele>1.6</ele>
  <desc>2019-Boucherville-13231838-13464104_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6261376290667" lon="-73.4690302490594">
  <ele>2.9</ele>
  <desc>2019-Boucherville-13232283-13462758_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6261451143417" lon="-73.4690285385833">
  <ele>2.9</ele>
  <desc>2019-Boucherville-13232283-13462781_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6261460134" lon="-73.4690414414642">
  <ele>2.9</ele>
  <desc>2019-Boucherville-13232283-13462803_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6261459387861" lon="-73.4690540120953">
  <ele>2.9</ele>
  <desc>2019-Boucherville-13232283-13462821_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6261537084167" lon="-73.4690414548808">
  <ele>2.9</ele>
  <desc>2019-Boucherville-13232283-13462881_tile.jpg</desc>
</trkpt>
<trkpt lat="45.626157153275" lon="-73.4690270243808">
  <ele>2.9</ele>
  <desc>2019-Boucherville-13232283-13462903_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6266956292611" lon="-73.4683014274842">
  <ele>3.2</ele>
  <desc>2019-Boucherville-13310926-13463053_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6266956559361" lon="-73.4682869913531">
  <ele>3.1</ele>
  <desc>2019-Boucherville-13310926-13463091_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6266974590833" lon="-73.4682737995675">
  <ele>3.2</ele>
  <desc>2019-Boucherville-13310926-13463110_tile.jpg</desc>
</trkpt>
<trkpt lat="45.626703956425" lon="-73.4682752282064">
  <ele>3.2</ele>
  <desc>2019-Boucherville-13310926-13463130_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6267036751583" lon="-73.4682873285794">
  <ele>3.2</ele>
  <desc>2019-Boucherville-13310926-13463148_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6267033586639" lon="-73.4682975047303">
  <ele>3.2</ele>
  <desc>2019-Boucherville-13310926-13463166_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6267105944417" lon="-73.4682980020753">
  <ele>3.6</ele>
  <desc>2019-Boucherville-13310926-13463189_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6267091005472" lon="-73.4682842329722">
  <ele>3.6</ele>
  <desc>2019-Boucherville-13310926-13463211_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6267080657694" lon="-73.4682708650081">
  <ele>3.6</ele>
  <desc>2019-Boucherville-13310926-13463233_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6268418760278" lon="-73.4674083797936">
  <ele>2.9</ele>
  <desc>2019-Boucherville-13312057-13428234_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6268395808056" lon="-73.4673961793928">
  <ele>2.9</ele>
  <desc>2019-Boucherville-13312057-13428263_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6268498428639" lon="-73.4673813919167">
  <ele>2.9</ele>
  <desc>2019-Boucherville-13312057-13428332_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6268508845361" lon="-73.4673921774564">
  <ele>2.9</ele>
  <desc>2019-Boucherville-13312057-13428356_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6268441256111" lon="-73.4674088089683">
  <ele>2.9</ele>
  <desc>2019-Boucherville-13312057-13428377_tile.jpg</desc>
</trkpt>
<trkpt lat="45.62685179065" lon="-73.4674089696944">
  <ele>2.9</ele>
  <desc>2019-Boucherville-13312057-13428404_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6268539473361" lon="-73.4673949352222">
  <ele>2.9</ele>
  <desc>2019-Boucherville-13312057-13428426_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6268530869444" lon="-73.4673794174325">
  <ele>2.9</ele>
  <desc>2019-Boucherville-13312057-13428449_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265828854694" lon="-73.4652348596306">
  <ele>3.1</ele>
  <desc>2019-Boucherville-13314666-13413013_tile.jpg</desc>
</trkpt>
<trkpt lat="45.626519295675" lon="-73.4669924565953">
  <ele>3.7</ele>
  <desc>2019-Boucherville-13571792-13572006_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265193852417" lon="-73.466978405">
  <ele>3.7</ele>
  <desc>2019-Boucherville-13571792-13572063_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265247352333" lon="-73.4669663613731">
  <ele>3.7</ele>
  <desc>2019-Boucherville-13571792-13572097_tile.jpg</desc>
</trkpt>
<trkpt lat="45.626535484475" lon="-73.4669648549206">
  <ele>3.7</ele>
  <desc>2019-Boucherville-13571792-13572132_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265342069917" lon="-73.466978577873">
  <ele>3.7</ele>
  <desc>2019-Boucherville-13571792-13572203_tile.jpg</desc>
</trkpt>
<trkpt lat="45.62653513315" lon="-73.4669905316586">
  <ele>3.7</ele>
  <desc>2019-Boucherville-13571792-13572334_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265428850306" lon="-73.4669904510081">
  <ele>3.7</ele>
  <desc>2019-Boucherville-13571792-13572379_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265434585806" lon="-73.4669781745914">
  <ele>3.7</ele>
  <desc>2019-Boucherville-13571792-13572426_tile.jpg</desc>
</trkpt>
<trkpt lat="45.6265405278694" lon="-73.4669626685992">
  <ele>3.7</ele>
  <desc>2019-Boucherville-13571792-13572450_tile.jpg</desc>
</trkpt>
</trkseg>
</trk>
</gpx>
vince7lf commented 1 year ago
#------------------------------------------------------------------------------
# File:         gpx.fmt
#
# Description:  Example ExifTool print format file to generate a GPX track log
#
# Usage:        exiftool -p gpx.fmt -ee3 FILE [...] > out.gpx
#
# Requires:     ExifTool version 10.49 or later
#
# Revisions:    2010/02/05 - P. Harvey created
#               2018/01/04 - PH Added IF to be sure position exists
#               2018/01/06 - PH Use DateFmt function instead of -d option
#               2019/10/24 - PH Preserve sub-seconds in GPSDateTime value
#
# Notes:     1) Input file(s) must contain GPSLatitude and GPSLongitude.
#            2) The -ee3 option is to extract the full track from video files.
#            3) The -fileOrder option may be used to control the order of the
#               generated track points when processing multiple files.
#------------------------------------------------------------------------------
#[HEAD]<?xml version="1.0" encoding="utf-8"?>
#[HEAD]<gpx version="1.0"
#[HEAD] creator="ExifTool $ExifToolVersion"
#[HEAD] xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
#[HEAD] xmlns="http://www.topografix.com/GPX/1/0"
#[HEAD] xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">
#[HEAD]<trk>
#[HEAD]<number>1</number>
#[HEAD]<trkseg>
#[IF]  $gpslatitude $gpslongitude
#[BODY]<trkpt lat="$gpslatitude#" lon="$gpslongitude#">
#[BODY]  <ele>$gpsaltitude#</ele>
#[BODY]  <time>${gpsdatetime#;my ($ss)=/\.\d+/g;DateFmt("%Y-%m-%dT%H:%M:%SZ");s/Z/${ss}Z/ if $ss}</time>
#[BODY]  <desc>$filename</desc>
#[BODY]</trkpt>
#[TAIL]</trkseg>
#[TAIL]</trk>
#[TAIL]</gpx>
vince7lf commented 1 year ago

Refer to gpx xml schema documentation https://www.topografix.com/gpx.asp

vince7lf commented 1 year ago

refer to gdal gpx driver https://gdal.org/drivers/vector/gpx.html

vince7lf commented 1 year ago

Create a worldfile jgw/wld with the name than the jpeg file to geolocate the jpeg. The JPEG can then be converted/exported into a geotiff and then tiled.

The distances are not precise. 1e-8m has been measured with QGIS for a specific image with a square of 1m x 1m in the image at an altitude of 2.4.

Ref to https://en.wikipedia.org/wiki/World_file

0.00000001
0
0
-0.00000001
-73.4666400120111
45.6261787050444
vince7lf commented 1 year ago

script written to extract GPS info from JPEG and convert if to geoTiff with gdal_translate; tested script only, workd. Integrated to the project, not tested; need to support tiff images.