Вход

Просмотр полной версии : Typo3 и ГИС


brd
10.07.2012, 12:09
Здравствуйте дорогое сообщество! Занялся разработкой ГИС модуля, сейчас изучаю что есть по этому поводу в typo3 ext. Просьба к вам если кто крутил уже ГИС typo3, поделитесь информацией что есть интересного в данном направлении! Заранее спасибо.

Ивано
19.07.2012, 19:16
Начальный шаблон - но требует доработки:

<?php
//Скрипт парсинга погоды
//http://informer.gismeteo.ru/getcode/xml.php

//require_once(PATH_tslib.'class.tslib_pibase.php');
class userBlock_weather /* extends tslib_pibase */{

function output() {

//Если данные о погоде не доступны выводим ошибку
if (file_get_contents ("http://informer.gismeteo.ru/getcode/xml.php") == false)
return "Данные прогноза погоды не доступны!";


//Шаг 1. Данные

$arList [0] = array ('title' => 'Москва', 'weather_code' => '27612_1', 'xml' => file_get_contents ("http://informer.gismeteo.ru/xml/27612_1.xml") ); //Москва
$arList [1] = array ('title' => 'Санкт-Петербург', 'weather_code' => '26063_1', 'xml' => file_get_contents ("http://informer.gismeteo.ru/xml/26063_1.xml") ); //Москва


//Шаг 2. Выводим только те города, которые выбраны из БД
for ($i = 0; $i < count ($arList); $i ++)
{
//[NumCode][CharCode][Nominal][Value]
//$arr = t3lib_div::xml2array ($val); //преобразуем xml в массив

//Пропускаем не выбранные в списках валюты
//if ($arList [ $arr['CharCode'] ] == false)
//continue;




//Создаем контент
$content .= $this->contentHTML_tpl( $arList [$i] );
}
/* */

return "<table border='0' width='100%' cellspacing='0' cellpadding='0'><tr><td></td>
<td>&nbsp;Ночь&nbsp;</td><td>&nbsp;Утро&nbsp;</td><td>&nbsp;День&nbsp;</td><td>&nbsp;Вечер&nbsp;</td></tr>".$content."</table> <br /> <i>Предоставлено <a href='http://informer.gismeteo.ru/' target='_blank' style='text-decoration: none;'>Gismeteo.ru</a></i>";
}

//Функция сборки контента Html
function contentHTML_tpl ( $ar )
{
//Загрузка документа в DOM для разборка
$dom = new DOMDocument;
$dom->loadXML($ar['xml']);
//tod="3" tod="0" tod="1" tod="2"
//Время суток: для которого составлен прогноз: 3 - вечер 0 - ночь 1 - утро, 2 - день,
$tod = simplexml_import_dom($dom);

//echo $s->book[0]->FORECAST; print "<hr>";

//Утро, вечер, день, ночь
for ($i = 0; $i < 4; $i++)
{
//print "<hr> $i -> ";
/*
PHENOMENA атмосферные явления:
cloudiness облачность по градациям: 0 - ясно, 1- малооблачно, 2 - облачно, 3 - пасмурно
precipitation тип осадков: 4 - дождь, 5 - ливень, 6,7 – снег, 8 - гроза, 9 - нет данных, 10 - без осадков
rpower интенсивность осадков, если они есть. 0 - возможен дождь/снег, 1 - дождь/снег
spower вероятность грозы, если прогнозируется: 0 - возможна гроза, 1 - гроза
PRESSURE атмосферное давление, в мм.рт.ст.
TEMPERATURE температура воздуха, в градусах Цельсия
*/
//print "Атмосферное давление:" . $tod->REPORT->TOWN[0]->FORECAST[$i]->PRESSURE['max'];
//print "Температура воздуха:" . $tod->REPORT->TOWN[0]->FORECAST[$i]->TEMPERATURE['max'];

switch($i){

//0 - ночь
case 0:

$PHE[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->PHENOMENA['cloudiness']; //иконка
$PRE[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->PRESSURE['max']; //Атмосферное давление
$TEM[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->TEMPERATURE['max']; //Температура воздуха

/* +- */
$TEM[$i] = ($TEM[$i] < 0) ? "-" . $TEM[$i] : "+" . $TEM[$i];


break;

//1 - утро
case 1:

$PHE[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->PHENOMENA['cloudiness']; //иконка
$PRE[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->PRESSURE['max']; //Атмосферное давление
$TEM[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->TEMPERATURE['max']; //Температура воздуха

/* +- */
$TEM[$i] = ($TEM[$i] < 0) ? "-" . $TEM[$i] : "+" . $TEM[$i];

break;

//2 - день
case 2:

$PHE[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->PHENOMENA['cloudiness']; //иконка
$PRE[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->PRESSURE['max']; //Атмосферное давление
$TEM[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->TEMPERATURE['max']; //Температура воздуха

/* +- */
$TEM[$i] = ($TEM[$i] < 0) ? "-" . $TEM[$i] : "+" . $TEM[$i];

break;

//3 - вечер
case 3:

$PHE[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->PHENOMENA['cloudiness']; //иконка
$PRE[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->PRESSURE['max']; //Атмосферное давление
$TEM[$i] = $tod->REPORT->TOWN[0]->FORECAST[$i]->TEMPERATURE['max']; //Температура воздуха

/* +- */
$TEM[$i] = ($TEM[$i] < 0) ? "-" . $TEM[$i] : "+" . $TEM[$i];

break;

}

foreach($tod->REPORT->TOWN[0]->FORECAST[$i]->attributes() as $a => $b) {



//echo $a,'="',$b,"\"\n";

}
}


//exit();

//<img style='vertical-align: middle; padding-right: 5px;' src='/uploads/tx_infoblock/{$icoFlag}'>
$content = "<tr>";
$content .= "<td>".$ar['title']."</td>";
$content .= "<td align='center'><img src='/fileadmin/+components/ico/".$PHE[0].".png' width='80%' vspace='5'><br />".$TEM[0]."С </td>";
$content .= "<td align='center'><img src='/fileadmin/+components/ico/".$PHE[1].".png' width='80%' vspace='5'><br />".$TEM[1]."С </td>";
$content .= "<td align='center'><img src='/fileadmin/+components/ico/".$PHE[2].".png' width='80%' vspace='5'><br />".$TEM[2]."С </td>";
$content .= "<td align='center'><img src='/fileadmin/+components/ico/".$PHE[3].".png' width='80%' vspace='5'><br />".$TEM[3]."С </td>";
$content .= "</tr>";

return $content;
}

}

//Оптарвляем контент для сайта
$obj = new userBlock_weather();
$content = $obj->output(); // Works

?>



# Прогноз погоды
subparts.weather = PHP_SCRIPT_INT
subparts.weather.file = fileadmin/+components/block.weather.php