Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vrstva aktivních POI #4

Closed
1 of 3 tasks
mkyral opened this issue Jan 7, 2016 · 157 comments
Closed
1 of 3 tasks

Vrstva aktivních POI #4

mkyral opened this issue Jan 7, 2016 · 157 comments

Comments

@mkyral
Copy link
Member

mkyral commented Jan 7, 2016

Jedna z věcí, která chybí na osm.org jsou aktivní POI. Ne vždy mi stačí, že v daném místě je restaurace XY. Chtěl bych vidět vice detailů (pokud jsou vyplněny). Například, zda mají stránky, zda budou mít otevřeno, zda je podnik nekuřácký. Nebo se hodí vědět, zda je parkoviště placené.

Bylo by tedy fajn mít možnost na danou ikonu kliknout a dozvědět se více.

Vzhledem k množství typů bodu zájmů by to chtělo je rozdělit do kategorií a ty zobrazit na základě vybrané mapy - rozcestníky budu zobrazovat pouze na turistické mapě. A zase na druhou stranu není potřeba zobrazovat na turistické mapě butiky. Zato restaurace, obchody s potravinami a parkoviště bude vhodné zobrazit jak na turistické tak i na standardní mapě.

Případně umožnit uživateli, aby si vybral, co jej zajímá.

//edit zbycz

připomínky k zobrazeným objektům zde wiki

.

TODO

  • poladit zobrazené věci (tj. dořešit na wiki)
  • poladit zoomy a co v nich -> třeba praha staré město teď nic moc (též pořešit na wiki)
  • zavřít popup při vyjetí myší z <div> popupu (ale spíše řešit zobrazením dat jinde - viz wiki)
@pschonmann
Copy link
Member

http://openpoimap.org/

@mkyral
Copy link
Member Author

mkyral commented Jan 8, 2016

openpoimap je o přístupu: hledám restauraci, tak se podívám, jestli tady v okolí nějaká není.

Co by se mi líbilo více je přístup - vidím na mapě restauraci a zajímají mně detaily - otevírací doba, stránky. Tak si na ni kliknu a podívám se na detail.

Ideální implementovat oboje.

@zbycz
Copy link
Member

zbycz commented Jan 8, 2016

Při nejhorším to lze řešit jako to má osm.org - to tlačítko otazníku vpravo. Ač to není dokonalé, blíží se to. (Mimochodem openpoimap používá stejnou "technologii" tedy dotazování overpass api)

Nicméně nějaká aktivní vrstva pro klikání restaurací apod by byla velmi zajímavá, ovšem je to o tom nakonfigurovat postgis databázi, importovat živá data a udělat tomu rozumné vektorové/dlaždicové API. Třeba to už existuje - případně pošlete...

@mkyral
Copy link
Member Author

mkyral commented Jan 8, 2016

overpass api je bohužel docela pomalé. Chtělo by to vlastní databázi POI, která bude optimalizována pro danou funkci.

A vybraná POI bych zpřistupnil přes geojson - stejně jako POI-Importer https://github.com/POI-Importer/POI-Importer.github.io - funkční příklad: http://osm.kyralovi.cz/POI-Importer

@zbycz
Copy link
Member

zbycz commented Jan 8, 2016

Souhlas, je příliš pomalé. Nepochopil jsem jak ten poi-importer funguje, ale pro import poiek celé čr to možná bude chtít ten postgis.

@walley
Copy link
Contributor

walley commented Jan 8, 2016

ten postgis bude hodne potreba, ulehci to tunu veci.

a prez geojson to stejne bude komunikovat s javascriptem, takze tam bude tak jak tak.

@mkyral
Copy link
Member Author

mkyral commented Jan 8, 2016

poi-importer funguje tak, že se sady POI vyexportují do formátu geojson a ten se pak pomocí utilitky rozdělí na menší soubory, kde jeden soubor odpovídá jedné dlaždici. Takže dotahování POI funguje úplně stejně jako dotahování dlaždic.

Jak POI-Importer funguje jsem i s obrázky popsal tady: http://thread.gmane.org/gmane.comp.gis.openstreetmap.region.cz/12708/focus=12868

@zbycz
Copy link
Member

zbycz commented Jan 8, 2016

Dík za popis. Jo to by šlo, taková static verze toho postgisu. Jestli jseš ochotný připravit teď nějaký export čr toho co je zajímavé, tak se to dá +- rovnou přidat. Postgis bude na delší lokte.

@walley
Copy link
Contributor

