Dokumentacja fotograficzna


Recommended Posts

Dzień dobry.

Chciałbym wykorzystać exif'y z jpg'ów, a dokładnie współrzędne zrobienia zdjęcia.
Przy pomocy programu BR's EXIFextracter tworzę plik csv z takimi danymi:
ścieżka ; GPS x; GPS y; kąt
Tworzę blok i wstawiam go we współrzędnych z GPS'a wraz z określonym kątem obrotu. 
Do ostatniego utworzonego elementu dodaję hiperłącze o określonej ścieżce.

Mój tok myślenia idzie w tym kierunku:
1) z pliku csv tworzę listy: lst_path,   lst_x,   lst_y,    lst_angle
2) z każdej listy biorę pierwszy element i wykorzystuję go do stworzenia bloku i przypisania do niego hiperłącza
3) usuwam pierwszy element z każdej listy
4) powtarzam krok 2 i 3 aż listy będą puste

Ból sprawia mi już pierwszy krok. Niby znalazłem coś takiego:
http://www.lee-mac.com/readcsv.html
ale jak zrobić z tego poszczególne listy.

PS w załączeniu przykładowy CSV

GPS.csv

Link to comment
Share on other sites

...może na przykładzie:
Plik csv wygląda tak:
aa;ab;ac;ad
ba;bb;bc;bd
ca;cb;cc;cd
.....
a potrzebuje zrobić z niego listy:
Lista_1 (aa ba ca ....)
Lista_2 (ab bb cb ....)
Lista_3 (ac bc cc ...)
Lista_4 (ad bd bc ...)
W exelu to się nazywa transpozycja (nie wiem czy to pomoże)

Link to comment
Share on other sites

Skorzystaj z gotowych narzędzi lispowych zwanych CADPL-Pack.
Poczytaj tutaj: https://kojacek.wordpress.com/2015/11/04/cadpl-pack/ o nim, co to jest i jak używać.
Potem jest już z górki:
1) Odczytanie pliku csv: 

(setq a (cd:SYS_ReadFile nil (findfile "GPS.csv")))


zwraca listę:

("D:\\Smietnik\\IMG_20180218_133113.jpg;51.269562;22.542074;22" 
"D:\\Smietnik\\IMG_20180218_133117.jpg;51.269562;22.542074;90" 
"D:\\Smietnik\\IMG_20180218_133144.jpg;51.269562;22.542074;180" 
"D:\\Smietnik\\IMG_20180221_190038.jpg;51.269558;22.542191;130")


2) Podział łańcuchów (elementów listy) na osobne listy:

(setq b (mapcar '(lambda (%)(cd:STR_Parse % ";" T)) a))


zwraca:

(("D:\\Smietnik\\IMG_20180218_133113.jpg" "51.269562" "22.542074" "22")
("D:\\Smietnik\\IMG_20180218_133117.jpg" "51.269562" "22.542074" "90")
("D:\\Smietnik\\IMG_20180218_133144.jpg" "51.269562" "22.542074" "180")
("D:\\Smietnik\\IMG_20180221_190038.jpg" "51.269558" "22.542191" "130"))


3) Utworzenie osobnych list na podstawie indeksu. Na poczatek krótka definicja funkcji do tego celu:

(defun jk:LST_nth (Lst Idx)
  (mapcar '(lambda (%)(nth Idx %)) Lst)
)


Teraz wywołania:

(setq p (jk:LST_nth b 0))


zwraca ścieżki:

("D:\\Smietnik\\IMG_20180218_133113.jpg" 
"D:\\Smietnik\\IMG_20180218_133117.jpg" 
"D:\\Smietnik\\IMG_20180218_133144.jpg" 
"D:\\Smietnik\\IMG_20180221_190038.jpg")


potem iksy:

(setq x (jk:LST_nth b 1))


następnie igreki:

(setq y (jk:LST_nth b 2))


na koniec kąty:

(setq g (jk:LST_nth b 3))


oczywiście jeśli potrzeba zmień STR-ingi listy na liczby, tu dla igreków który wygląda tak:

("22.542074" "22.542074" "22.542074" "22.542191")


wywołujesz:

(mapcar 'read y)


zwraca:

(22.5421 22.5421 22.5421 22.5422)

Powinno działać - w razie problemów daj znać.
 

Link to comment
Share on other sites

Dziękuję za tą podpowiedź kojacek. Analizując lisp Lee-Mac'a doszedłem do wniosku, że nie muszę tworzyć list.
W każdym razie  zrobiłem takiego lispa jak załączony. Pozostał mi jeden problem z dodaniem do ostatniego utworzonego bloku hiperłącza.
Tak wygląda fragment mojego kodu:
 

(setq last_ent (entlast))
	(command "_-hyperlink" _i _o last_ent "" path "" "" "" )

..można powiedzieć., że mam problem ze skryptem ;)

Exif - v7.lsp

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...