» Poradna » Programy

Jak vytvořit index pro 50 mil. řádků ?

 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

Pracuji s daty v textové tabulce o velikosti 6 GB s 50 mil. řádky. Data nemám setříděná, ale i tak trvá jeden dotaz, dvojí projití dat, jen necelé 2 sekundy. Všechna data jsou uložena v paměti - VirtualAlloc. Na vyhledání volám z C++ funkci v x64 assembleru, kterou jsem si naprogramoval . Pro jednu úlohu potřebuji ale vždy zpracovat cca 1 000 dotazů což trvá okolo 1 hodiny. Napadlo mě data setřídit a vytvořit k nim index, což by dotaz urychlilo pod 1 ms. Data jsou celá čísla uložená jako __ int32. Jak ten index udělat ? Nebo to po setřídění čísel spíš řešit půlením intervalu ?

Odpovědi na otázku

 |   |  Microsoft Windows 10 Edge 17.17134

V tomto případě nemá index smysl - použij půlení intervalu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

Aha, takže ty jsi takové kápo, že jsi si vytvořil funkci v assembleru a ptáš se na tohle? A podle toho co píšeš asi blbý nebudeš, tak přestaň trolit nedělej z nás blbce. Jen nás zkoušíš.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Je to velká story, díl 2.První díl je tu:https://www.zive.cz/poradna/c-nacteni-velkeho...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

Aha takže začátečník (jedno v jakém jazyce začíná) si udělá fci v assembleru. Dobře nás krmí...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

A těch 1000 dotazů je náhodných nebo mají mezi sebou nějaký vztah?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

Jde o dotaz v cyklu po 1 stupni zeměpisné šířky a délky.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Tak si prostě udělej jeden dotaz, kterým vybereš oblast o 30x30 stupních, to vybere statisticky odhadem asi 350000 řádků, a ty zkus třeba zindexovat něbo prostě nějak vyšpukulovat jak ty řádky ošetřit a pak na tom vykonej teprve těch třeba 900 dotazů (30x30 stupňů)... toto všechno by to přece mělo zvládnout rychlejc než za 1 hodinu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

a ještě mě napadla taková blbost. Pokud chceš vybírat s přesností na jeden stupeň, nebylo by rychlejší, kdyby tam byl sloupec s udanou zaokrouhlenou hodnotou směrem dolů např. nehledal bys hodnoty 0 - 1 stupeň, ale 0 stupeň a v druhém sloupci by byla přesná hodnota. A ty bys hledal přesnou hodnotu, takže by to bylo daleko rychlejší.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

V té poslední větě mělo být a ty bys hledal zaokrouhlenou hodnotu, takže by to bylo daleko rychlejší (jako ve smyslu toho, že by se hledala jedna přesná hodnota a ne interval).

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

... takže by to vpodstatě byla taková indexace

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

nepomohlo by udělat tím zmíněným skriptem filtr podle tohohle rozsahu?:Map Corners CoordinatesProject: SRS: EPSG:4326NW (upper left)X: 74.1628407461Y: 34.0970808486NE (upper right)X: 146.020803443Y: 34.0970808486SE (bottom right)X: 146.020803443Y: -16.4715428286SW (bottom left)X: 74.1628407461Y: -16.4715428286Je to výběr oblasti pro rozsah zhruba od Indie po severní pobřeží Austrálie s Papuou Novou Guineou napravo. Což byla myslím původní zájmová oblast.Tím se objem dat dramaticky zmenší.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

moment, v tom původním vlákně ti přece někdo vyrobil skript, kterým z toho mamutího texťáku uděláš výřez jen dané oblasti a ten pak v klidu načteš a zpracuješ v tom QGISu. Zkoušels to?

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

Jirka Vejrazka [IP]24. 04. 2018 10:26 | Linux Firefox 52.0https://pastebin.com/mpG4sAp2ma to o tri radky vic, nez jsem vcera avizoval, protoze jsem tam pridal mereni casu zpracovani.Pousti se to "pypy bojky.py <jmeno_DAT_souboru> <lat_min> <lat_max> <lon_min> <lon_max> > filtrovany_vysledek.txt"Pozn. sám jsem to ještě nezkusil a potřebuješ nainstalovat Python (jestli máš nainstalovaný QGIS, tak máš myslím i Python). Tyhle filtry v příkazovém řádku obvykle jedou jak blesk proti načítání do nějakého SW.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

Tak tak...Cele je to jakesi podivne. Tazatel ma temer magicke schopnosti v jedne oblasti a ve druhe nevi zakladni veci.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 7 Chrome 59.0.3071.90

mám pocit, že to doma zkusím sám

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

