Categorïau
Canllawiau

Sut i chwarae gyda data map: canllaw cam-wrth-gam i Overpass ac OpenStreetMap

Map: llefydd yng Nghymru sy’n cynnwys ‘llan’ yn eu henwau

Hoffech chi ddod o hyd i gestyll, afonydd, blychau post, neu ffyrdd seiclo yng Nghymru ar fap?

Beth am archwilio enwau llefydd Cymraeg yn eich ardal?

Beth am gael nodweddion eraill o Gymru a thu hwnt, fel data agored o fap?

Bydd yr eitem blog hon yn dangos i chi sut i gael data agored o OpenStreetMap, gyda phwyslais arbennig ar ddata Cymraeg.

Y bwriad yw i gael cyflwyniad hwyl, nid adnodd gwbl gynhwysfawr. Nid oes angen profiad o flaen llaw.

Byddwn yn pasio ymholiadau i API Overpass, sy’n un hawdd i gychwyn arni. Mae’r ymholiadau yn gallu rhedeg o’ch porwr gwe o fewn Overpass Turbo, sydd yn ap arbennig o dda a cŵl iawn. Fel arall eich chwilfrydedd yw’r unig beth arall sydd angen!

Cysyniadau i ddechrau

Mae croeso i chi neidio dros yr adran hon os ydych chi eisiau mynd i’r darn ymarferol yn syth.

Mae OpenStreetMap yn fap byd-eang sydd wedi ei adeiladu gan filoedd o bobl. Mae’n defnyddio dulliau wici-aidd i fapio – mae unrhyw un yn gallu golygu ac ailddefnyddio’r cynnwys. Mae’n ddata agored ac rydych chi’n gallu eu defnyddio yn eich dysgu, gwaith, a hamdden.

Mae llwythi o ddata Cymraeg yn OpenStreetMap.

Mae’n annibynnol o ddarparwyr mapio perchnogol, sydd yn rhoi rhyddid i chi weithio gyda’r data yn eich prosiectau chi.

Mae’r feddalwedd sy’n gyrru’r cyfan yn god agored sy’n parchu rhyddid. Fel prosiect Mapio Cymru rydyn ni wedi adeiladu map i arddangos enwau Cymraeg am nodweddion fel llefydd, heolydd, afonydd, ac ati.

Sut i weithredu ymholiad Overpass

Y ffordd gyflymaf o drio ymgeisiadau Overpass yw i ymweld â gwefan Overpass Turbo.

Mae’r sgrîn yn cael ei rhannu rhwng panel golygydd a phanel gweld map/data. Nawr dilynwch y camau:

  1. Ysgrifennwch (neu ludwch!) ymholiad i mewn i’r golygydd.
  2. Cliciwch y botwm Run.
  3. Bydd y canlyniadau yn ymddangos y panel data.
  4. O fewn y panel data rydych chi’n gallu dethol tab Map neu’r tab Data.

Byddwch chi’n dilyn y camau uchod bob tro rydych chi’n gweithredu ymholiad.

Trefi: ymholiad

Dyma ymholiad syml rydych chi’n gallu defnyddio. Yn gyntaf llusgwch y map a chwyddo i mewn nes bod e’n dangos yr ardal rydych chi eisiau ymchwilio, e.e. darn o Gymru. Wedyn dilynwch y camau uchod gyda’r ymholiad hwn:

node["place"="town"]({{bbox}});
out;

Dyna ni, dylech chi nawr weld trefi fel pwyntiau ar yr ardal o’r map a ddetholwyd. Llongyfarchiadau ar gyflawni’ch ymholiad Overpass cyntaf!

Y data

Detholwch y tab Data yn y panel data i weld y data. XML ydy fformat diofyn y data.

Dyma ddarn o’r data XML rydych chi’n gweld am ganlyniadau’r ymholiad uchod, am ddwy dref.

<node id="8997358" lat="51.5912466" lon="-2.7517629">
  <tag k="name" v="Caldicot"/>
  <tag k="name:cy" v="Cil-y-coed"/>
  <tag k="place" v="town"/>
  <tag k="population" v="11200"/>
  <tag k="postal_code" v="NP26 4"/>
  <tag k="wikidata" v="Q722585"/>
  <tag k="wikipedia" v="en:Caldicot, Monmouthshire"/>
</node>