walley commented Jan 8, 2016

v praci sem presvedcil jednoho kolegu at nastuduje spatial extenzi a pak me to nauci:)

@mkyral
Copy link
Member Author

mkyral commented Jan 8, 2016

No ten postgis bude třeba. A taky ho moc neumím. Na to je machr Petr Vejsada.

Možná by neškodilo udělat seznam toho, co zatím existuje - služby, kde a na čem běží (interní, externí), abychom věděli, co je možné a co zatím nemáme (postgis).

@zbycz
Copy link
Member

zbycz commented Jan 8, 2016

Já už jsem si s ním párkrát hrál a na té VPSce mi dokonce běží, ale pokud se do toho pustí někdo jiný, jedině dobře. :-)

Služby sepiš ideálně do nového issue.

@zbycz zbycz modified the milestone: 0.2 Jan 8, 2016
@mkyral
Copy link
Member Author

mkyral commented Jan 8, 2016

Tady je overpass query pro všechny rozcestníky v ČR.
Soubor má přes 5MB. A to jsou jen rozcestníky. Záleží kolik typů POI bude podporováno, ale asi to bude chtít nějaký větší disk :-D

[out:json][timeout:60];
// Czech Republic
//{{geocodeArea:Czech Republic}}->.searchArea;
area(3600051684)->.searchArea;
// gather results
(
  // query part for: “information=guidepost and tourism=information”
  node["information"="guidepost"]["tourism"="information"](area.searchArea);
);
// print results
out body;
>;
out skel qt;

Zkusím si trochu pohrát s osmosis a připravit skript, který toho vygeneruje více.

@zbycz
Copy link
Member

zbycz commented Jan 8, 2016

Jako s diskem asi není problém, spíše to zkus připravit tak, aby to šlo snadno skriptem vše zaktualizovat. A btw, též by to chtělo ten poi-importer nakonfigurovat tak, aby výstupem byl jeden set dlaždic.

Kdybys potřeboval nějaké login údaje na tu VPS, tak kdyžtak mailni.

@mkyral
Copy link
Member Author

mkyral commented Jan 8, 2016

OK. Zkusím zítra něco připravit, snad bude trochu času.

Ten POI-Importér není potřeba, na rozdlaždicování tam na to je docela jednoduchý .js skriptík: https://github.com/POI-Importer/POI-Importer.github.io/blob/master/tile_geojson.js

Pak už jen vyřešit to dotahování dlaždic. To právě nevím, jestli je nějak jednoduché, nebo ne.

@zbycz
Copy link
Member

zbycz commented Jan 8, 2016

Dotahování by mělo být jednoduché, jestli to vygeneruje do složek ve formátu z/x/y.geojson .. tak to už je trivka. Ale ještě to chce nějak pěkně zobrazit na mapě + vhodné nerušivé ikonky (aka mapbox maki) .. no zkus se poprat a pošli.

@mkyral
Copy link
Member Author

mkyral commented Jan 8, 2016

No tak to v tom případě bude potřeba vyřešit jinak. Teď to generuje toto:

-rw-r--r-- 1 marian users   857  1. led  1970 1093_692.json
-rw-r--r-- 1 marian users  1628  1. led  1970 1094_693.json
-rw-r--r-- 1 marian users   868  1. led  1970 1095_691.json
-rw-r--r-- 1 marian users   867  1. led  1970 1095_692.json
-rw-r--r-- 1 marian users  1631  1. led  1970 1095_693.json

Smysl jsem nezkoumal ;-)

Ad zobrazení)
Moc se mi nelíbí překrývání jedné ikony druhou. Viděl bych spíše na nějaký malý špendlíček nebo tak něco - jen aby bylo jasné, že bod je aktivní a lze na něj kliknout.

@mkyral
Copy link
Member Author

mkyral commented Jan 8, 2016

Tak jsem zkusil v rychlosti něco najít a tohle vypadá docela slibně: https://github.com/mapbox/geojson-vt

@zbycz
Copy link
Member

zbycz commented Jan 8, 2016

Jako obecně nejlepší řešení by bylo vědět kde ty ikonky vykresluje mapnik a jen dodat od určitého zoomu nevidtelný klikací overlay, který by nad ikonkou změnil kurzor. Viz třeba google fusion tables

@pedro042
Copy link
Contributor