V QGISu trvá jen načtení souboru ve tvaru GeoPackage asi 10 minut. V C++ 5 sekund.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 7 Chrome 59.0.3071.90

čti prosím pořádně co jsem napsal.1) nechci, abys načítal celý ten megasoubor do QGISu, neb jsi už dříve napsal, že tě z těch dat zajímá jen určitá oblast - pokud si dobře pamatuju, tak výřez souřadnic, co jsem ti uvedl v jednom z příspěvků ze včerejška by měl odpovídat2) tím python skriptem, co ti vyrobil Jirka Vejrazka si z toho velkého texťáku vyrobíš mnohem menší (aniž bys to načítal do mapy!)3) ten (podle mne minimálně 10x menší) textový soubor s daty jen pro tvou zájmovou oblast si načteš do QGISu a můžeš s tím pracovat. S takto výrazně nižším počtem bodů to nebude tak pomalé a můžeš už k tomu přidat další podklady, satelitní snímky apod. dle potřeby.nějaké otázky?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 65.0.3325.183

CREATE INDEX index_nameON table_name (column1, column2, ...);

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

Nepoužívám žádnou databázi, bylo by to pomalejší. Není nad hrubou sílu CPU a příkazy mov rcx, 50 000 000; dělej něco, loop .

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

Zatimco ta databaze hrubou silu a "mov rcx" nepouziva, data pro tebe hleda vysilanim kourovych signalu mezi grafickou kartu a zdroj PC a nema za sebou 45 let vyvoje zamereneho na co nejrychlejsi poskytovani pozadovanych dat...

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

Koukam, ze jsi od minula stale nepochopil jednu vec. Musis si vybrat. a) bud budes opakovane vyhledavat radove v sekundach pro kazde hledani, protoze budes prohledavat surova data.b) nebo obetujes par minut na to, aby sis ta data nejdriv pripravil (setridenim v pameti, nactenim do databaze, vyfiltrovanim zajimavych zaznamu, atd. atp.) Pak budes schopny hledani provadet opakovane v radu milisekund.Je na tobe, kterym smerem se vydas. Ale nemuzes hledat "rychle" na takhle velkem objemu surovych dat.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 7 Chrome 59.0.3071.90

podle mne nemá smysl se pořád vláčet s celým datasetem, když to jde aspoň nahrubo vyfiltrovat na řekněme 1/5 nebo 1/10 původního objemu. Proč načítat data pro celou zeměkouli, když mu jde jen o omezenou oblast.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

S daty není žádný problém, jsou snadno dostupná v alokované paměti 7 GB. Zájmová oblast je hlavně Indický oceán, což představuje cca 1/4 všech dat.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 7 Chrome 59.0.3071.90

no tak si je ořízni a nepracuj s celým souborem!

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Edge 17.17134

a) snadno dostupná - akorát že opakované prohledávání těch 7GB chvíli trvá.b) 1/4 dat znamená podstatné zkrácení prohledávání - proč to neuděláš?c) zkusils půlení intervalu? Je to velmi jednoduché a účinné pro vyhledávání numerických hodnot.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.181

V databaze pomalsie? Na databazu je aj tvojich 5 sekund astronomicky vela, pretoze databazy bezne dokazu spracovat pri vhodne spravenom indexe niekolko nasobne viac zaznamov, ne ktore mas k dispozicii a to radovo v milisekundach.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Jenže on nepíše o jednom dotazu, ale o 1000 dotazech. Mimochodem v minulém díle story jsem to osobně zkoušel a mysql s indexací a tabulkou v ram mi to vyhledávalo asi za 1/4 sekundy 1x1 stupeň plochy nad všemi 50 mil řádky, takže 1000 dotazů bych zmáknul za 4 minuty. Ale psal jsem tu už, že pokud by se ty dotazy řešili nad určitou plochou, tak by se dalo omezity jedním dotazem ta plocha a tedy velikost dat pro těch 1000 dotazů a jednak pokud by se dotazy dělali po 1 stupni, tak by bylo snad i vhodnější hledat jednu hodnotu zaokrouhlenou v tabulce.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

Na to by bylo lepsi pouzit nejakou Geo databazi, ktera ma specialni typy indexu pro vyhledavani a reseni podobnych veci.A pise se "dotazy resily"...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Já ti kašlu na pravopis ve vlákně, které má v nadpise před otazníkem mezeru. Když zapnu mou pravopisovou část mozku, tak jsem schopnej psát správně i/y.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.181

