Orodha ya maudhui:

Jinsi ya Kuunda Ramani Zilizopangwa Stylized kutumia OpenStreetMap: Hatua 7 (na Picha)
Jinsi ya Kuunda Ramani Zilizopangwa Stylized kutumia OpenStreetMap: Hatua 7 (na Picha)

Video: Jinsi ya Kuunda Ramani Zilizopangwa Stylized kutumia OpenStreetMap: Hatua 7 (na Picha)

Video: Jinsi ya Kuunda Ramani Zilizopangwa Stylized kutumia OpenStreetMap: Hatua 7 (na Picha)
Video: New Style Transfer Extension, ControlNet of Automatic1111 Stable Diffusion T2I-Adapter Color Control 2024, Novemba
Anonim
Jinsi ya Kuunda Ramani Zilizopangwa Stylized Kutumia OpenStreetMap
Jinsi ya Kuunda Ramani Zilizopangwa Stylized Kutumia OpenStreetMap

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

Kufafanua Mchakato I: Kupakua faili ya OSM
Kufafanua Mchakato I: 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

Kuelezea Mchakato wa II: Kuelewa Takwimu
Kuelezea Mchakato wa II: Kuelewa Takwimu
Kuelezea Mchakato wa II: Kuelewa Takwimu
Kuelezea Mchakato wa II: Kuelewa Takwimu
Kuelezea Mchakato wa II: Kuelewa Takwimu
Kuelezea Mchakato wa II: Kuelewa Takwimu
Kuelezea Mchakato wa II: Kuelewa Takwimu
Kuelezea 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:

  1. Nodi
  2. Njia
  3. 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

Kufafanua Mchakato wa Tatu: Kumeng'enya Takwimu
Kufafanua Mchakato wa Tatu: Kumeng'enya 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

Utekelezaji wa Stylizer ya Ramani ya Python
Utekelezaji wa Stylizer ya Ramani ya Python
Utekelezaji wa Stylizer ya Ramani ya Python
Utekelezaji wa Stylizer ya Ramani ya Python
Utekelezaji wa Stylizer ya Ramani ya Python
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

Utekelezaji Drawback + Solution
Utekelezaji Drawback + Solution
Utekelezaji Drawback + Solution
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

Maeneo ya Uboreshaji
Maeneo ya Uboreshaji

Baada ya kutafakari juu ya utekelezaji wa programu yangu, nimetambua maeneo kadhaa ambayo yatakuwa maboresho ya msaada kwa watumiaji wa umeme.

  1. 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.
  2. 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.
  3. 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

Kufunga Mawazo
Kufunga Mawazo
Kufunga Mawazo
Kufunga Mawazo
Kufunga Mawazo
Kufunga Mawazo

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!

Changamoto ya Ramani
Changamoto ya Ramani
Changamoto ya Ramani
Changamoto ya Ramani

Mkimbiaji katika Changamoto ya Ramani

Ilipendekeza: