Extraer Las Imágenes Que Forman Un Mapa De OpenStreet


Objetivo: Extraer Las Imágenes Que Forman Un Mapa De OpenStreet
Un mapa de OpenStreet consiste de múltiples imágenes juntas.

El código, que os dejo, debería ayudar a descargar la imagen que forman el mapa que vosotros estáis viendo.

Se necesita:
* activar los siguientes componentes: gb.qt4.webkit, gb.net y gb.net.curl;
* poner sobre el Form los siguientes objectos: un WebView y dos Button .
Hacer clic sobre el map, cuando aparece en WebView; despues presionar el Button1.

Private im As Image
Private myhttp As New HttpClient As "myhttp"
Private stringa As String
Private ind As New String[]
Private n As Byte
Private we As WebElement


Public Sub Form_Open()

Button1.Text = "Extraer\nlas imágenes"
Button1.Enabled = False
Button2.Text = "Borrar las imágenes\ndescargadas"
Button2.Enabled = False

im = New Image(WebView1.W, WebView1.H)

WebView1.Url = "http://www.openstreetmap.org/#map=5/41.656/14.150"

End


Public Sub WebView1_Load()

Print "Para iniciar la extracción de las imágenes,\nhaz clic en el mapa.\n"

End


Public Sub WebView1_MouseUp()

Dim wf As New WebFrame

n = 0
ind.Clear()

wf = WebView1.Frame

we = wf.Document

Print WebView1.Frame.Url

Print "\nPresionar la tecla "; Quote("Extraer las imágenes"); "."

Button1.Enabled = True

End


Public Sub Button1_Click()

Dim i1, i2 As Integer
Dim s2 As String
Dim s As String = we.HTML

While True
i1 = InStr(s, ".tile.openstreetmap.org/")
If i1 < 10 Then Break
s2 = Mid(s, i1 - 8, 64)
i2 = InStr(s2, "\"><")
ind.Add(Replace(Left(s2, i2 - 1), "\"", Null))
ind.Sort()
s = Mid(s, i1 + i2, RInStr(s, ".png"))
Wend

Print "\nEl mapa es formada de "; ind.Count; " imágenes.\n"

Scarica()

End


Private Procedure Scarica()

If ind.Count = 0 Then Return

Print ind[n], n + 1

' Comunica con el servidor para descargar el fichero imagen:
myhttp.URL = ind[n]
myhttp.Timeout = 15
myhttp.Get()

End


Public Sub myhttp_Read()

Dim sBuf As String

' Vamos a leer el flujo de datos del archivo imagen:
If Lof(MyHTTP) Then
Read #MyHTTP, sBuf, Lof(MyHTTP)
stringa = stringa & sBuf
End If

End


Public Sub MyHTTP_Finished()

Print "Imagen descargada !"
Wait
MyHTTP.Close

' Recreamos el archivo en una carpeta:
File.Save("/tmp" &/ Replace(Right(ind[n], 13), "/", "_"), stringa)
stringa = Null
If n = ind.Max Then
n = 0
ind.Clear()
Button2.Enabled = True
Else
Inc n
Scarica()
Endif

End


Public Sub Button2_Click() ' Permite borrar de la carpeta las imágenes que han sido descargadas.

Dim s As String

For Each s In Dir("/tmp", "*.png", gb.File)
Kill "/tmp" &/ s
Next

End

rolleyes


......funcionará ? lipsrsealed

última edición por vuott el Lunes, 09 Marzo 2015, 20:00; editado 4 veces
Perfil MP  
Objetivo: Re: Extraer Las Imágenes Que Forman Un Mapa De OpenStreet
Así, a primera vista, parece correcto. Pruébalo con la imagen de una pitón (perdón) y nos lo cuentas
Saludos.

Perfil MP  
Objetivo: Re: Extraer Las Imágenes Que Forman Un Mapa De OpenStreet
shordi escribió: [Ver mensaje]
Pruébalo con la imagen de una pitón (perdón) y nos lo cuentas


...se rompería la computadora !

Perfil MP  
Objetivo: Re: Extraer Las Imágenes Que Forman Un Mapa De OpenStreet
Ja y ja.

A ver si con OpenStreet al menos las cosas están más actualizadas, que en el de Google aparecen cosas del año Mari Castaña.
Y para colmo tardan en actualizar algo la tira de tiempo. Lugares equivocados los hay ha montones.

Y es que ni diciéndoles una y otra vez que un lugar concreto no está ahí, que está en otro lugar.

Saludos

Objetivo: Re: Extraer Las Imágenes Que Forman Un Mapa De OpenStreet
vuott escribió: [Ver mensaje]
activar los siguientes componentes: gb.qt4.webkit, gb.net y gb.net.curl


Hola Vuott, en la versión de gambas que tengo instalada 3.8.2 no me deja seleccionar los componentes que dices, es mas no me deja seleccionar ningún componente, tal vez sea un bug de gambas.

por cierto sabes si es posible poner un cacho de mapa en un formulario que se centre en las coordenadas x y que estén en dos textbox ? variando el url se debe poder no?

Un saludo.

última edición por tincho el Jueves, 15 Octobre 2015, 22:55; editado 1 vez
Perfil MP  
Objetivo: Re: Extraer Las Imágenes Que Forman Un Mapa De OpenStreet
Mira ésto, a ver si te vale:


Link

Perfil MP  
Objetivo: Re: Extraer Las Imágenes Que Forman Un Mapa De OpenStreet
shordi escribió: [Ver mensaje]
Mira ésto, a ver si te vale:

Todo bien, pero el mi ejemplo deliberadamente no contiene el componente gb.map activado.

Perfil MP  
Objetivo: Re: Extraer Las Imágenes Que Forman Un Mapa De OpenStreet
shordi escribió: [Ver mensaje]
Mira ésto, a ver si te vale


Re interesante este componente, gracias Shordi.
Creo que esta herramienta abre la puerta de las aplicaciones para hacer rutas de repartidores, reparadores, etc. que deban hacer una ruta diaria.
Voy a probar también adaptarlo a mi proyecto para hacer un plano de tendido eléctrico urbano, a ver como me va.

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.3961s (PHP: -20% SQL: 120%)
Consultas SQL: 25 - Debug off - GZIP Activado