nie je potrebne vymyslat nejake specialne typy databaz, ked si mozem zvolit z velkej mnoziny uz existujucich. Vyber je dost velky, mozem ako priklad uviest ms sql, ktora ma od verzie 2008 datovy typ geography, ktory je presne na toto urceny !!!! Da sa to spravit aj v inych typoch databazy , ale musi sa spravit konverzia napriklad na datovy typ integer a nebude to take rychle, ale urcite rychlejsie ako sa kaslat s velkym textakom....Alebo mozem zvolit nejaku NoSQL databazu, ktore maju vseobecnosti velmi rychle vyhladavanie.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

Vsak jsem to tak myslel, pouzit nejakou databazi ktera ma podporu pro Geo a Spatial veci. Dnes uz to umi skoro kazdy slusnejsi DB engine.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.181

ono to napriklad zvladne aj oracle, tam je treba datovy type SDO_GEOMETRYhttps://stackoverflow.com/questions/30908013/how-to...

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 7 Chrome 59.0.3071.90

pokud se prasecky - hrubým filtrem - (např. tím tvým skriptem) udělá vyfiltrovanější verze toho texťáku, tak už to do mapy půjde načíst v pohodě a v té geodatabázi - zmíněná GeoPackage či SQlite se to v QGISu sekat nebude.I kdyby to nakrmil celé do PostGIS databáze (Postgre SQL s nadstavbou) tak mu stejně tohle řešení musí běžet na stejném kompu a moc si nepomůže. Ale k tomu nevidím důvod, když 3/4 dat na nic nepotřebuje a vyfiltrování má automaticky hotové za pár minut.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8.1 Chrome 66.0.3359.181

Pokud z duvodu nabozenskeho presvedceni nechceme pouzit databazi (jiny duvod nez nabozenske presvedceni neexistuje) a pokud je pro nas problem data seredit podle lepe selektivni souradnice, tak pak uz me napada leda hledat vsech tech 1000 hodnot najednou (narozdil od 6GB se vejdou do cache procesoru a neni treba cist 1000x 6GB z pomale ram)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

1000 dotazů, ne hodnot. A do chache procesu by se mu ta tabuka vlezla sotva.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8.1 Chrome 66.0.3359.181

pravda je, ze "Jde o dotaz v cyklu po 1 stupni zeměpisné šířky a délky" ma pro me informacni hodnotu 0, ale stejne mi prijde, ze by to melo jit JEDNIM pruchodem tech 6 GB dat, at uz je ten "dotaz po 1 stupni" co chce.Tak jako tak je to chujovina, kdyz mame databaze a spatial indexy, popr. jine amaterske, ale porad lepsi pristupy.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Na rozdíl od tebe jsem nad těmi 50 mil řádky už testy dělal. Ty tak akorát umíš teoreticky plkat, si nahoď takovou tabulku do databáze a zkoušej a uvidíš, že to tak lehký není, jako že se to prostě nahodí do databáze, prostě se tam udělá index a pak se nějak prostě udělaj dotazy a bude to trvat 1 ms

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

Zaprve jsi to nenahodil do databaze, ale do MySQL. Zadruhe jsi ani netusil, ze je potreba DB index, dokud jsem te na to neupozornil. Za treti - to, ze jsi to jednou zkusil, z tebe nedela experta. Prestan delat ramena, prosim.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

1. Mysli si o mysql co chceš, já ji za databázi považuju a na mé hraní naproto stačí Stejně tak spolu s sqlite.2. Na nic si mě neupozorňoval. Jasně jsem psal, že ty testy, které jsem uváděl byly ještě bez indexu, protože k tomu jsem se v té době ještě nedostal, viz příspěvek: ---Milan Král (Krakatoa)23. 04. 2018 13:58 | Microsoft Windows 10 Firefox 59.0A to jsem ještě nezkoušel indexy. ---3. Ne, expert na databáze opravdu nejsem, dyť jsem až při testování todle toho přišel na to, že se musí nastavit to BTree aby to fungovalo (a na to jsem přišel sám, ne že mi tu budeš psát, že jsi mě na to upozornil ty) a třeba doteď netuším proč se to využívání indexu chová tak divně (Milan Král (Krakatoa) - 24. 04. 2018 12:33).

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8.1 Chrome 66.0.3359.181

Zkus si nejdriv precisthttps://docs.microsoft.com/en-us/sql/relational-data... dlouze se zamyslet, neco stvorit a pak se vrat.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Jako myslíš toto?https://dev.mysql.com/doc/refman/8.0/en/using-s... Dlouze jsem se zamyslel a stejně nechápu jak to chceš udělat jediným průchodem těch třeba 900 dotazů pro 30x30 stupně.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 7 Chrome 59.0.3071.90

