Maptime

Tips para fotos a nivel de calle

Esta es una nota corta de cómo utilizar una cámara como la LG 360 (ya descontinuada), para tomar fotos 360. Se debe configurar la cámara con el celular, para poder “programarla”. Para esto, hay que conectar el celular por wifi y bluetooth, y después la aplicación se conectará “fácilmente”; de lo contrario puede ser tedioso.

Se debe programar para que tome fotos cada 2 segundos. Sería ideal que tuviera menos tiempo, pero esta cámara no es como una ActionCam.

Después de varias pruebas, no recomiendo usar el posicionamiento GPS del celular, con el que se puede configurar. Esto ocasiones que las fotos no tengan una periodicidad constante, sino que empieza a tener latencias, dañando la secuencia de fotos.

En cambio, es mejor capturar una traza GPX en el celular y después hacer la correspondencia entre fotos y traza. Para esto se puede usar JOSM, donde se abren todas las fotos, y se le da click derecho sobre Geotagged Images. Ahí se le dice Correlate to GPX y se selecciona la traza GPX que hayamos capturado (Osmand o Open GPX Tracker) y ya tengamos en el computador.

Finalmente, para guardar la posición en las fotos se requiere el plugin Photo Geotaggin: https://wiki.openstreetmap.org/wiki/JOSM/Plugins/Photo_Geotagging Donde al dar click derecho sober las fotos se puede seleccionar Write Coordinates to image header.

Con esto, ya se podrá subir a Mapillary u OpenStreetCam.

Posted May 11 2021 by Andres Gomez

Puntos geodésicos de Bogotá

Cuando caminamos por la ciudad, muy seguramente nos hemos topado con alguna “latica” dorada con un texto pegada en el piso. Bueno, esas laticas son puntos geodésicos que están medidos en latitud, longitud y hasta altura. Algunos de estos puntos son gestionados por el Instituto Agustín Codazzi - IGAC, y como parte de los datos que han liberado, está la posición de dichos puntos.

En umap hemos publicado estos puntos para que veamos la posición de estos, lo cual es muy práctico en el momento de hacer fotos aereas que necesitan Ground Points.

La URL es: https://umap.openstreetmap.co/en/map/puntos-geodesicos-del-igac-en-bogota_3073#14/4.6537/-74.0881

Posted May 10 2021 by Andres Gomez

Barrio La Calleja

Primer barrio de Bogotá completamente mapeado por Maptime Bogotá. Para este actividad usamos las siguientes técnicas:

  • Fotografías con drone.
  • Fotografías a nivel de calle.
  • Trazas GPS.
  • Herramientas de calidad de datos.

Para las imágenes de drone, tomamos fotos a una altura de 120 metros, con la cámara apuntando hacia abajo (nadir) y se recorrió el barrio con control manual. Esta no es la mejor manera, ya que la perpectiva de los edificios no queda bien capturada, y algunos lugares no se alcanzaron a captar. En el drone, se puso una toma de fotos cada 2 segundos para capturar varias fotos; pero igualmente, por el vuelo manual, la velocidad no era constante durante el trayecto.

Una vez se descargaron las fotos, se generó una imagen por medio de OpenDroneMap, con la opción de WebODM que se instaló. Como no eran muchas imágenes, este tipo de instalación fue suficiente, como también el computador no requirió grandes capacidades de cómputo y terminó en pocos minutos (hubo un problema usandolo bajo Docker para Mac, por lo que se terminó usando directo bajo Linux Ubuntu.) El resultado fue que generó un archivo TIF de casi 46 MB.

La imagen TIF, para compartirla con la comunidad, se publicó en OpenAerialMap. Esta es la imagen aerea del barrio La Calleja. Habiéndola publicado en este portal, el mapeo fue más fácil, ya que solo debemos referenciar la imagen como un Imagery adicional en formato TMS; y no cargarla directamente en JOSM ya que puede consumir mucha memoria.

