Portál AbcLinuxu, 2. května 2025 06:01
Kluci z Prahy (známí taky jako Honest guide), publikovali nové video ohledně přesného středu Prahy. Když jsem to tak sledoval, těšil jsem se na popis hledání centroidu nekonvexního polygonu.
(Zdroj obrázku:
https://www.youtube.com/watch?v=Hj5V6Gh0mOs
)
Přišlo mi docela smutné, že se o to ani nesnažili. Jednoduše vzali bod nejvíc na západě, východě, jihu a severu Prahy a nakreslili mezi nimi čáry. Tam kde se protnuly pak vybrali střed. Jak se dá najít pravý střed?
Poznámka: geometrický střed je místo, kde kdybyste mapu vystřihli z papíru, můžete papírový obrys položit na hrot špendlíku a mapa bude vyvážená a nebude padat mimo.
Což může být poměrně náročné. Naštěstí se dá prostě vygooglit použitelný SVG. Jeden jsem našel tady:
(Zdroj:
https://img.kurzy.cz/mapa/pr/slepa/praha-okres.svg
, licencováno pod
CC BY SA
.)
Otevřel jsem ho v textovém editoru a smazal všechno, kromě samotného polygonu:
Výsledné SVG potom může být importované do Blenderu:
A naškálované na větší velikost:
Uprostřed obrazovky je možné vidět „origin point“, který se nachází ve středu 3D kurzoru. Ta malá žlutá tečka. Blender má docela užitečnou funkci, kde vám umožňuje rychle přemístit „origin point“ do středu geometrie. Ve 3D modelování se to používá docela často, protože typicky chcete dělat nějaký druh modifikace (rotaci třeba) závislý na geometrickém těžišti objektu.
Potom už zbývá jen přemístit objekt (polygonovou mapu) na místo kurzoru a otočit jí o 180°, protože je z nějakého důvodu importovaná vzhůru nohama.
Teď by bylo hezké to nějak zvizualizovat na reálné mapě, abysme zjistili kde přesně ten bod je. Použil jsem mapu z oficiálních stránek Města Prahy. Pak jsem obrázek mapy orotoval o pár stupňů a škáloval ho, dokud polygonová mapa nepasovala na obrys v obrázkové mapě.
Rotace je třeba, protože data v SVG obrázku, který jsem použil, jsou z nějakého důvodu pootočena o pár stupňů a pak zkorigována SVG transformací. Eh.
(Zdroj mapy:
https://www.praha.eu/public/89/6a/ec/1099205_140344_cyklomapa_Praha_50_2010_MAPA_strana_1.jpg
)
Když se to pak zazoomuje, můžete vidět střed polygonu nad skutečnou mapou:
(Zdroj mapy:
https://www.praha.eu/public/89/6a/ec/1099205_140344_cyklomapa_Praha_50_2010_MAPA_strana_1.jpg
)
(Zdroj:
https://www.praha.eu/public/89/6a/ec/1099205_140344_cyklomapa_Praha_50_2010_MAPA_strana_1.jpg
)
Což je podle mého odhadu tady: 50.0579333N, 14.4434400E.
(Zdroj:
http://mapy.cz
)
Docela rozdílný bod, že? Pobavilo mě, že se nachází tak hezky uprostřed ulice.
(Zdroj:
http://mapy.cz
)
Nalevo je bod který jsem našel, napravo bod od Kluků z Prahy.
Asi je úplně jedno, kde člověk bere střed Prahy. Ať tak nebo tak, tak stejně to bude záležet na tom jak kdo interpretuje pojem střed. Pro někoho je to tam kde se střetávají severo-jižní a východo-západní přímky. Pro někoho je to geometrický střed. A pocitově, kdybych měl vybrat kde se má střed nacházet, tak bych asi zvolil zase trochu jiný bod, někde psychologicky víc uprostřed.
Co mě ovšem baví je mít jednoduchou možnost si takhle hrát a zkoumat, k tomu je Blender super.
Blender soubor:
Pokud chcete dostat z SVG mapy set bodů, které definují polygon, následující script k tomu lze použít, za předpokladu že máte křivku mapy vybranou:
import bpy obdata = bpy.context.object.data curve = bpy.context.object deg = bpy.context.evaluated_depsgraph_get() me = bpy.data.meshes.new_from_object(curve.evaluated_get(deg), depsgraph=deg) map_mesh = bpy.data.objects.new(curve.name + "_mesh", me) print(dir(map_mesh.data)) for v in map_mesh.data.vertices: print('{:.2f} {:.2f}'.format(v.index, v.co.x * 10000 + 700, v.co.y * 10000 + 500))
Tiskni
Sdílej:
boundary=*
Jak řešíte sandboxing aplikací? Kdybych chtěl spustit to gpx2svg a nevěřím náhodnému softwaru z internetu. Uměl bych jednorázovou VM, ale to je strašný opruz. Co používáte? Nějaký docker?Docasnyho uzivatele. Sance, ze se exploitne na roota, neni moc velka.
[timeout:5000]; area[name="Česko"]->.a; relation(area.a)["name"="Praha"]["boundary"="administrative"]["admin_level"="4"]; (._;>;); out meta;Format ve kterym si to sosnes si muzes vybrat. --- Dete s tim guuglem dopice!
Jak řešíte sandboxing aplikací? Kdybych chtěl spustit to gpx2svg a nevěřím náhodnému softwaru z internetu. Uměl bych jednorázovou VM, ale to je strašný opruz. Co používáte? Nějaký docker?nspawn, jaily. Nebo x testovacích virtuálek co tu mám (clone, spustit, vyzkoušet, smazat).
Jak řešíte sandboxing aplikací? Kdybych chtěl spustit to gpx2svg a nevěřím náhodnému softwaru z internetu. Uměl bych jednorázovou VM, ale to je strašný opruz. Co používáte? Nějaký docker?Jak definuješ "náhodný SW z internetu"? Je Linux (kernel) náhodný SW z internetu? Pokud ne, proč gpx2svg ano? Tool, kterej má dokumentaci a zdrojáky na Gitlabu mi přijde celkem důvěryhodný. A to i když pominu, že se ten zdroják dá za 3min projít a ani se nekompiluje.
Jak řešíte sandboxing aplikací?podmanem / dockerem spuštěný kontejner třeba s Debianem a mountnou do něj potřebná data.
mi vyšel kousek nad vorlojem :D ;D
Asi je úplně jedno, kde člověk bere střed Prahy. Ať tak nebo tak, tak stejně to bude záležet na tom jak kdo interpretuje pojem střed.Taky bychom mohli řešit, co je ještě Praha a co už ne. Jasně, je to nějak formálně definované, ale jsou místa, která jsou sice formálně Praha, ale pocitově je to samostatná vesnička. Nebo třeba taková hranice mezi Klánovicema a Šestajovicema - zajdeš k sousedům přes ulici a už nejsi v Praze.
Střed jsem spočítal z obvodu katastrálních hranic z roku 2018, takže pokud došlo ke změně, bude střed někde jinde. Každopádně to vychází do tenisových kurtů ve Vršovicích, ulice Magnitogorská. Souřadnice WGS-84 jsou N50,066789 E14,465964Tady chybí informace o tom co vlastně počítal. Geometický střed? Nebo taky protnul přímky?
si tu křivku taky jakoby mužeš převíst na mesh vygenerovat mezi bodama strany a dát origin do centra hmotnosti :O ;D
ve vobrázku přiloženým je 3d kurzor tam kde byl střed předtim a současnej origin je jakoby vtom centru hmotnosti ;D
když sem uďála subdivizi všech hran na vokraji tak se origin asi skoro vubec nehejbal :O :/ nejspíš se to asi jako vyruší váhově na vopačnejch stranách ty body :O :O
tamten fraktální efekt by imho víc líp fungoval na přidávání(vodendávání) novejch detailů do tý mapy/svg a moc ne na nějakým generování z průměru sousedů :O :O
Dobry napad, jdu na to, protoze Bystroushark se zas vymluvi ze nema cas. Budou k tomu potreba tyto ingredience: data verejne dopravy, routovac verejne dopravy, data pro pesi sit a pesi routovac. To by nemel byt problem. Uzivatelske rozhrani bude fungovat tak, ze kliknutim na mapu se okamzite spocitaji dojezdove casy pro vsechny body na mape z/do vybraneho bodu. Vizualizuje se to tak, ze se mapa prekryje polopruhlednou vrstvou, na ktere budou barevne odliseny casy 0-10 min, 10-20 min, atd. Pepa mel dobry postreh, ze je dulezity i interval dopravniho prostredku. To by slo resit tak, ze se bude uvazovat nasledujici situace (konkretni cisla jsou ilustrativni): Rano mezi 8 a 9 hodinou se v nahodny okamzik rozhodnu jet do prace. Jaky bude ocekavany cas dojezdu do prace, vcetne cekani na odjezd? Pripadne to lze jeste rozsirit o "interval flexibility". Vyberu si nahodny okamzik kdy chci jet do prace, ale pak si reknu, ze chci odjet kdykoliv behem nasledujicich 15 minut. Jakekoliv cekani nad tento 15 min interval uz se zapocitava do casu cesty.+1, to vypadá užitečně, budu se těšit.
tttssss by si jako houbičky s voctem věděl žeto je střed nějakej kdyby to bystroušák jakoby nezměřil vtom blenderu předtim ;D ;D
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.