když už DB, tak:https://postgis.net

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Microsoft Windows 7 Chrome 59.0.3071.90

mno, podle mne to prostě blbě napsal. On potřebuje pracovat s daty v té určité oblasti, ale má data pro celý svět. Snaží se různě krkolomně to načíst celé a zobrazovat si z toho jen ten kus, ale to je podle mne prostě blbost.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Tak minule jsem ho pochopil, že chce udělat jeden dotaz pro náhodnou oblast a vypsat boje, které byly v té oblasti.V tomto vlákně jsem ho pochopil tak, že chce udělat dotazy pro určitou náhodnou oblast (např. 30x30 stupňů), kterou rozkouskuje po 1 stupni (30x30 = 900 dotazů) a v těch všech podoblastech chce zas výpis těch bójí.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

Jde o nalezení pravděpodobného místa, odkud se bóje pohybovala. Například nález Flaperonu, ostrov Reunion tj. LATa -20,615 až -21,615 a LONa 55,036 až 56,036 a pak hledám bóje (jejich počet), která se pohybovaly v oblasti LATa/LONa a v cyklu zkouším najít, kolik stejných bójí (č. bóje) se pohybovalo v oblasti LATb 0 až -40 a LONb 80 až 108 ve čtvercích po 1 stupni. Výsledkem je pak "heat mapa" , která zobrazí místa s nejvyšším výskytem bójí (včetně čísel konkrétních bójí).

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

Nastuduj si neco o spatial databazich. Ty jsou presne pro tyhle ucely vytvorene a optimalizovane.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Já už to mám naštudované, zrovna testuju point spatial v mysql. Pak přejdu na linestringy. Obojí checkované přes polygon. Jo a tou spatial databázi jsi myslel mysql?

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

Blahopreju :)A klidne, jestli ti vyhovuje MySQL, tak ho pouzivej.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

No a k čemu ti ale taková šaškárna s výpisem po 1 stupních je?Budeš tam mít jen hromadu nicneříkajících bodů.Na todle to je fakt dobrej ten spatial. Jdu teď zkoušet ten spatial v mysql. Teď zrovna řeším point (body). Až se naučím dělat s nima tak přejdu na linestring. Předpokládám, že phpmyadmin mi pak ukáže přímo výpis těch bójí na mapě (včetně toho ostrova) i s jejich cestou.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

pochybuju, že ti to ukáže na mapě. K tomu bys to musel nějak na tu mapu napojit. Nebo zas přes QGIS a mapu si natáhneš třeba z Openstreetmap nebo Google....https://www.gislounge.com/loading-data-mastering-qgis/

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Ukáže mi to na mapě. V phpmyadminu je tlačítko "Zobrazit data GIS", což ukazuje výstupní data na prázdné mapě (jako glóbusu, jako myslím ve smyslu koule), ale je tam i faifka "použít OpenStreetMap jako základní vrstvu" a po zafaifkování mi to ukazuje výstup přímo na mapě, třeba i s ostrovy a pod.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

aha, tak to jsem neznal. Jsem myslel, že na tohle už musíš mít GeoServer nebo něco podobného.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

Ne, tohle je pri pouziti WSG84 prece celkem trivialni uloha i s externi mapou...

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

Pardon, WGS84. Dneska byl dlouhy den :/

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

Ok, jen doplňuju, že samotné "WGS 84" označuje celkem solidní množství souřadnicových systémů.Předpokládám, že myslíš to, co používají GPS, tj. lat/lon - což je celým označením:WGS84 EPSG:4326http://spatialreference.org/ref/epsg/4326/sranda je totiž v tom, že např. UTM systémy jsou taky WGS84 - např.WGS 84 / UTM zone 33Nhttp://spatialreference.org/ref/epsg/32633/používaný v ČR a okolí (pokud se nepoužije Křovák).V prvním případě je to v desetinných stupních na elipsoidu, v druhém je to v metrech, takže u UTM souřadnic můžeš např. dělat výpočet vzdálenosti přes jednoduché goniometrické funkce.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

hmm, a k čemu je vlastně ta informace dobrá? Budeš dohledávat nějaká další data, nebo podle množství bójí budeš usuzovat nějaké proudění?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Edge 17.17134

Odkud připlul ten flaperon ...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

Vyšlo mi , že s největší pravděpodobností z pozice -17 až -18 a 85 až 86 (do této oblasti mohl připlout z větší vzdálenosti). Viz mapa http://imgWorld.cz/s3/S14c4eXbUg.jpg

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Tak to fakt nechápu na základě čeho ti to mohlo tak vyjít Podle mě je to nesmysl.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