Jsem tu (Petr Vejsada). Postgis mám, data v něm taky, tak jde o to, v jakém formátu data dopravit na openstreetmap.cz.
Nejrychlejší by asi bylo dát do gdalu postgis jako datasource. Všechna ta webová API přes PHP či Python sice ne moc, ale přeci jen (zbytečně) zdržují.
Co by vlastně ideálně potřebovat openstreetmap.cz server, aby to mohl zobrazit jako klikací?

@mkyral
Copy link
Member Author

mkyral commented Jan 10, 2016

No v podstatě potřebuje něco ve stejné struktuře jako je png dlaždice (z/x/y.geojson)
Ke každé mapové dlaždici se dotáhne dlaždice, kde bude seznam POI na této dlaždici. Takže je můžeš na mapu přidat a udělat tak podklad "klikací".

Za chvíli už snad konečně budu mít vygenerovaná příkladová data pro rozcestníky, tak se pak ozvu.

@mkyral
Copy link
Member Author

mkyral commented Jan 10, 2016

Tak vygenerováno pro zoomy 10 - 18.

$ python3 geojson2tiles.py tur_rozcestniky_CR_20160108.geojson tiles 18
IN: tur_rozcestniky_CR_20160108.geojson; ROOT: tiles; ZOOM: 18
Done. Generated: 13135 tiles in 2.02s

Zazipované to má 28 MB.
@zbycz Na ftp jsem nahrál soubor tiled_guideposts.zip - můžeš si hrát ;-)

Tak uvažuji kolik giga bude mít export pro všechna POI.

@pedro042
Copy link
Contributor

@mkyral jsi rychlejší, no, já rozcházím tilestache s mod_python, to nejde, protože mám wsgi kvůli Taskmanu, tak změna, přes wsgi nebo Passengera, neboť Passenger je tu kvůli Ruby :-) začíná tu být přesoftwareováno :)

@mkyral
Copy link
Member Author

mkyral commented Jan 10, 2016

Ani ne. Ty jsi s tím teď začal, já se s tím už dva dny drbu. Ale stejně to je jen dočasné řešení - nějak musím ten geojson vygenerovat. A pokud to půjde, tak je lepší vytvářet rovnou dlaždice a nedělat to přes prostředníky.

Tak mne napadá, že by bohatě stačilo mít v těch dlaždicích jen souřadnice POI, jeho OSM ID a maximálně ještě typ. A zbytek řešit ajax requestem do databáze až v okamžiku, kdy na dané POI uživatel klikne. Tím se omezí velikost dlaždic a nebude se zbytečně přenášet to, co uživatel nepotřebuje.

@zbycz
Copy link
Member

zbycz commented Jan 10, 2016

@mkyral) Super - kdyby si s tím chtěl někdo hrát rozbalil jsem ten tvůj zip - aka: http://openstreetmap.cz/tiles_guideposts/13/4423/2773.json

Jinak já bych tam ty informace asi nechával - jedno mapové PNG má 25kb, pokud tenhle json bude mít ~ 10kb, tak je to pořád v pohodě a po kliku čekat nikdo moc nechce :)

@pedro042) nemáš u sebe v postgisu POIky, které by šlo tahat jako geojson dlaždice?

//edit: pedro to zprovznil: http://poloha.net:8080/vector/14/8847/5549.json

@pedro042
Copy link
Contributor

@zbycz na čem myslíš, že teď pracuju? :-))

@zbycz
Copy link
Member

zbycz commented Jan 10, 2016

😍

@mkyral
Copy link
Member Author

mkyral commented Jan 29, 2016

@zbycz offtopic: pěkné, ještě nějaké gui k tomu ;-)

Otevřel jsem #80

@pedro042
Copy link
Contributor

Nasazeny "body" zájmu z ploch.
Issues:

  • jsou-li tagy na cestě místo na relaci, tak to nefunguje. Fungovalo by to, ale (zatím?) pomalé
  • KDE má ten bod být? Momentálně je na ST_PointOnSurface, variantou je ST_Centroid. ST_Centroid má výhodu v tom, že je uprostřed v těžišti a zároveň je na vykreslené značce v dlaždici (pokud taková značka je), ale u některých tvarů může být těžiště mimo vlastní objekt. Tam se hodí víc ST_PointOnSurface
  • @zbycz zavedením NE-bodů vznikla chyba, že ne každé osm_id je node_id. V tom JSON je osm_type (node, way, relation) - je potřeba na to pamatovat při generování odkazu na osm.org z popupu.

Testujte, prosím.

@jzvc
Copy link
Contributor

jzvc commented Jan 29, 2016

