Argentine Daily Weather Reports 1902: Station locations

../../_images/stations_map.png

Latitude and Longitude estimated for each station. Note that these are crudely geolocated, mostly using Google. They have low precision and low confidence. Heights have not been estimated.

SEF_ID,                 lat,            lon,            height
DWR_9_de_Julio,         -35.4439,       -60.8846,       NA
DWR_Abra_Pampa,         -22.7227,       -65.6970,       NA
DWR_Andalgala,          -27.6,          -66.316667,     NA
DWR_Arias,              -33.633333,     -62.416667,     NA
DWR_Arroyitos,          -31.4192,       -63.0509,       NA
DWR_Bahia_Blanca,       -38.725151,     -62.254951,     NA
DWR_Balcarce,           -37.84702,      -58.25407,      NA
DWR_Bernasconi,         -37.90406,      -63.73868,      NA
DWR_B._Mitre,           -27.3833,       -55.8833,       NA
DWR_Bolivar,            -36.2383,       -61.2336,       NA
DWR_B._Parada,          -34.5430,       -58.4868,       NA
DWR_Azul_BA,            -36.7750,       -59.8540,       NA
DWR_Junin_BA,           -34.5885,       -60.9496,       NA
DWR_Burruyacu,          -26.5,          -64.75,         NA
DWR_Cabo_Alarcon,       -39.5,          -69.1,          NA
DWR_Cabo_Blanco,        -47.202,        -65.7333,       NA
DWR_Cabo_Raso,          -44.3372,       -65.2492,       NA
DWR_Caleta_Oliv.,       -46.4426,       -67.5172,       NA
DWR_Camarones,          -44.79332,      -65.710808,     NA
DWR_Canada_Verde,       -34.8363,       -64.5833,       NA
DWR_Capital_Fed.,       -34.60903,      -58.37322,      NA
DWR_Carcarana,          -32.85744,      -61.15189,      NA
DWR_Catamarca-Cp,       -28.466667,     -65.783333,     NA
DWR_Ceres,              -29.8817,       -61.9461,       NA
DWR_Chaco-La_Sb.,       -27.451389,     -58.986667,     NA
DWR_Chilecito,          -29.166667,     -67.5,          NA
DWR_Chivilcoy,          -34.8970,       -60.0191,       NA
DWR_Choele_Choel,       -39.28573,      -65.66189,      NA
DWR_Chubut-Mdryn,       -42.77151,      -65.04027,      NA
DWR_Concep.-Mis.,       -27.9806,       -55.5217,       NA
DWR_Concep.-Tuc.,       -27.3459,       -65.5927,       NA
DWR_Concordia,          -31.391041,     -58.019569,     NA
DWR_Conesa,             -40.1112,       -64.45421,      NA
DWR_Cordoba-Cap.,       -31.416667,     -64.183333,     NA
DWR_Coronel_Prg.,       -37.9853,       -61.3498,       NA
DWR_Corrientes-C,       -27.501921,     -58.812889,     NA
DWR_C._Rivadavia,       -45.864722,     -67.480833,     NA
DWR_Curuzu-Cuat.,       -29.7868,       -58.08739,      NA
DWR_Dique_Sn_Rq,        -31.378056,     -64.469444,     NA
DWR_Dolores,            -36.3152,       -57.6753,       NA
DWR_Dos_Pozos,          -44.5047,       -65.6836,       NA
DWR_Delicias_ER,        -31.9333,       -60.4167,       NA
DWR_Esperanza,          -26.19614,      -64.239014,     NA
DWR_Esquina,            -30.018749,     -59.524052,     NA
DWR_Estc_Pereyra,       -34.8364,       -58.0946,       NA
DWR_Formosa_Arg.,       -26.183333,     -58.183333,     NA
DWR_Gen_Uriburu,        -34.00,         -59.166667,     NA
DWR_Gen_Villegas,       -35.0326,       -63.0148,       NA
DWR_Goya,               -29.15477,      -59.264938,     NA
DWR_Gualeguay,          -33.14972,      -59.31069,      NA
DWR_Guamini,            -37.0126,       -62.4185,       NA
DWR_Humahuaca,          -23.2040,       -65.3486,       NA
DWR_Jujuy-Cap.,         -24.183333,     -65.3,          NA
DWR_La_Carlota,         -33.417936,     -63.293495,     NA
DWR_La_Cautiva,         -33.97993,      -64.08282,      NA
DWR_La_Cocha,           -27.77,         -65.585833,     NA
DWR_La_Plata,           -34.9205,       -57.9536,       NA
DWR_Las_Flores,         -36.0142,       -59.0993,       NA
DWR_Las_Lajas,          -38.5239,       -70.3640,       NA
DWR_Malaspina,          -44.9333,       -66.9,          NA
DWR_Mar_dl_Plata,       -38.0055,       -57.5426,       NA
DWR_Mendoza-Cap.,       -32.883333,     -68.816667,     NA
DWR_Posadas_Mis.,       -27.3621,       -55.9009,       NA
DWR_Necochea,           -38.5545,       -58.7396,       NA
DWR_Arroyitos_Nq,       -39.0733,       -68.5650,       NA
DWR_Neuquen,            -38.9517,       -68.0592,       NA
DWR_Pilcaneyen,         -38.9525,       -68.064167,     NA
DWR_N._Huapi,           -40.9256,       -71.5151,       NA
DWR_Olavarria,          -36.8937,       -60.3233,       NA
DWR_Asuncion_Pgy,       -25.2637,       -57.5759,       NA
DWR_Acha_Pampa,         -37.37311,      -64.59974,      NA
DWR_Paso_Libres,        -29.71423,      -57.08752,      NA
DWR_Patagones,          -40.79547,      -62.96865,      NA
DWR_P._Deseado,         -47.75,         -65.916667,     NA
DWR_Pico_Salama.,       -45.5733,       -67.3372,       NA
DWR_Piedra_Agui.,       -40.033333,     -70.066667,     NA
DWR_Pueblo_Brugo,       -31.38794,      -60.092,        NA
DWR_Puerto_Mili.,       -38.886944,     -62.097778,     NA
DWR_Quiaca,             -22.1044,       -65.5968,       NA
DWR_Quilino,            -30.21612,      -64.49441,      NA
DWR_Recreo,             -29.266667,     -65.066667,     NA
DWR_Rio_Cuarto,         -33.142971,     -64.329277,     NA
DWR_Rioja-Cap.,         -29.4125,       -66.854167,     NA
DWR_Chilecito_Rj,       -29.1611,       -67.4962,       NA
DWR_Roca_Rio_N.,        -41.030556,     -62.789722,     NA
DWR_Rosario,            -32.95924,      -60.683479,     NA
DWR_Rosario_dlF.,       -25.8,          -64.966667,     NA
DWR_Saladillo,          -35.6389,       -59.7795,       NA
DWR_Salta,              -24.783333,     -65.416667,     NA
DWR_Salta-La_Mcd,       -24.9667,       -65.4895,       NA
DWR_San_Antonio,        -40.73,         -64.95,        NA
DWR_San_Blas,           -40.5608,       -62.2367,       NA
DWR_San_Carlos,         -25.9,          -65.933333,     NA
DWR_San_Jorge,          -32.3,          -66.6,          NA
DWR_San_Juan-Cp.,       -31.534167,     -68.526111,     NA
DWR_San_Lorenzo,        -32.74582,      -60.73433,      NA
DWR_San_Luis,           -33.3,          -66.333333,     NA
DWR_San_L-V._Mcd,       -33.667,        -65.467,        NA
DWR_San_Martin,         -33.083,        -68.47,         NA
DWR_San_Nicolas,        -33.33037,      -60.21449,      NA
DWR_Santa_Cruz,         -50.0247,       -68.5244,       NA
DWR_Santa_Fa-Cp.,       -31.610659,     -60.697292,     NA
DWR_Santa_Maria,        -26.683333,     -66.033333,     NA
DWR_Santo_Tome,         -31.6622,       -60.7616,       NA
DWR_Sierra_Grnde,       -41.60447,      -65.35436,      NA
DWR_St._Cruz-Mzd,       -47.028611,     -66.711944,     NA
DWR_Tandil,             -37.3288,       -59.1367,       NA
DWR_Tinogasta,          -28.066667,     -67.566667,     NA
DWR_Trancas,            -26.217222,     -65.283056,     NA
DWR_Tratayen,           -38.4,          -68.6,          NA
DWR_Trenque_Lauq,       -35.96544,      -62.73348,      NA
DWR_Tres_Arroyos,       -38.3775,       -60.2752,       NA
DWR_Tucman-Captl,       -26.816667,     -65.216667,     NA
DWR_Tumbaya,            -23.8577,       -65.4676,       NA
DWR_Uruguay,            -32.48465,      -58.23293,      NA
DWR_V._Casilda,         -33.0445,       -61.1650,       NA
DWR_Vera,               -29.47028,      -60.20232,      NA
DWR_Villaguay,          -31.86728,      -59.02684,      NA
DWR_Villa_Maria,        -34.88247,      -60.34444,      NA
DWR_Villa_Mrced.,       -33.666667,     -65.466667,     NA
DWR_Ytaybate,           -27.43,         -57.34,         NA
DWR_Zarate,             -34.0958,       -59.0242,       NA