Není to žádná věda. Z NOAA jsem si stáhl databázi všech jejich bójí (ca 20 000) a hledal jsem, ve které čtverci (0 až -41 a 80 až 108) se nejvíce bójí dostalo k ostrovu Reunion.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

No tak jestli myslíš, že ti takové info k něčemu bude

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

Mělo by to pomoci určit, kde je MH370. Přehled nalezených trosek a jejich souřadnic, střed místa. Hledal jsem ve čtverci +-0,5° okolo. Tam, kde mi to nenašlo žádnou bóji, zvětšil jsem čtverec o +-2°.http://imgWorld.cz/s3/9LapK99gtN.jpg

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Fakt nějak nechápu jak by ti todle to mohlo určit kde by mohl být MH370. Prostě trosky připluly odněkud z východu, protože u Madagaskaru jsou takové proudy. Nic víc z toho nezjistíš.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

Podle mě spadlo v Jihočínském moři, jak mi mailem potvrdil i jediný očitý svědek hořícího "objektu" Mike McKay, pracovník vrtné plošiny Songa Mercur u pobřeží Vietnamu.http://imgWorld.cz/s3/t3mzUrWKJ7.jpg

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Dyť podle údajů letěl úplně opačným směrem. Od Malajzie na západ aby obletěl indonesii. Podle mě spadnul v indickém oceáně, otázka je kde.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Viděls toto?https://www.youtube.com/watchpodle tohoto je čínské moře úplný nesmysl.To, že hledali tam kde hledali, mají založený na těch komunikacích podle info od satelitů a okolních letadel.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

http://mh370-captio.net/wp-content/uploads/2018/0... jedna studiekam se hrabou tvé boje a nějaký kousek letadla někde u madagaskaru

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8.1 Chrome 66.0.3359.181

A není to jedno, kam to letadlo spadlo? Nebo zakládáš konspirační web a čekáš, že ti to lidi budou žrát a vyděláš na reklamě jako to dělá Aeronet?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Podle mě si stačí dohledat na internetu mořské a oceánské proudy a hned víš odkud se tam ty části letadla asi mohly dostat.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

To samozřejmě beru v úvahu .http://imgWorld.cz/s3/SCBg9MQjMA.jpg

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

Soubor bójí, data oddělena tabelátorem. Struktura souboru:ID,Position Time(MM,DD.dd,YYYY),Lat,Lon,SST(Deg C),VE(CM/S),VN(CM/S),SPD(CM/S),VAR.LAT,VAR.LON,VAR.TEMPID=č. bóje 8 číslic, MM=měsíc, DD.dd den a 1/4 dne (po 6 hodinách), YYYY=rok, Lat/Lon=pozice bóje.Soubor 6,8 GB lze stáhnout zdehttps://uloz.to/%21XAxRVigsAvZW/bda-17092...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Tu databázi mám už měsíc od minulejška (duben) a tu ve vlákně jsem psal, že dělám další testy dneska, zrovna už 7 hodin například indexuju (spatial) sloupec se zadaným point a učím se jak pracovat s tak velkou databází a geo daty

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

Díky, to oceňuji. Více hlav, více ví .

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

No já a to ale nemám na MH370, na MH370 mi bohatě stačí obrázek co je u té havárie na wiki https://en.wikipedia.org/wiki/Malaysia_Airlines_Fl... https://en.wikipedia.org/wiki/Malaysia_Airlines_Fl...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

Nesmíš všemu věřit, za 4 roky ho v Indickém oceánu nikde nenašli, není tam .

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

To jo, ale je tam asi hodně tras od bójí a nějaká teoretická oblast, já si myslel, že se ti bude takový obrázek líbit Mně je celkem jedno, kde to letadlo je. A pasažérům taky.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

tak pasažérům je to jedno určitě. Ono to řeší akorát pozůstalí - hlavně asi věřícím bude vadit, že nemohli své příbuzné pohřbít. A pak jsou samozřejmě zvědavci a "záhadologové" co by prostě rádi věděli, kde letadlo skončilo.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Jenže v tom posledním případě na to má cenu jít akorát tak vědencky na základě všech dostupných info jako tu:http://mh370-captio.net/wp-content/uploads/2018/0...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

Ještě KMZ file zde (použij slow download)https://ufile.io/6tc8b

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

