De meeste mensen hebben waarschijnlijk hetzelfde beeld in hun hoofd als je het woord vulkaan zegt. Toch zijn er verschillende types van vulkanen. Technisch gezien is een vulkaan een opening in het aardoppervlak waar gesmolten gesteente, gas en brokstukken van vast gesteente door naar buiten komen. Rond zulke openingen wordt vaak een berg gevormd.

Vulkanen worden vooral aangetroffen in gebieden waar tektonische platen aan elkaar grenzen, dus de plaatsen waar ook aardbevingen voorkomen. Een uitzondering hierop vormen hotspots. Dit zijn gebieden waar heet materiaal uit de mantel door de aardkorst heen naar boven komt.

In deze oefening gaan we een bestand in Keyhole Markup Language (KML) aanmaken. KML is een op XML gebaseerde standaard opmaaktaal voor geografische data, met de volgende structuur.

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>

<Placemark>
    <name>naam</name>
    <Point><coordinates>lengte,breedte,0</coordinates></Point>
    <description><![CDATA[beschrijving]]></description>
</Placemark>

</Document>
</kml>

Verder maken we ook gebruik van CSV-bestanden met gegevens over vulkanen. Deze bestanden zullen steeds beginnen met een hoofding en bevatten de volgende kolommen (in deze volgorde):

Opgave

Schrijf een functie maakVulkaanKml die twee verplichte en drie optionele argumenten heeft.

Het eerste verplichte argument geeft de bestandsnaam aan van het CSV-bestand waaruit de data moet gehaald worden. Het tweede verplichte argument geeft de bestandsnaam aan van het KML-bestand dat weggeschreven moet worden. Je functie moet een KML-bestand aanmaken volgens het sjabloon dat hierboven wordt weergegeven. Hierbij moet je het stuk vanaf <Placemark> tot en met </Placemark> herhalen voor elke vulkaan. Je vervangt de rode stukken dan door de gegevens voor die vulkaan:

De overige drie argumenten laten je toe om te bepalen welke vulkanen weggeschreven worden naar het KML-bestand. Deze drie argumenten hebben respectievelijk de naam land, status en vulkaanType. Voor elk van deze argumenten geldt dat, als ze meegegeven worden, enkel vulkanen met de meegegeven waarde in de corresponderende kolom worden weggeschreven naar het KML-bestand. Deze vergelijkingen gebeuren steeds hoofdlettergevoelig.

Extra

Je kan een KML-bestand bekijken via Google Maps. Hiervoor moet dit bestand wel online staan. Probeer dit bestand eens online te plaatsen op je webruimte van de universiteit. Meer informatie hierover vind je terug op de helpdesk1. Als het bestand online staat, ga je naar Google Maps en vul je het adres van het KML-bestand in in het zoekveld.

Als je over een Google-account beschikt, kan het nog gemakkelijker:

Voorbeeld

De onderstaande voorbeelden maken gebruik van het bestand vulkanen.csv3

>>> maakVulkaanKml('vulkanen.csv', 'griekenland.kml', land='Greece')
>>> print(open('griekenland.kml', 'r').read())
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<Placemark>
    <name>Methana</name>
    <Point><coordinates>23.34,37.615,0</coordinates></Point>
    <description><![CDATA[volcano of type Lava dome with status Historical]]></description>
</Placemark>
<Placemark>
    <name>Mí­los</name>
    <Point><coordinates>24.44,36.699,0</coordinates></Point>
    <description><![CDATA[volcano of type Stratovolcano with status Radiocarbon]]></description>
</Placemark>
<Placemark>
    <name>Santorini</name>
    <Point><coordinates>25.40,36.404,0</coordinates></Point>
    <description><![CDATA[volcano of type Shield volcano with status Historical]]></description>
</Placemark>
<Placemark>
    <name>Yali</name>
    <Point><coordinates>27.14,36.671,0</coordinates></Point>
    <description><![CDATA[volcano of type Lava dome with status Holocene]]></description>
</Placemark>
<Placemark>
    <name>Nisyros</name>
    <Point><coordinates>27.16,36.586,0</coordinates></Point>
    <description><![CDATA[volcano of type Stratovolcano with status Historical]]></description>
</Placemark>
<Placemark>
    <name>Kos</name>
    <Point><coordinates>27.25,36.852,0</coordinates></Point>
    <description><![CDATA[volcano of type Caldera with status Pleistocene-Fumarolic]]></description>
</Placemark>

</Document>
</kml>