Difference between revisions of "Trabajo Cristian"
(→Instalación de Overpass API) |
(→OpenTripPlanner) |
||
Line 271: | Line 271: | ||
python main.py Cristian_F_G -r | python main.py Cristian_F_G -r | ||
python main.py Cristian_F_G | python main.py Cristian_F_G | ||
+ | |||
+ | = OwnCloud = | ||
+ | |||
+ | backup location after clicking on OwnCloud update: /var/www/html/owncloud/data/updater_backup/8.2.2.2-8fa08547 | ||
= OpenTripPlanner = | = OpenTripPlanner = | ||
Line 313: | Line 317: | ||
./otp --build /home/csfuente/otp --inMemory | ./otp --build /home/csfuente/otp --inMemory | ||
− | |||
= OSM + Overpass = | = OSM + Overpass = |
Revision as of 12:33, 17 May 2016
Contents
Documentación instalación de CartoDB
Todo se encuentra acá http://wiki.geosteiniger.cl/mediawiki-1.22.7/index.php/Installing_CartoDB_for_CEDEUS#Trabajo_Cristian
Recuperación de Grub de servidor
Todo acá http://wiki.geosteiniger.cl/mediawiki-1.22.7/index.php/Solving_Ubuntu_GRUB_issue
Configuración UPS
Configuración de red
La UPS se encuentra configurada por red desde el servidor 146.155.17.19 por la salida de red "em2". Su configuración de red es:
IP: 192.168.100.2 Mask: 255.255.255.0 Gateway: 192.168.100.1
La configuración en la UPS se realizó mediante un cable USB-Serial hacia el servidor y la comunicación se hizo por minicom con la configuración:
A - Serial Device : /dev/ttyUSB0 | B - Lockfile Location : /var/lock | C - Callin Program : | D - Callout Program : | E - Bps/Par/Bits : 9600 8N1 | F - Hardware Flow Control : No | G - Software Flow Control : No
Por lo mismo, la configuración de la boca de red "em2" debe tener la siguiente IP para que funcione correctamente:
IP: 192.168.100.1 Mask: 255.255.255.0
Por otro lado, para la configuración del servidor es necesario que se fije estáticamente la IP a la tarjeta de red em2. Para ello editamos el archivo /etc/network/interfaces
y agregamos las líneas:
auto em2 iface em2 inet static address 192.168.100.1
Configuración en el servidor
Se decide realizar la instalación con Nat, para ello lo instalamos mediante:
apt-get install nut nut-monitor nut-cgi nut-snmp snmp
Luego, se verifica si el usuario nut fue creado posterior a la instalación:
root@cedeusgeonode:~# id nut uid=109(nut) gid=117(nut) groups=117(nut),20(dialout)
Luego se edita el archivo /etc/nut/ups.conf para indicar el driver a utilizar para detectar la UPS, en nuestro caso es el siguiente:
[trust] driver = snmp-ups port = 192.168.100.2 community = public snmp_version = v1 pollfreq = 15 privProtocol=AES desc = "Dispositivo UPS APC SNMP v1"
Luego iniciamos el servicio
upsdrvctl start
Lo siguiente es configurar los servicios correspondientes que monitoreen la UPS, con tal de que apaguen el servidor cuando no exista energía.
Editamos el archivo /etc/nut/upsd.user y agregamos
[root] password=t3st actions = SET instcmds = ALL [upsmon] password=pass upsmon master upsmon slave
Con esto estamos agregando usuarios que permitan la interacción entre los módulos. Luego para upsmon editamos el archivo /etc/nut/upsmon.conf y modificamos las siguientes líneas:
MONITOR snmpv1 1 upsmon pass master POWERDOWNFLAG /etc/killpower SHUTDOWNCMD "/sbin/shutdown -h now"
Damos los permisos necesarios a los archivos para que sean ejecutados correctamente
chown root:nut /etc/nut/* chmod 640 /etc/nut/*
Finalmente le decimos que inicie los servicios cuando prenda el servidor, creamos un archivo llamado /etc/default/nut y le agregamos:
START_UPSD=yes START_UPSMON=yes
y editamos /etc/nut/nut.conf
MODE=standalone
Se espera que con esta configuración, el servidor que está conectado directamente con la UPS se apague cuando la UPS esté con poca energía, sin embargo falta aún la configuración del otro servidor, el cual se debe hacer modificando las configuraciones de upsd y upsmon respectivamente.
Ver estado de la UPS
Para ver en que estado se encuentra la UPS, podemos ver todos los detalles gracias al comando:
upsc snmpv1
En caso de que no exista conexión, puede ser a causa de que el dirver no se encuentre corriendo, la solución para levantar dicho driver es ejecutar
upsdrvctr start
Mantención VM MiCiudad
El problema que contenía la VM fue que no se podía instalar ni actualizar ningún programa debido a que la carpeta /boot estaba al 100%, esto es causado por reiteradas actualizaciones de kernel (es normal) en donde se guarda una copia del kernel instalado anteriormente, por lo que hay que borrar dichos respaldos.
Al utilizar el comando df -h
vemos el disco lleno. Basta con ejecutar los siguientes comandos con permisos de administrador:
dpkg --get-selections|grep 'linux-image*'|awk '{print $1}'|egrep -v "linux-image-$(uname -r)|linux-image-generic" |while read n;do apt-get -y remove $n;done apt-get autoclean
Luego de esto ya es posible la actualización e instalación de aplicaciones via apt-get
omeka.org
Ubuntu
Se propuso la instalación del servicio Omeka, para ello utilizamos una VM con Ubuntu, en el caso de prueba se utiliza Ubuntu 15.04.
Primero, con permisos de administrador, se actualiza la VM y se instalan las dependencias para Omeka
sudo apt-get update sudo apt-get install -y unzip php5 php5-mysql apache2 mysql-server imagemagick
Luego se descargan los archivos para la instalación de Omeka
cd wget http://omeka.org/files/omeka-2.3.1.zip unzip omeka-2.3.1.zip
Se mueven los archivos al directorio web
sudo mv omeka-2.0/* /var/www/ sudo mv omeka-2.0/.htaccess /var/www/ sudo rm /var/www/index.html
Configurar la base de datos, creando un usuario y sus permisos
sudo groupadd webdev sudo usermod -a -G webdev ubuntu cd /var sudo chown -R root.webdev www sudo chmod 775 www cd /var/www sudo find . -type d | xargs sudo chmod 775 sudo find . -type f | xargs sudo chmod 664 sudo find files -type d | xargs sudo chmod 777 sudo find files -type f | xargs sudo chmod 666
Crear la base de datos
mysql -u root -p
create database omeka; grant all privileges on omeka.* to 'ubuntu' identified by 'reverse'; flush privileges; quit;
Editar el archivo db.ini modificando
[database] host = "localhost" username = "ubuntu" password = "reverse" dbname = "omeka" prefix = "omeka_"
Finalmente activar mod_rewrite
sudo a2enmod rewrite
Editar el archivo /etc/apache2/sites-available/default cambiando "AllowOverride None" a "AllowOverride All".
Listo :)
Lamentablemente esta instalación trae problemas con la activación de mod_rewrite.
Fedora Server 23
Lo primero son las dependencias
dnf install unzip mysql-server php php-mysql ImageMagick
chkconfig --levels 235 httpd on chkconfig --levels 235 mariadb on
setenforce 0 systemctl start mariadb
mysql_secure_installation
Colocar contraseña para cuenta de administrador en base de datos
mysql -u root -p mysql> use mysql mysql> insert into user(host, user, password) values('localhost','omeka_user',password('test')); mysql> insert into db(host,db,user,Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv) values ('localhost','omeka_db','omeka_user','Y','Y','Y','Y','Y','Y'); mysql> quit
mysqladmin -u root -p create omeka_db mysqladmin -u root -p reload mysql> ALTER DATABASE omeka_db DEFAULT CHARACTER SET 'utf8' DEFAULT COLLATE 'utf8_unicode_ci'; mysql> quit
Editar el archivo /etc/httpd/conf/httpd.conf, cambiando el valor de AllowOverride que se encuentra dentro del bloque <Directory "/var/www/html"> por All.
systemctl restart httpd
wget http://omeka.org/files/omeka-2.3.1.zip
descomprimir archivo zip y renombrar carpeta por omeka
editar el archivo omeka/db.ini
con sus respectivos datos:
[database] host = "localhost" username = "omeka_user" password = "test" name = "omeka_db" prefix = "omeka_" ;port = ""
Extractor de tweets
dependencias de trabajo:
sudo apt-get install git vim
dependencias: tweepy y psycopg2
sudo pip install tweepy sudo apt-get install python-psycopg2
También es necesario instalar y crear un usuario en postgresql
sudo apt-get install postgresql postgresql-contrib sudo -i -u postgres createuser --interactive # csfuente as superuser createdb csfuente logout
luego clonar el repositorio git
git clone http://146.155.17.18:18080/csfuente/twitter_extractor.git cd twitter_extractor
Aquí tenemos dos archivos que ejecutar, primero es main.py el cual, al ser ejecutado por primera vez hay que poner un -r al final para crear la tabla de la base de datos (también borra todo dato anterior).
python main.py <Cuenta de twitter> [-r]
Luego que finalice el anterior, se debe ejecutar el streaming, para recepcionar los tweets que vendrán.
python stream <Cuenta de twitter>
Ejemplo
python main.py Cristian_F_G -r python main.py Cristian_F_G
OwnCloud
backup location after clicking on OwnCloud update: /var/www/html/owncloud/data/updater_backup/8.2.2.2-8fa08547
OpenTripPlanner
Instalación
Son necesarios dos programas escenciales, Java 8 y Maven mayor a 3.1.1
Para Java ejecutamos
sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-8-jdk
Para Maven
sudo apt-get install gdebi wget http://ppa.launchpad.net/natecarlson/maven3/ubuntu/pool/main/m/maven3/maven3_3.2.1-0~ppa1_all.deb sudo gdebi maven3_3.2.1-0~ppa1_all.deb sudo ln -s /usr/share/maven3/bin/mvn /usr/bin/mvn
Luego necesitamos git
sudo apt-get install git
Y finalmente procedemos con la copia e instalación de OpenTripPlanner
git clone https://github.com/opentripplanner/OpenTripPlanner.git cd OpenTripPlanner mvn clean package -DskipTests
Creamos la carpeta con la data
mkdir /home/csfuente/otp cd /home/csfuente/otp
Descargamos la data en esta carpeta....
wget http://www.dtpm.cl/descargas/gtfs/GTFS.zip
Ejecutamos OTP desde su directorio con el comando
./otp --build /home/csfuente/otp --inMemory
OSM + Overpass
Instalación de servidor de OSM
Para la instalación se utiliza una VM con Ubuntu 14.04. Las instrucciones fueron sacadas de:
* https://switch2osm.org/serving-tiles/manually-building-a-tile-server-14-04/
Y actualizadas con la nueva versión de osm2pgsql
* https://github.com/openstreetmap/osm2pgsql
Lo primero es instalar las dependencias necesarias para proceder con la instalación de los componentes que utiliza OSM.
sudo apt-get install libboost-all-dev subversion git-core tar unzip wget bzip2 build-essential \ autoconf libtool libxml2-dev libgeos-dev libgeos++-dev libpq-dev libbz2-dev libproj-dev munin-node \ munin libprotobuf-c0-dev protobuf-c-compiler libfreetype6-dev libpng12-dev libtiff4-dev libicu-dev \ libgdal-dev libcairo-dev libcairomm-1.0-dev apache2 apache2-dev libagg-dev liblua5.2-dev ttf-unifont \ lua5.1 liblua5.1-dev libgeotiff-epsg node-carto
Luego hay que instalar Postgresql y postgis
sudo apt-get install postgresql postgresql-contrib postgis postgresql-9.3-postgis-2.1
Ahora es necesario crear la base de datos, para ello necesitaremos de un usuario en postgres, por ahora se utilizará 'username' para la documentación.
sudo -u postgres -i createuser username createdb -E UTF8 -O username gis exit
Lo mismo para el sistema Unix
sudo useradd -m username sudo passwd username
Creamos las tablas de postgres y las asignamos al usuario
sudo -u postgres psql \c gis CREATE EXTENSION postgis; ALTER TABLE geometry_columns OWNER TO username; ALTER TABLE spatial_ref_sys OWNER TO username; \q exit
Pasamos a la instalación de osm2pgsql, para ello crearemos la carpeta 'src' en la raiz de root para adjuntar los archivos
mkdir ~/src cd ~/src git clone https://github.com/openstreetmap/osm2pgsql.git
Instalamos sus dependencias
sudo apt-get install make cmake g++ libboost-dev libboost-system-dev \ libboost-filesystem-dev libexpat1-dev zlib1g-dev \ libbz2-dev libpq-dev libgeos-dev libgeos++-dev libproj-dev lua5.2 \ liblua5.2-dev
Compilamos e instalamos
mkdir build && cd build cmake .. make sudo make install
Procedemos a instalar Mapnik
cd ~/src git clone git://github.com/mapnik/mapnik cd mapnik git branch 2.2 origin/2.2.x git checkout 2.2 python scons/scons.py configure INPUT_PLUGINS=all OPTIMIZATION=3 SYSTEM_FONTS=/usr/share/fonts/truetype/ make sudo make install sudo ldconfig
Podemos verificar que Mapnik funciona con
python >>> import mapnik >>>
Ahora la instalación de mod_tile y render
cd ~/src git clone git://github.com/openstreetmap/mod_tile.git cd mod_tile ./autogen.sh ./configure make sudo make install sudo make install-mod_tile sudo ldconfig
Se crea la carpeta /usr/local/share/maps/style para los archivos stylesheet y los recursos necesarios, además instalamos y configuramos OSM Bright
sudo mkdir -p /usr/local/share/maps/style sudo chown username /usr/local/share/maps/style cd /usr/local/share/maps/style wget https://github.com/mapbox/osm-bright/archive/master.zip wget http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip wget http://data.openstreetmapdata.com/land-polygons-split-3857.zip mkdir ne_10m_populated_places_simple cd ne_10m_populated_places_simple wget http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places_simple.zip unzip ne_10m_populated_places_simple.zip rm ne_10m_populated_places_simple.zip cd .. unzip '*.zip' mkdir osm-bright-master/shp mv land-polygons-split-3857 osm-bright-master/shp/ mv simplified-land-polygons-complete-3857 osm-bright-master/shp/ mv ne_10m_populated_places_simple osm-bright-master/shp/ cd osm-bright-master/shp/land-polygons-split-3857 shapeindex land_polygons.shp cd ../simplified-land-polygons-complete-3857/ shapeindex simplified_land_polygons.shp cd ../..
Ahora configuramos OSM Bright
vim osm-bright/osm-bright.osm2pgsql.mml
Acá hay que buscar las direcciones que se encuentran al lado derecho del tag 'file' y cambiar la dirección por la ruta de los archivos que cambiamos anteriormente, además agregamos su característica de 'type' tal como se muestra a continuación
"file": "/usr/local/share/maps/style/osm-bright-master/shp/land-polygons-split-3857/land_polygons.shp", "type": "shape"
"file": "/usr/local/share/maps/style/osm-bright-master/shp/simplified-land-polygons-complete-3857/simplified_land_polygons.shp", "type": "shape",
"file": "/usr/local/share/maps/style/osm-bright-master/shp/ne_10m_populated_places_simple/ne_10m_populated_places_simple.shp", "type": "shape"
Hay que ser riguroso con no olvidar las comas finales de cada línea. Luego, en la sección 'ne-places', reemplazar 'srs' y 'srs-name' con esto:
"srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
Guardamos y salimos.
Nos queda ahora compilar todo para que Mapnik pueda ser utilizado. Creamos el archivo de configuración y cambiamos la linea de pointing de ~/Documents/Mapbox/project a /usr/local/share/maps/style y cambiamos dbname de osm a gis. Guardamos y salimos.
cp configure.py.sample configure.py vim configure.py #Realizar cambios nombrados ./make.py cd ../OSMBright/ carto project.mml > OSMBright.xml
Listo con ésto, ahora debemos configurar el render. Como root es necesario editar el archivo de configuración de render ubicado en /usr/local/etc/renderd.conf y cambiar las siguientes lineas en las secciones de render, mapnik y default.
socketname=/var/run/renderd/renderd.sock plugins_dir=/usr/local/lib/mapnik/input font_dir=/usr/share/fonts/truetype/ttf-dejavu XML=/usr/local/share/maps/style/OSMBright/OSMBright.xml HOST=localhost
Las líneas que se encuentran comentadas con un ; deben ser descomentadas.
Ahora creamos las carpetas necesarias para usar el sistema de mod_tile
sudo mkdir /var/run/renderd sudo chown username /var/run/renderd sudo mkdir /var/lib/mod_tile sudo chown username /var/lib/mod_tile
creamos en archivo /etc/apache2/conf-available/mod_tile.conf y agregamos una sola línea:
LoadModule tile_module /usr/lib/apache2/modules/mod_tile.so
Y editamos el archivo /etc/apache2/sites-available/000-default.conf agregando esto justo después del email del administrador
LoadTileConfigFile /usr/local/etc/renderd.conf ModTileRenderdSocketName /var/run/renderd/renderd.sock # Timeout before giving up for a tile to be rendered ModTileRequestTimeout 0 # Timeout before giving up for a tile to be rendered that is otherwise missing ModTileMissingRequestTimeout 30
Finalmente agregamos mod_tile a apache y lo reiniciamos
sudo a2enconf mod_tile sudo service apache2 reload
Ahora debemos dejar mas potente postgres para que no funcione lento al momento de solicitar datos, editamos con sudo el archivo /etc/postgresql/9.3/main/postgresql.conf para cambiar:
shared_buffers = 128MB checkpoint_segments = 20 maintenance_work_mem = 256MB autovacuum = off
editamos tambien con sudo el archivo /etc/sysctl.conf para agregar una línea entre las definiciones de kernel
# Increase kernel shared memory segments - needed for large databases kernel.shmmax=268435456
Reiniciamos la VM y luego ejecutamos:
sudo sysctl kernel.shmmax
y verificamos que nos muestre el número que pusimos
Ahora nos queda cargar las tiles correspondientes al servidor, para este trabajo se utilizan solo las tiles de Chile.
sudo mkdir /usr/local/share/maps/planet sudo chown username /usr/local/share/maps/planet cd /usr/local/share/maps/planet wget http://download.geofabrik.de/south-america/chile-latest.osm.pbf
Importamos la data descargada en la base de datos, el número que se encuentra luego de -C debe ser cambiado dependiendo de la memoria RAM disponible para la máquina. Se sugiere comenzar con un númerp 16000 y si excede la memoria entonces reducir dicho número. Para las pruebas fue posible ejecutar el comando con un -C de 3500
osm2pgsql --slim -d gis -C 3500 --number-processes 3 /usr/local/share/maps/planet/chile-latest.osm.pbf
Tomar café y esperar. Dependiendo de la información a cargar, puede tardar entre 10 minutos hasta 24 horas.
Finalmente levantamos el servidor y lo hacemos correr, para ello ejecutamos
sudo mkdir /var/run/renderd sudo chown username /var/run/renderd sudo -u username renderd -f -c /usr/local/etc/renderd.conf
y en una terminal diferente
sudo service apache2 reload
Podemos probar que el servidor se encuentra corriendo entrando a la dirección http://localhost/osm_tiles/0/0/0.png para ver una imagen del mundo. Para otras imágenes es necesario rescatarlas con http://localhost/osm_tiles/{z}/{x}/{y}.png (localhost puede ser cambiado por la IP de la VM)
Instalación de Overpass API
La información fue extraida desde las siguientes páginas con modificación en los link de descarga de la data:
http://overpass-api.de/no_frills.html http://overpass-api.de/full_installation.html
Los comandos utilizados fueron:
Primero son las dependencias base
sudo apt-get install wget g++ make expat libexpat1-dev zlib1g-dev
Luego se realiza la instalación del software de Overpass, para ello se utiliza como directorio de ejecutables la misma base del archivo a descargar (perfectamente se podría cambiar)
wget http://dev.overpass-api.de/releases/osm-3s_v0.7.52.tar.gz gunzip <osm-3s_v0.7.52.tar.gz | tar xvf - cd osm-3s_v0.7.52/ ./configure --prefix="`pwd`" make CXXFLAGS="-O3"
Se crea la carpeta de la base de datos, se descarga la información y se adjunta a Overpass (Es posible solo utilizar Chile)
mkdir db wget -O planet.osm.bz2 "http://planet.osm.org/planet/planet-latest.osm.bz2" bin/init_osm3s.sh planet.osm.bz2 "db/" "./" --meta
Con esto ya tenemos la data de Overpass, ahora lo uniremos a Apache, para ello lo instalamos y configuramos para cgi según http://wiki.openstreetmap.org/wiki/Overpass_API/Installation#Setting_up_the_Web_API
sudo apt-get install apache2 sudo a2enmod cgi sudo vim /etc/apache2/sites-available/000-default.conf
En el archivo agregamos las líneas faltantes para que nos quede algo similar a esto:
<VirtualHost *:80> ServerAdmin webmaster@localhost ExtFilterDefine gzip mode=output cmd=/bin/gzip DocumentRoot [YOUR_HTML_ROOT_DIR] # This directive indicates that whenever someone types http://www.mydomain.com/api/ # Apache2 should refer to what is in the local directory [YOUR_EXEC_DIR]/cgi-bin/ ScriptAlias /api/ [YOUR_EXEC_DIR]/cgi-bin/ # This specifies some directives specific to the directory: [YOUR_EXEC_DIR]/cgi-bin/ <Directory "[YOUR_EXEC_DIR]/cgi-bin/"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch # For Apache 2.4: # Order allow,deny # For Apache > 2.4: Require all granted #SetOutputFilter gzip #Header set Content-Encoding gzip </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, alert, emerg LogLevel warn CustomLog /var/log/apache2/access.log combined </VirtualHost>
Utilizando [YOUR_HTML_ROOT_DIR] por el que venía por defecto, [YOUR_EXEC_DIR] la dirección completa en donde compilamos Overpass y dejando sin editar ErrorLog y CustomLog.
Luego se reinicia el demonio de apache
sudo service apache2 restart
Finalmente ejecutamos el proceso que nos permite recuperar los archivos que buscamos, para ello nos posicionamos en la carpeta del ejecutable en donde instalamos Overpass y escribimos el siguiente comando:
sudo nohup bin/dispatcher --osm-base --meta --db-dir="db" &
Listo, ahora para poder recuperar un archivo xml con los cambios que deseamos probar, debemos ejecutar el siguiente comando en algún otro computador (o el mismo)
wget --output-document=[nombre_archivo.xml] http://[IP_de_la_máquina]/api/interpreter?data=[código_a_ejecutar_en_overpass]
como ejemplo, en la misma máquina podemos ejecutar
wget --output-document=test.xml http://localhost/api/interpreter?data=%3Cprint%20mode=%22body%22/%3E
<?xml version="1.0" encoding="UTF-8"?> <osm-derived> <note> The data included in this document is from www.openstreetmap.org. It has there been collected by a large group of contributors. For individual attribution of each item please refer to http://www.openstreetmap.org/api/0.6/[node|way|relation]/#id/history </note> <meta osm_base=""/> </osm-derived>
PD: Los bancos de mi ciudad:
http://localhost/api/interpreter?data=%3Cosm-script%3E%3Cquery%20into=%22_%22%20type=%22node%22%3E%3Chas-kv%20k=%22amenity%22%20modv=%22%22%20v=%22bank%22/%3E%3Cbbox-query%20e=%22-71.72712922096252%22%20into=%22_%22%20n=%22-35.59095565308603%22%20s=%22-35.5972720219081%22%20w=%22-71.73655986785889%22/%3E%3C/query%3E%3Cprint%20e=%22%22%20from=%22_%22%20geometry=%22skeleton%22%20limit=%22%22%20mode=%22body%22%20n=%22%22%20order=%22id%22%20s=%22%22%20w=%22%22/%3E%3C/osm-script%3E
<?xml version="1.0" encoding="UTF-8"?> <osm version="0.6" generator="Overpass API"> <note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note> <meta osm_base=""/> <node id="2540586850" lat="-35.5947536" lon="-71.7334849"> <tag k="amenity" v="bank"/> <tag k="name" v="BancoEstado"/> </node> <node id="2540586923" lat="-35.5946228" lon="-71.7339302"> <tag k="amenity" v="bank"/> <tag k="name" v="Banco de Chile"/> </node> <node id="2540635212" lat="-35.5956784" lon="-71.7295394"> <tag k="amenity" v="bank"/> <tag k="name" v="Santander"/> </node> </osm>