tak jsem vyzkoušel ten zmíněný převodníkhttps://pastebin.com/mpG4sAp2byla to brnkačka:wintermute@Freeside:~/MH370$ pypy bojky.py BDA_170922_TAB.dat -16.4715428286 34.0970808486 74.1628407461 146.020803443 > BDA_170922_TAB_filtered.txt30.46wintermute@Freeside:~/MH370$ Z 6.3 GB souboru to asi za 10 sekund (nebo tak nějak rychle) vyrobilo cca 400 MB soubor. Lezlo mi na nervy to "fixed width" oddělení sloupců, tak jsem to nadvakrát převedl pomocí:wintermute@Freeside:~/MH370$ awk '{$2=$2};1' BDA_170922_TAB_filtered.txt >> BDA_170922_TAB_filtered2.txtwintermute@Freeside:~/MH370$ tr ' ' ';' <BDA_170922_TAB_filtered2.txt >BDA_170922_TAB_filtered3.txt wintermute@Freeside:~/MH370$ (spatlal jsem to z toho, co jsem našel na Stackexchange apod.) a výsledek vypadá asi takhle:47516;9;30,000;2010;23,036;141,717;999,999;999,999;999,999;999,999;0,75917E-05;0,13888E-04;0,10000E+0447516;9;30,250;2010;23,174;141,695;28,011;14,438;49,378;51,446;0,75399E-04;0,16873E-03;0,54775E-0247516;9;30,500;2010;23,229;141,778;27,968;25,727;-4,250;26,076;0,11230E-04;0,20646E-04;0,83852E-02výsledek toho má 315 MB.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

ještě jsem někde vyhrabal hlavičku k datům:ID,Position Time(MM,DD.dd,YYYY),Lat,Lon,SST(Deg C),VE(CM/S),VN(CM/S),SPD(CM/S),VAR.LAT,VAR.LON,VAR.TEMPa po úpravě ji napasoval na data, takže pak vypadají asi takhle:ID;Time_MM;Time_DD.dd;Time_YYYY;Lat;Lon;SST(Deg C);VE(CM/S);VN(CM/S);SPD(CM/S);VAR.LAT;VAR.LON;VAR.TEMP47516;9;30,000;2010;23,036;141,717;999,999;999,999;999,999;999,999;0,75917E-05;0,13888E-04;0,10000E+04dám ten soubor někam ke stažení.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

náhled v mapě:http://abload.de/image.php

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

Díky, není mi ale úplně jasné, co je výsledkem. Práci s GPS daty jsem si usnadnil jejich převodem na celá čísla vynásobením 1 000. Pokud je zeměpisná šířka záporná, udělám z ní ABS(), přičtu 90 a vynásobím 1 000, u kladné jen * 1 000.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

Já zas fakt nechápu, proč převádět souřadnice v desetinných stupních (definujících pozici na elipsoidu) na celá čísla.Zvláště když se dají data převést např. na Mercator systém, kde je to přímo v metrech a definované na plochu:https://epsg.io/map

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

tak si můžete hrát taky:BDA_170922_filtered3_data.7zSoubor 7z245 MB https://uloz.to/!FdRuxxa023pz/bda-170922-filtered3-data-7z

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

funkční link:http://dopice.sk/luR

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

To prevedeni z "fixed width" by byla jen drobounka uprava v tom Python skriptu, stacilo se ozvat

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

tak jednak jsem nechtěl prudit a druhak čas od času něco takového potřebuju i v práci, tak jsem to vzal jako důvod si to vyzkoušet

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Pokud ti jde o MH370 tak proč jsi vybral takovou debilní oblast? Reunion s flaperonem mimo, pravděpodobný dopad MH370 mimo Já si musím udělat taky nějakou menší oblast na testování, třeba thajský záliv , protože se mi indexuje těch 50 mil řádků už 18 hodin a furt to není u konce

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

Moc trosek se nenašlo, tak je myslím správné vzít v úvahy ty, u kterých bylo potvrzeno, že jsou z MH370 a zjistit, odkud se na daná místa mohly dostat.Zápasím s rekurzivním voláním funkce v assembleru pro setřídění GPS pozic . V C++ mi rekurze na poli s 6ti čísly chodí bez problémů. Až to rozběhnu v ASM, bude vyhledání pozice z těch 50 mil. řádků trvat určitě pod 1 ms .

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

Jdes na to porad spatne. Kdyz uz mermomoci nechces pouzit databazi (proc?), tak si ta data predzpracuj, at je nemusis porad prochazet kolem dokola.Co treba rozdelit si zajmovou oblast na sekce urcite velikosti (klidne i jeden krat jeden stupen) a pri prvnim nacitani toho 6GB souboru ulozit informaci o bojce do datove struktury toho ctverce? At uz to bude nejaky druh pametove struktury, nebo soubor na disku.Tim se ti vyrazne prodlouzi nacitani, ale zase hodne vyrazne zkrati to tve hledani bojek podle souradnic. Uz to vlastne budes mit hotove, nebo hodne vyrazne zjednodusene.Ale jestli te bavi vymyslet nejaky zvlastni algoritmus pro trideni GPS pozic v assembleru, tak ti v tom samozrejme nemuze nikdo branit

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

