[Talk-cl] Script para Leer datos Paraderos Transantiago

Julio Costa Zambelli julio.costa en openstreetmap.cl
Vie Abr 23 16:09:57 BST 2010


Danilo,

Puedes ser por la demanda, pero de todas maneras es impresentable para un
servicio que ni si quiera ha sido anunciado. ¿Cuantas consultas simultaneas
podrá estar teniendo ahora? En mi opinión, con suerte una consulta a la vez.
¿Como pensaran funcionar cuando la demanda sea en serio? Es decir cuando
realmente puedan tener múltiples consultas simultaneas.

Esta claro que el trabajo pesado del servidor esta en recibir minuto a
minuto la información de todos los buses, y hacer los cálculos de los
paraderos respecto de estos. Pero se supone que Wireless-IQ es subsidiaria
de Sonda, por lo que supongo también que no tienen problemas para acceder a
unos cuantos servidores que puedan hacer este trabajo.

Respecto del calculo historico, es una posibilidad. Pienso que debiéramos
definir que queremos hacer, porque esto en la practica es un proyecto
paralelo a OSM, en que estamos haciendo una demostración útil de lo que se
puede lograr combinando sus datos con otras fuentes. Por lo mismo no creo
que necesitemos hacer un demo con todo el sistema de transporte, sino solo
con un recorrido, luego se le podría mostrar eso a la gente que tenga la
capacidad de "cortar el queque" respecto del acceso a los datos "crudos"
generales, idealmente en un flujo lo suficientemente rápido.

Saludos,

Julio Costa


2010/4/23 Danilo Lacoste <danilo en lacosox.org>

