Orodha ya maudhui:
- Vifaa
- Hatua ya 1: Kufafanua Mchakato mimi: Kupakua faili ya OSM
- Hatua ya 2: Kufafanua Mchakato wa II: Kuelewa Takwimu
- Hatua ya 3: Kufafanua Mchakato wa Tatu: Kusaga Takwimu
- Hatua ya 4: Utekelezaji wa Stylizer ya Ramani ya Python
- Hatua ya 5: Utekelezaji Drawback + Solution
- Hatua ya 6: Maeneo ya Uboreshaji
- Hatua ya 7: Mawazo ya Kufunga
Video: Jinsi ya Kuunda Ramani Zilizopangwa Stylized kutumia OpenStreetMap: Hatua 7 (na Picha)
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:50
Katika hii inayoweza kufundishwa, nitaelezea mchakato ambao unaweza kutengeneza ramani zako zenye maandishi maalum. Ramani ya stylized ni ramani ambayo mtumiaji anaweza kutaja ni tabaka gani za data zinazoonekana, na pia kufafanua mtindo ambao kila safu inaonyeshwa. Kwanza nitaelezea mchakato ambao unaweza kuandika programu ili kutengeneza ramani, ikifuatiwa na mfano wa programu ya Python niliyoandika kufanya kazi hii.
Video ifuatayo inaangazia jinsi mimi mwenyewe ninatoa ramani zenye stylized, lakini endelea kusoma kwa maelezo ya karibu. Nimefurahi sana kuona kile jamii inaunda!
Ni nini msukumo wangu nyuma ya mradi huu?
Kusema ukweli kabisa, nilianzisha mradi huu kwa sababu nilifikiri itakuwa raha kufanya. Wazo hili limekuwa likigugumia akilini mwangu kwa mwaka uliopita, na mwishowe nilichukua wakati niliohitaji kuileta. Baada ya siku ya kuiga na maandishi ya kimsingi, niliweza kutoa matokeo ya kuahidi sana - kwa kuahidi kwamba nilijua nilihitaji kurasimisha maandishi yangu ili wengine waweze kutengeneza ubunifu wao wenyewe.
Nia yangu ya kuandika maandishi haya ni kwa sababu ya ukweli kwamba nimepata habari ndogo sana juu ya jinsi ya kuunda ramani zako zenye mtindo kutoka mwanzoni. Natumai kushiriki kile nilichojifunza na jamii.
Rasilimali / Viungo:
- OpenStreetMap
- OpenStreetMap Legalese
- Hifadhi ya Github
Vifaa
- Usambazaji wa chatu (nilitumia Anaconda & Python 3.6)
- PyQt5 (kwa utegemezi wa GUI)
Hatua ya 1: Kufafanua Mchakato mimi: Kupakua faili ya OSM
Nilipoanza mradi huu, swali la kushangaza zaidi lilikuwa, "ni wapi ninaweza kupata data ya ramani." Kwa kawaida, kama unavyotarajia, mara moja nilifikiria Ramani za Google. Baada ya utafiti muhimu, niligundua kuwa Google hawataki watu wanaocheza na data zao, kwa ubunifu au vinginevyo. Kwa kweli, hawakubali kabisa kufuta mtandao kutoka kwa Ramani za Google.
Kwa bahati nzuri, kukata tamaa kwangu kulikuwa kwa muda mfupi baada ya kugundua OpenStreetMap (OSM). OSM ni mradi wa kushirikiana unaoshirikisha watu kote ulimwenguni wanaochangia data. OSM inaruhusu matumizi wazi ya data zao kwa jina la programu ya Chanzo wazi. Kwa hivyo, kutembelea ukurasa wa wavuti wa OSM ndio safari ya kutengeneza ramani inapoanza.
Baada ya kufika kwenye wavuti ya OSM, bonyeza kitufe cha "Hamisha" kuonyesha zana za kusafirisha ramani. Sasa, vuta karibu ili uone mkoa ambao una nia ya kukusanya data ya ramani. Chagua kiunga "Chagua mwenyewe kwa eneo tofauti", ambayo italeta sanduku kwenye skrini yako. Sura na uweke sanduku hili juu ya eneo la kupendeza. Mara baada ya kuridhika, bonyeza kitufe cha "Hamisha" kupakua faili yako ya data ya OSM.
Kumbuka # 1: Ikiwa eneo lako lililochaguliwa lina data nyingi, utapata hitilafu kwamba umechagua nodi nyingi. Ikiwa hii itakutokea, bonyeza kitufe cha "Overpass API" kupakua faili yako kubwa.
Kumbuka # 2: Ikiwa faili yako ya OSM iliyopakuliwa ni kubwa kuliko 30MB, programu ya Python niliyoandika itapungua polepole. Ikiwa umeamua kutumia mkoa mkubwa, fikiria kuandika hati ili kutupa data mbaya ambayo haupangi kuteka.
Hatua ya 2: Kufafanua Mchakato wa II: Kuelewa Takwimu
"Nina data… sasa nini?"
Anza kwa kufungua faili yako ya OSM iliyopakuliwa kwenye programu unayopenda ya kuhariri maandishi. Kwanza utaona hii ni faili ya XML, ambayo ni nzuri! XML ni rahisi kutosha kuchanganua. Mwanzo wa faili yako inapaswa kuonekana sawa na picha ya kwanza ya hatua hii - metadata zingine za msingi na mipaka ya kijiografia zitaorodheshwa.
Unapotembeza faili, utaona vitu vitatu vya data vilivyotumika wakati wote:
- Nodi
- Njia
- Mahusiano
Kipengele cha msingi cha data, node ina kitambulisho cha kipekee, latitudo, na longitudo inayohusiana nayo. Kwa kweli, kuna metadata ya ziada, lakini tunaweza kuitupa salama.
Njia ni makusanyo ya nodi. Njia inaweza kutolewa kama sura iliyofungwa au kama laini iliyo wazi. Njia zinajumuisha mkusanyiko wa nodi zilizotambuliwa na kitambulisho chao cha kipekee. Zimewekwa alama na funguo ambazo hufafanua kikundi cha data ambacho ni chao. Kwa mfano, njia iliyoonyeshwa kwenye picha ya tatu hapo juu ni ya kikundi cha data "mahali", na kikundi chake kidogo, "kisiwa." Kwa maneno mengine, njia hii ni ya safu ya "kisiwa" chini ya kikundi cha "mahali". Njia pia zina vitambulisho vya kipekee.
Mwishowe, uhusiano ni mkusanyiko wa njia. Uhusiano unaweza kuwakilisha sura tata na mashimo au na mikoa mingi. Uhusiano pia utakuwa na kitambulisho cha kipekee na utatiwa alama vile vile kwa njia.
Unaweza kusoma zaidi juu ya vitu hivi vya data kutoka kwa OSM wiki:
- Nodi
- Njia
- Mahusiano
Hatua ya 3: Kufafanua Mchakato wa Tatu: Kusaga Takwimu
Sasa unapaswa kuwa na angalau ufahamu wa juu juu wa vitu vya data ambavyo hufanya faili ya OSM. Kwa wakati huu, tunavutiwa kusoma data ya OSM kutumia lugha yako ya chaguo. Wakati hatua hii ni Python-centric, ikiwa hautaki kutumia Python, bado unapaswa kusoma sehemu hii kwani ina vidokezo kadhaa na ujanja.
Kifurushi cha xml kimejumuishwa na chaguo-msingi na mgawanyo wa kawaida wa Python. Tutatumia kifurushi hiki kuchanganua faili yetu ya OSM kama inavyoonekana kwenye picha ya kwanza. Kwa kitanzi kimoja, unaweza kushughulikia utunzaji wa data ya OSM kwa kila kipengee cha data.
Kwenye mstari wa mwisho wa picha hiyo, utaona nikiangalia lebo ya 'mipaka'. Hatua hii ni muhimu sana katika kutafsiri nambari za latitudo na urefu katika saizi kwenye skrini. Ninapendekeza kuendesha ubadilishaji huu wakati unapakia faili ya OSM, kwani uongofu mkubwa wa data ni mchakato mkubwa.
Kuzungumza juu ya kubadilisha latitudo na longitudo kwa kuratibu za skrini, hapa kuna kiunga cha kazi ya hesabu niliyoandika. Labda utaona kitu cha kushangaza kidogo katika kugeuza latitudo kuwa viwianishi vya skrini. Kuna hatua ya ziada inayohusika ikilinganishwa na longitudo! Kama inavyotokea, data ya OSM imeigwa kwa kutumia njia ya makadirio ya Pseudo-Mercator. Kwa bahati nzuri, OSM ina nyaraka nzuri juu ya mada hii hapa, na hutoa kazi za ubadilishaji wa latitudo kwa idadi kubwa ya lugha. Ajabu!
Kumbuka: Katika nambari yangu, uratibu wa skrini (0, 0) ni kona ya juu kushoto mwa skrini.
Hatua ya 4: Utekelezaji wa Stylizer ya Ramani ya Python
Hadi wakati huu, nimejadili faili ya data ya OSM - ni nini, jinsi ya kuisoma, na nini cha kufanya nayo. Sasa nitajadili programu niliyoandika kushughulikia taswira ya ramani ya mtindo (GitHub repo iliyotolewa katika utangulizi).
Utekelezaji wangu maalum unazingatia udhibiti wa mtumiaji wa bomba la utoaji. Hasa, ninaruhusu mtumiaji kuchagua matabaka ambayo wanataka yaonekane na jinsi wanavyotaka safu hiyo ionekane. Kama nilivyosema kwa ufupi hapo awali, kuna aina mbili za vitu vilivyotolewa: jaza vitu na vitu vya laini. Kujaza hufafanuliwa tu na rangi, wakati mistari hufafanuliwa na rangi, upana wa mstari, mtindo wa laini, mtindo wa kofia ya laini, na mtindo wa kujiunga na mstari.
Kama mtumiaji hufanya marekebisho kwa mitindo ya safu na kujulikana, mabadiliko yanaonyeshwa kwenye wijeti ya ramani kulia. Mara tu mtumiaji anapobadilisha mwonekano wa ramani ili kuridhika, anaweza kurekebisha kiwango cha juu cha ramani na kuhifadhi ramani kama picha kwenye kompyuta yake. Katika kuhifadhi picha, faili ya usanidi wa mtumiaji pia itahifadhiwa. Hii inahakikisha mtumiaji anaweza kukumbuka na kutumia tena usanidi aliotumia kutoa picha fulani wakati wowote.
Hatua ya 5: Utekelezaji Drawback + Solution
Nilipoanza kutengeneza ramani kwa mikono, nilijifunza kuwa huu ulikuwa mchakato wa kuchosha. Kutoa udhibiti wa kiwango cha juu cha mtumiaji inaweza kuwa balaa sana kwa sababu ya idadi kubwa ya "vifungo" vinavyopatikana. Walakini, kuna suluhisho rahisi, ambalo linajumuisha maandishi ya ziada kidogo.
Nilianza kwa kugundua ni tabaka zipi ninazovutiwa nazo. Kwa madhumuni ya kufundisha hii, wacha tuseme ninapenda sana majengo (yote), mito, barabara kuu, na barabara za juu. Ningeandika hati ambapo nitaunda mfano wa Usanidi, kubadilisha tabaka inasema ipasavyo kutumia setItemState () kazi na viboreshaji vilivyoainishwa, na kuweka rangi kulingana na jinsi ningependa safu zangu zionekane kutumia setValue (). Faili ya usanidi inayosababishwa ambayo inaweza kuokolewa inaweza kunakiliwa kwenye folda ya usanidi na kupakiwa na mtumiaji.
Hati ya mfano iko kwenye picha hapo juu. Picha ya pili ni mfano wa jinsi kazi za wasaidizi zingeonekana, na kwa kuwa zote zinafanana, tu na viboreshaji tofauti, nilijumuisha tu picha ya mfano mmoja.
Hatua ya 6: Maeneo ya Uboreshaji
Baada ya kutafakari juu ya utekelezaji wa programu yangu, nimetambua maeneo kadhaa ambayo yatakuwa maboresho ya msaada kwa watumiaji wa umeme.
- Utoaji wa safu ya nguvu. Hivi sasa, nina orodha iliyotanguliwa ya matabaka ambayo yatatolewa, ndivyo ilivyo. Sehemu ya haki ilikuwa ugumu wa kuamua ikiwa safu inapaswa kuwa laini au kujaza. Kama matokeo, karibu na kila faili ya OSM utakayofungua, utasalimiwa na maonyo mengi juu ya matabaka ambayo hayatapewa. Mara nyingi hizi ni ndogo sana sio shida, lakini lazima kuwe na tabaka muhimu zinazokosekana. Utoaji wa safu ya nguvu ungeondoa wasiwasi huu.
- Mgawo wa safu ya nguvu. Hii inakwenda kwa mkono na # 1; ikiwa unataka utoaji wa safu ya nguvu, unahitaji mgawo wa safu ya nguvu (yaani, kutambua safu ya kujaza dhidi ya safu ya mstari). Hii inaweza kutekelezwa kwa busara, kama nilivyojifunza, kwa sababu Njia ambazo node ya kwanza na ya mwisho ni sawa zitakuwa zimefungwa njia na kwa hivyo zitajazwa.
- Vikundi vya Rangi. Ramani iliyotengenezwa mara nyingi huwa na matabaka kadhaa ambayo yana mtindo huo, na kuwezesha mtumiaji kurekebisha mtindo wa kikundi wakati wote kunapunguza sana wakati wa mtumiaji kutumia safu za kuhariri moja kwa moja.
Hatua ya 7: Mawazo ya Kufunga
Asante kila mtu kwa kuchukua muda kusoma kupitia Agizo langu. Mradi huu unawakilisha kilele cha masaa mengi ya utafiti, muundo, programu, na utatuzi. Natumai nimeweza kutoa pedi ya uzinduzi ambayo unaweza kujenga mradi wako mwenyewe au kujenga juu ya yale ambayo nimeandika tayari. Natumaini pia mapungufu yangu na vidokezo vinatoa vidokezo vingi vya kuzingatia katika muundo wako. Ikiwa haujapenda sana mpango na umependa zaidi kuunda kazi za sanaa, ningependa kuona unachofanya kwenye maoni! Uwezekano hauna mwisho!
Shukrani za pekee kwa wafadhili wa OpenStreetMap! Miradi kama hii haingewezekana bila juhudi zao kubwa.
Tafadhali nijulishe ikiwa una maswali yoyote kwenye maoni!
Mkimbiaji katika Changamoto ya Ramani
Ilipendekeza:
Tengeneza Kitabu cha Ramani Kutumia Ramani za Google: Hatua 17 (na Picha)
Tengeneza Kitabu cha Ramani Kutumia Ramani za Google: Siku nyingine nilikuwa nikitafuta duka la vitabu kwa Mwongozo wa Mtaa wa Kaunti ya DuPage, IL kwani rafiki yangu wa kike anaishi hapo na anahitaji ramani ya barabara ya kina. Kwa bahati mbaya, moja tu ambayo walikuwa nayo ambayo ilikuwa karibu ilikuwa moja ya Kaunti ya Cook (kama hii o
Taa zilizopangwa katika fremu ya mbao: Hatua 10 (na Picha)
Taa zilizopangwa katika fremu ya mbao: Taa hii ina matabaka ya matboard ambayo yamekatwa na laser, na kisha kuwekwa ndani ya fremu ya mbao. Matumizi mengine: Tumia kama taa kwa mfanyakazi wako! Weka juu ya mavazi kwenye kabati la Tahoe unayokodisha kama safari ya wikendi na marafiki! Itundike
Kufanya Ramani za Garmin na Openstreetmap: 4 Hatua
Kutengeneza Ramani za Garmin na Openstreetmap: Ninapenda kupanda kwa miguu lakini situmiwi kusoma ramani. Kwa hivyo nilijinunulia GPS ya garmin GPSMAP64. Katika changamoto ya ramani niliona inayoweza kufundishwa ya jinsi ya kutengeneza ramani za gps ya gps hii ni maandishi yaliyoandikwa vizuri sana na ilinifanya nifikiri kuandika yangu
Kutumia Daraja la H (293D) Kuendesha Motors 2 zilizopangwa kwa Hob Arduino; Muhtasari wa mzunguko: Hatua 9
Kutumia Daraja la H (293D) kuendesha Gari 2 za Magari ya Hobby Ans Arduino; inaweza kuendesha motors 2 pande mbili (mbele na kugeuza) na Nambari
Jinsi ya kuunda Ramani ya MIDI kwa BCD3000 katika Traktor Pro: 6 Hatua
Jinsi ya Kuunda Ramani ya MIDI ya BCD3000 katika Traktor Pro: Hii itakuchukua hatua kwa hatua katika kuunda ramani zako za kawaida za MIDI katika Traktor Pro kwa DEEJAY BCD3000 ya Behringer