<node id="21413062" lat="51.8591257" lon="-4.3115907">
  <tag k="is_in" v="Wales"/>
  <tag k="name" v="Carmarthen"/>
  <tag k="name:br" v="Caerfyrddin"/>
  <tag k="name:cy" v="Caerfyrddin"/>
  <tag k="name:en" v="Carmarthen"/>
  <tag k="name:ja" v="カーマーゼン"/>
  <tag k="name:la" v="Moridunum"/>
  <tag k="name:ru" v="Кармартен"/>
  <tag k="place" v="town"/>
  <tag k="population" v="14185"/>
  <tag k="population:date" v="2011"/>
  <tag k="source" v="NPE"/>
  <tag k="source:population" v="Census"/>
  <tag k="wikidata" v="Q835835"/>
</node>

Fel rydych chi’n gweld, mae’r tag name:cy yn darparu enw’r dref yn Gymraeg. Mae tagiau tebyg mewn ieithoedd eraill. Mae hefyd tag o’r enw name heb god iaith, dyma ddiffiniad yr allwedd name.

Yn gyffredinol bydd name:cy yn darparu’r enw Cymraeg am unrhyw beth ar y map – pe bai ar gael yn y gronfa ddata.

Bydd y data eraill yn yr enghreifftiau uchod yn eithaf hunan-esboniadol, a chynnwys hydred (longitude), lledred (latitude), cod eitem Wiciddata, a phethau eraill.

Nodwch fod OpenStreetMap wastad yn waith anghyflawn. Byddech chi’n gweld data eithaf data am sawl ymholiad ond bydd eraill yn dangos bylchau. (Rydych chi’n gallu golygu/ychwanegu enwau llefydd i’r map, a nodweddion eraill a’i tagiau.)

Newid eich map Overpass Turbo i Mapio Cymru

O fewn Overpass Turbo mae’n debyg taw prif fap OpenStreetMap fyddech chi’n gweld. Mae hynny’n iawn ond ni fydd e’n ymddangos pob enw yn Gymraeg.

Rydych chi’n gallu newid e i weinydd Mapio Cymru, fel hyn:

  1. Dethol dewislen Settings
  2. Dethol Map
  3. Yn y blwch Tile-Server rhowch:
    //openstreetmap.cymru/osm_tiles/{z}/{x}/{y}.png

Noder, pan gliciwch ar unrhyw bin ar y map bydd dolenni’n dal i fynd i’r prif OpenStreetMap.

Ffermydd, dinasoedd, a llefydd eraill

Rydych chi’n gallu golygu’r ymholiad uchod:

node["place"="farm"]({{bbox}});
out;

Sylwch ar y gwahaniaeth rhwng yr ymholiad hwn a’r un flaenorol. Fel arall defnyddiwch un o’r gwerthoedd posibl am place. Er enghraifft gallech chi ddefnyddio “village”, “city”, “island” ac ati.

Eich blwch terfyn

Yn gyffredinol:

  • Os mae’ch ymholiad yn cyfeirio at bbox (blwch terfyn, neu bounding box) bydd yr ymholiad yn rhedeg ar y map gweledol, y darn o’r map rydych chi wedi dethol.
  • Rydych chi hefyd yn gallu lleihau lled y map: llusgwch ei ffin i leihau’r maint, a chynyddu maint y golygydd.
  • Os mae’n ymholiad yn cynnwys llawer o ganlyniadau, mae’n bosib bydd gormod o ddata i blotio ar y map Overpass Turbo yn eich porwr. Ceisiwch chwyddo i mewn i leihau maint eich blwch terfyn.

Trefi Cymru yn unig

Does dim ots faint rydych chi’n symud y blwch terfyn ni fydd hi’n bosib i gael Cymru gyfan, a Chymru’n unig. Mae’n rhaid newid ein hymholiad.

Y tro hwn, cliciwch y botwm Wizard a theipiwch ‘towns in Wales’ a chliciwch Build Query. Pan redais i e awgrymodd ‘town in Wales’ ac wedyn ces i’r ymholiad isod, a bydd eich un chi yn debyg neu’r un peth.

/*
This has been generated by the overpass-turbo wizard.
The original search was:
“town in wales”
*/
[out:json][timeout:25];
// fetch area “wales” to search in
{{geocodeArea:wales}}->.searchArea;
// gather results
(
  // query part for: “town”
  node["place"="town"](area.searchArea);
  way["place"="town"](area.searchArea);
  relation["place"="town"](area.searchArea);
);
// print results
out body;
>;
out skel qt;

