Calcular distancias en PHP
Función PHP que calcula la distancia entre dos puntos usando latitudes y longitudes. Devuelve los datos en millas, kilómetros y millas naúticas.
Vía / DZone
Avanzando en el framework de Zend, hoy vamos a ver cómo crear documentos PDF. Quizás a muchos no les vaya a ser útil, pero un documento PDF es un formato bastante extendido.
De forma sencilla, ya que la librerÃa del framework es algo extensa, vamos a explicar que métodos son necesarios para crear un PDF.
Para cargar la librerÃa:
require_once 'Zend/Pdf.php';
Para crear un nuevo documento PDF:
$pdf = new Zend_Pdf();
Para crear una nueva página:
$pdf->pages[] = ($page = $pdf->newPage('A4'));
$pdf->pages[] = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4);
$pdf->pages[] = $pdf->newPage(Zend_Pdf_Page::SIZE_A4);
Obtener ancho y alto de la página:
$ancho = $page->getWidth();
$alto = $page->getHeight();
Usar estilos:
$estilo = new Zend_Pdf_Style();
$estilo->setFillColor(new Zend_Pdf_Color_RGB(0, 0, 0));
$font = Zend_Pdf_Font::fontWithPath('/path/fuente.ttf');
$estilo->setFont($font, 10);
$estilo->setStyle($style);
Escribir texto:
$page->drawText("Hola Mundo", $x, $y);
Insertar imágenes:
$img = Zend_Pdf_ImageFactory::factory('sentidoweb.png');
$page->drawImage($img, $x, $y, $x+&ancho, $y+$alto);
Devolver la salida:
echo $pdf->render();
Eso sÃ, antes hay que tener en cuenta que tenemos que devolver al inicio del script el Content-Type:
header("Content-Type: application/pdf");
// Si queremos que se devuelva como un fichero adjunto
header("Content-Disposition: attachment; filename=\"prueba.pdf\"");
Si, se que parece muy resumido, pero otro dÃa habrá un ejemplo más completo, mejor ir paso a paso.
Stickybeak es un sistema de logging realizado en PHP, el cual nos ofrece: login mediante imágenes, registro de actividades de los usuarios basado en cookies, registro de actividades entre dominios, utilidades P3P y logs en MySQL, entre otras cosas.
Basado en la arquitectura P3P, una de las caracterÃsticas que más útiles veo es la de logearse para varios dominios en una única vez. No sé cómo lo hacen en Google o en sitios P2P divididos en dominios, pero perfectamente se podrÃa hacer de esta forma.
Entre la documentación encontramos ejemplos para usar imágenes pixel para hacer la autenticación entre varios dominios, usar imágenes personalizadas o cómo incluir el código necesario en nuestros scrips o páginas HTML.
The Stickybeak
Excelente extensión para PHP que permite usar OpenCV (Open Source Computer Vision Library) para poder detectar caras en imágenes.
Por ahora dispone de dos funciones: face_count y face_detect, que proporcionan el número de caras encontradas y un array con las coordenadas de la cara. La verdad es que puede ser muy útil para todas las aplicaciones sociales que hay ahora.
Para instalarlo es necesario tener instalado: pkgconfig, libpng, zlib, libjpeg, libtiff y python.
PHP Facedetect Extension
Vía / PHPDeveloper.org
En ciertos momentos nos puede ser útil obtener información de páginas remotas, por ejemplo si tenemos un listado de páginas favoritas, pues obtener las palabras clave que tengan en el metatag, para poder clasificarlas con tags propias.
El proceso es sencillo mediante PHP, el problema es que algunos servidores, creo que pasa con DreamHost, no permiten el abrir ficheros de forma remota.
Primero debemos leer el fichero:
$url = "http://www.pagina.com/";
$fp = fopen( $url, 'r' );
$cont = "";
while( !feof( $fp ) ) {
$buffer = trim( fgets( $fp, 4096 ) );
$content .= $buffer;
}
Después podemos mirar cual es el tÃtulo de la página:
$start = '<title>';
$end = '<\/title>';
preg_match( "/$start(.*)$end/s", $content, $match );
$title = $match[1];
Y por último obtener las metatags, usando para ello la función de PHP get_meta_tags, lo cual nos facilita el trabajo:
$metatagarray = get_meta_tags( $url );
$keywords = $metatagarray[ "keywords" ];
$description = $metatagarray[ "description" ];
Puedes verlo con una explicación más extensa en el artÃculo original.
Comments are closed.
Si no me falla la vista (la verdad la vi por 5 segundos) creo que esa funcion esta basada en la formula de los cosenos esfericos y aunque funciona, el margen de error es bastante elevado (chillar al que hizo el planeta tan deforme 😛 )
En fin, la mas acertada que consegui es la formula de Vicenty que podeis conseguir aca en JS http://www.movable-type.co.uk/scripts/latlong-vincenty-direct.html (pasarla a php toma 5 minutos) y si quereis conocer mas sobre calculo de distancias os recomiendo este otro vinculo http://www.movable-type.co.uk/scripts/latlong.html
Muchas gracias a los dos. Me vendrá de perlas.