Categorïau
Cerrig milltir

Mae Mapio Cymru bellach yn llwytho’n gyflymach. Dyma beth wnaethon ni i gyflymu’r gweinydd

Rydyn ni’n adeiladu map cyhoeddus agored o Gymru gyda’r holl enwau yn Gymraeg. Mae’r map bellach yn llwytho’n gyflymach i chi oherwydd gwaith diweddar.

Dyma beth wnaethon ni i wella cyflymder llwytho’r map.

Pan rydych chi’n llwytho’r map, rydych chi’n gweld grid o deiliau. Mae pob un yn ffeil delwedd sgwâr, fel hwn:

Dyma ddarn bach o Dyddewi ar lefel chwyddo 17.

Mae llyfrgell JavaScript o’r enw Leaflet yn rheoli eich llywio o amgylch y map (tremio a chwyddo). Y prif bwynt yw taw delweddau sy’n gwneud y map.

Mae’r delweddau teil yn cael eu rendro o ddata map o fewn OpenStreetMap, sydd yn cael eu cadw fel pwyntiau, llwybrau, a pherthnasau. Yn ogystal â’r data, mae’r pentwr meddalwedd a ddatblygwyd gan brosiect OpenStreetMap wedi ei drwyddedu’n rhydd.

Wrth fynd ati i ddangos map cyfredol i ddefnyddiwr, trawsnewid data i ddelweddau yw’r darn o’r gwaith sydd yn cymryd y rhan fwyaf o amser. Fel arfer mae hyn yn digwydd tra bod y defnyddiwr yn llwytho’r map, mae’r gweinydd yn cynhyrchu a darparu’r delweddau, ac yn eu cadw mewn storfa hefyd.

Pe tasai’r map yn orffenedig a therfynol byddai hynny’n help. Gallen ni sicrhau bod yr holl ddelweddau teil ar y gweinydd, wedi eu rendro a chadw, a darparu nhw bob tro. Ond nid yw hynny’n opsiwn ar gyfer y map cyfan am gwpl o resymau.

Ar hyn o bryd mae map Mapio Cymru yn cael ei ddiweddaru unwaith bob nos tra bod y mwyafrif ohonom yn cysgu, ac mae capasiti’r gweinydd yn dueddol o fod yn uwch. Mae angen y diweddariadau achos mae nodweddion map daearyddol ac enwau yn newid yn aml, bob tro mae rhywun yn golygu OpenStreetMap. Fel arfer mae hyn yn welliant i’r map, e.e. rhywun yn ychwanegu enw i nodwedd. Mae’r elfennau data agored yn cael ei ddiwygio’n gyson, fel Wicipedia y maes mapio. Mae’r golygiad yn gallu bod yn ymateb i rywbeth sy’n newid yn y byd corfforol, e.e. caffi yn newid ei enw, neu orsaf drên hyfryd newydd sbon…!

Felly nid oes modd i ni gadw’r map mewn aspig, mae’n newid trwy amser.

Mae rhwystr arall i’r syniad o rendro a chadw’r holl fap i gyflymu llwytho. Mae set gwahanol o deiliau ar bob lefel chwyddo. Ar y lefelau mwyaf pell mae’n bosib cadw’r holl ddelweddau. Ond ar lefelau chwyddo agosach, mae’r nifer o deiliau’n tyfu’n esbonyddol. Yn fuan mae angen llwythi o amser a le storio, sydd yn fwy nag sydd gyda ni.

Er enghraifft oedd Cymru gyfan ar lefel chwyddo 17 yn cymryd ychydig dros saith awr i’w rendro dros nos. Mae hynny’n ormod o amser.

Oes modd i ni rendro a chadw rhai teiliau dethol, a rendro rhai eraill ar-elw. Oes, fel mae’n digwydd. Yr her yw i benderfynu beth i’w rendro am y mantais cyflymder mwynaf, wrth ystyried cyfyngiadau amser a storfa.

Beth yw’r ardaloedd map o ‘ddiddordeb’ neu ‘berthnasedd’, a sut ydyn ni’n gallu bod yn fwy fanwl pendant am hyn?