osm_type poslano, vklada do linku node/way/relation. Funguje to i kdyz jsou tagy na way a na relaci. Jen je bod nepatrne posunut, predpokladam, ze pokud je way/relation symetricka, tak budou pres sebe => jeden z nich bude nedosazitelny, ale v datech budou oba.

@mkyral
Copy link
Member Author

mkyral commented Jan 30, 2016

Trochu jsem to ty shopy poladil, ale centrum Prahy furt zabité :-(

zbycz added a commit that referenced this issue Feb 1, 2016
@pedro042
Copy link
Contributor

pedro042 commented Feb 5, 2016

@jzvc nevím, jestli přesně rozumím, co myslíš tím, že půjdou body přes sebe. Ani tomu posunu. Dvojitě tam body určitě nebudou. Pokud nějaký polygon zasahuje do dlaždice, spočítá se ST_PointOnSurface a checknce se, jestli ten PointOnSurface je uvnitř té dlaždice nebo ne. Pokud je mimo dlaždici, tak v ní nebude.

@pedro042
Copy link
Contributor

pedro042 commented Feb 5, 2016

Javascriptu vůbec nerozumím, ale je mi prostě divné, proč to na prohlížečí tak strašně vytěžuje disk. To používá explicitně nějakou diskovou cache nebo tak? Není v té knihovně nějaký parametr, aby to zůstalo v RAM? Teď jsem si pro pokusy udělal $HOME na ramdisku, pže jinak bych asi buď utrhl hlavičky nebo umořil SSD. RAM to snad přežije ;-)

@pedro042
Copy link
Contributor

pedro042 commented Feb 5, 2016

Až na tu rychlost v prohlížeči to už vypadá dost pěkně.

@zbycz zbycz mentioned this issue Feb 5, 2016
8 tasks
@zbycz
Copy link
Member

zbycz commented Feb 5, 2016

javascript nerozhoduje jestli to dělá disk nebo ram. To je věc prohlížeče. Ale poladit výkon je rozhodně priorita :-)

@pedro042
Copy link
Contributor

pedro042 commented Feb 6, 2016

Přidaná tilecache přímo do databáze :), teď už ani 1000 prohlížečů dohromady nebude mít šanci to ucpat.

@zbycz
Copy link
Member

zbycz commented Feb 6, 2016

Až to pushneš na github, dej vědět, zajímalo by mě jak jsi tu tilecache nakonfiguroval 👍

@pedro042
Copy link
Contributor

pedro042 commented Feb 6, 2016

Už.
Čištění/aktualizace cache tam zatím není. Počkám alespoň pár hodin, aby se naplnila. Každá nacacheovaná dlaždice má timestamp. Předpokládám, že po aktualizaci dat z Geofabrik aktualizuji v cache nízké zoomy (například 7-12) a vyšší zoomy (13-) smažu. To se v praxi teprve uvidí.

@mkyral
Copy link
Member Author

mkyral commented Feb 24, 2016

Tak jsme si včera hrál se zobrazováním opening_hours. Celkem by to šlo:
oh01

Ovšem při testování různých reálných POI jsem narazil na bug v opening_hours.js, který má v některých případech problém s přechodem přes půlnoc:
oh02
Správně by tam mělo být Zítra: 17:00 - 01:00. Stejně jako dnes.
Bug je v opening_hours.js nahlášený už přes půl roku a zatím nic :-(
Na Stodolní to je docela problém.

@vop-cz
Copy link

vop-cz commented Feb 24, 2016

Jen poznamka - google mapy pouzivaji nejen "právě je otevřeno/zavřeno", ale i další stavy, minimálně "brzy bude zavřeno" - naskakuje to tam hodinu před zavíračkou. Text je pak zelený (otevřeno), červený (zavřeno) a nebo oranžový (brzy bude zavřeno).

Dále bych navrhnul, aby ten text byl za slovy "Otevírací hodiny" a bude-li ten panel do budoucna obsahovat rozklikávací obsah (zkrácení dlouhého obsahu), tak ty podrobné hodiny dnes, zítra apod. předělat na kompletní přehled otvíračky dostupný právě až po rozevření... A text "právě je otevřeno" pak změnit ve smyslu "právě je otevřeno, do..."

...a ještě jednu věc - řádek "osm data" je super, ale dal bych jej jen zalogovaným OSM uživatelům, běžného uživatele to akorát vyděsí... :o)

@mkyral
Copy link
Member Author

mkyral commented Feb 24, 2016

