Pawcyk Posted February 22, 2018 Report Posted February 22, 2018 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 Quote
dmatusz3 Posted February 23, 2018 Report Posted February 23, 2018 Proszę mnie naprowadzić, jeśli to źle rozumiem. Potrzebuje Pan lispa, który jeden wiersz podzieli na wiersze tak, aby w każdej linii było kilka odpowiednich wartości. Quote
Pawcyk Posted February 23, 2018 Author Report Posted February 23, 2018 ...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) Quote
dmatusz3 Posted February 24, 2018 Report Posted February 24, 2018 Teraz rozumiem, zmierzymy się z tym początkiem tygodnia. Quote
kojacek Posted February 25, 2018 Report Posted February 25, 2018 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ć. Pawcyk 1 Quote
Pawcyk Posted February 25, 2018 Author Report Posted February 25, 2018 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 Quote
kruszynski Posted February 26, 2018 Report Posted February 26, 2018 W wywołaniu poleceniehyperlink "_I" powinno być w cudzysłowie po co tam jest _O ? powinno być tak: (command "_-hyperlink" "_i" last_ent "" path "" "" "" ) Pawcyk 1 Quote
Pawcyk Posted February 26, 2018 Author Report Posted February 26, 2018 ...jak nie nawias to cudzysłów. Dziękuję. PS z układu WGS 84 na 2000 przechodzę za pomocą: kalkulator zadorskiego 1_1.xls Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.