Pawcyk Opublikowano 22 Lutego 2018 Zgłoś Opublikowano 22 Lutego 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 Cytuj
dmatusz3 Opublikowano 23 Lutego 2018 Zgłoś Opublikowano 23 Lutego 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. Cytuj
Pawcyk Opublikowano 23 Lutego 2018 Autor Zgłoś Opublikowano 23 Lutego 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) Cytuj
dmatusz3 Opublikowano 24 Lutego 2018 Zgłoś Opublikowano 24 Lutego 2018 Teraz rozumiem, zmierzymy się z tym początkiem tygodnia. Cytuj
kojacek Opublikowano 25 Lutego 2018 Zgłoś Opublikowano 25 Lutego 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 Cytuj
Pawcyk Opublikowano 25 Lutego 2018 Autor Zgłoś Opublikowano 25 Lutego 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 Cytuj
kruszynski Opublikowano 26 Lutego 2018 Zgłoś Opublikowano 26 Lutego 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 Cytuj
Pawcyk Opublikowano 26 Lutego 2018 Autor Zgłoś Opublikowano 26 Lutego 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 Cytuj
Rekomendowane odpowiedzi
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.