User:Beerforfree
TUTORIAL PARA CREAR LINEAS DE INTERPOLACION CON SU NUMERACION CON QGIS
Pasos a seguir para generar líneas de interpolación y su numeración usando archivos shapes que contienen información de numeración de una localidad
Tareas realizadas en JOSM (se puede usar Overpass tanto en JOSM cómo en QGIS, las tareas 1, 2 y 3 se pueden hacer en QGIS tb)
EJEMPLO: Esto no descarga el límite de la localidad, Partido de Morón
**************************************
<osm-script output="xml" output-config="" timeout="250">
<query into="searchArea" type="area">
<has-kv k="admin_level" modv="" v="5"/>
<has-kv k="name" modv="" v="Partido de Morón"/>
</query>
<union into="_">
<query into="_" type="way">
<has-kv k="highway" modv="" regv="(motorway|trunk|primary|secondary|residential|tertiary)"/>
<area-query from="searchArea"/>
</query>
</union>
<print e="" from="_" geometry="skeleton" ids="yes" limit="" mode="body" n="" order="id" s="" w=""/>
<recurse from="_" into="_" type="down"/>
<print e="" from="_" geometry="skeleton" ids="yes" limit="" mode="skeleton" n="" order="quadtile" s="" w=""/>
</osm-script>
**************************************
1) Descargar localidad de OSM, como archivo .osm
Con JOSM descargar en pequeñas partes hasta completar la localidad, cortar aquellas calles que sobresalen los límites de la localidad
-Seleccionar la calle y el nodo dónde cortar P (split way)
La parte de la calle que no corresponde, quitar de la selección con CTRL + SHIFT + P (NO BORRAR). Repetir hasta completar la localidad
-Cargar los cambios, calles cortadas a OSM (upload data)
-Guardar archivo localidad.OSM
-DE AHORA EN MÁS NINGÚN CAMBIO SERÁ CARGADO AL SERVIDOR
(NO UPLOAD)
2) Filtrar solo calles
highway = residential, tertiary, primary, secondary
-Borrar todo lo restante, guardar el archivo como localidad1.osm
-Borrar toda aquel segmento de calle no numerable, puentes, tuneles, rotondas, links, calles sin nombre, etc
-Borrar centros de calles que cruzan boulevares y continuan de ambos lados, dejar aquellos que terminan en un lado.
-Guardar el archivo como localidad2.osm
3) Unir todos los segmentos de cada calle conviertiendolas en un solo way (en QGIS pueden obviar unir los segmentos)
Para ellos tendrán que borrar todos los tags a excepción del name (select all y borrar todo menos name)
Esto los obligará a tener un nombre único para toda la calle y luego para darle el sentido de la numeración creciente en el QGIS de un solo click para la calle completa y evitar olvidos
-Guardar el archivo como localidad3.osm
Tareas realizadas en QGIS
4) Crear proyecto nuevo
-Elegir como sistema de referencia EPSG 4326 (WGS 84, el que usa OSM)
-Cargar shape con numeración (vector layer)
-Abrir Layer Panel, de no estar habilitado, click derecho sobre un espacio vacio de menues → panel → habilitar Layer Panel
-Click derecho sobre el layer cargado → Propiedades → Labels: Seleccionar
→ Single labels y Label with: Numeración inicial derecha o izq
De ésta manera sabrenmos el sentido de la numeración creciente
- Cargar capa OSM desde el Browser Panel, si no está habilitado, click derecho sobre un espacio vacio de menues → panel → habilitar Browser Panel
-Buscar en el Browser Panel XYZ Tiles → Desplegar → Openstreetmap
- En el Layer Panel, cambiar el orden de los layers de ser necesario → shape por encima de Openstreetmap
5) Revisar geometria del shape, borrar elementos no deseados
-Tarea visual, pueden existir segmentos de calles repetidos, no entendibles, etc
-Abrir la tabla de atributos, usar PC con dos pantallas
-Click derecho sobre el layer del shape → Open Attribute Table → mover a 2da pantalla
Ahora podemos navegar el shape clickear sobre un elemento y ver que datos tiene
Ejecutar consultas sobre la tabla de atributos (dbf), ordenarla, etc con el fin de encontrar errores
Podemos abrir el archivo .dbf del shape (son 5 archivos) en un exel y realizar tareas de control, para ello nunca modifiquen el .dbf, guardenlo como .ods (LibreOffice) y ejecuten ahí sin modificar el .dbf
-Para editar el shape, click derecho Toggle Editing o de la tabla de atributos 1er ícono a la izq (lapíz)
6) Cargar localidad3.osm
-Usar el plugin QuickOSM Menu Plugins → Manage and install plugins → Buscar e instalar
- Menu Vector → QuickOSM → buscar localidad3.osm → cargar solo líneas
-Guardar el archivo como shape:
→ En layer panel, click derecho -→Export → Save feature as → seleccionar directorio y nombre osm1.shp conservar el mismo CRS (EPSG 4326)
7) Mostar sentido de líneas de osm
-click derecho sobre osm1 → Properties → Symbology → Seleccionar single symbol → Simple Line → Marker Line
→ en la ventana superior seleccionar: Simple Marker
→ en la ventana inferior selecionar triángulo orientado a la derecha
→ seleccionar color a conveniencia
8) Corregir sentido de la calle en osm1 coincidente con numeración creciente
-Usar plugin Swap Vector Direction (se instalará un icono en el menú con dos flechas circualres invertidas)
-En el layer panel seleccionar osm1, moverlo arriba de ser necesario, apagar la capa del mapa de osm
- Las triángulos deben apuntar en la misma dirección de la numeración creciente
en éste momento hay dos capas abiertas osm1 y el shape de la numeración, mostrando los números iniciales de cada cuadra.
-De no coinicidir invertir la calle de osm1 con el plugin Swap Vector Direction
-Toggle Editing → Seleccionar elemento → aplicar plugin para invertir su sentido
-Repetir la tarea para todas las calles
-Guardar archivo como osm2
9) Crear nodos en las intersecciones de calles (el shape es solo de líneas)
-Menu → Vector → Analysis Tools → Line Intersections
- seleccionar osm2 como Input layer e Interset layer
Esto crea un archivo temporario denominado Intersections
10) Crear un circulo sobre cada nodo de radio aprox de 16m
-Menu → Vector → Geoprocessing Tool → Buffer
Input layer: Intersections
Para usar metros deberiamos convertir el shape de WGS 84 a coordenadas planas o usar una distancia equivalente en grados. Ver tema de discusión en nuestra wiki. Para BA 1° aprox 110km
Distance = 0,00015 o 16m en coord planas
Esto nos crea otro archivo temporarios de nombre Buffered
11) Cortar las calles con el circulo creado en sus intersecciones
-Menu → Vector → Geoprocessing Tools → Symmetrical Difference
Input layer: osm2
Overlay layer: Buffered
Esto crea un archivo temporario Symetrical Difference
Cambiar el nombre al Buffered para no confundirlo con el próximo
12) Explotar las calles en elementos individuales, si bien están cortadas continuan siendo un único elemento
-Menu-→ Vector → Geometry Tools → Multipart to singlepart
Input layer: osm2
Aquí se pueden realizar tareas de limpieza, borrar calles ya numeradas o de numeración desconocida, tuneles o puentes que no serán numerados, etc
Esto crea un archivo temporario, guardarlo como osm3
13) Crear un centroide sobre el shape de numeración
-Menu → Vector → Geometry Tools → Centroids
Layer input: shape numeración
Esto crea un archivo temporario
14) Crear un circulo de radio conveniente sobre cada centroide, ver punto 10
El radio debe permitir intersectar el centroide con las lineas de osm3, pero solo con la contigua no con muchas. Las calles de osm y shape de numeración pueden estar desplazadas
15) Copiar numeración de shape de numeración a osm3
-Menu → Vector → Data Management Tools → Join Attributes by Location
Input layer: osm3
join layer: Buffered
Geometric predicate: intersects and/or touches
fields to add: seleccionar solo campos con numeración
join type: one to one
Tildar Discar records which could not be joined
Esto crea un archivo temporario joined…
eliminar los campos que no me interesan
Guardarlo como osm4
Corregir nombres de calles de ser necesario (abreviaturas, etc) en OSM también
Revisar y controlar antes de crear paralelas, corregir después toma más trabajo
16) Crear paralelas (las líneas de interpolación)
-Menu → Processing → Toolbox → Offset lines
Input layer: osm4
Distance: -0,00009 para las derechas +0,000009 para las izquierdas (10m en coord planas)
joined style: bevel
Luego de creado cada archivo temporario guardarlos como lineaDer / lineaIzq
Ahora cada paralela contiene: nombre y ambas numeraciones, podemos eliminar la numeración no deseada de cada paralela y dejar solo la par / impar, agregar campo addr completar todos los registros con even / odd guardar como lineaPar / lineaImpar
Eliminar registros que no tengan números (ejemplo: no hay línea de interp de un lado)
17) Agregar nodos a los extremos de cada línea de interp
Usar plugin Qchainage
Layer to chainage: lineaPar
tildar Only first and last point
Repetir para líneaImpar
17a) Agregar numeración a los nodos
Vector → Data Management Tool → Join Attributes by location
lInput ayer: chain_lineaPar
join layer: lineaPar
Geometric predicate: touches
Fields to add: name y ambos números
join type: one to one
idem con el impar
18) Asignar número a cada nodo (nodo inicial → número incial)
Agregar campo addr_house
Utilizar campo cngdegrees = 0 para determinar el nodo inicial
addr:house = if( "cngmeters" =0,"ParInicial", "ParFinal" )
Eliminar los campos innecesarios, conservar name y addr_house
Guardar archivo como NodoPar / NodoImpar
18a) Líneas de Interpolación
eliminar campos innecesarios: números y nombre, dejar solo addr even/odd
Tareas realizadas en JOSM (NO UPLOAD)
19) Instalar plugins: Shape tools y Conflation
20) Abrir shape lineaPar
-Guardar como .osm
-Seleccionar todas las líneas sin los nodos
→ Edit → Search → type:way
Editar el tag addr a addr:interpolation
Guardar
21) Abrir shape NodoPar
-Guardar como .osm
-Seleccionar todo
Editar tags → addr:housenumber, addr:street
Guardar
22) Abrir conflation tool
→ Configuración
-Cargar los 2 layers en el conflation tool
Seleccionar NodoPar cargar al plugin
Cambiar de layer, seleccionar solo los nodos de las líneas de interp, cargar al plugin
seleccionar todos los elementos de cada layer
Reference → NodoPar
Subject → Nodos de lineaPar
Metodo; uno a uno
distancia centroide < 0.1
tildar Merge y tags all
→ Generate Merges
→ si no hay conflictos, seleccionar todos los elementos dentro del conflation tool
→ Ejecutar conflation
Guardar archivo como InterpPar
Repetir para impares
23) Corregir líneas que se cortan en intersecciones que no son a 90° y demás detalles