Merge pull request #1476 from originlake/master

Geo-location file update
pull/1392/head^2
Piero Toffanin 2022-06-20 19:07:05 -04:00 zatwierdzone przez GitHub
commit 0339e0108a
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
3 zmienionych plików z 19 dodań i 14 usunięć

Wyświetl plik

@ -1,4 +1,5 @@
import os
import math
from opendm import log
from opendm import location
from pyproj import CRS
@ -33,10 +34,12 @@ class GeoFile:
else:
x, y = location.transform2(self.srs, longlat, x, y)
omega = phi = kappa = None
yaw = pitch = roll = None
if len(parts) >= 7:
omega, phi, kappa = [float(p) for p in parts[4:7]]
yaw, pitch, roll = [float(p) for p in parts[4:7]]
if math.isnan(yaw) or math.isnan(pitch) or math.isnan(roll):
yaw = pitch = roll = None
i = 7
horizontal_accuracy = vertical_accuracy = None
@ -46,7 +49,7 @@ class GeoFile:
extras = " ".join(parts[i:])
self.entries[filename] = GeoEntry(filename, x, y, z,
omega, phi, kappa,
yaw, pitch, roll,
horizontal_accuracy, vertical_accuracy,
extras)
else:
@ -57,14 +60,14 @@ class GeoFile:
class GeoEntry:
def __init__(self, filename, x, y, z, omega=None, phi=None, kappa=None, horizontal_accuracy=None, vertical_accuracy=None, extras=None):
def __init__(self, filename, x, y, z, yaw=None, pitch=None, roll=None, horizontal_accuracy=None, vertical_accuracy=None, extras=None):
self.filename = filename
self.x = x
self.y = y
self.z = z
self.omega = omega
self.phi = phi
self.kappa = kappa
self.yaw = yaw
self.pitch = pitch
self.roll = roll
self.horizontal_accuracy = horizontal_accuracy
self.vertical_accuracy = vertical_accuracy
self.extras = extras
@ -72,7 +75,7 @@ class GeoEntry:
def __str__(self):
return "{} ({} {} {}) ({} {} {}) ({} {}) {}".format(self.filename,
self.x, self.y, self.z,
self.omega, self.phi, self.kappa,
self.yaw, self.pitch, self.roll,
self.horizontal_accuracy, self.vertical_accuracy,
self.extras).rstrip()

Wyświetl plik

@ -176,12 +176,13 @@ class ODM_Photo:
self.latitude = geo_entry.y
self.longitude = geo_entry.x
self.altitude = geo_entry.z
self.omega = geo_entry.omega
self.phi = geo_entry.phi
self.kappa = geo_entry.kappa
self.dls_yaw = geo_entry.omega
self.dls_pitch = geo_entry.phi
self.dls_roll = geo_entry.kappa
if geo_entry.yaw is not None and geo_entry.pitch is not None and geo_entry.roll is not None:
self.yaw = geo_entry.yaw
self.pitch = geo_entry.pitch
self.roll = geo_entry.roll
self.dls_yaw = geo_entry.yaw
self.dls_pitch = geo_entry.pitch
self.dls_roll = geo_entry.roll
self.gps_xy_stddev = geo_entry.horizontal_accuracy
self.gps_z_stddev = geo_entry.vertical_accuracy

Wyświetl plik

@ -127,6 +127,7 @@ class ODMLoadDatasetStage(types.ODM_Stage):
entry = gf.get_entry(p.filename)
if entry:
p.update_with_geo_entry(entry)
p.compute_opk()
updated += 1
log.ODM_INFO("Updated %s image positions" % updated)