Dalsi moznost je samozrejme ukladat data o kazde boji do samostatne struktury, tim dostanes jednoduse jejich "cestu". Zalezi na tom, co je pro tebe dulezitejsi - jestli "trasa" jedne boje, nebo "ktere boje byly v tehle oblasti"

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

a ať už s tím bude pracovat jak chce, tak mám pocit, že nepoužívá všechny sloupce z těch dat:ID;Time_MM;Time_DD.dd;Time_YYYY;Lat;Lon;SST(Deg C);VE(CM/S);VN(CM/S);SPD(CM/S);VAR.LAT;VAR.LON;VAR.TEMP47516;9;30,000;2010;23,036;141,717;999,999;999,999;999,999;999,999;0,75917E-05;0,13888E-04;0,10000E+04Takže by se nejspíš dalo odstranit vše po "Lon" čímž se data taky zmenší o nemalou část.Jinak mne taky napadlo spojit trasy jednotlivých bójí do vektorových linií, zda by to nezpřehlednilo situaci. Každopádně je naprosto nutné vyhodit datové řádky o kterých určitě ví, že je nepotřebuje.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

Jojo, ona by toho byla spousta, co by se dala udelat. Ale vsimni si, ze tazatel si sice prijde o radu, ale pak se toci jak kolovratek porad na svem reseni. Uz podruhe (v puvodnim dotazu to bylo uplne stejne).

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 10 Chrome 66.0.3359.170

Rád vyzkouším rychlejší řešení, nyní načtení souboru 5 sec a hledání boje ze dvou oblastí cca 2 sec. Nemám problém s případnou databází, ale potřebuji popsat, jak na to a uvést časy hledání. Na ukázku přikládám "Heat Map" Flaperonu. Počty bójí, které se do dané oblasti dostaly z místa jeho nálezu na ostrově Reunion.http://imgWorld.cz/s3/jb316QTWlh.jpg

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

tyhle "cool" 3D zobrazení jsou dle mých celkem dlouhých zkušeností dost na houby. Mnohem použitelnější je si obrazit intenzitu v 2D přes mapu poloprůhledně.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

V mysql se ten tvůj vektor jmenuje linestring a už jsem tu o něm psal. Já se jej učit budu, ale až dotestuju point, udělal jsem asi blbost, že jsem to začal testovat hned na 50 mil řádcích, už indexuju ten point skoro den asi je problém v tom, že na plotnovém disku je to poněkud pomalejší

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

já to znám ze shapefile jako "polyline"https://en.wikipedia.org/wiki/Shapefilejj, podle mne prostě nemá smysl pracovat s celým datasetem, ať už na to půjdeme z jakékoliv strany - vždycky je to pomalé a vždycky tam máš většinu dat, která nepotřebuješ.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Tak třeba celý soubor ořezaný na:číslo_bóje;lat;lonmá 1 137 189 241 Bzabalený 7z 148 MB Tak v tom tvém linku se píše, že se gis data dělí na body (point), čáry (lines) a oblasti (polygons). Já zrovna řeším ty body, pak ty boje budu řešit jako lines, obojí filtruju podle polygonu. Samotné polygons se na tomto řešit nedá a to vyzkouším zas na něčem jiném.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

vida, jsem si říkal, že se to zmenší. Ono jsem čuměl, že jen pitomá změna z "fixed width" na CSV - teda u mne akorát odděleno středníkem (páč jsem nechtěl měnit desetinné oddělovače z čárky na tečky) to zmenšil skoro o 100 MB (původní soubor výřezu oblasti cca 430 MB, pak asi 315 MB).Chápu, že hodláš vygenerovat polylines podle ID bójí dané oblasti a vyblít to do nějaké spatial DB? Třeba Spatialite:https://www.gaia-gis.it/fossil/libspatialite/indexnebo GeoPackagehttps://www.geopackage.org/Bych se taky podíval

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Psal jsem ti tu už že to dělám všechno v mysql (spatial podporuje a k zobrazení na mapě můžu použít třeba phpmyadmina, který to ukazuje přímo na mapě od OpenStreetMap). Zatím ale jen čekám, protože jsem nahodil všechny body do tabulky a pak teprve nad něma vytvořil spatial index, jenže mi to nějak dlouho trvá, už mi to jede přes 20 hodin... asi to típnu a budu to zkoušet na něčem menším.​gai​a-​gis ani nic podobnýho nepotřebuju, to bych se zas musel něco dalšího učit a to se mě nechce, mně bude stačit, když se to naučím v tý mysql.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Jo a ty polylines chci udělat z těch bójí, to máš pravdu. Jako že jedna cesta bóje = jeden řádek v db. Třeba ta první 72615 bude na jeden řádek a ta line bude mít 418 bodů.

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