Igualmente, se tomaron fotos a nivel de calle, montadas sobre un carro, con una actionCam apuntando al frente, otra apuntando atrás, y una 360 en la mitad. Todas estas fotos fueron más de 10 mil, por lo que se subieron de manera bulk a Mapillary. Aquí se pueden ver todas esas fotos: https://www.mapillary.com/app/?focus=map&lat=4.712011402221506&lng=-74.05024101516284&z=14.819927381168846.

Durante el recorrido en el carro, se aprovechó y se capturó una traza GPX con el celular. La traza quedó publicada aquí: https://www.openstreetmap.org/user/AngocA/traces/3573909

Con todos estos datos en terreno, se comenzó a mapear con JOSM (Se hizo la transición a OpenWebStart, ya que Oracle Java no lo va a volver a incluir) y se fueron subiendo las contrucciones, vías y demás cosas que se identificaban. Al principio, como íbamos a manejar un imagery nuevo, teníamos que estar seguros que estaba bien alíneado, por lo que usamos las trazas publicadas en OSM, más la que capturamos durante el trayecto en carro; sin embargo, la precisión de estas no es muy alta por usar la posición de un celular. Como todo en el mundo de OSM, las características o features que no se conocías bien, fue bueno estudiarlas y evitar cometer errores. En este caso estudiamos los hidrantes, la señales de tránsito de altura, lugares de venta de carros, parques de juego (play ground), entre otras. Igualmente, para este mapeo, se usó la opción de edificio (construcción) y después se unían varios cuadros con Shift + j para darle la forma definitiva al edificio.

Finalmente, con todos estos datos ya cargados, le aplicamos las siguientes herramientas de calidad:

  • Validación de JOSM.
  • KeepRight.
  • Osmose.
  • OSM Inspector.

Estado Inicial

Resultados

Los resultados de este mapeo son estos:

OpenStreetMap

https://www.openstreetmap.org/#map=16/4.7124/-74.0496

Barrio La Calleja en OpenStreetMap

Mapillary

https://www.mapillary.com/app/?focus=map&lat=4.712011402221506&lng=-74.05024101516284&z=14.819927381168846

Barrio La Calleja en Mapillary

f4 demo

https://demo.f4map.com/#lat=4.7108297&lon=-74.0513359&zoom=17&camera.theta=53.071&camera.phi=-9.271

Barrio La Calleja en f4

Calidad de datos

osmose

Barrio La Calleja en osmose

KeepRight

Barrio La Calleja en KeepRight

Estado inicial

  • OpenStreetMap

Barrio La Calleja en OSM

  • Mapillary

Barrio La Calleja en Mapillary

  • Osmand

Barrio La Calleja en Osmand

  • Maps.me

Barrio La Calleja en Maps.me

Lexiones aprendidas

  • Hacer las tomas desde drone cuando está un poco nublado es lo mejor, ya que no se proyectan sombras.
  • Con HiveMapper, se pueden tomar fotos desde drone. Esta utilidad genera el plan vuelo para usarlo desde Litchy. Esto lo usaremos en nuestro siguiente mapeo.
  • Tener Ground Control Points para ubicar bien la posición en el mapa. Para eso, se van a hacer en tela y anclar con estacas de carpa de camping; además, la posición medianamente precisa, se puede obtener dejando el celular o GPS tracker un momento en el centro la cruz.
  • En el carro, en vez de tener una cámara apuntando hacia atrás, se puede apuntar hacia la derecha para capturar las fachadas. Hacia atrás no se detectan muchas cosas y para eso es la captura de la foto 360. En cambio, hacia la derecha se pueden obtener los números de las direcciones o nombres de establecimientos.
  • Es bueno hacer las cargas de fotos a Mapillary de noche, para evitar consumir el ancho de banda durante el día. Esto, por estar en tiempos de pandemia y teletrabajo, beneficia a la comunidad ya que no le impacta su actividad laboral, ya que la carga hacia Mapillary es intensiva.
  • No intentar cargar un TIF o equivalente en JPG en JOSM, ya que consumirá toda la memoria de Java y se volverá demasiado lento.
  • Los commits que se hagan a OSM, deben venir un un HashTag para poder asociar todos los commits de esta actividad. Algunos pueden ser #MaptimeBogota #NombreBarrio.
  • Leer el wiki de OSM cuando hay un feature que no se le conocen los detalles.

