Releases: geo-raypan/dji-geotagger
Releases · geo-raypan/dji-geotagger
Release list
v3.1.1
A flight nobody had ticked yet was checked against the ticked folders' observations alone, so it reported every exposure uncovered and was drawn as ruined. It is judged against everything on disk now, and exposures a neighbouring folder does observe no longer count towards that verdict. Two things the documentation did not say, and should have. A DJI base solved by a third-party PPP service carries an uncorrected antenna offset: no calibration is published for the D-RTK 3, so neither CSRS-PPP nor RTKLIB applies one, it does not cancel between base and rover, and it is not in the reported sigma. And UTCAtExposure holds GPS time, not UTC - it is DJI's own XMP field, passed through under DJI's name. The new docs/output.md gives the provenance of every output column. The help tooltips read as sections rather than a wall of text, and About no longer prints file paths.
v3.1.0
Exposures at a DJI folder boundary are no longer lost. The trajectories are merged into the single recording they came from before any exposure is placed, and a neighbouring folder outside the run can lend its observations. L2 flights can be geotagged: the rover log is read from *.RTK as well as *_PPKRAW.bin. Changes results. Photos are paired with MRK records by DJI's own exposure number rather than by sorted position. A folder that does not start at 0001 was previously paired with the wrong records throughout - every L2 folder, and any folder left behind by an aborted flight. Reprocess L2 work done with an earlier version. Also: the base antenna height now reaches convbin, k is entered as a number, and the flights step gained a review panel.
v3.0.3
v2.1.1
Fix: the antenna height never reached the base station solution. convbin's -hd option takes h/e/n and was being given n/e/h, and RTCM message 1006 overrides it in any case - a DJI DRTK-3 broadcasts 0.0000 in that field. The RINEX header therefore always read a zero delta and the solved position described the antenna reference point rather than the ground mark it was set up over. The delta is now written into the header after conversion and read back into RTKLIB as ant2-antdelu. Both ends are needed: correcting only the header would have placed the antenna at the mark and dropped every camera position by the antenna height. Camera positions from earlier versions are unaffected - the old chain was self-consistent. What was wrong is the recorded base coordinate.
v2.1.0
Automated CSRS-PPP submission, coordinate transformation, and a set of fixes
for errors that were previously silent.
Added
resolve_base_position()—"online"submits to CSRS-PPP and fetches
the.sumback,"sum"reads an existing one,"manual"takes known
coordinates. No CSRS account is needed; the service checks the address
format only.transform_coordinates()— datum transformation and projection via
pyproj, with uncertainties rotated into the target frame. Refuses PROJ's
three silent failures — ballpark fallbacks, datum ensembles, and a missing
epoch — each with an explicit override.make_utm_crs()andrebase_projected_crs()for datums EPSG has no
versioned projected code for, such as ITRF2020 UTM and Alberta 3TM.- Base/rover time overlap check before RTKLIB runs.
- Per-flight error isolation; failures listed in
attrs["failed_flights"]. - Progress reporting with cooperative cancellation, and
configure_logging().
Fixed
.sumcolumn layout is read from the header. CSRS-PPP inserts aSIG_TOT
column when it propagates the epoch, which shifted every correlation one
place right and was read as a sigma without any error.- Indefinite RTKLIB covariance matrices are detected and repaired, so they can
be inverted for bundle-adjustment weighting. - Local working directories are no longer packaged into the distribution.
Removed
scipy, which was declared but never imported.
Requires Python 3.11 · pip install dji-geotagger==2.1.0