Díky za připomínky. Tohle je zatím fakt jen draft. osm_data tam mám jen pro kontrolu a počítám s tím, že budou ve výchozím stavu schované. Respektive nebudou tam vůbec, zato tam někde dole bude odkaz, který zobrazí "surová" osm data pro dané POI.

Dále počítám s tím, že tam bude odkaz "další dny", kde se zobrazí otevírací doba pro celý následující týden. A případně i nějaká možnost zobrazit si, jak to bude vypadat v určitý den.

@mkyral
Copy link
Member Author

mkyral commented Feb 25, 2016

Tak barvičky už mám, ale trochu jsem se zamotal v těch tabulkách, Snad to během příštího týdne dodělám do nějakého funkčního stavu (který pak může zase někdo jiný rozšířit ;-) )

@zbycz
Copy link
Member

zbycz commented Feb 26, 2016

Dobrá práce, těším se na commit :-)

@mkyral
Copy link
Member Author

mkyral commented Feb 28, 2016

Tak zdá se, že to více méně funguje jak má. Akorát se mi nedaří rozjet ten link na další dny :-(

Update: tak se povedlo. Když tak tomu někdo dejte pěknou css fazónu. Líbilo by se mi barevné odlišení soboty a neděle. Případné návrhy na vylepšení jsou vítány.

oh_002 oh_003

@mkyral
Copy link
Member Author

mkyral commented Mar 1, 2016

Tak ještě jedna úprava. Ty tři tečky nebyl dobrý nápad. Nahradil jsem je šipkou v nadpisu.
Máme teď týden na testování, @zbycz se fláká někde na horách :-)

oh03 oh04

@mkyral
Copy link
Member Author

mkyral commented Mar 7, 2016

@zbycz Nějaká nová verze na osmap.cz je teď v plánu?

@zbycz
Copy link
Member

zbycz commented Mar 7, 2016

Už jsem zpátky, s těmi otvíracímí dobami fakt pěkný kus práce!
Nasadil jsem to na web - release jsem nedělal. Mám rozdělaných pár pěkných featur, snad tento týden dokončím a releasneme.

@mkyral
Copy link
Member Author

mkyral commented Mar 7, 2016

OK, budu se těšit.

@mkyral
Copy link
Member Author

mkyral commented Mar 14, 2016

@pedro042 Jak je to s cachováním té json vrstvy? Minulý týden jsem přidal pár odkazů na wikimedia_commons fotky a na osmap.cz je pořád nevidím. Ale změny, které jsem včera dělal jinde už na osmap.cz vidím.

Například tento památník: http://www.openstreetmap.org/node/932349062
JSON dlaždice: http://tile.poloha.net/json/17/72225/44729

V odpovědi tag wikimedia_commons chybí:

{"type" : "FeatureCollection", "features" : [{"type" : "Feature", "geometry" : {"type":"Point","coordinates":[18.37218,49.50821]}, "properties" : {"osm_type" : "node", "osm_id" : 932349062, "tags" : {"name": "Jan Palach", "historic": "monument"}}}, {"type" : "Feature", "geometry" : {"type":"Point","coordinates":[18.37269,49.50815]}, "properties" : {"osm_type" : "node", "osm_id" : 932349063, "tags" : {"name": "John Lennon", "historic": "monument"}}}]}

@pedro042
Copy link
Contributor

@mkyral no teď je to takto:
delete from jsontiles.tilecache where created < now() - interval '7 days 6 hours'; delete from jsontiles.tilecache where created < now() - interval '3 days 6 hours' and z > 13;
takže 3 dny od data vytvoření položky v cache. Týden jsou prakticky jen obce/place.
Asi by se to mohlo mazat každý den; ono to vytvořit znovu zase tolik netrvá.

@mkyral
Copy link
Member Author

mkyral commented Mar 14, 2016

Aha. Takže zítra už by to bylo v pohodě :-D

Ještě by se případně mohla přidat nějaká detekce změn, ale to by asi bylo náročnější než to znova vygenerovat. Takže to promazání po importu nových OSM dat by asi bylo lepší.

@severak
Copy link
Member

severak commented Mar 29, 2016

Napsal jsem návrh na optimalizaci aktivní vrstvy - viz #100.

zbycz added a commit that referenced this issue Apr 13, 2016
@walley
Copy link
Contributor

walley commented May 11, 2018

vrstva je, bugy do nove issue.

@walley walley closed this as completed May 11, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

9 participants