> o quizá murió por exceso de consultas?
>
> deberíamos tener una copia de todos los datos, de esa forma
> aseguraríamos quizá poder calcular velocidades históricas o no?
>
> 2010/4/23 Julio Costa Zambelli <julio.costa en openstreetmap.cl>:
> > Bajaron el sitio del SIMT nuevamente :( Hay que conseguir una fuente
> > confiable para estos datos...
> >
> >
> > 2010/4/23 Herman Vega <hvegax en gmail.com>
> >>
> >> Me di cuenta que la línea "$paradero = DOM($simt);" debe ser "$paradero
> =
> >> trim(DOM($simt));" del código que envié, pero me gusto más lo que hizo
> >> Julio.
> >>
> >> slds.-
> >>
> >> 2010/4/23 Julio Costa Zambelli <julio.costa en openstreetmap.cl>
> >>>
> >>> Pueden ver un experimento que estuve haciendo ayer temprano con htmlSQL
> >>> (http://www.jonasjohn.de/lab/htmlsql.htm), en
> >>> http://www.openstreetmap.cl/ts/examples/demo_12.php
> >>>
> >>> El código:
> >>>
> >>> <?php
> >>>
> >>>     /*
> >>>     ** htmlSQL - Example 12
> >>>     **
> >>>     ** Shows how to replace the user agent and the referer with
> >>>     ** custom values
> >>>     */
> >>>
> >>>     include_once("../snoopy.class.php");
> >>>     include_once("../htmlsql.class.php");
> >>>
> >>>     $wsql = new htmlsql();
> >>>
> >>>     // set a individual agent:
> >>>     $wsql->set_user_agent('MyAgentName/0.9');
> >>>
> >>>     // set a new referer:
> >>>     $wsql->set_referer('http://www.openstreetmap.cl/'<http://www.openstreetmap.cl/%27>
> );
> >>>
> >>>     // connect to a URL
> >>>     if (!$wsql->connect('url',
> >>> 'http://web.simt.cl/Piv/servicios.action?paradero=PC710')){<http://web.simt.cl/Piv/servicios.action?paradero=PC710%27%29%29%7B>
> >>>         print 'Error mientras se conectaba: ' . $wsql->error;
> >>>         exit;
> >>>     }
> >>>
> >>>     /* execute a query:
> >>>
> >>>        This query returns all text arrays in a td with width="80":
> >>>     */
> >>>     if (!$wsql->query('SELECT text FROM td WHERE $width == "80"')){
> >>>         print "Error de consulta: " . $wsql->error;
> >>>         exit;
> >>>     }
> >>>
> >>>     // fetch results as array
> >>>     foreach($wsql->fetch_array() as $row){
> >>>
> >>>         print_r($row);
> >>>
> >>>     }
> >>>
> >>> ?>
> >>>
> >>>
> >>> El problema con la página de la cual estamos extrayendo los datos (más
> >>> allá de lo horrible del html que se esta usando) es que no hay
> elementos
> >>> distintivos en las etiquetas que rodean a "Distancia (mts)" Versus los
> que
> >>> rodean a la distancia de los dos buses. En ese sentido quizás habría
> que
> >>> usar las etiquetas que generan el encabezado y el cierre de la tabla
> como
> >>> referencias, y extraer y trabajar las filas que están en medio.
> >>>
> >>>
> >>> 2010/4/23 Herman Vega <hvegax en gmail.com>
> >>>>
> >>>> Aquí va en php-cli, la ejecución es lenta por el servidor.
> >>>>
> >>>> <?php
> >>>>
> >>>> function DOM($element)
> >>>> {
> >>>>     $contenido = "";
> >>>>     $children = $element->childNodes;
> >>>>     foreach ($children as $child)
> >>>>     {
> >>>>         $tmp_dom = new DOMDocument();
> >>>>         $tmp_dom->appendChild($tmp_dom->importNode($child, true));
> >>>>
> >>>> $contenido.=str_replace("<br>","",trim($tmp_dom->saveHTML()))."\n";
> >>>>     }
> >>>>     return $contenido;
> >>>> }
> >>>>
> >>>> $dom= new DOMDocument();
> >>>> // get paraderos
> >>>>
> >>>> $dom->loadHTML(file_get_contents("
> http://web.simt.cl/Piv/paraderos.action"));
> >>>> $dom->preserveWhiteSpace = true;
> >>>>
> >>>> $domSIMT = $dom->getElementsByTagName("a");
> >>>>
> >>>> foreach ($domSIMT as $simt)
> >>>> {
> >>>>         $paradero = DOM($simt);
> >>>>         if ($paradero != "") {
> >>>>                 echo "PARADERO: $paradero\n";
> >>>>                 // get details foreach stopbus
> >>>>                 $dom_detalle= new DOMDocument();
> >>>>
> >>>> $dom_detalle->loadHTML(file_get_contents("
> http://web.simt.cl/Piv/servicios.action?paradero=$paradero"));
> >>>>                 $dom_detalle->preserveWhiteSpace = true;
> >>>>                 $domDET = $dom_detalle->getElementsByTagName("font");
> >>>>                 foreach ($domDET as $det)
> >>>>                 {
> >>>>                         echo DOM($det);
> >>>>                 }
> >>>>         }
> >>>> }
> >>>>
> >>>> ?>
> >>>>
> >>>>
> >>>> 2010/4/23 Danilo Lacoste <danilo en lacosox.org>
> >>>>>
> >>>>> Partiré con nuevo hilo para este tema.
> >>>>>
> >>>>> En contexto con nuestro análisis para verificar si es factible
> extraer
> >>>>> los datos del transantiago, he creado este pequeño script al cual
> >>>>> todavía le falta la parte más importante (leer los tiempos de los
> >>>>> buses cercanos), pero ya es capaz de leer datos básicos del paradero
> y
> >>>>> hora de referencia.
> >>>>>
> >>>>> Les dejo la idea, si alguien quiere construir uno en otro lenguaje,
> >>>>> sería genial.
> >>>>>
> >>>>> Por ahora solo tiene cargada la lista de paraderos del recorrido C04
> >>>>> (se editan en el archivo paraderos)
> >>>>>
> >>>>> salida esperada:
> >>>>>
> >>>>> dalacost en urano:~/osm/transantiago$ ./test2.sh
> >>>>> descargando esto puede tomar su tiempo...
> >>>>> ----
> >>>>>            PC668
> >>>>>            CIRIO / NUEVA BILBAO
> >>>>>            23-04-2010
> >>>>>            00:06
> >>>>> ----
> >>>>>            PC669
> >>>>>            ESPIGAS / NUEVA BILBAO
> >>>>>            23-04-2010
> >>>>>            00:06
> >>>>> ----
> >>>>>            PC670
> >>>>>            ALBERTO HURTADO / NUEVA BILBAO
> >>>>>            23-04-2010
> >>>>>            00:06
> >>>>> ...
> >>>>> ..
> >>>>> ..
> >>>>>
> >>>>>
> >>>>>
> >>>>> saludos.
> >>>>>
> >>>>> --
> >>>>> www.lacosox.org
> >>>>>
> >>>>> _______________________________________________
> >>>>> Talk-cl mailing list
> >>>>> Talk-cl en openstreetmap.org
> >>>>> http://lists.openstreetmap.org/listinfo/talk-cl
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> Herman  Vega  Jara
> >>>> hvegax[a]gmail.com
> >>>>
> >>>> _______________________________________________
> >>>> Talk-cl mailing list
> >>>> Talk-cl en openstreetmap.org
> >>>> http://lists.openstreetmap.org/listinfo/talk-cl
> >>>>
> >>>
> >>
> >>
> >>
> >> --
> >> Herman  Vega  Jara
> >> hvegax[a]gmail.com
> >
> >
>
>
>
> --
> www.lacosox.org
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.openstreetmap.org/pipermail/talk-cl/attachments/20100423/b95e2d7b/attachment.html>


More information about the Talk-cl mailing list