File Coverage

blib/lib/Geo/LookupPostcode/ES.pm
Criterion Covered Total %
statement 36 36 100.0
branch 3 4 75.0
condition n/a
subroutine 7 7 100.0
pod 1 1 100.0
total 47 48 97.9


line stmt bran cond sub pod time code
1             package Geo::LookupPostcode::ES;
2              
3 1     1   13534 use 5.012;
  1         3  
4 1     1   3 use strict;
  1         1  
  1         25  
5 1     1   4 use warnings FATAL => 'all';
  1         1  
  1         27  
6 1     1   3 use utf8;
  1         1  
  1         5  
7              
8 1     1   21 use Carp qw(croak);
  1         0  
  1         1110  
9             require Exporter;
10              
11             our @ISA = qw(Exporter);
12             our @EXPORT_OK = qw(lookup_es_postcode);
13              
14             my %geo_provinces;
15              
16             =encoding utf-8
17              
18             =head1 NAME
19              
20             Geo::LookupPostcode::ES - Get province and region codes for a Spanish postcode
21              
22             =head1 SUBROUTINES/METHODS
23              
24             =head2 lookup_es_postcode
25              
26             Takes one character string argument: a postcode.
27              
28             If successful, it returns a reference to a hash, with this structure:
29              
30              
31             my $rh_province = lookup_es_postcode("03460");
32             {
33             province_name => $province_name,
34             }
35            
36             If it cannot find the province, it returns undef.
37              
38             Note that the names may be anglicised.
39              
40             =cut
41              
42             sub lookup_es_postcode {
43 100001 50   100001 1 554122 croak "Expected one argument" if (@_ != 1);
44 100001         69329 my ($postcode) = @_;
45              
46             # Do some cleanup of postcode:
47 100001         88666 utf8::upgrade $postcode;
48 100001         346136 $postcode =~ s/\s*//g;
49              
50 100001         100092 my $province_name = $geo_provinces{$postcode};
51 100001 100       113581 if (defined($province_name)) {
52 771         1553 return { province_name => $province_name };
53             }
54 99230         79587 return;
55             }
56              
57             # Data from https://en.wikipedia.org/wiki/List_of_postal_codes_in_Spain
58              
59              
60             BEGIN { %geo_provinces = (
61             # $postcode => $name,
62             '01' => 'Álava',
63             '02' => 'Albacete',
64             '03' => 'Alicante',
65             '04' => 'Almería',
66             '05' => 'Ávila',
67             '06' => 'Badajoz',
68             '07' => 'Balearic Islands',
69             '08' => 'Barcelona',
70             '09' => 'Burgos',
71             '10' => 'Cáceres',
72             '11' => 'Cádiz',
73             '12' => 'Castellón',
74             '13' => 'Ciudad Real',
75             '14' => 'Córdoba',
76             '15' => 'A Coruña',
77             '16' => 'Cuenca',
78             '17' => 'Girona',
79             '18' => 'Granada',
80             '19' => 'Guadalajara',
81             '20' => 'Gipuzkoa',
82             '21' => 'Huelva',
83             '22' => 'Huesca',
84             '23' => 'Jaén',
85             '24' => 'León',
86             '25' => 'Lleida',
87             '26' => 'La Rioja',
88             '27' => 'Lugo',
89             '28' => 'Madrid',
90             '29' => 'Málaga',
91             '30' => 'Murcia',
92             '31' => 'Navarre',
93             '32' => 'Ourense',
94             '33' => 'Asturias',
95             '34' => 'Palencia',
96             '35' => 'Las Palmas',
97             '36' => 'Pontevedra',
98             '37' => 'Salamanca',
99             '38' => 'Santa Cruz de Tenerife',
100             '39' => 'Cantabria',
101             '40' => 'Segovia',
102             '41' => 'Seville',
103             '42' => 'Soria',
104             '43' => 'Tarragona',
105             '44' => 'Teruel',
106             '45' => 'Toledo',
107             '46' => 'Valencia',
108             '47' => 'Valladolid',
109             '48' => 'Biscay',
110             '49' => 'Zamora',
111             '50' => 'Zaragoza',
112             '51' => 'Ceuta',
113             '52' => 'Melilla',
114 100         109 (map { sprintf("%05d", $_) => 'Alicante' } 3000..3099),
115             '03158' => 'Catral',
116             '03189' => 'Villamartin',
117 99         114 (map { sprintf("%05d", $_) => 'Elche' } 3201..3299),
118             '03400' => 'Villena',
119             '03460' => 'Beneixama',
120             '03500' => 'Benidorm',
121             '03600' => 'Elda',
122             '03610' => 'Petrer',
123             '03690' => 'San Vicente del Raspeig',
124             '03700' => 'Denia',
125             '03710' => 'Calpe',
126             '03801' => 'Alcoy',
127             '03530' => 'La Nucia',
128             '03759' => 'Benidoleig',
129             '03730' => 'Javea',
130             '08001' => 'Barcelona - el Raval',
131             '08002' => 'Barcelona - Barri Gòtic',
132             '08003' => 'Barcelona - Sant Pere, Santa Susana i la Ribera',
133             '08004' => 'Barcelona - Barceloneta',
134             '08005' => 'Barcelona - Poblenou',
135             '08006' => 'Barcelona - Gràcia',
136             '08110' => 'Montcada i Reixac',
137             '08120' => 'La Llagosta',
138             '08170' => 'Montornès del Vallès',
139             '08301' => 'Mataró',
140             '08302' => 'Mataró',
141             '08303' => 'Mataró',
142             '08304' => 'Mataró',
143             '08320' => 'el Masnou',
144             '08329' => 'Teià',
145             '08370' => 'Calella',
146             '08380' => 'Malgrat de Mar',
147             '08397' => 'Pineda de Mar',
148             '08398' => 'Santa Susanna, Catalonia',
149             '08401' => 'Granollers',
150             '08620' => 'Sant Vicenç dels Horts',
151             '08630' => 'Abrera',
152             '08640' => 'Olesa de Montserrat',
153             '08690' => 'Santa Coloma de Cervelló',
154             '08740' => 'Sant Andreu de la Barca',
155             '08758' => 'Cervelló',
156             '08800' => 'Vilanova i la Geltrú',
157             '08810' => 'Sant Pere de Ribes',
158             '08820' => 'el Prat de Llobregat',
159             '08830' => 'Sant Boi de Llobregat',
160             '08840' => 'Viladecans',
161             '08850' => 'Gavà',
162             '08859' => 'Begues',
163             '08860' => 'Castelldefels',
164             '08870' => 'Sitges',
165             '08940' => 'Cornellà de Llobregat',
166             '08950' => 'Esplugues de Llobregat',
167             '08960' => 'Sant Just Desvern',
168             '08970' => 'Sant Joan Despí',
169             '08980' => 'Sant Feliu de Llobregat',
170             '13300' => ' Valdepeñas',
171             '13500' => ' Puertollano',
172             '13600' => ' Alcázar de San Juan',
173             '13200' => ' Manzanares, Ciudad Real',
174             '17210' => 'Calella de Pallafrugell',
175             '17211' => 'Llafranc',
176             '17212' => 'Tamariu',
177             '17220' => 'Sant Feliu de Guíxols',
178             '17230' => 'Palamós',
179             '17246' => 'Santa Cristina d\'Aro',
180             '17248' => 'Platja d\'Aro',
181             '17249' => 'Platja d\'Aro',
182             '17250' => 'Castell-Platja d\'Aro',
183             '17251' => 'Sant Antoni de Calonge',
184             '17252' => 'Sant Antoni de Calonge',
185             '17255' => 'Begur, Spain',
186             '17256' => 'Pals',
187             '17257' => 'Torroella de Montgrí',
188             '17258' => 'L’Estartit',
189             '17300' => 'Blanes',
190             '17310' => 'Lloret de Mar',
191             '17320' => 'Tossa de Mar',
192             '18140' => 'La Zubia',
193             '18230' => 'Atarfe',
194             '18300' => 'Loja, Granada',
195             '18314' => 'Fuente Camacho',
196             '18412' => 'Bubión',
197             '18697' => 'La Herradura',
198             '18690' => 'Almuñécar',
199             '18740' => 'Gualchos',
200             '21400' => 'Ayamonte',
201             '21700' => 'La Palma del Condado',
202             '21710' => 'Bollullos Par del Condado',
203             '25220' => 'Bell-Lloc d\'Urgell',
204             '25250' => 'Bellpuig',
205             '25280' => 'Solsona, Lleida',
206             '25560' => 'Sort, Lleida',
207             '25566' => 'Soriguera, Vilamur, Llagunes',
208             '25567' => 'Llessui, Altron',
209             '25568' => 'Enviny, Olp, Pujalt, Pallars',
210             '25569' => 'Malmercat, Tornafort',
211             '25570' => 'Ribera de Cardós',
212             '25571' => 'Ainet de Cardós, Esterri de Cardós',
213             '25572' => 'Estaon',
214             '25573' => 'Ainet de Besan, Araós',
215             '25574' => 'Alins, Tor, Pallars',
216             '25575' => 'Àreu',
217             '25576' => 'Lladorre',
218             '25577' => 'Tavascan',
219             '25580' => 'Esterri d\'Àneu',
220             '25586' => 'Alòs d\'Isil, Isil, Lleida',
221             '25587' => 'València d\'Àneu, Sorpe',
222             '25588' => 'Escalarre, Unarre',
223             '25589' => 'Son, Lleida',
224             '25590' => 'Gerri de la Sal',
225             '25591' => 'Peramea',
226             '25592' => 'Baen, Lleida',
227             '25593' => 'Baro, Lleida, Arcalís',
228             '25594' => 'Rialp, Surp, Caregue, Roní, Montenartró',
229             '25595' => 'Llavorsí, Farrera, Tírvia',
230             '25596' => 'Escaló, Escart',
231             '25597' => 'Espot, La Guingueta d\'Àneu, Jou, Lleida',
232             '25620' => 'Tremp',
233             '28100' => 'Alcobendas',
234             '28109' => 'Alcobendas',
235             # '28120' => 'San Sebastián de los Reyes', # collision with Colmenar Viejo
236             '28700' => 'San Sebastián de los Reyes',
237             '28701' => 'San Sebastián de los Reyes',
238             # '28707' => 'San Sebastián de los Reyes', # collision with Colmenar Viejo
239             '28709' => 'San Sebastián de los Reyes',
240             '28120' => 'Colmenar Viejo',
241             '28707' => 'Colmenar Viejo',
242             '28770' => 'Colmenar Viejo',
243             '28780' => 'Colmenar Viejo',
244             '28220' => 'Majadahonda',
245             '28223' => 'Pozuelo de Alarcón',
246             '28224' => 'Pozuelo de Alarcón',
247             '28230' => 'Las Rozas de Madrid',
248             '28232' => 'Las Rozas de Madrid',
249             '28290' => 'Las Rozas de Madrid',
250             '28300' => 'Aranjuez',
251             '28320' => 'Pinto, Madrid',
252             '28340' => 'Valdemoro',
253             '28400' => 'Collado Villalba',
254             '28409' => 'Collado Villalba',
255             '28410' => 'Manzanares el Real',
256             '28500' => 'Arganda del Rey',
257             '28529' => 'Arganda del Rey',
258             '28520' => 'Rivas-Vaciamadrid',
259             '28521' => 'Rivas-Vaciamadrid',
260             '28522' => 'Rivas-Vaciamadrid',
261             '28523' => 'Rivas-Vaciamadrid',
262             # '28529' => 'Rivas-Vaciamadrid', # collision with Arganda del Rey
263             '28600' => 'Navalcarnero',
264             '28608' => 'Navalcarnero',
265             '28660' => 'Boadilla del Monte',
266             '28668' => 'Boadilla del Monte',
267             '28669' => 'Boadilla del Monte',
268             '28670' => 'Villaviciosa de Odón',
269             '28679' => 'Villaviciosa de Odón',
270             '28690' => 'Villanueva de la Cañada',
271             '28691' => 'Villanueva de la Cañada',
272             '28692' => 'Villanueva de la Cañada',
273             '28760' => 'Tres Cantos',
274             '28761' => 'Tres Cantos',
275             '28790' => 'Tres Cantos',
276             '28800' => 'Alcalá de Henares',
277             '28801' => 'Alcalá de Henares',
278             '28802' => 'Alcalá de Henares',
279             '28803' => 'Alcalá de Henares',
280             '28804' => 'Alcalá de Henares',
281             '28805' => 'Alcalá de Henares',
282             '28806' => 'Alcalá de Henares',
283             '28807' => 'Alcalá de Henares',
284             '28808' => 'Alcalá de Henares',
285             '28809' => 'Alcalá de Henares',
286             '28820' => 'Coslada',
287             '28830' => 'San Fernando de Henares',
288             '28831' => 'San Fernando de Henares',
289             # '28850' => 'San Fernando de Henares',
290             '28850' => 'Torrejón de Ardoz',
291             '28860' => 'Paracuellos de Jarama',
292 10         8 (map { $_ => 'Getafe' } 28900..28909),
293 10         9 (map { $_ => 'Leganés' } 28910..28919),
294 10         8 (map { $_ => 'Alcorcón' } 28920..28929),
295 10         8 (map { $_ => 'Móstoles' } 28930..28939),
296 9         10 (map { $_ => 'Fuenlabrada' } 28941..28949), # 28940 collides with Humanes de Madrid
297             '28940' => 'Humanes de Madrid',
298             '28970' => 'Humanes de Madrid',
299             '28980' => 'Parla',
300             '28981' => 'Parla',
301             '29011' => 'Málaga',
302             '29100' => 'Coín',
303             '29120' => 'Alhaurín el Grande',
304             '29130' => 'Alhaurín de la Torre',
305             '29170' => 'Colmenar, Málaga',
306             '29180' => 'Riogordo',
307             '29194' => 'Alfarnate',
308             # '29194' => 'Alfarnatejo',
309             '29195' => 'Comares',
310             '29197' => 'Totalán',
311             '29400' => 'Ronda',
312             '29480' => 'Gaucín',
313             '29490' => 'Gaucín Estación',
314             '29600' => 'Elviria',
315             # '29600' => 'Marbella', # collides with Elviria
316             '29610' => 'Ojén',
317             '29620' => 'Torremolinos',
318             '29630' => 'Benalmádena Costa',
319             '29631' => 'Arroyo de la Miel',
320             '29639' => 'Benalmádena Pueblo',
321             '29641' => 'Fuengirola',
322             '29640' => 'Las Lagunas de Mijas',
323             '29649' => 'El Chaparral (Mijas Costa)',
324             # '29649' => 'Mijas Costa',
325             '29650' => 'Mijas',
326             '29660' => 'Nueva Andalucia, Málaga',
327             # '29660' => 'Puerto Banús', # collides with Nueva Andalucia, Málaga
328             '29670' => 'San Pedro de Alcántara',
329             '29678' => 'Cerro Artola',
330             # '29678' => 'Guadalmina (San Pedro, Málaga)', # collides with Cerro Artola
331             '29679' => 'Benahavís',
332             '29680' => 'Estepona',
333             '29688' => 'Atalaya Isdabe (Estepona)',
334             # '29688' => 'Benamara, Urbanization (Estepona)',
335             # '29688' => 'Benavista, El Pilar, El Paraíso, Málagaíso, Urbanization (Estepona)',
336             # '29688' => 'Cancelada (Estepona)',
337             '29689' => 'Cancelada Playa',
338             '29690' => 'Casares, Málaga',
339             '29691' => 'Manilva',
340             '29692' => 'Castillo de Santa Catalina (Málaga) (San Luis de Sabinillas)',
341             # '29692' => 'Puerto de La Duquesa',
342             # '29692' => 'San Luis de Sabinillas',
343             '29693' => 'Arroyo Vaquero, Urbanization (Estepona)',
344             # '29693' => 'Bahia Dorada, Urbanization (Estepona)',
345             # '29693' => 'Buenas Noches, Urbanization (Estepona)',
346             '29700' => 'Vélez-Málaga',
347             '29710' => 'Periana',
348             '29711' => 'Alcaucín',
349             '29712' => 'Viñuela',
350             '29714' => 'Salares',
351             '29715' => 'Sedella',
352             '29716' => 'Canillas de Aceituno',
353             '29717' => 'Arenas, Málaga',
354             '29718' => 'Almáchar',
355             # '29718' => 'Benemargosa',
356             # '29718' => 'Cútar',
357             # '29718' => 'El Borge',
358             '29719' => 'Benamocarra',
359             # '29719' => 'Iznate',
360             '29730' => 'Rincón de la Victoria',
361             '29740' => 'Torre del Mar',
362             '29750' => 'Algarrobo, Spain',
363             '29751' => 'Caleta de Velez',
364             '29752' => 'Sayalonga',
365             '29753' => 'Árchez',
366             '29754' => 'Cómpeta',
367             '29755' => 'Canillas de Albaida',
368             '29770' => 'Torrox',
369             '29780' => 'Nerja',
370             '29787' => 'Cueva de Nerja',
371             '29788' => 'Frigiliana',
372             '29791' => 'Macharaviaya',
373 12         10 (map { $_ => 'Murcia' } 30001..30012),
374             '30100' => 'Espinardo',
375             '30110' => 'Cabezo de Torres',
376             '30120' => 'El Palmar, Murcia',
377             '30130' => 'Beniel',
378             '30139' => 'El Raal',
379             '30140' => 'Santomera',
380             '30148' => 'La Matanza, Murcia',
381             '30149' => 'El Siscar',
382             '30150' => 'La Alberca, Murcia',
383             '30151' => 'Santo Ángel, MurciaÁngel',
384             '30152' => 'Aljucer',
385             '30153' => 'Corvera (Murcia)',
386             '30154' => 'Valladolises',
387             '30155' => 'Baños y Mendigo',
388             '30156' => 'Los Martínez del Puerto',
389             '30157' => 'Algezares',
390             '30158' => 'Los Garres',
391             '30160' => 'Monteagudo, Murcia',
392             '30161' => 'Llano de Brujas',
393             '30162' => 'Santa Cruz, Murcia',
394             '30163' => 'Cobatillas, El Esparragal',
395             '30164' => 'Cañada de San Pedro',
396             '30165' => 'Rincón de Seca',
397             '30166' => 'Nonduermas',
398             '30167' => 'La Raya',
399             '30168' => 'Era Alta',
400             '30169' => 'San Ginés, Murciaés',
401             '30170' => 'Mula, Spain',
402             '30176' => 'Pliego',
403             '30177' => 'Casas Nuevas',
404             '30178' => 'Fuente Librilla',
405             '30179' => 'Barqueros',
406             '30180' => 'Bullas',
407             '30189' => 'Chaparral, Murcia',
408             '30190' => 'Albudeite',
409             '30191' => 'Campos del Río',
410             '30192' => 'Rodeo de Enmedio',
411             '30193' => 'Yéchar, Puebla de Mula, Baños de Mula',
412             '30194' => 'Niño de Mula',
413             '30195' => 'Archivel, Noguericas',
414             '30196' => 'Bajil',
415 6         8 (map { $_ => 'Cartagena, Spain' } 30200..30205),
416             '30400' => 'Caravaca de la Cruz',
417             '30510' => 'Yecla',
418             '30520' => 'Jumilla',
419             '30550' => 'Abarán',
420             '30559' => 'Abarán',
421             '30800' => 'Lorca, Spain',
422             '30813' => 'Lorca, Spain',
423             '30815' => 'Lorca, Spain',
424             '30840' => 'Alhama de Murcia',
425             '30848' => 'Alhama de Murcia',
426             '30849' => 'Alhama de Murcia',
427             '35011' => 'Ciudad Alta, Las Palmas de Gran Canaria',
428             '35017' => 'Las Palmas',
429             '35018' => 'Las Palmas',
430             '35100' => 'Playa del Inglés',
431             '35220' => 'Jinamar - Telde',
432             '35240' => 'Cerecinos del Carrizal',
433             '35290' => 'Maspalomas',
434             '35470' => 'La Aldea de San Nicolás',
435             '35500' => 'Arrecife',
436             '35508' => 'Costa Teguise',
437             '35510' => 'Puerto del Carmen',
438             '35520' => 'Haría (municipality)ía',
439             # '35521..35529' => '''not used''',
440             '35530' => 'Teguise (municipality)',
441             # '35531..35549' => '''not used''',
442             '35550' => 'San Bartolomé, Las Palmasé',
443             # '35551–35559' => '''not used''',
444             '35560' => 'Tinajo, Las Palmas',
445             # '35561..35569' => '''not used''',
446             '35570' => 'Yaiza, Las Palmas',
447             # '35571' => '''not used''',
448             '35572' => 'Tías, Las Palmasías',
449             # '35573..35799' => '''not used''',
450             '35600' => 'Puerto del Rosario',
451             '35628' => 'Pájara and Tuineje, Las Palmas',
452             # '35629' => '''not used''',
453             '35630' => 'Antigua, Fuerteventura',
454             # '35631..35636' => '''not used''',
455             '35637' => 'Betancuria',
456             # '35638 and 35639' => '''not used''',
457             '35640' => 'La Oliva',
458             # '35641..35699' => '''not used''',
459             '37789' => 'Buenavista, Spain',
460             '38000' => 'Santa Cruz de Tenerife',
461             '41092' => 'Isla de la Cartuja',
462             '41500' => 'Alcalá de Guadaíra',
463             '41927' => 'Mairena del Aljarafe',
464 26         19 (map { $_ => 'Valencia' } 46000..46025),
465             '46100' => 'Burjassot',
466             '46120' => 'Alboraya',
467             '46134' => 'Foios',
468             '46182' => 'Paterna(Municipality of Paterna)',
469             '46530' => 'Puçol',
470             '46200' => 'Paiporta',
471             '46300' => 'Utiel and Aldea de Estenas',
472             '46400' => 'Cullera and El Caño',
473             '46410' => 'Sueca (city)',
474             '46420' => 'El Perelló',
475             '46500' => 'Sagunto',
476             '46600' => 'Alzira, Valencia',
477             '46700' => 'Gandia',
478             '46710' => 'Daimuz',
479             '46800' => 'Xàtiva',
480             '46900' => 'Torrent, Valencia',
481             '46901' => 'El Vedat de Torrent',
482             '46920' => 'Mislata',
483             '46940' => 'Manises',
484             '46980' => 'Paterna',
485 15         19 (map { $_ => 'Bilbao' } 48001..48015),
486             # '48003' => 'Bilbao, Arrigorriaga',
487             '48100' => 'Morga, Mungia',
488             '48110' => 'Gatika',
489             '48111' => 'Laukiz',
490             '48112' => 'Maruri-Jatabe',
491             '48113' => 'Gamiz-Fika',
492             '48114' => 'Arrieta',
493             '48115' => 'Morga',
494             '48116' => 'Fruiz',
495             '48120' => 'Meñaka',
496             '48130' => 'Bakio',
497             '48140' => 'Arantzazu, Igorre',
498             '48141' => 'Dima, Spain',
499             '48142' => 'Artea',
500             '48143' => 'Areatza',
501             '48144' => 'Zeanuri',
502             '48145' => 'Ubide',
503             '48150' => 'Sondika',
504             '48160' => 'Loiu, Derio',
505             '48170' => 'Zamudio',
506             '48180' => 'Loiu',
507 1         8 (map { $_ => 'Sopuerta' } 48190..48190), # 48191 collides with Galdames
508             '48191' => 'Galdames',
509             '48192' => 'Gordexola',
510             '48195' => 'Larrabetzu',
511             '48196' => 'Lezama',
512             '48200' => 'Durango, Biscay, Garai, Biscay|Garay',
513             '48210' => 'Otxandio',
514             '48211' => 'Abadiño',
515             '48212' => 'Mañaria',
516             '48213' => 'Izurtza',
517             '48215' => 'Iurreta',
518             '48220' => 'Abadiño',
519             '48230' => 'Elorrio',
520             '48240' => 'Berriz',
521             # '48240' => 'Abadiño',
522             '48250' => 'Zaldibar',
523             '48260' => 'Ermua',
524             '48269' => 'Mallabia',
525             '48270' => 'Markina-Xemein, Ziortza-Bolibar',
526             '48277' => 'Etxebarria',
527             '48280' => 'Mendexa, Lekeitio',
528             '48287' => 'Ea, Biscay',
529             '48288' => 'Ispaster',
530             '48289' => 'Mendexa, Amoroto, Gizaburuaga',
531             '48291' => 'Atxondo',
532             '48300' => 'Gernika-Lumo, Ajangiz',
533             '48309' => 'Errigoiti',
534             '48310' => 'Elantxobe',
535             '48311' => 'Ibarrangelu',
536             '48312' => 'Nabarniz',
537             '48313' => 'Ereño',
538             '48314' => 'Gautegiz Arteaga',
539             '48315' => 'Kortezubi',
540             '48320' => 'Ajangiz',
541             '48330' => 'Lemoa',
542             '48340' => 'Amorebieta-Etxano',
543             '48350' => 'Busturia',
544             '48360' => 'Mundaka',
545             '48370' => 'Bermeo',
546             '48380' => 'Aulesti',
547             '48381' => 'Munitibar-Arbatzegi Gerrikaitz,',
548             '48382' => 'Mendata',
549             '48383' => 'Arratzu',
550             '48390' => 'Bedia',
551             '48392' => 'Muxika',
552             '48393' => 'Kortezubi, Forua',
553             '48394' => 'Murueta',
554             '48395' => 'Sukarrieta',
555             '48410' => 'Orozko',
556             '48450' => 'Etxebarri',
557             '48460' => 'Orduña',
558             '48480' => 'Zaratamo, Arrigorriaga',
559             '48490' => 'Ugao-Miraballes, Zeberio',
560             '48498' => 'Arrankudiaga, Arakaldo',
561             '48499' => 'Zeberio',
562             '48500' => 'Abanto y Ciérbana-Abanto Zierbena',
563             '48540' => 'Abanto y Ciérbana-Abanto Zierbena',
564             '48508' => 'Ciérbana-Zierbena',
565             '48510' => 'Valle de Trápaga-Trapagaran',
566             '48520' => 'Valle de Trápaga-Trapagaran',
567             '48530' => 'Ortuella',
568             '48550' => 'Muskiz',
569             '48600' => 'Sopelana',
570             '48610' => 'Urduliz',
571             '48620' => 'Lemoiz, Plentzia',
572             '48630' => 'Gorliz',
573             '48640' => 'Berango',
574             '48650' => 'Barrika',
575             '48700' => 'Ondarroa',
576             '48710' => 'Berriatua',
577             '48800' => 'Balmaseda',
578             '48810' => 'Alonsotegi',
579             '48820' => 'Güeñes',
580             # '48830' => 'Güeñes',
581             '48840' => 'Güeñes',
582             '48830' => 'Sodupe',
583             '48850' => 'Zalla',
584             '48860' => 'Zalla',
585             '48879' => 'Trucios-Turtzioz, Artzentales, Sopuerta',
586             '48880' => 'Trucios-Turtzioz',
587 1     1   4 (map { $_ => 'Karrantza-Valle de Carranza' } 48890..48891),
  2         928  
588             '48895' => 'Lanestosa',
589             '48901' => 'Barakaldo',
590             '48902' => 'Barakaldo',
591             '48903' => 'Barakaldo',
592             '48910' => 'Sestao',
593             '48920' => 'Portugalete',
594             '48930' => 'Getxo',
595             '48940' => 'Leioa',
596             '48950' => 'Erandio',
597             '48960' => 'Galdakao',
598             '48970' => 'Basauri',
599             '48980' => 'Santurtzi',
600             '48991' => 'Getxo',
601             '48992' => 'Getxo',
602             '48993' => 'Getxo',
603             '51002' => 'Ceuta',
604             '51003' => 'Ceuta',
605             '51004' => 'Ceuta',
606             '51005' => 'Ceuta',
607             '51070' => 'Ceuta',
608             '51071' => 'Ceuta',
609             '51081' => 'Ceuta',
610             '52000' => 'Melilla',
611             '52001' => 'Melilla',
612             '52002' => 'Melilla',
613             '52003' => 'Melilla',
614             '52004' => 'Melilla',
615             '52005' => 'Melilla',
616             '52006' => 'Melilla',
617             '52070' => 'Melilla',
618             '52071' => 'Melilla',
619             '52081' => 'Melilla',
620             ); }
621              
622             1;