brazzy / nikki Goto Github PK
View Code? Open in Web Editor NEWGPS Photo diary - standalone Java app, geotagging, export to KMZ
Home Page: http://www.brazzy.de/nikki/
GPS Photo diary - standalone Java app, geotagging, export to KMZ
Home Page: http://www.brazzy.de/nikki/
There should be a way to enter times and location manually or ideally via a GUI like google maps
App needs to support GPS log formats other than NMEA. This requires a redesign of the scanning/parsing mechanism - some sort of pluggable parser modules.
Formats to support:
http://de.wikipedia.org/wiki/GPS_Exchange_Format
KML/KMZ
Lots more at http://www.gpsvisualizer.com/faq.html#filenames
possibly use: http://www.routeconverter.de/
Needs icon and splash screen, also use deployment toolkit on project homepage:
http://download.oracle.com/javase/6/docs/technotes/guides/jweb/deployment_advice.html
Also make offline running work!!
The export could use some parameters:
Perhaps preset configurations for Google Earth and Google Maps?
Default File and document name could be a global setting saved in prefs.
Performance could be better, especially scanning and saving
Images without waypoint should have the export checkbox locked (with explanantory tooltip text)
Alternative: show error popup and reset
using copy/paste should copy the waypoint as well as the time, so that repeated gotagging is not necessary.
Scanning, geotagging and saving should not have to be started manually - this could make the UI simpler. Specifically do this automatically:
Define (configurable) distance threshold and remove waypoints that are closer together. Perhaps make this an export parameter?
How to compute: http://stackoverflow.com/questions/837872/calculate-distance-in-meters-when-you-know-longitude-and-latitude-in-java
Seems to occur only when the image filenames are uppercase. Submitted Google Earth issue:
http://code.google.com/p/earth-issues/issues/detail?id=1426
As workaround, convert image filenames to lowercase
Currently it's possible to run multiple actions (scan/save/export/geotag) in parallel that manipulate the model in a non-threadsafe way. Either block the GUI (display modal progress bar) for each of these actions, or move all manipulation of the model to the EDT via invokeLater()
Day.directory and Directory.path must never be null - this should be enforced, but Groovy ignores "private", which makes that impossible...
App should allow for translated versions - all displayed strings should be moved into resource files.
Images should be ordered, optionally by filename or by timestamp, and this order should be maintained when rescanning or moving images between days via copy/paste
copy and paste should be separate buttons
Currently, images are assigned to days based on the timezone the camera was set to. When this is much different from the timezone the image was taken at, it can be assigned to a wrong day. Using the timezone from the nearest waypoint would be much better, but requires geotagging images before assigning them to days.
Remove images/waypointFiles that are missing when doing a rescan
TimezoneFinder's proximity metric degenerates and eventually fails for coordinates near the pole, and fails near the international date line. This could be fixed by using two overlapping indexes, one based on a transformed coordinate system.
Images that have GPS data from other sources could be used and add new waypoints - this would allow Nikki to be used without GPS track files (perhaps this works already, but not tested, and there would be no track, adding the waypoints would allow one to be displayed)
With automated geotagging, setting the offset disappeard. Needs to be reintroduced somehow
Time-consuming stuff (scan, export) should use multithreading
The manifest contains entries from included libraries - remove or organize these.
License files from included libraries need to be retained
Possibly use nested JARs:
http://www.ibm.com/developerworks/java/library/j-onejar/
http://one-jar.sourceforge.net/index.php?page=getting-started&file=ant
Alternative: deploy via JWS:
http://www.matthiasmann.de/content/view/20/26/
See desert palms image, placed at least 50m away from all waypoints
Handle embedded dates and thumbnails from different camera model (e.g. SZ, handy)
Warn and abort when user exports for day without waypoints
Convert code in PrepImage to "learning tests", i.e. Unit tests that document the usage/behavior of the library - really needed!
Display popup dialog for fatal errors (including in worker threads!), organize logging properly.
Create JNLP file and make it work (not easy, requires some work on manifest, perhaps even redo all filesystem access through webstart mechanisms to allow running with restricted permissions - but that may be impossible while Groovy is used due to its use of reflection).
There should be a dropdown menu, perhaps also context menus in lists and on images. Reuse button actions for these.
large view of images isn't working. GPS path gets closed wiht line from end to beginning.
Java 7 will have a nio2 API to allow listening to filesystem changes - could make rescanning automatic
Warn when user tries to export with no images marked for export
All thumbnails should have the same width, whether they're landscape or portrait, newly computed or read from image data.
Should existing EXIF thumbnails that do not match the desired size be overwritten? Needs work in ImageWriter.writeThumbnail()
There's a newer version of Java image scaling that has a "fast thumbnails" feature - perhaps it could speed up the program?
There should be a warning when the app is closed and there are unsaved changes
Does nothing (for maps added to australia directory)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.