Përmbajtje:
- Furnizimet
- Hapi 1: Përcaktimi i Procesit I: Shkarkimi i Skedarit OSM
- Hapi 2: Përkufizimi i procesit II: Kuptimi i të dhënave
- Hapi 3: Përkufizimi i procesit III: Tretja e të dhënave
- Hapi 4: Zbatimi i stilizatorit të hartës Python
- Hapi 5: Disavantazhi i Zbatimit + Zgjidhja
- Hapi 6: Fushat për Përmirësim
- Hapi 7: Mbyllja e Mendimeve
Video: Si të krijoni harta të stilizuara me porosi duke përdorur OpenStreetMap: 7 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:14
Në këtë udhëzues, unë do të përshkruaj një proces me të cilin mund të krijoni hartat tuaja të stilizuara të bëra me porosi. Një hartë e stilizuar është një hartë ku përdoruesi mund të specifikojë se cilat shtresa të të dhënave janë vizualizuar, si dhe të përcaktojë stilin me të cilin vizualizohet secila shtresë. Së pari do të përshkruaj procesin përmes të cilit mund të shkruani softuer për të stilizuar hartat, e ndjekur nga një shembull i softuerit Python që kam shkruar për të kryer këtë detyrë.
Videoja e mëposhtme thekson sesi unë personalisht krijoj harta të stilizuara, por vazhdoni të lexoni për detajet intime. Jam shumë i emocionuar të shoh se çfarë krijon komuniteti!
Cili është motivimi im pas këtij projekti?
Sinqerisht, e fillova këtë projekt sepse mendova se do të ishte kënaqësi ta bëja. Kjo ide është tronditur në mendjen time vitin e kaluar dhe më në fund mora kohën që më duhej për ta realizuar atë. Pas një dite të prototipimit me disa skenarë bazë, unë isha në gjendje të gjeneroja rezultate jashtëzakonisht premtuese - aq premtuese saqë e dija që duhej të zyrtarizoja skenaret e mia në mënyrë që të tjerët të mund të krijonin lehtësisht krijimet e tyre.
Motivimi im për të shkruar këtë udhëzues është për faktin se kam gjetur informacion shumë minimal se si të krijoni hartat tuaja të stilizuara nga e para. Shpresoj të ndaj atë që kam mësuar me komunitetin.
Burimet/Lidhjet:
- OpenStreetMap
- OpenStreetMap Legalese
- Depo Github
Furnizimet
- Një shpërndarje Python (kam përdorur Anaconda & Python 3.6)
- PyQt5 (për varësitë GUI)
Hapi 1: Përcaktimi i Procesit I: Shkarkimi i Skedarit OSM
Kur fillova për herë të parë këtë projekt, pyetja më e qartë ishte, "ku mund t'i gjej të dhënat e hartës". Natyrisht, siç e prisnit, menjëherë mendova për Google Maps. Pas hulumtimeve të rëndësishme, zbulova se Google me të vërtetë nuk dëshiron që njerëzit të luajnë me të dhënat e tyre, në një kuptim krijues ose ndryshe. Në fakt, ata në mënyrë eksplicite nuk lejojnë fshirjen e uebit nga Google Maps.
Për fat të mirë, dëshpërimi im ishte jetëshkurtër me zbulimin tim të OpenStreetMap (OSM). OSM është një projekt bashkëpunues që përfshin njerëz në të gjithë globin duke kontribuar me të dhëna. OSM lejon në mënyrë eksplicite përdorimin pa afat të të dhënave të tyre në emër të softuerit me burim të hapur. Si e tillë, vizita e uebfaqes së OSM është vendi ku fillon udhëtimi i stilizimit të hartës.
Pasi të keni mbërritur në faqen e internetit të OSM, klikoni në butonin "Eksport" për të treguar mjetet e eksportit të hartës. Tani, zmadhoni për të parë rajonin me të cilin jeni të interesuar në mbledhjen e të dhënave të hartës. Zgjidhni lidhjen "Zgjidhni manualisht një zonë të ndryshme", e cila do të shfaqë një kuti në ekranin tuaj. Formoni dhe vendoseni këtë kuti mbi rajonin e interesit. Pasi të jeni të kënaqur, klikoni butonin "Eksport" për të shkarkuar skedarin tuaj të të dhënave OSM.
Shënim #1: Nëse rajoni juaj i zgjedhur përmban shumë të dhëna, do të merrni një gabim që keni zgjedhur shumë nyje. Nëse ju ndodh kjo, klikoni në butonin "API i Mbikalimit" për të shkarkuar skedarin tuaj më të madh.
Shënim #2: Nëse skedari juaj i shkarkuar OSM është më i madh se 30MB, programi Python që kam shkruar do të ngadalësohet dukshëm. Nëse jeni të vendosur të përdorni një zonë të madhe, merrni parasysh të shkruani një skenar për të hedhur të dhëna të tepërta që nuk planifikoni të vizatoni.
Hapi 2: Përkufizimi i procesit II: Kuptimi i të dhënave
"Unë kam të dhëna … tani çfarë?"
Filloni duke hapur skedarin tuaj të shkarkuar OSM në programin tuaj të preferuar të redaktimit të tekstit. Së pari do të vini re se ky është një skedar XML, i cili është i shkëlqyeshëm! XML është mjaft e lehtë për tu analizuar. Fillimi i skedarit tuaj duhet të duket pothuajse identik me fotografinë e parë të këtij hapi - do të listohen disa metadata bazë dhe kufij gjeografikë.
Ndërsa lëvizni skedarin, do të vini re tre elementë të të dhënave të përdorura në të gjithë:
- Nyjet
- Mënyrat
- Marrëdhëniet
Elementi më themelor i të dhënave, një nyje thjesht ka një identifikues unik, gjerësi dhe gjatësi të lidhur me të. Sigurisht, ka meta të dhëna shtesë, por ne mund t'i hedhim me siguri.
Mënyrat janë koleksione të nyjeve. Një mënyrë mund të jepet si një formë e mbyllur ose si një vijë e hapur. Mënyrat përbëhen nga një koleksion nyjesh të identifikuara nga identifikuesi i tyre unik. Ato janë të etiketuara me çelësa që përcaktojnë grupin e të dhënave që i përkasin. Për shembull, mënyra e paraqitur në imazhin e tretë më sipër i përket grupit të të dhënave "vend" dhe nëngrupit të tij, "ishull". Me fjalë të tjera, kjo mënyrë e veçantë i përket shtresës "ishull" nën grupin "vend". Mënyrat gjithashtu kanë identifikues unikë.
Së fundmi, marrëdhëniet janë koleksion mënyrash. Një lidhje mund të përfaqësojë një formë komplekse me vrima ose me rajone të shumta. Marrëdhëniet gjithashtu do të kenë një identifikues unik dhe do të etiketohen në mënyrë të ngjashme me mënyrat.
Mund të lexoni më shumë rreth këtyre elementeve të të dhënave nga wiki OSM:
- Nyjet
- Mënyrat
- Marrëdhëniet
Hapi 3: Përkufizimi i procesit III: Tretja e të dhënave
Tani duhet të keni të paktën një kuptim sipërfaqësor të elementeve të të dhënave që përbëjnë një skedar OSM. Në këtë pikë, ne jemi të interesuar të lexojmë të dhënat e OSM duke përdorur gjuhën tuaj të zgjedhur. Ndërsa ky hap është i përqendruar në Python, nëse nuk doni të përdorni Python, prapëseprapë duhet ta lexoni këtë pjesë pasi përmban disa këshilla dhe truqe.
Paketa xml përfshihet si parazgjedhje me shumicën e shpërndarjeve standarde Python. Ne do ta përdorim këtë paketë për të analizuar shumë lehtë skedarin tonë OSM siç tregohet në imazhin e parë. Në një lak të vetëm për, mund të përpunoni trajtimin e të dhënave OSM për secilin element të veçantë të të dhënave.
Në rreshtin përfundimtar të figurës, do të vini re se unë kontrolloj për etiketën "kufij". Ky hap është me rëndësi jetike në përkthimin e vlerave të gjerësisë dhe gjatësisë në piksele në ekran. Unë rekomandoj që ta ktheni këtë konvertim në kohën kur ngarkoni skedarin OSM, pasi konvertimi masiv i të dhënave është proces intensiv.
Duke folur për shndërrimin e gjerësive dhe gjatësive në koordinatat e ekranit, këtu është një lidhje me funksionin e llogaritjes që kam shkruar. Me shumë mundësi do të vini re diçka pak të çuditshme në shndërrimin e gjerësisë gjeografike në koordinatat e ekranit. Ka një hap shtesë të përfshirë kur krahasohet me gjatësinë gjeografike! Siç rezulton, të dhënat OSM janë modeluar duke përdorur metodën e projeksionit Pseudo-Mercator. Për fat të mirë, OSM ka dokumentacion fantastik në lidhje me këtë temë këtu, dhe ato ofrojnë funksione të konvertimit të gjerësisë për një numër të konsiderueshëm gjuhësh. Mbresëlënës!
Shënim: Në kodin tim, koordinata e ekranit (0, 0) është këndi i sipërm i majtë i ekranit.
Hapi 4: Zbatimi i stilizatorit të hartës Python
Deri në këtë pikë, unë kam diskutuar skedarin e të dhënave OSM - çfarë është, si ta lexoni dhe çfarë të bëni me të. Tani do të diskutoj softuerin që kam shkruar për të trajtuar vizualizimin stilistik të hartës (repoja e GitHub e dhënë në hyrje).
Implementimi im specifik fokusohet në kontrollin e përdoruesit të tubacionit të paraqitjes. Në mënyrë të veçantë, unë lejoj përdoruesin të zgjedhë shtresat që ata duan të duken dhe si duan që ajo shtresë të vizualizohet. Siç e përmenda shkurtimisht më herët, ekzistojnë dy klasa elementësh të dhënë: plotësoni artikujt dhe artikujt e rreshtit. Plotësimet përcaktohen vetëm nga një ngjyrë, ndërsa linjat përcaktohen nga ngjyra, gjerësia e vijës, stili i vijës, stili i kapakut të linjës dhe stili i bashkimit të linjës.
Ndërsa përdoruesi bën modifikime në stilet dhe dukshmërinë e shtresave, ndryshimet reflektohen në widget -in e hartës në të djathtë. Pasi një përdorues të ketë modifikuar pamjen e hartës për kënaqësinë e tij, ai mund të rregullojë dimensionin maksimal të hartës dhe ta ruajë hartën si një imazh në kompjuterin e tij. Në ruajtjen e një imazhi, një skedar konfigurimi i përdoruesit gjithashtu do të ruhet. Kjo siguron që një përdorues të kujtojë dhe ripërdorë konfigurimin që ka përdorur për të gjeneruar një imazh të veçantë në çdo kohë.
Hapi 5: Disavantazhi i Zbatimit + Zgjidhja
Kur fillova të stilizoj një hartë me dorë, mësova se ky ishte një proces mjaft i lodhshëm. Ofrimi i kontrollit maksimal të përdoruesit mund të jetë thjesht dërrmues për shkak të numrit të madh të "pullave" të disponueshme. Sidoqoftë, ekziston një zgjidhje e thjeshtë, e cila përfshin një shkrim të vogël shtesë.
Fillova duke identifikuar se cilat shtresa më interesojnë veçanërisht. Për qëllimet e këtij udhëzimi, le të themi se jam më i interesuar për ndërtesat (të gjitha), lumenjtë, autostradat kryesore dhe rrugët sipërfaqësore. Unë do të shkruaja një skenar ku krijoja një shembull të Konfigurimit, ndërroja gjendjet e shtresës në mënyrë të përshtatshme duke përdorur funksionin setItemState () dhe konstantet e përcaktuara, dhe vendosja ngjyra bazuar në mënyrën se si do të doja që shtresat e mia të shfaqeshin duke përdorur setValue (). Skedari i konfigurimit që rezulton që ruhet mund të kopjohet në dosjen e konfigurimeve dhe të ngarkohet nga përdoruesi.
Një skenar shembull është në imazhin e mësipërm. Imazhi i dytë është një shembull i asaj se si do të dukeshin funksionet ndihmëse, dhe meqenëse ato janë në thelb të gjitha identike, vetëm me konstante të ndryshme, unë përfshiva vetëm një fotografi të një shembulli.
Hapi 6: Fushat për Përmirësim
Pas reflektimit mbi zbatimin tim të softuerit, unë kam identifikuar disa fusha që do të ishin përmirësime të dobishme për përdoruesit e energjisë.
- Paraqitja dinamike e shtresës. Aktualisht, unë kam një listë të paracaktuar të shtresave që do të jepen, kjo është ajo. Pjesë e arsyetimit ishte vështirësia në përcaktimin nëse një shtresë duhet të jetë një vijë apo një mbushje. Si rezultat, me pothuajse çdo skedar OSM që hapni, do të përshëndeteni me një mori paralajmërimesh për shtresat që nuk do të jepen. Shpesh këto janë aq minimale sa nuk është një çështje, por do të mungojnë shtresa kritike. Paraqitja dinamike e shtresave do t'i eliminonte këto shqetësime.
- Caktimi i shtresës dinamike. Kjo shkon dorë për dore me #1; nëse doni paraqitje dinamike të shtresës, keni nevojë për caktimin e shtresës dinamike (d.m.th., identifikimin e një shtrese mbushëse kundrejt një shtrese linje). Kjo mund të arrihet në mënyrë të arsyeshme, siç kam mësuar, sepse Mënyrat, nyja e parë dhe e fundit e të cilave janë të njëjta, do të jenë shtigje të mbyllura dhe për këtë arsye të mbushura.
- Grupet e ngjyrave. Një hartë e stilizuar shpesh ka disa shtresa që kanë të njëjtin stil, dhe aftësimi i përdoruesit për të modifikuar stilin e një grupi në të njëjtën kohë do të zvogëlonte shumë kohën e përdoruesit të shpenzuar për redaktimin e shtresave një nga një.
Hapi 7: Mbyllja e Mendimeve
Faleminderit të gjithëve që keni gjetur kohë për të lexuar Udhëzuesin tim. Ky projekt përfaqëson kulmin e shumë orëve të kërkimit, projektimit, programimit dhe korrigjimit. Shpresoj se kam qenë në gjendje të siguroj një platformë nisëse nga e cila mund të ndërtoni projektin tuaj ose të ndërtoni atë që kam shkruar tashmë. Unë gjithashtu shpresoj se mangësitë dhe këshillat e mia japin shumë pika për t'u marrë parasysh në hartimin tuaj. Nëse jeni më pak të prirur për program dhe më shumë të prirur për të krijuar vepra arti, do të doja të shihja atë që bëni në komente! Mundësitë janë të pafundme!
Faleminderit të veçantë për kontribuesit e OpenStreetMap! Projekte të tilla nuk do të ishin të mundshme pa përpjekjet e tyre të rëndësishme.
Ju lutemi më tregoni nëse keni ndonjë pyetje në komente!
Vendi i dytë në Sfidën e Hartave
Recommended:
Si të krijoni mbajtëse me porosi dhe printim 3D për dëmtimin e krahut: 8 hapa (me fotografi)
Si të dizajnoni mbajtëse me porosi dhe printim 3D për dëmtimin e krahut: Postuar në faqen time në piper3dp.com. Tradicionalisht, gipsat për eshtrat e thyera janë bërë nga suva e rëndë, e fortë, e cila nuk merr frymë. Kjo mund të krijojë siklet dhe probleme të lëkurës për pacientin gjatë procesit të shërimit, si kruajtje, skuqje dhe
Dritë shumë e ndritshme e biçikletës duke përdorur PCB të panelit të dritës me porosi: 8 hapa (me fotografi)
Dritë shumë e ndritshme e biçikletës duke përdorur PCB të panelit të dritës me porosi: Nëse zotëroni një biçikletë, atëherë e dini se sa gropa të pakëndshme mund të jenë në gomat dhe trupin tuaj. Unë kisha mjaft për të fryrë gomat e mia, kështu që vendosa të krijoj panelin tim të udhëhequr me qëllim që ta përdor atë si një dritë biçikletë. Ai që fokusohet në të qenit E
Si të bëni një Arcade DIY 2 lojtarësh Bartop me lojëra elektronike të monedhës me porosi, duke përdorur një kuti të Pandorës: 17 hapa (me fotografi)
Si të bëni një Arcade DIY 2 lojtarësh me lojëra elektronike me monedhë të personalizuar, duke përdorur një kuti të Pandorës: Ky është një udhëzues hap pas hapi se si të ndërtoni një makinë arcade të lartë me 2 lojtarë që ka lojëra elektronike të personalizuara të ndërtuara në shesh. Slotet e monedhave do të bëhen të tilla që ata të pranojnë vetëm monedha me madhësinë e një të katërtës dhe më të mëdhenjtë. Kjo arkadë mundësohet
Si të krijoni altoparlantë me porosi Xbox Glow: 18 hapa (me fotografi)
Si të ndërtoni altoparlantë të personalizuar Xbox Glow: Ndërtimi i altoparlantëve sigurohet nga 123Toid - https://www.youtube.com/user/123Toid
Si të krijoni qarqe dhe të krijoni një PCB duke përdorur Autodesk EAGLE: 9 hapa
Si të dizajnoni qarqe dhe të krijoni një PCB duke përdorur Autodesk EAGLE: Ka shumë lloje të programeve CAD (Dizajni i Ndihmuar nga Kompjuteri) që mund t'ju ndihmojnë të dizajnoni dhe bëni PCB (Pllaka Qarqesh të Shtypura), çështja e vetme është se shumica e tyre nuk duan t shpjegoj vërtet se si t'i përdorim ato dhe çfarë mund të bëjnë. Kam përdorur shumë