function load_from_mysql($database) { $dbGeo = new mysqli('localhost', 'root', '', $database); $dbGeo->set_charset("utf8"); if (mysqli_connect_errno()) { die('Konnte keine Verbindung zur Datenbank aufbauen: ' . mysqli_connect_error() . '(' . mysqli_connect_errno() . ')'); } $sql1 = 'SELECT distinct tgn FROM ort WHERE tgn IS NOT NULL'; $archive = new geoDataArchive(); $archive->loadFromFile(); if ($result = $dbGeo->query($sql1)) { $count = 1; while ($rowPlaces = $result->fetch_assoc()) { $tgn = $rowPlaces['tgn']; $sql2 = 'SELECT * FROM ort WHERE tgn=' . $tgn . ''; if ($result2 = $dbGeo->query($sql2)) { while ($rowPlaceData = $result2->fetch_assoc()) { if (substr($rowPlaceData['ort'], 0, 1) != '[') { $count++; $entry = new geoDataArchiveEntry(); $entry->label = $rowPlaceData['ort']; $entry->getty = strval($tgn); $entry->long = cleanCoordinate($rowPlaceData['x']); $entry->lat = cleanCoordinate($rowPlaceData['y']); $archive->insertEntryifNew($entry); } } } } } var_dump($archive); $archive->saveToFile(); }
function flattenPlaces($places) { $result = array(); $count = 1; foreach ($places as $place) { $result['place_' . $count] = $place->placeName; if ($place->getty) { $result['getty_place_' . $count] = $place->getty; } if ($place->geoNames) { $result['geoNames_place_' . $count] = $place->geoNames; } if ($place->geoData['lat'] and $place->geoData['long']) { $lat = cleanCoordinate($place->geoData['lat']); //Replaces "," by "." $long = cleanCoordinate($place->geoData['long']); $result['coordinates_place_' . $count] = $lat . ',' . $long; } $count++; } return $result; }
function makeGeoDataSheet($data, $folderName, $format) { $ending = strtolower($format); // Anlegen eines gemeinsamen Index für Orte und Jahre, so dass beide Kategorien abgerufen werden können. $index1 = makeIndex($data, 'placeName'); $index2 = makeIndex($data, 'year'); $commonIndex = mergeIndices($index1, $index2); $rowArray = array(); $placeName = ''; // Durchgehen des Index und Abspeichern von standardisierten Datensätzen der Klasse geoDataRow im Array $rowArray foreach ($commonIndex as $entry) { // Die im Index mit Level 1 auftretenden Ortseinträge dienen nur zum Speichern von Ortsname und Geodaten if ($entry->level == 1) { // Der Test dient dem Ausschließen von Einträgen ohne Ortsnamen oder Geodaten $test = testEntry($entry); $placeName = $entry->label; $latitude = cleanCoordinate($entry->geoData['lat']); $longitude = cleanCoordinate($entry->geoData['long']); } //Für jeden Indexeintrag Level 2 (Jahre) werden so viele Einträge gespeichert, wie Datensätze unter content verzeichnet sind. if ($entry->level == 2 and $test == 1) { foreach ($entry->content as $occurrence) { $row = new geoDataRow(); $row->label = $placeName; $row->lat = cleanCoordinate($entry->geoData['lat']); $row->long = cleanCoordinate($entry->geoData['long']); $row->timeStamp = $entry->label; $row->lat = $latitude; $row->long = $longitude; if ($entry->authority['system'] == 'getty') { $row->getty = $entry->authority['id']; } elseif ($entry->authority['system'] == 'geoNames') { $row->geoNames = $entry->authority['id']; } $rowArray[] = $row; } } } // Jetzt werden die Objekte der Klasse geoDataRow in Einträge übersetzt, abhängig vom gewählten Format if ($ending == 'csv') { // Kopfdaten für CSV-Dateien $content = '"Name","Address","Description","Longitude","Latitude","TimeStamp","TimeSpan:begin","TimeSpan:end","GettyID","" '; foreach ($rowArray as $row) { $content .= makePlaceEntryCSV($row); } } elseif ($ending == 'kml') { // Kopfdaten für KML-Dateien $content = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xal="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0"> <Folder>'; foreach ($rowArray as $row) { $content .= makePlaceEntryKML($row); } // Fußdaten für KML-Dateien $content .= ' </Folder> </kml>'; } // Abspeichern der im String $content zwischengespeicherten Daten in einer Datei im Projektordner $fileName = $folderName . '/printingPlaces.' . $ending; $datei = fopen($fileName, "w"); fwrite($datei, $content, 30000000); fclose($datei); }