jo, mi šlo o to, zda bys to byl schopen exportnout do něčeho, co si zas načtu já Ne že bych to k něčemu potřeboval - beru to jako zajímavé "datové cvičení" co se může do budoucna hodit.SpatiaLite/SQlite jsem zmínil proto, že mi přišlo, že to bude SQL dost blízko, ale je to jeden soubor, co jde někam nahrát.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Tak jestli nevíš jak parsovat tak být tebou tak se naučím nejdřív parsovat Já to budu dělat v tomto formátu:https://dev.mysql.com/doc/refman/8.0/en/populat... INSERT INTO boje (cislo, line) VALUES (12345, ST_GeomFromText('LINESTRING(0 0,1 1,2 2,3 3,4 4,5 5)'))INSERT INTO boje (cislo, line) VALUES (12346, ST_GeomFromText('LINESTRING(0 0,1 1,2 2,3 3,4 4,5 5)'))...netuším jak to potřebuješ ty. Takže když napíšeš v jakém formátě to chceš a jestli všechny data nebo jen něco, tak ti to klidně nahodím jak chceš.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Kdyby něco, tak v tomto formátu to už mám udělané, má to 115 MB v 7z a je to komplet.A celkem hned to můžu udělat v jakémkoliv formátu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Tak už možná vím, proč mi to šlo tak pomalu Protože mám lat a lot opačně

Souhlasím  |  Nesouhlasím  |  Odpovědět
avatar
 | Linux Firefox 60.0

tak já si chtěl akorát vyzkoušet ten skript a pořád se mluvilo o Malajsii a Indickém zálivu - na můj starý post s nabídkou rozsahu zájmové oblasti nebyla žádná odezva a já ty podklady bůhvíjak nezkoumal. Reunion je až skoro u Afriky - fakt mne nenapadlo brát tu oblast až tak daleko. Nicméně skript i následné zpracování fungovalo a dá se z toho vyjít.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 66.0.3359.170

To bude nejaká podpora pre Alzu?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

Já se z toho picnu. Neví někdo jak udělat select v mysql, když zadám polygon a chci vybrat všechny lines, které mají minimálně jeden bod uvnitř toho polygonu?Toto:SELECT id,cislo,ST_AsText(line) FROM boje WHERE MBRContains(ST_GeomFromText('Polygon((129 35,129 36,130 36,130 35,129 35))'),line);mi vyhledává jen lines, které jsou myslím úplně uvnitř toho polygonu.Takže musím změnit asi MBRContains, ale za co?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Android Chrome 34.0

hurá, toto je asi použitelné:SELECT id,cislo,ST_AsText(line) FROM boje WHERE MBROverlaps(ST_GeomFromText('Polygon((129 35,129 36,130 36,130 35,129 35))'),line);

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Index


Určitě si přečtěte

Pojďme programovat elektroniku: Postavíme bezpečnostní systém za 30 Kč

Pojďme programovat elektroniku: Postavíme bezpečnostní systém za 30 Kč

** Před pár týdny jste si mohli v akci koupit Wi-Fi desku za jeden dolar ** Nám už TTGO T-Display dorazila do redakce ** Připojíme k ní jazýčkový kontakt a vyrobíme bezpečnostní systém

Jakub Čížek | 30

Vyzkoušeli jsme chytrou čínskou zásuvku Sonoff S26 za tři stovky. Nevyhořeli jsme

Vyzkoušeli jsme chytrou čínskou zásuvku Sonoff S26 za tři stovky. Nevyhořeli jsme

** Je sice z Aliexpressu, ale funguje ** Můžete ji ovládat hlasem přes Amazon Echo nebo Google Home ** Za tři stovky zautomatizuje menší 230V spotřebič

Jakub Čížek | 96

16 tipů a vychytávek, se kterými dokonale ovládnete komunitní navigaci Waze

16 tipů a vychytávek, se kterými dokonale ovládnete komunitní navigaci Waze

** Waze není jen navigace – je to i sociální síť s dopravními informacemi ** Mobilní aplikace skýtá široké možnosti nastavení ** Vybrali jsme pro vás 16 nejzajímavějších tipů a triků

Karel Kilián | 48



Aktuální číslo časopisu Computer

Speciál o přechodu na DVB-T2

Velký test herních myší

Super fotky i z levného mobilu

Jak snadno upravit PDF