Code to make the plot

#!/usr/bin/env python

# Plot and label the Argentinian DWR stations

import os
import pandas
import numpy

import matplotlib
from matplotlib.backends.backend_agg import \
             FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
from matplotlib.patches import Circle

import cartopy
import cartopy.crs as ccrs

# Find the directory with this script in
try:
    bindir=os.path.abspath(os.path.dirname(__file__))
except NameError:
    bindir='.'

fig=Figure(figsize=(10,10),  # Width, Height (inches)
           dpi=100,
           facecolor=(0.88,0.88,0.88,1),
           edgecolor=None,
           linewidth=0.0,
           frameon=False,
           subplotpars=None,
           tight_layout=None)
canvas=FigureCanvas(fig)
font = {'family' : 'sans-serif',
        'sans-serif' : 'Arial',
        'weight' : 'normal',
        'size'   : 16}
matplotlib.rc('font', **font)

# Argentina-centred projection
projection=ccrs.RotatedPole(pole_longitude=116, pole_latitude=128.5)
scale=9
extent=[scale*-1,scale,scale*-2,scale*2]

# Map in the centre
ax_map=fig.add_axes([0.25,0.01,0.5,0.98],projection=projection)
ax_map.set_axis_off()
ax_map.set_extent(extent, crs=projection)
ax_map.background_patch.set_facecolor((0.88,0.88,0.88,1))
land_img=ax_map.background_img(name='GreyT', resolution='low')

