Sandra's solución me puso en la dirección correcta y me ayudó mucho. Sin embargo, estoy convencido de que la forma en que " analiza " el archivo de salida no es correcto y la expresión regular no cubre todas las calles - al menos en España ya que una calle puede empezar por Calle y este tipo de calles no tienen la addr:street
clave.
Esta es una solución de Linux que se basa en la respuesta de Sandra:
bin/osmosis -q ... --bp file="My.poly" \
--tf accept-nodes way=* --wk keyList=highway --wx file=- \
| sed -e 's/[ ]*<nd [^>]*>//g' \
| sed -r '/^\s*$/d' \
| perl -lne 'print $1 if /k="name" v="(.+)"/' \
| sort \
| uniq
Lo que sucede:
- Obtenga sólo el
way
nodos que contienen el highway
clave.
- Retire el
<nd..>
elementos. Aquí me refiero a este pregunta con respecto a la eliminación de la misma.
- Elimine las líneas vacías.
- Ejecutar
perl
para obtener el nombre de la calle del elemento.
- Ordena el resultado.
- Eliminar los duplicados que puede haber, cuando por ejemplo la calle es de un solo sentido y tiene varias entradas.
2 votos
¿Has probado algo? No veo un método explícito para eso, pero se me ocurren algunos hacks terribles. Calcula una cuadrícula fina (2m x 2m) de puntos sobre el polígono, invierte el código geográfico y obtén el nombre de la calle a partir de la respuesta. O utilizar OpenStreetMap en su lugar, y la API Overpass que (creo) puede hacer esto.
0 votos
Usted puede enviar el lat,lng de su polígono como direcciones como maps.googleapis.com/maps/api/directions/