Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Pagtukoy sa Proseso I: Pag-download ng OSM File
- Hakbang 2: Pagtukoy sa Proseso II: Pag-unawa sa Data
- Hakbang 3: Pagtukoy sa Proseso III: Pag-digest ng Data
- Hakbang 4: Pagpapatupad ng Python Map Stylizer
- Hakbang 5: Kakulangan sa Pagpapatupad + Solusyon
- Hakbang 6: Mga Lugar para sa Pagpapabuti
- Hakbang 7: Mga Saloobin sa Pagsara
Video: Paano Lumikha ng Mga Custom na Stylized na Mapa Gamit ang OpenStreetMap: 7 Mga Hakbang (na may Mga Larawan)
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:11
Sa itinuturo na ito, ilalarawan ko ang isang proseso kung saan makakagawa ka ng iyong sariling mga naka-istilong mapa na mapa. Ang isang naka-istilong mapa ay isang mapa kung saan maaaring tukuyin ng gumagamit kung aling mga layer ng data ang isinalarawan, pati na rin tukuyin ang istilo kung saan ang visual na layer ay isinalarawan. Ilalarawan ko muna ang proseso kung saan maaari kang magsulat ng software upang mabago ang istilo ng mga mapa, na sinusundan ng isang halimbawa ng software na Python na isinulat ko upang maisagawa ang gawaing ito.
Ang sumusunod na video ay nagha-highlight kung paano ako personal na bumuo ng mga naka-istilong mapa, ngunit patuloy na basahin ang mga malapit na detalye. Tuwang tuwa ako na makita kung ano ang nilikha ng komunidad!
Ano ang aking motibasyon sa likod ng proyektong ito?
Sa totoo lang, sinimulan ko ang proyektong ito dahil naisip kong magiging kasiya-siya itong gawin. Ang ideyang ito ay gumagalaw sa aking isipan para sa nakaraang taon, at sa wakas ay kinuha ko ang oras na kailangan ko upang maisakatuparan ito. Matapos ang isang araw ng prototyping sa ilang pangunahing pag-script, nagawa kong makabuo ng labis na nangangako na mga resulta - napakahusay na alam kong kailangan kong gawing pormal ang aking mga script na ang iba ay madaling makakagawa ng kanilang mga likha.
Ang aking pagganyak sa pagsusulat ng itinuturo na ito ay dahil sa ang katunayan na natagpuan ko ang napakaliit na impormasyon sa kung paano lumikha ng iyong sariling mga inilarawan sa istilo na mga mapa mula sa simula. Inaasahan kong ibahagi ang natutunan ko sa komunidad.
Mga mapagkukunan / Link:
- OpenStreetMap
- OpenStreetMap Legalese
- Repository ng Github
Mga gamit
- Isang pamamahagi ng Python (ginamit ko ang Anaconda & Python 3.6)
- PyQt5 (para sa mga dependency ng GUI)
Hakbang 1: Pagtukoy sa Proseso I: Pag-download ng OSM File
Nang una kong sinimulan ang proyektong ito, ang pinaka-nakasisilaw na tanong ay, "saan ako makakakuha ng data ng mapa." Naturally, tulad ng aasahan mo, naisip ko agad ang Google Maps. Pagkatapos ng makabuluhang pagsasaliksik, natuklasan ko na talagang ayaw ng Google ang mga taong naglalaro sa kanilang data, sa isang malikhaing kahulugan o kung hindi man. Sa katunayan, tahasang hindi pinapayagan ang web-scraping mula sa Google Maps.
Sa kabutihang palad, ang aking kawalan ng pag-asa ay panandalian sa aking pagtuklas ng OpenStreetMap (OSM). Ang OSM ay isang nakikipagtulungan na proyekto na kinasasangkutan ng mga tao sa buong mundo na nagbibigay ng data. Tahasang pinahihintulutan ng OSM ang bukas na paggamit ng kanilang data sa pangalan ng Open Source software. Tulad ng naturan, ang pagbisita sa OSM webpage ay kung saan nagsisimula ang paglalakbay sa stylizing ng mapa.
Pagdating sa website ng OSM, mag-click sa tab na "I-export" upang maipakita ang mga tool sa pag-export ng mapa. Ngayon, mag-zoom in upang matingnan ang rehiyon kung saan ka interesado sa pagkolekta ng data ng mapa. Piliin ang link na "Manu-manong pumili ng ibang lugar", na magdadala ng isang kahon sa iyong screen. Ihugis at ilagay ang kahon na ito sa rehiyon ng interes. Kapag nasiyahan, i-click ang pindutang "I-export" upang i-download ang iyong file ng data ng OSM.
Tandaan # 1: Kung ang iyong napiling rehiyon ay naglalaman ng labis na data, makakakuha ka ng isang error na napili mo ang masyadong maraming mga node. Kung nangyari ito sa iyo, i-click ang pindutang "Overpass API" upang i-download ang iyong mas malaking file.
Tandaan # 2: Kung ang iyong na-download na file ng OSM ay mas malaki sa 30MB, ang programang Python na aking isinulat ay kapansin-pansin na mabagal. Kung determinado kang gumamit ng isang malaking rehiyon, isaalang-alang ang pagsusulat ng isang script upang itapon ang labis na data na hindi mo pinaplano na iguhit.
Hakbang 2: Pagtukoy sa Proseso II: Pag-unawa sa Data
"Nasa akin ang data … ngayon ano?"
Magsimula sa pamamagitan ng pagbubukas ng iyong na-download na OSM file sa iyong paboritong software sa pag-edit ng teksto. Mapapansin mo muna na ito ay isang XML file, na mahusay! Ang XML ay madaling sapat upang mai-parse. Ang simula ng iyong file ay dapat magmukhang halos magkapareho sa unang larawan ng hakbang na ito - ang ilang pangunahing mga metadata at heograpikong hangganan ay nakalista.
Sa pag-scroll mo ng file, mapapansin mo ang tatlong elemento ng data na ginamit sa buong:
- Mga node
- Mga paraan
- Relasyon
Ang pinaka-pangunahing elemento ng data, ang isang node ay may kakaibang pagkakakilanlan, latitude, at longitude na nauugnay dito. Siyempre, may karagdagang metadata, ngunit maaari naming ligtas na itapon ito.
Ang mga paraan ay mga koleksyon ng mga node. Ang isang paraan ay maaaring mai-render bilang isang nakapaloob na hugis o bilang isang bukas na linya na linya. Ang mga paraan ay binubuo ng isang koleksyon ng mga node na kinilala ng kanilang natatanging pagkakakilanlan. Naka-tag ang mga ito ng mga susi na tumutukoy sa pangkat ng data na kinabibilangan nila. Halimbawa, ang paraang nakalarawan sa pangatlong imaheng nasa itaas ay kabilang sa pangkat ng data na "lugar," at ang subgroup na "isla." Sa madaling salita, ang partikular na paraan na ito ay kabilang sa layer ng "isla" sa ilalim ng pangkat na "lugar". Ang mga paraan ay mayroon ding mga natatanging pagkakakilanlan.
Panghuli, ang mga ugnayan ay mga koleksyon ng mga paraan. Ang isang ugnayan ay maaaring kumatawan sa isang kumplikadong hugis na may mga butas o may maraming mga rehiyon. Ang mga relasyon ay magkakaroon din ng isang natatanging pagkakakilanlan at mai-tag nang katulad sa mga paraan.
Maaari kang magbasa nang higit pa tungkol sa mga elementong ito ng data mula sa OSM wiki:
- Mga node
- Mga paraan
- Relasyon
Hakbang 3: Pagtukoy sa Proseso III: Pag-digest ng Data
Ngayon ay dapat magkaroon ka ng kahit isang mababaw na pag-unawa sa mga elemento ng data na bumubuo sa isang OSM file. Sa puntong ito, interesado kaming basahin ang data ng OSM gamit ang iyong piniling wika. Habang ang hakbang na ito ay nakasentro sa Python, kung ayaw mong gumamit ng Python, dapat mo pa ring basahin ang bahaging ito dahil naglalaman ito ng ilang mga tip at trick.
Ang xml package ay isinama bilang default sa karamihan ng karaniwang pamamahagi ng Python. Gagamitin namin ang package na ito upang mas madaling ma-parse ang aming OSM file tulad ng ipinakita sa unang imahe. Sa isang solong para sa loop, maaari mong iproseso ang paghawak ng data ng OSM para sa bawat partikular na elemento ng data.
Sa huling linya ng imahe, mapapansin mong sinusuri ko ang tag na 'hangganan'. Ang hakbang na ito ay napakahalaga sa pagsasalin ng mga halagang latitude at longitude sa mga pixel sa screen. Masidhi kong inirerekumenda ang pagpapatakbo ng conversion na ito sa oras na na-load mo ang OSM file, dahil ang masinsinang pag-convert ng data ay masinsinang proseso.
Pinag-uusapan ang pag-convert ng mga latitude at longitude sa mga coordinate sa screen, narito ang isang link sa pagsulat na pagpapaandar na isinulat ko. Malamang mapapansin mo ang isang bagay na medyo kakaiba sa pag-convert ng latitude sa mga coordinate sa screen. Mayroong dagdag na hakbang na kasangkot kung ihahambing sa longitude! Bilang ito ay lumiliko, ang data ng OSM ay naka-modelo gamit ang pamamaraang Pseudo-Mercator projection. Sa kasamaang palad, ang OSM ay may kamangha-manghang dokumentasyon tungkol sa paksang ito dito, at ibinibigay nila ang mga pagpapaandar ng conversion ng latitude para sa isang makabuluhang bilang ng mga wika. Galing!
Tandaan: Sa aking code, ang coordinate ng screen (0, 0) ay ang itaas na kaliwang sulok ng screen.
Hakbang 4: Pagpapatupad ng Python Map Stylizer
Hanggang sa puntong ito, tinalakay ko ang file ng data ng OSM - kung ano ito, kung paano ito basahin, at kung ano ang gagawin dito. Ngayon ay tatalakayin ko ang software na isinulat ko upang talakayin ang pangkakanyahan sa visualization ng mapa (GitHub repo na ibinigay sa pagpapakilala).
Ang aking tukoy na pagpapatupad ay nakatuon sa kontrol ng gumagamit sa pag-render ng pipeline. Partikular, pinapayagan ko ang gumagamit na piliin ang mga layer na nais nilang makita at kung paano nila nais na mailarawan ang layer na iyon. Tulad ng maikling sabi ko kanina, mayroong dalawang klase ng mga elemento na na-render: punan ang mga item at mga item sa linya. Ang mga pagpuno ay tinukoy lamang ng isang kulay, habang ang mga linya ay tinukoy ng kulay, lapad ng linya, istilo ng linya, istilo ng cap ng linya, at istilo ng pagsali sa linya.
Habang gumagawa ng mga pagbabago ang gumagamit sa mga istilo ng layer at kakayahang makita, ang mga pagbabago ay makikita sa mapa widget sa kanan. Kapag nabago ng isang gumagamit ang hitsura ng mapa sa kanilang kasiyahan, maaari niyang ayusin ang maximum na sukat ng mapa at i-save ang mapa bilang isang imahe sa kanyang computer. Sa pag-save ng isang imahe, isang file ng pagsasaayos ng gumagamit ay nai-save din. Tinitiyak nito na maaalala ng isang gumagamit at muling magagamit ang pagsasaayos na ginamit niya upang makabuo ng isang partikular na imahe anumang oras.
Hakbang 5: Kakulangan sa Pagpapatupad + Solusyon
Nang una akong magsimulang mag-istilo ng isang mapa nang manu-mano, natutunan ko na ito ay isang nakakapagod na proseso. Ang pag-aalok ng maximum na kontrol ng gumagamit ay maaaring maging napakalaki dahil sa maraming bilang ng mga magagamit na "mga knobs." Gayunpaman, mayroong isang simpleng solusyon, na nagsasangkot ng kaunting dagdag na scripting.
Nagsimula ako sa pamamagitan ng pagkilala kung aling mga layer ang partikular na interesado ako. Para sa layunin ng pagtuturo na ito, sabihin nating mas interesado ako sa mga gusali (lahat ng mga ito), mga ilog, pangunahing mga haywey, at mga kalye sa ibabaw. Magsusulat ako ng isang script kung saan lumilikha ako ng isang halimbawa ng Configuration, ang toggle layer ay nagsasaad nang naaangkop gamit ang setItemState () function at tinukoy na mga pare-pareho, at nagtatakda ng mga kulay batay sa kung paano ko nais lumitaw ang aking mga layer gamit ang setValue (). Ang nagresultang file ng pagsasaayos na nai-save ay maaaring makopya sa folder ng mga config at mai-load ng gumagamit.
Ang isang halimbawa ng iskrip ay nasa imahe sa itaas. Ang pangalawang imahe ay isang sample ng kung ano ang magiging hitsura ng mga pagpapaandar ng helper, at dahil lahat sila ay magkapareho, kasama lamang ang iba't ibang mga pare-pareho, isinama ko lamang ang isang larawan ng isang halimbawa.
Hakbang 6: Mga Lugar para sa Pagpapabuti
Matapos sumalamin sa aking pagpapatupad ng software, nakilala ko ang maraming mga lugar na magiging kapaki-pakinabang na mga pagpapabuti para sa mga gumagamit ng kuryente.
- Pag-render ng Dynamic na layer. Sa kasalukuyan, mayroon akong isang paunang natukoy na listahan ng mga layer na ibibigay, iyon lang. Bahagi ng pagbibigay-katwiran ay ang kahirapan sa pagtukoy kung ang isang layer ay dapat na isang linya o isang pagpunan. Bilang isang resulta, sa halos bawat file na OSM na iyong binubuksan, sasalubungin ka ng isang babala tungkol sa mga layer na hindi maibigay. Kadalasan ang mga ito ay napakaliit na ito ay hindi isang isyu, ngunit dapat may mga kritikal na layer na nawawala. Aalisin ng pag-render ng Dynamic na layer ang mga alalahanin na ito.
- Pagtatalaga ng Dynamic na layer. Magkakasabay ito sa # 1; kung nais mo ang pag-render ng pabago-bagong layer, kailangan mo ng pagtatalaga ng pabago-bagong layer (ibig sabihin, pagkilala sa isang layer ng pagpuno kumpara sa isang layer ng linya). Makatuwirang magagawa ito, tulad ng natutunan ko, dahil Ang mga Paraan na ang una at huling node ay pareho ay nakapaloob na mga landas at samakatuwid ay napunan.
- Mga Pangkat ng Kulay. Ang isang naka-istilong mapa ay madalas na may maraming mga layer na may parehong estilo, at ang pagpapagana sa gumagamit na baguhin ang istilo ng isang pangkat nang sabay-sabay ay lubos na mabawasan ang oras ng gumagamit na ginugol sa pag-edit ng mga layer nang paisa-isa.
Hakbang 7: Mga Saloobin sa Pagsara
Salamat sa lahat sa paglalaan ng oras upang basahin ang aking Instructable. Ang proyektong ito ay kumakatawan sa paghantong ng maraming oras ng pagsasaliksik, disenyo, programa, at pag-debug. Inaasahan kong nakapagbigay ako ng isang launch pad kung saan maaari kang bumuo ng iyong sariling proyekto o bumuo sa kung ano ang naisulat ko na. Inaasahan ko rin na ang aking mga pagkukulang at tip ay nagbibigay ng maraming mga puntos upang isaalang-alang sa iyong disenyo. Kung hindi ka gawi sa programa at higit na may hilig na lumikha ng mga likhang sining, nais kong makita kung ano ang iyong ginagawa sa mga komento! Ang mga posibilidad ay walang katapusan!
Espesyal na salamat sa mga nag-ambag ng OpenStreetMap! Ang mga proyektong tulad nito ay hindi magiging posible kung wala ang kanilang makabuluhang pagsisikap.
Mangyaring ipaalam sa akin kung mayroon kang anumang mga katanungan sa mga komento!
Runner Up sa Hamon sa Maps
Inirerekumendang:
Lumikha ng Mga Pasadyang Mapa para sa Iyong Garmin GPS: 8 Hakbang (na may Mga Larawan)
Lumikha ng Mga Pasadyang Mapa para sa Iyong Garmin GPS: Kung mayroon kang isang Garmin GPS na idinisenyo para sa hiking at iba pang mga panlabas na aktibidad (kasama ang serye ng GPSMAP, eTrex, Colorado, Dakota, Oregon, at Montana, bukod sa ilang iba pa), hindi mo na kailangang manirahan para sa mga hubad na buto na mga mapa na naunang na-load dito. E
Gumawa ng isang Mapa ng Mapa Gamit ang Google Maps: 17 Mga Hakbang (na may Mga Larawan)
Gumawa ng isang Book ng Mapa Gamit ang Google Maps: Nitong nakaraang araw ay tumitingin ako sa bookstore para sa isang Gabay sa Kalye para sa DuPage County, IL dahil ang aking kasintahan ay naninirahan doon at nangangailangan ng isang detalyadong mapa ng kalye. Sa kasamaang palad, ang isa lamang na mayroon sila na malapit ay isa para sa Cook County (tulad nito o
Paano Lumikha ng isang Simpleng Pahina ng Web Gamit ang Mga Bracket para sa Mga Nagsisimula: 14 Mga Hakbang
Paano Lumikha ng isang Simpleng Web Page Gamit ang Mga Bracket para sa Mga Nagsisimula: PanimulaAng mga sumusunod na tagubilin ay nagbibigay ng sunud-sunod na patnubay upang makagawa ng isang web page gamit ang Mga Bracket. Ang mga bracket ay isang editor ng pinagmulan ng code na may pangunahing pokus sa pagbuo ng web. Nilikha ng Adobe Systems, ito ay libre at open-source software na lisensyado
Paano Gumawa ng isang Drone Gamit ang Arduino UNO - Gumawa ng isang Quadcopter Gamit ang Microcontroller: 8 Hakbang (na may Mga Larawan)
Paano Gumawa ng isang Drone Gamit ang Arduino UNO | Gumawa ng isang Quadcopter Gamit ang Microcontroller: PanimulaBisitahin ang Aking Youtube Channel Ang isang Drone ay isang napakamahal na gadget (produkto) na bibilhin. Sa post na ito tatalakayin ko, kung paano ko ito magagawa sa murang ?? At Paano mo magagawa ang iyong sarili tulad nito sa murang presyo … Sa India ang lahat ng mga materyales (motor, ESC
Kontrolin ang Arduino Gamit ang Smartphone Sa pamamagitan ng USB Gamit ang Blynk App: 7 Mga Hakbang (na may Mga Larawan)
Kontrolin ang Arduino Gamit ang Smartphone Sa Pamamagitan ng USB Sa Blynk App: Sa tutorial na ito, matututunan namin kung paano gamitin ang Blynk app at Arduino upang makontrol ang lampara, ang kumbinasyon ay sa pamamagitan ng USB serial port. Ang layunin ng pagtuturo na ito ay upang ipakita ang pinakasimpleng solusyon sa malayo-pagkontrol ng iyong Arduino o c