On 8.12.2014 21:38, Marián Kyral wrote:
Dne 8.12.2014 21:22, Martin Švec - OSM napsal(a):
Dne 8.12.2014 20:45, Marián Kyral napsal(a):
Dne 8.12.2014 19:36, Martin Švec - OSM napsal(a):
Dne 7.12.2014 22:09, Marián Kyral napsal(a):

A ještě jeden nápad mám v hlavě - hodně mne štve, jak je komplikované udělat z kousku 
silnice most (kouska potoka tunel). Vybrat cesru a dva body, rozdělit pomocí 
"p", vybrat prostřední kousek a změnit jej na most. Je tam dvakrát výběr.

Uvažuji nad nějakým pluginem, kde by stačilo vybrat cestu a ty dva body a pak jen 
kliknout na "Convert to bridge/ Convert to tunnel". Rozdělení a otagování by se 
provedlo automaticky.

A proč se zdržovat s vyráběním+výběrem bodů? :-) Co takto: Při kliknutí na 
průsečík cesty a vody se zobrazí dialog, v něm se vybere bridge/culvert a délka 
v metrech. Pak se sekne příslušná cesta na obě strany od průsečíku a otaguje. 
Pokud už body v patřičné vzdálenosti existují, použijí se existující.


No už vidím, jak se budu trefovat do správné délky :-D To raději udělám ty dva 
body podle katastrálních map. Navíc, v naprosté většině případů nemají cesty na 
průsečíku společný bod, takže jeden bod vytvořit musím.

Ale co by šlo (ty určitě budeš mít představu jak to udělat v GUI, já to budu 
zkoumat mnohem déle):

1) aktivuji tool
2) kliknu na na cestu v místě začátku mostu/propustku (cesta na kterou chci 
kliknout se vysvítí - stejně jako u contourmerge pluginu)
3) vytvoří se bod (nebo se vybere již existující)
4) mezi prvním bodem a kurzorem myši se začne vykreslovat čára symbolizující 
most
5) kliknu na místo, kde most/propustek končí
6) vytvoří se (použije se již existující) druhý bod
7) cesta se rozdělí
8) vybere se segment mostu/tunelu
9) pokud jsem klikl na cestu - segment se otaguje jako most
10) pokud jsem klikl na waterway - segment se otaguje jako propustek
11) pokud to není ani higway ani waterway - rollback a chybová hláška
12) přidám nebo upravím tag layer - u mostu - layer = layer + 1; u propustku: 
layer = layer - 1


Jo, to zní taky dobře. Ale zklamu tě, interaktivní záležitosti v GUI jsem vůbec 
nezkoumal. Celý Tracer je jednorázová "transakce" nad zamknutým DataSetem, dál 
jsem se nedostal.


No to já taky ne. Ale ty umíš lépe hledat v dokumentaci. Já se v ní ztrácím, 
hledám něco a ani vlastně nevím co :-D
Určitě by se jako základ dal využít ten contour merge plugin. Musím to 
prozkoumat.


Dokumentace? Ale fujtajbl :-) Hlavně se musí číst zdrojáky. Vyšel bych z 
ImproveWayAccuracyAction.java [1], tam je všechno krásně na jednom místě. Z 
toho co vidím:
(a) Implementuješ rozšíření třídy MapMode = režim toolu, to dělá i Tracer.
(b) Implementuješ rozhraní MapViewPaintable, přes něj se metodou paint() kreslí.
(c) V enterMode() si přidáš dočasnou vrstvu s tvou implementací 
MapViewPaintable přes Main.map.mapView.addTemporaryLayer(this).
(d) Zahákneš si listenery na události myši a modifikátorů.
(e) Reaguješ na události, pamatuješ si stavy, a podle nich kreslíš a edituješ.
(f) V exitMode() po sobě uklidíš listenery a kreslící vrstvu.

Tolik teorie, praxi nechám na tobě ;-)

Jaks výš popsal princip toolu -- v bodě (3) bych nový bod nevytářel, jen si 
zapamatoval jeho místo a vykresloval fiktivní bod v temporary vrstvě. Oba uzly 
by se vytvořily až po kliknutí (5), ať undo zruší celou operaci.

[1] 
http://josm.openstreetmap.de/browser/trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java

Martin


_______________________________________________
Talk-cz mailing list
Talk-cz@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk-cz

Odpovedet emailem