I ddechrau, roedd gennym ragdybiaeth y byddai’r ardaloedd â phoblogaeth wasgaredig yn cael eu hymweld ar y map yn llai aml nag ardaloedd poblog iawn. Un dull fyddai rendro ardaloedd uwchlaw trothwy dwysedd poblogaeth penodol.

Yna sylweddolais fod datrysiad arall yn llawer mwy parod i fynd, a hyd yn oed yn well. Gallem gyfeirio at geisiadau porwr agregedig am deiliau i weld pa rannau o’n map yr ymwelwyd â hwy fwyaf. Mae hyn yn caniatáu i ni edrych ar boblogrwydd hanesyddol ardaloedd hyd at lefel teiliau unigol. Roedd hwn yn ddata a oedd gennym eisoes, o fewn logiau gweinydd.

Dyma fap gwres a gynhyrchwyd gan Ben Proctor.

Map gwres o flwyddyn o ymweliadau ar bob lefel chwyddo.

Mae’n ymddangos bod yr ardaloedd poblogaidd yn cyfateb i ddwysedd y boblogaeth. Efallai y bydd perthynas hefyd â nifer a/neu ganran y siaradwyr Cymraeg mewn gwahanol ardaloedd, sydd ar gael o ddata’r Cyfrifiad.

Dw i wedi cyfarwyddo’r gweinydd i rendro’r teiliau a’u storio. Rydym wedi dewis yr ardaloedd hyn:

Mae lefelau chwyddo 3 i 16 bellach wedi’u rendro’n llwyr.

Mae lefelau chwyddo 17 a 18 bellach wedi’u rendro’n rhannol.

Nawr mae’r gweinydd yn rendro’r ardaloedd hyn yn awtomatig bob nos, yn syth ar ôl mewnforio’r data cyfoes.

Roedd y gwahaniaeth yn amlwg iawn pan wnes i lwytho’r wefan cyn ac ar ôl y newid. Cyn hyn, roeddwn i wedi codi cywilydd braidd am yr ardaloedd gwag enfawr a rhewi cyson y map, tra bod y gweinydd yn baglu ymlaen. Dw i ddim yn cael y profiad hynny bellach – o leiaf am y tro!

Ar gyfartaledd, mae teiliau yn llwytho mewn 40% o’r amser os maen nhw wedi eu rendro ymlaen llaw. Mae hynny’n welliant syfrdanol, er bod graddfa’r cyflymu yn ddibynnol iawn ar faint o ddefnyddwyr sy’n cyrchu’r gweinydd ar unwaith.

Mae hyd yn oed teiliau nad ydynt wedi’u rendro ymlaen llaw yn llwytho’n gyflymach oherwydd mae mwy o gapasiti ar y gweinydd fel arfer.

Gyda llaw, mae rhedeg y gweinydd yn llyfn hefyd yn dibynnu ar ddewis y gosodiadau cywir. (Gwnaethom ystyried nginx fel dewis arall yn lle Apache ond ymddengys nad oes ganddo modiwl addas fel mod_tile.)

Wrth i ni ennill mwy o ddiddordeb a defnyddwyr ar gyfer y map dw i’n disgwyl y bydd yn rhaid i mi ymweld â hyn eto. Mae eich cyfraniadau at gostau prosiect bob amser yn ddefnyddiol.

2 ateb ar “Mae Mapio Cymru bellach yn llwytho’n gyflymach. Dyma beth wnaethon ni i gyflymu’r gweinydd”

Dw i newydd dod yn aelod 🙂 Diolch am y map!
Roeddwn i’n wneud yr un map gyda Google Maps rhyw deng mlynedd yn ôl, a mae eich map chi yn LLAWER well!
Rhaglennwr ydw i, felly, os eisiau cymorth, croeso!
Gyda llaw, oes modd dangos gororau ar y map? Siroedd, hen siroedd, cantrefi, plwyfau?

Helo Dmitri, diolch yn fawr am y sylw a’r cynnig o help.

Pa fath o bethau wyt ti wedi mwynhau gwneud ar fapiau a data yn y gorffennol?

Fe wnawn ni ystyried gororau yn sicr!

Ateb

Gadael Ymateb

Ni fydd eich cyfeiriad e-bost yn cael ei gyhoeddi. Mae'r meysydd gofynnol yn cael eu marcio *