#Full axis for station names and linking lines
ax_full=fig.add_axes([0,0,1,1])
ax_full.patch.set_alpha(0.0) 

# Load the station locations
stations=pandas.read_csv("%s/../raw_data/Positions.csv" % bindir,
                              skipinitialspace=True,quotechar="'")
# Rotate the lats and lons into projection
rp=ax_map.projection.transform_points(ccrs.PlateCarree(),
                                  stations['lon'].values,
                                  stations['lat'].values)
stations['lon']=rp[:,0]
stations['lat']=rp[:,1]

def pos_map_in_full(lat,lon):

    result={}
    aspect=2
    result['x']=0.25+0.5*((lon-(scale*-1))/(scale*2))
    result['y']=0.01+0.98*((lat-(scale*aspect*-1))/
                                       (scale*2*aspect))
    return result

# Get the left-hand half
lon_split=numpy.mean(stations['lon'])
left=stations[stations['lon']<=lon_split]
left=left.sort_values('lat',ascending=False)
i=0.0
for index, row in left.iterrows():
    ax_map.add_patch(matplotlib.patches.Circle((row['lon'],
                                                row['lat']),
                                            radius=0.1,
                                            facecolor='red',
                                            edgecolor='black',
                                            alpha=1))
    ax_full.text(0.18,0.99-0.98*(i+0.5)/len(left),
                 row['SEF_ID'][4:],
                 horizontalalignment='right',
                 verticalalignment='center',
                 size=10,
                 color='black')
    ax_full.add_patch(Circle((0.185,
                              0.99-0.98*(i+0.5)/len(left)),
                             radius=0.001,
                             facecolor=(1,0,0,1),
                             edgecolor=(0,0,0,1),
                             alpha=1))

    mp=pos_map_in_full(row['lat'],row['lon'])
    ax_full.add_line(matplotlib.lines.Line2D(
            xdata=(0.185,mp['x']),
            ydata=(0.99-0.98*(i+0.5)/len(left),mp['y']),
            linestyle='solid',
            linewidth=0.2,
            color=(1,0,0,1.0),
            zorder=1))
    i=i+1
# Right-hand half
right=stations[stations['lon']>lon_split]
right=right.sort_values('lat',ascending=False)
i=0.0
for index, row in right.iterrows():
    ax_map.add_patch(matplotlib.patches.Circle((row['lon'],
                                                row['lat']),
                                            radius=0.1,
                                            facecolor='red',
                                            edgecolor='black',
                                            alpha=1))
    ax_full.text(0.82,0.99-0.98*(i+0.5)/len(right),
                 row['SEF_ID'][4:],
                 horizontalalignment='left',
                 verticalalignment='center',
                 size=10,
                 color='black')
    ax_full.add_patch(Circle((0.815,
                              0.99-0.98*(i+0.5)/len(right)),
                             radius=0.001,
                             facecolor=(1,0,0,1),
                             edgecolor=(0,0,0,1),
                             alpha=1))

    mp=pos_map_in_full(row['lat'],row['lon'])
    ax_full.add_line(matplotlib.lines.Line2D(
            xdata=(0.815,mp['x']),
            ydata=(0.99-0.98*(i+0.5)/len(right),mp['y']),
            linestyle='solid',
            linewidth=0.2,
            color=(1,0,0,1.0),
            zorder=1))
    i=i+1

# Output as png
fig.savefig('../figures/stations_map.png')