Ble bo hynny’n bosibl bydd y dewin yma yn cymryd y Saesneg rydych chi’n teipio a darparu ymholiad mewn iaith ymholi Overpass. Hyd y gwn i mae Wizard ond ar gael yn Saesneg ar y foment.

Mae searchArea uchod yn newidyn sy’n cynnwys ein hardal geo-cod am Gymru. Mae’n cael ei osod yn ystod yr ymholiad. Does dim rhaid galw fe’n searchArea, mae modd i ni alw fe’n unrhyw beth (e.e. ardalChwilio neu ardalCymru) – cyn belled nad oes gwrthdaro gyda thermau a gedwir yn ôl.

Mae’r ymholiad uchod yn cynnwys sylwadau sydd ddim yn cael effaith ar yr ymholiad. Ceir dwy ffordd:

/* sylw o fewn slash seren */

// sylw rhwng dau slash a diwedd llinell

Enwau llefydd Llan

Yn ogystal â Llanelwy bydd hwn yn dychwelyd Rhosllannerchrugog yn y canlyniadau – ac yn y blaen. Mae’n chwiliad yn sensitif i lythrennau bras/bach.

[out:json][timeout:50];
(
  node["name"~"Llan",i][place]({{bbox}});
);
out center;

Dyma chwiliad culach am Llan gyda L fawr.

[out:json][timeout:50];
(
  node["name"~"Llan"][place]({{bbox}});
);
out center;

Dyma chwiliad sy’n cynnwys tagiau name a name:cy er mwyn cael map cynhwysfawr – sy’n cynnwys llefydd sydd ddim o fewn name:cy eto ac enwau fel Llanandras a Llanllieni (diolch am eich holl ymatebion Twitter!).

(
node({{bbox}})["name:cy"~"Llan"][place];
node({{bbox}})["name"~"Llan"][place];
);
out;

Bydd hwn yn rhoi holl lefydd Cymru gyda Llan yn yr enw. Mae’n rhoi data yn unig – o fewn Overpass Turbo bydd y tab map yn wag. Rydych chi’n gallu defnyddio’r canlyniadau data CSV mewn prosiect, e.e. mewn taenlen.

[out:csv("name:cy", "name", ::lat, ::lon, "place", ::id; true; ",")][timeout:50];
{{geocodeArea:wales}}->.searchArea;
(
node["name"~"Llan"][place](area.searchArea);
node["name:cy"~"Llan"][place](area.searchArea);
);
out;

Rydych chi’n gallu newid un o’r uchod gyda ‘Aber’, ‘Caer’, ‘Tre’, ac ati.

Cestyll mewn unrhyw ardal

Rhowch gais ar yr ymholiad hwn.

[out:json][timeout:25];
// gather results
(
  // query part for: “castle”
  node["historic"="castle"]({{bbox}});
  way["historic"="castle"]({{bbox}});
  relation["historic"="castle"]({{bbox}});
);
// print results
out body;
>;
out skel qt;

Mae hyn yn iawn ond beth am y cestyll yng Nghymru yn unig? Defnyddiwch hwn:

[out:json][timeout:25];
{{geocodeArea:wales}}->.searchArea;
// gather results
(
  // query part for: “castle”
  node["historic"="castle"](area.searchArea);
  way["historic"="castle"](area.searchArea);
  relation["historic"="castle"](area.searchArea);
);
// print results
out body;
>;
out skel qt;

Dyma rai eraill i’w defnyddio. Ym mhob achos dylech chi ddisodli’r tri datganiad uchod i ofyn am nodau, ffyrdd, a pherthnasau (nodes, ways a relations) yn y chwiliad. Fe wnawn ni edrych at ddiffiniadau o rein mewn ychydig…

"natural"="peak"

"site_type"="megalith"

"historic:civilization"="ancient_roman"

"amenity"="bicycle parking"

"amenity"="recycling"

"amenity"="bus station"

Elfennau OpenStreetMap

Mae miliynau o ymholiadau Overpass yn bosib.

Gallech chi chwarae o gwmpas gydag ymholiadau syml heb ddealltwriaeth gynhwysfawr o OpenStreetMap. Gall y dewin helpu.

Maes o law byddech chi siŵr o fod eisiau mwy o gyd-destun i helpu ysgrifennu ymholiad arbennig ar gyfer eich diddordeb eich hunain. Bydd y darn isod o’r ddogfennaeth ar elfennau yn cynnwys diffiniadau pwysig i’ch helpu:

