コード例 #1
0
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();
}
コード例 #2
0
ファイル: addToSolr.php プロジェクト: hbeyer/liddel-tool
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;
}
コード例 #3
0
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);
}