Faltantes

Con todo esto, ya se podría hacer un mapping party invitando a los residentes, y tomar los siguientes datos:

  • Direcciones.
  • Nombres de establecimientos.
  • Altura de los edificios.
  • Algún detalle de los pocos establecimientos de esta área, como especialidades médicas.
Posted Apr 22 2021 by Andres Gomez

Códigos Postales de Bogotá

El Miniterio de la Tecnología de Información y Comunicaciones - MinTIC definió, por medio de 7/24 - Correo postal, unos códigos postales en todas Colombia. Dichos códigos postales son un conjunto de áreas que dividen el territorio colombiano, para facilitar la mensajería. Los límites de dichos códigos postales han sido publicados como datos abiertos.

Aquí presentamos los códigos postales que hay en OpenStreetMap.

Se creó una relación abuelo para contener los códigos postales de todas las localidades, cuyo id es: 11518309 Para cada localidad, se creó una relación que contiene los códigos postales de dicha área, así:

  • 1 - Códigos postales localidad de Usaquén: 11518308
    • 110111 - 5655426
    • 110121 - 5655424
    • 110131 - 5655423
    • 110141 - 5655425
    • 110151 - 11518285
  • 2 - Códigos postales localidad de Chapinero: 11518349
    • 110211 - 11518348
    • 110221 - 11518380
    • 110231 - 11518429
  • 3 - Códigos postales localidad de Santa Fe: 11518431
    • 110311 - 11518430
    • 110321 - 11521261
  • 4 - Códigos postales localidad de San Cristobal: 11521317
    • 110411 - 11521292
    • 110421 - 11521291
    • 110431 - 11521317
  • 5 - Códigos postales localidad de Usme: 11521367
    • 110511 -
    • 110521 - 11521366
    • 110531 - 11521365
  • 6 - Códigos postales localidad de Tunjuelito:
  • 7 - Códigos postales localidad de Bosa:
  • 8 - Códigos postales localidad de Kennedy:
  • 9 - Códigos postales localidad de Fontibón:
  • 10 - Códigos postales localidad de Engativá:
  • 11 - Códigos postales localidad de Suba:
  • 12 - Códigos postales localidad de Barrios Unidos:
  • 13 - Códigos postales localidad de Teusaquillo:
  • 14 - Códigos postales localidad de Los Mártires:
  • 15 - Códigos postales localidad de Antonio Nariño:
  • 16 - Códigos postales localidad de Puente Aranda:
  • 17 - Códigos postales localidad de La Candelaria:
  • 18 - Códigos postales localidad de Rafael Uribe Uribe:
  • 19 - Códigos postales localidad de Ciudad Bolivar:
  • 20 - Códigos postales localidad de Sumapaz:

Para extraer las relaciones desde OverPasss Turbo: http://overpass-turbo.eu/s/XdD, la cual ejecuta el siguiente query:

[out:json][timeout:25];
// gather results
(
  // query part for: “boundary=administrative”
  node["boundary"="postal_code"]();
  way["boundary"="postal_code"]();
  relation["boundary"="postal_code"]();
);
// print results
out body;
>;
out skel qt;
Posted Aug 19 2020 by Andres Gomez

UPZs de Bogotá

La división de Bogotá después de las localidades son las UPZs - Unidades de Planeamiento Zonal, las cuales corresponden a la zona urbana de Bogotá y agrupan varios barrios. En OpenStreetMap no teníamos este detalle, y lo hemos venido incorporando.

Para esto, creamos una relación “abuelo” que tiene las UPZs de cada localidad. Esta tiene el ID: 11250532 (UPZs de Bogotá).

Localidades Bogotá