Elfennau yw hanfodion sylfaenol OpenStreetMap a’i fodel data cysyniadol o’r byd corfforol. Dyma nhw:

  • nodau [nodes] (sydd yn diffinio pwyntiau mewn gofod)
  • llwybrau [ways] (yn diffinio nodweddion llinellog a ffiniau ardaloedd)
  • perthnasau [relations] (sydd weithiau yn cael eu defnyddio i esbonio sut mae elfennau eraill yn gweithio gyda’i gilydd)

Mae’r cyfan uchod yn gallu cynnwys un neu fwy o dagiau perthnasol (sydd yn disgrifio ystyr unrhyw elfen benodol).

Os ydych chi eisiau gweld enghreifftiau o nodau, defnyddiwch yr ymholiad hwn.

Ar Overpass Turbo fe fydd hwn ond yn gweithio o fewn flwch terfyn bach achos mae maint y data yn eithaf mawr.

Dangos Llwybr Arfordir Cymru

Mae ymholiad syml hwn yn dangos un perthynas – darn gogleddol Llwybr Arfordir Cymru.

relation(1850847);>;out;

Mae hwn yn dangos yr holl Lwybr Arfordir Cymru. (Mae e’n cael ei gadw fel perthynas o berthnasau, felly mae’r ymholiad yn defnyddio gweithredydd ‘cyrchu i lawr perthnasau yn ddychweliadol’ >> i ddangos y perthnasau, llwybrau, a nodau o fewn y perthynas cyffredinol. Dyma ragor o wybodaeth ar y gweithredydd >>.)

[out:json][timeout:25];
rel(1820890);
(._;>>;);
out;

Teithiau cerdded

Mae hwn yn dod o enghreifftiau Overpass API. Mae’n debyg y bydd rhaid i chi chwyddo mewn i flwch terfyn.

[bbox:{{bbox}}];
(
  relation[route=hiking][network~"^.wn$"];
  way(r);
  >;
);
out;

{{style:
way
{ color:green; fill-color:green; }

relation[network=lwn] way
{ color:blue; fill-color:cyan; }

relation[network=iwn] way
{ color:red; fill-color:red; }

relation[network=nwn] way
{ color:green; fill-color:green; }

relation[network=rwn] way
{ color:yellow; fill-color:yellow; }

}}

Adeiladau petryal sydd yn dalach nag y maen nhw yn eang

Mae’r un yma wedi ei addasu o’r enghreifftiau.

[out:json][timeout:25];
{{geocodeArea:wales}}->.searchArea;
// Find rectangular buildings that are taller then they are wide
(
  // Compare the height to the average length of a side
  way["building"]["height"](area.searchArea)(if:
    count_members() < 6 && is_closed() &&
    number(t["height"]) > length() / 4);
  // Assume a floor is 3 m tall
  way["building"]["building:levels"](area.searchArea)(if:
    count_members() < 6 && is_closed() &&
    number(t["building:levels"]) * 3 > length() / 4);
);

// Print results
out body;
>;
out skel qt;

Beth nesaf? Golygu’r map

Os ydych chi’n sylwi ar unrhyw fylchau yn y data mae modd i chi olygu’r map. Croeso i’r gymuned mapio data agored!

Mae modd defnyddio Overpass i chwilio am gyfleoedd i wella’r map.

Overpass Turbo yn Gymraeg?

Mae rhyngwyneb Overpass Turbo ar gael mewn sawl iaith ond nid yw’r Gymraeg ar gael fel iaith rhyngwyneb eto. Os hoffech chi gyfrannu i’r cyfieithiad ewch i’w brosiect Transifex.

Ysgrifennu ymholiadau eich hunain

Dechreuwch gydag enghreifftiau Overpass Turbo ac enghreifftiau API Overpass a darparwyd gan gymuned OSM.

Gallech chi fynd mewn i lawlyfr defnyddwyr Overpass hyd yn oed.

Defnyddio Python yn lle Overpass Turbo

Os ydych chi’n gallu defnyddio Python gallech chi redeg ymholiadau Overpass yn eich cod gyda’r amlapiwr syml hwn yn lle rhyngwyneb gwe Overpass Turbo. Ysgrifennwch ap a chreu cyffro!

Fel arall mae ffyrdd eraill o wneud ymholiad Overpass trwy god.

Yn gyffredinol mae Overpass Turbo yn defnyddio ar gyfer perffeithio’ch ymholiadau.