Después, por localidad tenemos una relación “padre” que agrupa todas las UPZs de una localidad dada. Aquí están sus IDs:

  • 1 - UPZs localidad de Usaquén : 11249973
    • 1 - UPZ Paseo de Los Libertadores 11228064
    • 9 - UPZ Verbenal: 11228135
    • 10 - UPZ La Uribe: 11231615
    • 11 - UPZ San Cristobal Norte: 11231639
    • 12 - UPZ Toberín: 11242979
    • 13 - UPZ Los Cedros: 11242990
    • 14 - UPZ Usaquén: 11243006
    • 15 - UPZ Country Club: 11243008
    • 16 - UPZ Santa Bárbara: 11243007
  • 2 - UPZs localidad de Chapinero: 11249984
    • 88 - UPZ El Refugio: 11248454
    • 89 - UPZ San Luis: 11249998
    • 90 - UPZ Pardo Rubio: 11248550
    • 97 - UPZ Chicó Lago: 11246089
    • 99 - UPZ Chapinero: 11249982
  • 3 - UPZs localidad de Santa Fe: 11251223
    • 91 - UPZ Sagrado Corazón: 11251213
    • 92 - UPZ La Macarena: 11251215
    • 93 - UPZ Las Nieves: 11251233
    • 95 - UPZ Las Cruces: 11251289
    • 96 - UPZ Lourdes: 11251311
  • 4 - UPZs localidad de San Cristobal: 11257168
    • 32 - UPZ San Blas: 11257167
    • 33 - UPZ Sosiego: 11257176
    • 34 - UPZ 20 de Julio: 11257186
    • 50 - UPZ La Gloria: 11257253
    • 51 - UPZ Los Libertadores: 11257263
  • 5 - UPZs localidad de Usme: 11257374
    • 52 - UPZ La Flora: 11257373
    • 56 - UPZ Danubio: 11294279
    • 57 - UPZ Gran Yomasa: 11294280
    • 58 - UPZ Comuneros: 11288848
    • 59 - UPZ Alfonso López: 11266934
    • 60 - UPZ Parque Entrenubes: 11260096
    • 61 - UPZ Ciudad Usme: 11260115
  • 6 - UPZs localidad de Tunjuelito: 11509186
    • 42 - UPZ Venecia: 11509185
    • 62 - UPZ Tunjuelito: 11509187
  • 7 - UPZs localidad de Bosa: 11341698
    • 49 - UPZ Apogeo: 11341751
    • 84 - UPZ Bosa Occidental: 11291507
    • 85 - UPZ Bosa Central: 11291503
    • 86 - UPZ El Porvenir: 11343959
    • 87 - UPZ Tintal Sur: 11291510
  • 8 - UPZs localidad de Kennedy: 11348624
    • 44 - UPZ Américas: 11360195
    • 45 - UPZ Carvajal: 11360157
    • 46 - UPZ Castilla: 11360111
    • 47 - UPZ Kennedy Central: 11356700
    • 48 - UPZ Timiza: 11350698
    • 78 - UPZ Tintal Norte: 11360088
    • 79 - UPZ Calandamia: 11350645
    • 80 - UPZ Corabastos: 11356700
    • 81 - UPZ Gran Britalia: 11348648
    • 82 - UPZ Patio Bonito: 11350362
    • 83 - UPZ Margaritas: 11348623
    • 113 - UPZ Bavaria: 11360214
  • 9 - UPZs localidad de Fontibón: 11364539
    • 75 - UPZ Fontibón: 11364569
    • 76 - UPZ Fotibón San Pablo: 11364566
    • 77 - UPZ Zona Franca: 11364538
    • 110 - UPZ Ciudad Salitre Occidental: 11375470
    • 112 - UPZ Granjas de Techo: 11375462
    • 114 - UPZ Modelia: 11375467
    • 115 - UPZ Capellanía: 11375469
    • 117 - UPZ Aeropuerto El Dorado: 11372764
  • 10 - UPZs localidad de Engativá: 11375621
    • 26 - UPZ Las Ferias: 11382362
    • 29 - UPZ El Minuto de Dios: 11382360
    • 30 - UPZ Boyacá Real: 11382359
    • 31 - UPZ Santa Cecilia: 11379134
    • 72 - UPZ Bolivia: 11375753
    • 73 - UPZ Garcés Navas: 11375724
    • 74 - UPZ Engativá: 11375620
    • 105 - UPZ Jardín Botánico: 11379153
    • 116 - UPZ Álamos: 11375634
  • 11 - UPZs localidad de Suba: 11486101
    • 2 - UPZ La Academia: 11495047
    • 3 - UPZ Guaymaral: 11495043
    • 17 - UPZ San José de Bavaria: 11495029
    • 18 - UPZ Britalia: 11495018
    • 19 - UPZ El Prado: 11495015
    • 20 - UPZ La Alhambra: 11491714
    • 23 - UPZ Casa Blanca Suba: 11491755
    • 24 - UPZ Niza: 11491695
    • 25 - UPZ La Floresta: 11488700
    • 27 - UPZ Suba: 11488695
    • 28 - UPZ El Rincón: 11486118
    • 71 - UPZ Tibabuyes: 11486100
  • 12 - UPZs localidad de Barrios Unidos: 11495067
    • 21 - UPZ Los Andes: 11495066
    • 22 - UPZ Doce de Octubre: 11495070
    • 98 - UPZ Los Alcázares: 11495078
    • 103 - UPZ Parque El Salitre: 11495079
  • 13 - UPZs localidad de Teusaquillo: 11502495
    • 100 - UPZ Galerías: 11502516
    • 101 - UPZ Teusaquillo: 11502515
    • 104 - UPZ Parque Simón Bolivar-CAN: 11502503
    • 106 - UPZ La Esmeralda: 11502494
    • 107 - UPZ Quita Paredes: 11502517
    • 109 - UPZ Ciudad Salitre Oriental: 11502523
  • 14 - UPZs localidad de Los Mártires: 11502562
    • 37 - UPZ Santa Isabel: 11502560
    • 102 - UPZ La Sabana: 11502561
  • 15 - UPZs localidad de Antonio Nariño: 11509169
    • 35 - UPZ Ciudad Jardín: 11509168
    • 38 - UPZ Restrepo: 11509172
  • 16 - UPZs localidad de Puente Aranda: 11502544
    • 40 - UPZ Ciudad Montes: 11502550
    • 42 - UPZ Muzú: 11502551
    • 43 - UPZ San Rafael: 11502549
    • 108 - UPZ Zona Industrial: 11502545
    • 111 - UPZ Puente Aranda: 11502543
  • 17 - UPZs localidad de La Candelaria: 11251324
    • 17 - UPZ La Candelaria: 11251322
  • 18 - UPZs localidad de Rafael Uribe Uribe:
    • 36 - UPZ San José: 11512066
    • 39 - UPZ Quiroga: 11512055
    • 53 - UPZ Marco Fidel Suárez: 11512074
    • 54 - UPZ Marruecos: 11512102
    • 55 - UPZ Diana Turbay: 11512112
    • 60 - UPZ Parque Entre Nubes: 11512108
  • 19 - UPZs localidad de Ciudad Bolivar: 11296847
    • 63 - UPZ El Mochuelo: 11296845
    • 64 - UPZ Monteblanco: 11296846
    • 65 - UPZ Arborizadora: 11341684
    • 66 - UPZ San Francisco: 11322644
    • 67 - UPZ Lucero: 11300607
    • 68 - UPZ El Tesoro: 11296844
    • 69 - UPZ Ismael Perdomo: 11341685
    • 70 - UPZ Jerusalem: 11322643
  • 20 - UPZs localidad de Sumapaz: No hay UPZs.

Para extraer las relaciones desde OverPasss Turbo: http://overpass-turbo.eu/s/XdF, la cual ejecuta el siguiente query:

[out:json][timeout:25];
(
  node["boundary"="administrative"]["admin_level"="9"]();
  way["boundary"="administrative"]["admin_level"="9"]();
  relation["boundary"="administrative"]["admin_level"="9"]();
);
    out body;
>;
out skel qt;
Posted Jun 28 2020 by Andres Gomez