block by michalskop 91a24fcaba5e2caa42d8a596f8abf4a2

CZ: Elections 2017, PCA

Full Screen

Political map of Czechia - Elections 2017

Position of districts, towns, regions in a political space based on the elections results. Mathod: Weighted MDS, rotated by PCA

Analysis flow

  1. Download from https://volby.cz/opendata/ps2017/ps2017_opendata.htm
  2. cz_2017_okrsky_neuplny.csv - manually from pst4p.csv (pivot table) and pst4.csv
  3. more_info_okrsky.py - using info from previous elections (ep_2014_okrsky.csv)
  4. manually add missing info to cz_2017_okrsky.csv using https://volby.cz/pls/ps2017/ps311?xjazyk=CZ&xkraj=2&xobec=500194
  5. csv2matrix_db_selected_voted.py - distance matrix based on sample: raw_matrix_voted.csv
  6. create manually pbop.csv+ correct manually Praha’s subregion id, using e.g. https://volby.cz/pls/ps2017/ps34?xjazyk=CZ&xkraj=4&xobec=554791
  7. create districts.csv manually from cz_2017_okrsky.csv
  8. district2regions.py - creating regions_1.csv, regions_2.csv, regions_3.csv and regions_4.csv
  9. manually cz_total.csv from regions_1.csv
  10. anal.r
  11. create_data2show.py creates data2show.csv
  12. add_parents.py
  13. ellipse sizes manually cz_2017_show.ods

index.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Explodable</title>
  <!--<link rel="stylesheet" href="bootstrap.min.css">-->
  <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" rel="stylesheet">
  <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
  <script src="//d3js.org/d3.v3.min.js"></script>
  <script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
  <!--<script src="d3.v3.min.js"></script>-->
  <script src="d3.tip.js"></script>
  <!--<script src="jquery-1.11.1.min.js"></script>-->
  <style>

    .circle {
      fill: #888;
      stroke-opacity: 0.01;
      stroke: #888;
      stroke-width: 0;
      fill-opacity: 0.2;
      visibility: hidden;
    }
    .party {
      visibility: hidden;
      fill-opacity: 0.01;
      stroke-opacity: 1;
      /*stroke: #f00;*/
    }
    .text {
        visibility: hidden;
        fill-opacity: 0.99;
        /*fill: #444;*/
    }
    .text.active {
        fill-opacity: 0.85;
    }

    .big {
      stroke-width: 2px;
    }

    .small {

    }

    .stronger {
      color: yellow;
    }
    .visible {
      visibility: visible;
    }
    .active {
      fill-opacity: 0.75;
      stroke-opacity: 1;
    }
    .ellipse {
        fill-opacity: 0;
        stroke: #f00;
        stroke-opacity: 0.75;
    }


    /* D3 tips */
    .d3-tip {
      line-height: 1;
      font-weight: bold;
      padding: 12px;
      background: rgba(0, 0, 0, 0.8);
      color: #fff;
      border-radius: 2px;
    }
    /* Creates a small triangle extender for the tooltip */
    /*.d3-tip:after {
      box-sizing: border-box;
      display: inline;
      font-size: 10px;
      width: 100%;
      line-height: 1;
      color: rgba(0, 0, 0, 0.8);
      content: "\25BC";
      position: absolute;
      text-align: center;
    }*/
    /* Style northward tooltips differently */
    .d3-tip.n:after {
      margin: -1px 0 0 0;
      top: 100%;
      left: 0;
    }
    .top {
        width: 100vw;
        padding: 10px;
        color: white;
        /*font-size: 3em;*/
        /*background-color: #fed201;*/
    }
  </style>
</head>
<body>
    <h1 class="text-center top bg-primary">
        <strong>POLITICAL MAP OF CZECHIA: ELECTIONS 2017</strong><br/>
        <small>POLITICKÁ MAPA ČR: VOLBY 2017</small><br />
    </h1>

  <!-- chart -->
  <div class="row">
      <div class="col-1" style="">
          <img src="nuts2.png" width="150" />
      </div>
      <p class="col-9" id="chart"></p>
      <div class="col-2">
          <img src="windrose.png" width="150" />
      </div>
  </div>


  <div class="alert alert-info" >Reset: <button id="reset-0" value="0" class="reset btn btn-primary">Czech Republic</button> <button id="reset-1" value="1" class="reset btn btn-primary">Regions (kraje)</button> <button id="reset-2" value="2" class="reset btn btn-primary">Sub-Regions (okresy)</button> <button id="reset-3" value="3" class="reset btn btn-primary">Towns (obce)</button> <button id="reset-5" value="5" class="reset btn btn-primary">Districts (okrsky)</button> | <button class="party-toggle doshow btn btn-success">Toggle parties</button>
  </div>
  <div class="alert alert-info container">
      <i class="fa fa-info-circle"></i> Explorable: General Elections in Czechia 2017, MDS based on results from districts (weighted)<br />
     90% of people live inside the ellipse (on district level)
  </div>

  <script type="text/javascript">

	// Chart dimensions.
	var margin = {top: 10, right: 0, bottom: 0, left: 30},
		width = 960 - margin.right,
		height = 500 - margin.top - margin.bottom;
	//Various scales. These domains make assumptions of data, naturally.
    var xmax = 450,
        ymax = 15;
    var
	xScale = d3.scale.linear()
	  .domain([-xmax, xmax])
	  .range([0, width]),
    yScale = d3.scale.linear()
      .domain([-ymax, ymax])
      .range([height, 0]),
    radiusScale = d3.scale.sqrt()
      .domain([0, 1000000])
      .range([0, 50]);


    function region2color(r){
      if (r == 'Hlavní město Praha') return '#b276b2';
      if (r == 'Středočeský kraj') return '#f17cb0';
      if ((r == 'Plzeňský kraj') || (r == 'Jihočeský kraj')) return '#5DA5DA' //'#aec7e8';
      if ((r == 'Ústecký kraj') || (r == 'Karlovarský kraj')) return '#FAA43A';
      if ((r == 'Královéhradecký kraj') || (r == 'Pardubický kraj') || (r == 'Liberecký kraj')) return '#60bd68';
      if ((r == 'Zlínský kraj') || (r == 'Olomoucký kraj')) return '#decf3f';
      if ((r == 'Jihomoravský kraj') || (r == 'Kraj Vysočina')) return '#b2912f';
      if (r == 'Moravskoslezský kraj') return '#f15854';
      return '#4d4d4d';
    }

    /* Initialize tooltip */
    tip = d3.tip().attr('class', 'd3-tip').html(function(d) {
      return '<span class="stronger">' + d['name'] + "</span><br>";
    });

    // Create the SVG container and set the origin.
    var svg = d3.select("#chart").append("svg")
	  .attr("width", width + margin.left + margin.right)
	  .attr("height", height + margin.top + margin.bottom)
    .append("g")
	  .attr("transform", "translate(" + margin.left + "," + margin.top + ")");


	/* Invoke the tip in the context of your visualization */
    svg.call(tip);

	// Add tooltip div
    var div = d3.select("body").append("div")
    .attr("class", "tooltip")
    .style("opacity", 1e-6);

	// Load the data.
	d3.csv("cz_2017_show.csv", function(data) {
        data.sort(function(a, b) {
            return parseFloat(b.size) - parseFloat(a.size);
        });

	  var circle = svg.selectAll(".circle")
		  .data(data)
		.enter().append("circle")
		  .attr("r",function(d) {
			  return Math.max(1,radiusScale(d['size']));
			})
		  .attr("cx", function(d) {return xScale(d['dim1']);})
		  .attr("cy", function(d) {return yScale(d['dim2']);})
		  .attr("class", function(d) {
		      clas = "circle ";
		      if (d['size'] > 1500) clas += "big";
		      else clas += "small";
		      if (d['level'] == 3) clas += " active explorable visible";
		      else clas += " explorable";
		      clas += " level-" + d['level']
		      return clas;
		  })
		  .attr("style", function(d) {
		    return "stroke:" + region2color(d['region']) + ";fill:" + region2color(d['region']);
		  })
		  .attr("id", function(d) {return "id-" + d.id;})
		  .on("mouseover", tip.show)
	      .on("mouseout", tip.hide)
	      .on("click", clicked)
    //texts:
    // svg.selectAll(".text")
    //           .data(data)
    //     .enter().append("text")
    //       .attr("x", function(d) {return xScale(d['dim1']);})
    //       .attr("y", function(d) {return yScale(d['dim2']) + Math.max(Math.min(70, Math.sqrt(parseInt(d['size'])) / 10), 2) / 3;})
    //       .attr("font-size", function(d) {
    //           if (d['size'] > 10) {
    //               var si = 0;
    //               si = Math.max(Math.min(70, Math.sqrt(parseInt(d['size'])) / 10), 2);
    //               return si + "px"
    //           } else {
    //               return 0
    //           }
    //       })
    //       .attr("font-weight", function(d) {
    //           if (d['size'] > 50000) {
    //               return "bold";
    //           }
    //           return "default";
    //       })
    //       .attr("class", function(d) {
	// 	      clas = "text ";
	// 	      if (d['level'] == 2) clas += " visible";
	// 	      else clas += "";
	// 	      clas += " level-" + d['level']
	// 	      return clas;
	// 	  })
    //       .attr("fill", function(d) {
    //           return region2color(d['region'])
    //       })
    //       .attr("id", function(d) {return "text-id-" + d.id;})
    //       .attr("text-anchor", "middle")
    //       .text(function(d) {return d['name']});


	  function clicked(item) {
	    if (this.classList.contains("explored")) {
	      deexplore(item);
	    } else {
          if(this.classList.contains("explorable")) {
            explore(item);
          }
        }
	  }

	  function deexplore(item) {
	    svg.selectAll(".circle").filter(
	        function(d,i) {
	          return d.parent_id == item.id;
	        }
	      )
	      .transition()
	          .duration(200)
	          .attr("cx", function(d) {
	            return xScale(item.dim1);
	          })
	          .attr("cy", function(d) {
	            return yScale(item['dim2']);
	          })
	          .each("end", atEnd);

          svg.selectAll(".text").filter(
  	        function(d, i) {
  	          return d.parent_id == item.id;
  	        }
  	      )
	  }

	  function atEnd(it) {
          svg.selectAll(".circle").filter(
            function(d,i) {
              return d.id == it.id
            }
          )
          .classed("visible",false);

          svg.selectAll(".text").filter(
  	        function(d, i) {
  	          return d.parent_id == item.id;
  	        }
  	      )
          .classed("visible",false);

	      svg.selectAll(".circle").filter(
	          function(d,i) {
	            return d.id == it.parent_id;
	          }
	        ).classed("active",true)
	        .classed("explorable",true)
	        .classed("explored",false)

        svg.selectAll(".text").filter(
  	          function(d,i) {
  	            return d.id == it.parent_id;
  	          }
  	        ).classed("active",true)
  	        .classed("explorable",true)
  	        .classed("explored",false)
      }

      function explore(item) {
        svg.selectAll(".circle")
          .classed("active",false);

        svg.selectAll(".text")
            .classed("active",false);

        svg.selectAll(".circle").filter(
          function(d,i) {
            return d.parent_id == item.id;
          }
        )
        .classed("visible",true)
        .classed("active",true)
        .attr("cx", function(d) {
          return xScale(item.dim1);
        })
        .attr("cy", function(d) {
          return yScale(item.dim2);
        })
        .transition()
          .duration(200)
          .attr("cx", function(d) {
            return xScale(d.dim1);
          })
          .attr("cy", function(d) {
            return yScale(d['dim2']);
          });

          svg.selectAll(".text").filter(
            function(d,i) {
              return d.parent_id == item.id;
            }
          )
          .classed("visible",true)
          .classed("active",true)

          svg.select("#id-"+item.id)
            .classed("explorable",false)
            .classed("active",false)
            .classed("explored",true)

            // texts:
            // svg.select("#text-id-"+item.id)
            //   .classed("explorable",false)
            //   .classed("active",false)
            //   .classed("explored",true)
      }

	});

	d3.csv("cz_2017_party.csv", function(data) {
	  var circle = svg.selectAll(".party")
		  .data(data)
		.enter().append("circle")
		  .attr("r",function(d) {
			  return Math.max(1,radiusScale(d['size']));
			})
		  .attr("cx", function(d) {return xScale(d['dim1']);})
		  .attr("cy", function(d) {return yScale(d['dim2']);})
		  .attr("class", function(d) {
		      clas = "party ";
		      if (d['size'] > 50000) clas += "big";
		      else clas += "small";
		      return clas;
		  })
          .attr("stroke", function(d) {return d['color']})
		  .on("mouseover", tip.show)
	      .on("mouseout", tip.hide)

    // partylines:
    //   var line = svg.selectAll(".partyline")
    //         .data(data)
    //     .enter().append("line")
    //         .attr("x1", function() {return xScale(-7)})
    //         .attr("y1", function() {return yScale(0.75)})
    //         .attr("x2", function(d) {return xScale(d['dim1'])})
    //         .attr("y2", function(d) {return yScale(d['dim2'])})
    //         .attr("stroke", function(d) {return d['color']})
    //         .attr("stroke-width", function(d) {
    //             if (parseInt(d['size']) > 50000) {
    //                 return parseInt(d['size'] / 50000)
    //             } else {
    //                 return 0
    //             }
    //         })


	})

    //ellipse is calculated to cover 90 % of the districts (voters)
    svg.append("ellipse")
        .attr("cx", function() {return xScale(0)})
        .attr("cy", function() {return yScale(0)})
        .attr("rx", function() {return 2.13*(xScale(114.5) - xScale(0))})
        .attr("ry", function() {return 2.13*(Math.abs(yScale(3.73) - yScale(0)))})
        .attr("class", "ellipse")
        .style("stroke-dasharray", ("3, 5"))

	$(document).ready(function(){
	  $('.reset').click(function() {
	    level = $(this).attr("value");
	    svg.selectAll(".circle").filter(
	        function(d,i) {
	          return d.level == level;
	        }
	      )
	      .classed("active",true)
	      .classed("explorable",true)
	      .classed("explored",false)
	      .classed("visible",true);

          // texts:
        // svg.selectAll(".text").filter(
  	  //       function(d,i) {
  	  //         return d.level == level;
  	  //       }
  	  //     )
  	  //     .classed("active",true)
  	  //     .classed("explorable",true)
  	  //     .classed("explored",false)
  	  //     .classed("visible",true);

	    svg.selectAll(".circle").filter(
	        function(d,i) {
	          return !(d.level == level);
	        }
	      )
	      .classed("active",false)
	      .classed("explorable",true)
	      .classed("explored",false)
	      .classed("visible",false);

        // texts:
        //   svg.selectAll(".text").filter(
        //       function(d,i) {
        //         return !(d.level == level);
        //       }
        //     )
        //     .classed("active",false)
        //     .classed("explorable",true)
        //     .classed("explored",false)
        //     .classed("visible",false);

	  });
	});

	  $('.party-toggle').click(function() {
	    if (this.classList.contains("doshow")) {
	      svg.selectAll(".party")
	        .classed("visible",true);
	    } else {
	      svg.selectAll(".party")
	        .classed("visible",false);
	    }
	    $('.party-toggle').toggleClass("doshow");
	  });

  </script>
</body>
</html>

add_parents.py

# -*- coding: utf-8 -*-
# python 3

import csv

i = 0
districts2towns = {}
towns2subr = {}
subr2reg = {}
regions = {}
dReader = csv.reader(open('cz_2017_okrsky.csv'))
for xrow in dReader:
    if i > 0:
        districts2towns[xrow[5] + '_' + xrow[7]] = xrow[5]
        towns2subr[xrow[5]] = xrow[3]
        subr2reg[xrow[3]] = xrow[1]
        regions[xrow[5] + '_' + xrow[7]] = xrow[2]
        regions[xrow[5]] = xrow[2]
        regions[xrow[3]] = xrow[2]
        regions[xrow[1]] = xrow[2]

    i = i + 1

towns2subr['554782'] = '1101'
towns2subr['582786'] = '6202'
towns2subr['554821'] = '8106'
towns2subr['554791'] = '3203'
regions['554782'] = 'Hlavní město Praha'
regions['582786'] = 'Jihomoravský kraj'
regions['554821'] = 'Moravskoslezský kraj'
regions['554791'] = 'Plzeňský kraj'
regions['2202'] = 'Hlavní město Praha'
regions['6202'] = 'Jihomoravský kraj'
regions['8106'] = 'Moravskoslezský kraj'
regions['3203'] = 'Plzeňský kraj'
regions['0'] = '-'

i = 0
parts = {}
with open("pbop.csv") as fin:
    dr = csv.DictReader(fin)
    for row in dr:
        parts[row['ČTVRŤ']] = row['OBEC']
        regions[row['ČTVRŤ']] = row['kraj jméno']

data2show = []
dReader = csv.reader(open('data2show.csv'))
for row in dReader:
    if i > 0:
        if row[4] in parts.keys():
            row[5] = parts[row[4]]
        elif int(row[7]) == 5:
            row[5] = districts2towns[row[4]]
        elif int(row[7]) == 3:
            row[5] = towns2subr[row[4]]
        elif int(row[7]) == 2:
            row[5] = subr2reg[row[4]]
        elif int(row[7]) == 1:
            row[5] = 0
        else:
            row[5] = '-'
        row[6] = regions[row[4]]
        # correct zahraničí
        if row[4] == '999997':
            row[0] = 'Zahraničí'
    data2show.append(row)
    i = i + 1
#  if i > 1:
#    raise(Exception,'')

with open('cz_2017_show.csv', 'w') as outfile:
    outwriter = csv.writer(outfile, quoting=csv.QUOTE_NONNUMERIC)
    for row in data2show:
        outwriter.writerow(row)

anal.r

setwd('~/dev/anal2017/mds/')

# Selected okrseks -> Dimensions (Selected districts positions)
###############################
D = read.csv('distance_matrix_voted.csv',stringsAsFactors = FALSE, header = TRUE)
Dm = data.matrix(D)
MDS = cmdscale(Dm,k=3,eig=T)
plot(MDS$points[,1],MDS$points[,2])
plot(MDS$eig)
options(scipen=999)
write.csv(MDS$points[,1:2],"coord_voted.csv")
###############################

# Dimensions (Selected districts positions) -> Parties (positions)
##############################
Xraw = read.csv('raw_matrix_voted.csv',stringsAsFactors = FALSE, header = FALSE)
Xraw[is.na(Xraw)] = 0
Xp = Xraw / apply(Xraw,1,sum)
Xps = apply(Xp,2,scale)
party = t(Xps)%*%MDS$points/sum(MDS$eig[MDS$eig>0])
plot(party[,1],party[,2])
write.csv(party,"party_coords.csv")

# Parties (positions) -> Districts (positions)
###############################
distr_raw = read.csv('districts.csv', header = T)
distr_raw[is.na(distr_raw)] = 0
distr_ps = t(apply(distr_raw,1,scale))
distr = distr_ps %*% party
plot(distr[,1],distr[,2])
write.csv(distr,"distr_coords.csv")
# rotation
pca = princomp(distr[,1:2])
distr_rot = t(t(pca$loadings) %*% t(sweep(distr[,1:2], 2, t(pca$center))))
plot(distr_rot[,1], distr_rot[,2])
write.csv(distr_rot, "distr_coords_rot.csv")

# party rotation
party_rot = t(t(pca$loadings) %*% t(apply(party[,1:2],2,scale)))
party_rot[,1] = as.double(pca$sdev[1]) * party_rot[,1]
party_rot[,2] = as.double(pca$sdev[2]) * party_rot[,2]
colnames(party_rot) = c("dim1", "dim2")
parties = cbind(read.csv('cz_2017_party.csv', header=TRUE), party_rot)
write.csv(parties, 'cz_2017_party.csv')

# Parties (positions) -> Towns (positions)
###############################
towns_src = read.csv('regions_3.csv', header = F)
towns_raw = towns_src[,5:dim(towns_src)[2]]
towns_ps = t(apply(towns_raw,1,scale))
towns = towns_ps %*% party
plot(towns[,1],towns[,2])
write.csv(towns,"towns_coords.csv")
towns_rot = t(t(pca$loadings) %*% t(sweep(towns[,1:2], 2, t(pca$center))))
plot(towns_rot[,1], towns_rot[,2])
write.csv(towns_rot, "towns_coords_rot.csv")

# Parties (positions) -> subregions (positions)
###############################
subregions_src = read.csv('regions_2.csv', header = F)
subregions_raw = subregions_src[,5:dim(subregions_src)[2]]
subregions_ps = t(apply(subregions_raw,1,scale))
subregions = subregions_ps %*% party
plot(subregions[,1],subregions[,2])
write.csv(subregions,"subregions_coords.csv")
subregions_rot = t(t(pca$loadings) %*% t(sweep(subregions[,1:2], 2, t(pca$center))))
plot(subregions_rot[,1], subregions_rot[,2])
write.csv(subregions_rot, "subregions_coords_rot.csv")

# Parties (positions) -> regions (positions)
###############################
regions_src = read.csv('regions_1.csv', header = F)
regions_raw = regions_src[,5:dim(regions_src)[2]]
regions_ps = t(apply(regions_raw,1,scale))
regions = regions_ps %*% party
plot(regions[,1],regions[,2])
write.csv(regions,"regions_coords.csv")
regions_rot = t(t(pca$loadings) %*% t(sweep(regions[,1:2], 2, t(pca$center))))
plot(regions_rot[,1], regions_rot[,2])
write.csv(regions_rot, "regions_coords_rot.csv")

# Parties (positions) -> CZ (positions)
###############################
cz_src = read.csv('regions_0.csv', header = F)
cz_raw = cz_src[,5:dim(cz_src)[2]]
cz_ps = t(apply(cz_raw,1,scale))
cz = cz_ps %*% party
write.csv(cz,"cz_coords.csv")
cz_rot = cz[,1:2] - t(pca$center)
plot(cz_rot[,1], cz_rot[,2])
write.csv(cz_rot, "cz_coords_rot.csv")

# Parties (positions) -> PBOP (positions)
###############################
pbop_src = read.csv('regions_4.csv', header = F)
pbop_raw = pbop_src[,5:dim(pbop_src)[2]]
pbop_ps = t(apply(pbop_raw,1,scale))
pbop = pbop_ps %*% party
plot(pbop[,1],pbop[,2])
write.csv(pbop,"pbop_coords.csv")
pbop_rot = t(t(pca$loadings) %*% t(sweep(pbop[,1:2], 2, t(pca$center))))
plot(pbop_rot[,1], pbop_rot[,2])
write.csv(pbop_rot, "pbop_coords_rot.csv")

#
# # WARNING:
# > dim(Xp)
# [1] 235  38
# > dim(apply(Xp,2,scale))
# [1] 235  38
# > dim(dr[1:2,])
# [1]  2 38
# > dim(apply(dr[1:2,],1,scale))
# [1] 38  2

create_data2show.py

# creates file 2 show

import csv

okrsky = []
with open("cz_2017_okrsky.csv") as fin:
    csvr = csv.reader(fin)
    i = 0
    for row in csvr:
        if i > 0:
            okrsky.append(row)
        i += 1
coords = []
with open("distr_coords_rot.csv") as fin:
    csvr = csv.reader(fin)
    i = 0
    for row in csvr:
        if i > 0:
            coords.append(row)
        i += 1

with open("data2show.csv", "w") as fout:
    header = ["name", "dim1", "dim2", "size", "id", "parent_id", "region", "level"]
    dw = csv.DictWriter(fout, header)
    dw.writeheader()
    for i in range(0, len(coords)):
        row = {
            "name": okrsky[i][6] + ' - ' + str(okrsky[i][7]),
            "dim1": coords[i][1],
            "dim2": coords[i][2],
            "size": okrsky[i][11],
            "id": okrsky[i][5] + "_" + okrsky[i][7],
            "parent_id": okrsky[i][5],
            "region": okrsky[i][2],
            "level": 5
        }
        dw.writerow(row)

    levels = [
        {"level": 4, "file": "pbop"},
        {"level": 3, "file": "towns"},
        {"level": 2, "file": "subregions"},
        {"level": 1, "file": "regions"},
        {"level": 0, "file": "cz"}
    ]
    for level in levels:
        regions = []
        with open("regions_" + str(level["level"]) + ".csv") as fin:
            csvr = csv.reader(fin)
            for row in csvr:
                regions.append(row)
        coords = []
        with open(level["file"] + "_coords_rot.csv") as fin:
            csvr = csv.reader(fin)
            i = 0
            for row in csvr:
                if i > 0:
                    coords.append(row)
                i += 1
        for i in range(0, len(coords)):
            row = {
                "name": regions[i][1],
                "dim1": coords[i][1],
                "dim2": coords[i][2],
                "size": regions[i][3],
                "id": regions[i][0],
                "parent_id": "",
                "region": "",
                "level": level['level']
            }
            dw.writerow(row)

csv2matrix_db_selected_voted.py

# -*- coding: utf-8 -*-
# python 3
import csv
import json
import random

data = {}
matrix_db = []
i = 0
starting = 12   # first column with values for parties
total = 43      # total number of columns
nvotes = 11  # column with n of votes
dReader = csv.reader(open('cz_2017_okrsky.csv'))
for row in dReader:
    if i > 0:
        if random.random() < int(row[nvotes]) / 7000000 * 5000:  # selecting some part of okrseks, weighted !!!
            data[row[5] + row[7]] = row
    else:
        frow = row

    i += 1

outfile = open('raw_matrix_voted.csv', 'w')
outwriter = csv.writer(outfile, quoting=csv.QUOTE_NONNUMERIC)
# first row
for key in sorted(data):
    outwriter.writerow(data[key][starting:])
outfile.close()


def distance(row1, row2, means):
    s = 0
    for i in range(starting, total):
        s = s + abs((int(row1[i]) - means[i] * int(row1[nvotes])) - (int(row2[i]) - means[i] * int(row2[nvotes])))
        return s / (int(row1[nvotes]) + int(row2[nvotes])) / 2


# means
means = [0] * (total)
valid = 0
for key in data:
    # data[key].append(int(data[key][10]) - int(data[key][10]))
    valid = valid + int(data[key][nvotes])
    for i in range(starting, total):
        if data[key][i] == '':
            data[key][i] = 0
        means[i] = means[i] + int(data[key][i])

for i in range(starting, total):
    means[i] = means[i] / valid

matrix = {}
i = 0
for k1 in data:
    for k2 in data:
        try:
            matrix[k1]
        except Exception:
            matrix[k1] = {}
        matrix[k1][k2] = distance(data[k1], data[k2], means)
        i += 1
        print(i)
#    if i>10:
#      print(matrix)
#      raise(Exception,'')


with open('distance_matrix_voted.csv', 'w') as outfile:
    outwriter = csv.writer(outfile, quoting=csv.QUOTE_NONNUMERIC)
    # first row
    row = []
    for k in sorted(matrix):
        row.append(k)
    outwriter.writerow(row)
    # others
    for k1 in sorted(matrix):
        row = []
        for k2 in sorted(matrix):
            row.append(matrix[k1][k2])
        outwriter.writerow(row)

more_info_okrsky.csv

cz_2017_party.csv

"","X.1","X","id","name","abbreviation","size","color","dim1","dim2","dim1.1","dim2.1","dim1","dim2"
"1",1,1,1,"Občanská demokratická strana","ODS",572962,"#004494",3.24875268889783,2.01996404403452,372.054936752421,7.53783740661778,372.054936752421,7.53783740661778
"2",2,2,2,"Řád národa - Vlastenecká unie","ŘN-VU",8735,"#2b468b",-0.243966375953231,-0.00112432058451153,-0.910401786629928,-0.128759885413685,-27.9396135277354,-0.00419559238392889
"3",3,3,3,"Cesta odpovědné společnosti","CESTA",3758,"#ab2324",-0.0201066062935877,-0.176075585357553,-2.3026566960394,-0.65705582117659,-2.3026566960394,-0.65705582117659
"4",4,4,4,"Česká strana sociálně demokratická","ČSSD",368347,"#F07D00",-1.22877663634042,-0.760706842900444,-4.58538780486655,-87.1179690869228,-140.722442578905,-2.83870621995443
"5",5,5,5,"Volte Pravý Blok www.cibulka.net","PB",491,"#888888",0.5132121594497,-0.169759157819547,58.7742853363858,-0.633485003709426,58.7742853363858,-0.633485003709426
"6",6,6,6,"Radostné Česko","RČ",3852,"#51ecf2",-0.141295949700741,0.0431085567792674,-0.527269729480211,4.93689514157503,-16.1815504790294,0.160866869286965
"7",7,7,7,"Starostové a nezávislí","STAN",262157,"#5d8c00",0.195817000747851,0.940947280549359,22.4254317902565,3.51130389173355,22.4254317902565,3.51130389173355
"8",8,8,8,"Komunistická strana Čech a Moravy","KSČM",393100,"#8c0000",-1.6562531288134,0.389569330645214,-6.18058862288543,44.614412531063,-189.678074047467,1.45374383355032
"9",9,9,9,"Strana zelených","Zelení",74335,"#06b15d",0.90622004538996,-0.146255766442874,103.782489453121,-0.545778124359432,103.782489453121,-0.545778124359432
"10",10,10,10,"ROZUMNÍ – stop migraci a diktátu EU","Rozumní",36528,"#6fb7c5",-0.586984775752917,0.93031385327127,-2.19043294995893,106.54177002195,-67.2229019967281,3.47162345973079
"11",11,11,11,"Společnost proti developerské výstavbě v Prokopském údolí","SPDVPÚ",438,"#676767",0.393847894277769,-0.130755309099426,45.1044038828644,-0.487935546652077,45.1044038828644,-0.487935546652077
"12",12,12,12,"Strana svobodných občanů","Svobodní",79229,"#009982",0.739755429816905,0.0683626819939048,2.76052247914528,7.82905802968249,84.7185630944912,0.255106908002748
"13",13,13,13,"Blok proti islamizaci - Obrana domova","BPI",5077,"#e30613",-0.224002543727997,0.290229637922085,-25.6533076598625,1.08304097179308,-25.6533076598625,1.08304097179308
"14",14,14,14,"Občanská demokratická aliance","ODA",8030,"#002d72",0.122220602119364,0.441238189447366,0.456086844335409,50.5316539571028,13.9969959999602,1.64655491738437
"15",15,15,15,"Česká pirátská strana","Piráti",546393,"#000000",1.63334616946663,1.18379730791063,187.054714214606,4.41753983481782,187.054714214606,4.41753983481782
"16",16,16,16,"Občané 2011","Občané 2011",359,"#CBD4FF",0.211381159386139,0.226299021611588,0.788804540843524,25.9163058057824,24.2078765043653,0.844473066351118
"17",17,17,17,"Unie hrdosti, aktivity, vlastenectví, empatie a lidskosti 2017","HAVEL",436,"#888888",0.204664542692852,1.01332821838149,23.4386734783699,3.78140560088447,23.4386734783699,3.78140560088447
"18",18,18,18,"Česká národní fronta","ČNF",117,"#F8F8F8",-0.347656665496513,-1.23165708959168,-1.29733963610831,-141.052318982202,-39.8144737624657,-4.59613670325882
"19",19,19,19,"Referendum o Evropské unii","REU",4276,"#034ea2",-0.00185438350583197,0.290127475079856,-0.212368439227399,1.08265973387155,-0.212368439227399,1.08265973387155
"20",20,20,20,"TOP 09","TOP 09",268811,"#723769",1.96311268347084,0.282413249310394,7.32568694109856,32.3426415218671,224.820364991959,1.05387279593576
"21",21,21,21,"ANO 2011","ANO",1500113,"#261060",-2.10789067921757,-1.97741446253292,-241.400687721593,-7.37905644810227,-241.400687721593,-7.37905644810227
"22",22,22,22,"Dobrá volba 2016","DV 2016",3722,"#d60a1e",-0.090608482474333,0.286093838071186,-0.338120874264546,32.764151359562,-10.3767003660896,1.06760753528491
"23",23,23,23,"Sdružení pro republiku - Republikánská strana Československa Miroslava Sládka","SPR-RSČ",9857,"#ed1f24",-0.457741258802272,-0.148898901312515,-52.4216249746085,-0.555641429080106,-52.4216249746085,-0.555641429080106
"24",24,24,24,"Křesťansko-demokratická unie - Československá strana lidová","KDU-ČSL",293643,"#e6ac21",-0.415645435591887,-1.29233532883843,-1.55105122863312,-148.001336228836,-47.6007105062331,-4.82256781370984
"25",25,25,25,"Česká strana národně sociální","ČSNS",1573,"#ffd132",-0.0845130869023947,0.323391098512723,-9.6786410703641,1.20678856959633,-9.6786410703641,1.20678856959633
"26",26,26,26,"Realisté","Realisté",35995,"#013888",0.506569303570037,0.0283215679143991,1.89034901723691,3.24345377077502,58.0135295753796,0.105686719855086
"27",27,27,27,"Sportovci pro společnost","SPS",10593,"#888888",-0.0593489593232954,0.547675844222533,-6.79678492696898,2.04374502480552,-6.79678492696898,2.04374502480552
"28",28,28,28,"Dělnická strana sociální spravedlnosti","DSSS",10402,"#183F7C",-0.592042992929067,-0.29089740403884,-2.20930854269721,-33.3142672358456,-67.802181139146,-1.08553285397713
"29",29,29,29,"Svoboda a přímá demokracie - Tomio Okamura","SPD",538574,"#0066a5",-1.92778315322257,-3.03321778902831,-220.774342594831,-11.3189650974626,-220.774342594831,-11.3189650974626
"30",30,30,30,"Strana práv občanů","SPO",18556,"#115787",-0.430107800355259,-0.368938945891762,-1.60501998833627,-42.2517714716639,-49.2569751476492,-1.37675806424084
"31",31,31,31,"Národ Sobě","NáS",300,"#e8e5ce",-0.0223207648825892,0.422855707781031,-2.55622743923755,1.57795757856531,-2.55622743923755,1.57795757856531

cz_coords.csv

"","V1","V2","V3"
"1",100.417569476904,19.1241244042961,-5.50751090977747

cz_coords_rot.csv

"","V1","V2"
"1",-6.88485284230231,0.754084605523254

d3.tip.js

// d3.tip
// Copyright (c) 2013 Justin Palmer
//
// Tooltips for d3.js SVG visualizations

(function (root, factory) {
  if (typeof define === 'function' && define.amd) {
    // AMD. Register as an anonymous module with d3 as a dependency.
    define(['d3'], factory)
  } else {
    // Browser global.
    root.d3.tip = factory(root.d3)
  }
}(this, function (d3) {

  // Public - contructs a new tooltip
  //
  // Returns a tip
  return function() {
    var direction = d3_tip_direction,
        offset    = d3_tip_offset,
        html      = d3_tip_html,
        node      = initNode(),
        svg       = null,
        point     = null,
        target    = null
  
    function tip(vis) {
      svg = getSVGNode(vis)
      point = svg.createSVGPoint()
      document.body.appendChild(node)
    }
  
    // Public - show the tooltip on the screen
    //
    // Returns a tip
    tip.show = function() {
      var args = Array.prototype.slice.call(arguments)
      if(args[args.length - 1] instanceof SVGElement) target = args.pop()
  
      var content = html.apply(this, args),
          poffset = offset.apply(this, args),
          dir     = direction.apply(this, args),
          nodel   = d3.select(node),
          i       = directions.length,
          coords,
          scrollTop  = document.documentElement.scrollTop || document.body.scrollTop,
          scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft
  
      nodel.html(content)
        .style({ opacity: 1, 'pointer-events': 'all' })
  
      while(i--) nodel.classed(directions[i], false)
      coords = direction_callbacks.get(dir).apply(this)
      nodel.classed(dir, true).style({
        top: (coords.top +  poffset[0]) + scrollTop + 'px',
        left: (coords.left + poffset[1]) + scrollLeft + 'px'
      })
  
      return tip
    }
  
    // Public - hide the tooltip
    //
    // Returns a tip
    tip.hide = function() {
      nodel = d3.select(node)
      nodel.style({ opacity: 0, 'pointer-events': 'none' })
      return tip
    }
  
    // Public: Proxy attr calls to the d3 tip container.  Sets or gets attribute value.
    //
    // n - name of the attribute
    // v - value of the attribute
    //
    // Returns tip or attribute value
    tip.attr = function(n, v) {
      if (arguments.length < 2 && typeof n === 'string') {
        return d3.select(node).attr(n)
      } else {
        var args =  Array.prototype.slice.call(arguments)
        d3.selection.prototype.attr.apply(d3.select(node), args)
      }
  
      return tip
    }
  
    // Public: Proxy style calls to the d3 tip container.  Sets or gets a style value.
    //
    // n - name of the property
    // v - value of the property
    //
    // Returns tip or style property value
    tip.style = function(n, v) {
      if (arguments.length < 2 && typeof n === 'string') {
        return d3.select(node).style(n)
      } else {
        var args =  Array.prototype.slice.call(arguments)
        d3.selection.prototype.style.apply(d3.select(node), args)
      }
  
      return tip
    }
  
    // Public: Set or get the direction of the tooltip
    //
    // v - One of n(north), s(south), e(east), or w(west), nw(northwest),
    //     sw(southwest), ne(northeast) or se(southeast)
    //
    // Returns tip or direction
    tip.direction = function(v) {
      if (!arguments.length) return direction
      direction = v == null ? v : d3.functor(v)
  
      return tip
    }
  
    // Public: Sets or gets the offset of the tip
    //
    // v - Array of [x, y] offset
    //
    // Returns offset or
    tip.offset = function(v) {
      if (!arguments.length) return offset
      offset = v == null ? v : d3.functor(v)
  
      return tip
    }
  
    // Public: sets or gets the html value of the tooltip
    //
    // v - String value of the tip
    //
    // Returns html value or tip
    tip.html = function(v) {
      if (!arguments.length) return html
      html = v == null ? v : d3.functor(v)
  
      return tip
    }
  
    function d3_tip_direction() { return 'n' }
    function d3_tip_offset() { return [0, 0] }
    function d3_tip_html() { return ' ' }
  
    var direction_callbacks = d3.map({
      n:  direction_n,
      s:  direction_s,
      e:  direction_e,
      w:  direction_w,
      nw: direction_nw,
      ne: direction_ne,
      sw: direction_sw,
      se: direction_se
    }),
  
    directions = direction_callbacks.keys()
  
    function direction_n() {
      var bbox = getScreenBBox()
      return {
        top:  bbox.n.y - node.offsetHeight,
        left: bbox.n.x - node.offsetWidth / 2
      }
    }
  
    function direction_s() {
      var bbox = getScreenBBox()
      return {
        top:  bbox.s.y,
        left: bbox.s.x - node.offsetWidth / 2
      }
    }
  
    function direction_e() {
      var bbox = getScreenBBox()
      return {
        top:  bbox.e.y - node.offsetHeight / 2,
        left: bbox.e.x
      }
    }
  
    function direction_w() {
      var bbox = getScreenBBox()
      return {
        top:  bbox.w.y - node.offsetHeight / 2,
        left: bbox.w.x - node.offsetWidth
      }
    }
  
    function direction_nw() {
      var bbox = getScreenBBox()
      return {
        top:  bbox.nw.y - node.offsetHeight,
        left: bbox.nw.x - node.offsetWidth
      }
    }
  
    function direction_ne() {
      var bbox = getScreenBBox()
      return {
        top:  bbox.ne.y - node.offsetHeight,
        left: bbox.ne.x
      }
    }
  
    function direction_sw() {
      var bbox = getScreenBBox()
      return {
        top:  bbox.sw.y,
        left: bbox.sw.x - node.offsetWidth
      }
    }
  
    function direction_se() {
      var bbox = getScreenBBox()
      return {
        top:  bbox.se.y,
        left: bbox.e.x
      }
    }
  
    function initNode() {
      var node = d3.select(document.createElement('div'))
      node.style({
        position: 'absolute',
        top: 0,
        opacity: 0,
        'pointer-events': 'none',
        'box-sizing': 'border-box'
      })
  
      return node.node()
    }
  
    function getSVGNode(el) {
      el = el.node()
      if(el.tagName.toLowerCase() == 'svg')
        return el
  
      return el.ownerSVGElement
    }
  
    // Private - gets the screen coordinates of a shape
    //
    // Given a shape on the screen, will return an SVGPoint for the directions
    // n(north), s(south), e(east), w(west), ne(northeast), se(southeast), nw(northwest),
    // sw(southwest).
    //
    //    +-+-+
    //    |   |
    //    +   +
    //    |   |
    //    +-+-+
    //
    // Returns an Object {n, s, e, w, nw, sw, ne, se}
    function getScreenBBox() {
      var targetel   = target || d3.event.target,
          bbox       = {},
          matrix     = targetel.getScreenCTM(),
          tbbox      = targetel.getBBox(),
          width      = tbbox.width,
          height     = tbbox.height,
          x          = tbbox.x,
          y          = tbbox.y
  
      point.x = x
      point.y = y
      bbox.nw = point.matrixTransform(matrix)
      point.x += width
      bbox.ne = point.matrixTransform(matrix)
      point.y += height
      bbox.se = point.matrixTransform(matrix)
      point.x -= width
      bbox.sw = point.matrixTransform(matrix)
      point.y -= height / 2
      bbox.w  = point.matrixTransform(matrix)
      point.x += width
      bbox.e = point.matrixTransform(matrix)
      point.x -= width / 2
      point.y -= height / 2
      bbox.n = point.matrixTransform(matrix)
      point.y += height
      bbox.s = point.matrixTransform(matrix)
  
      return bbox
    }
  
    return tip
  };

}));

districts2regions.py

# -*- coding: utf-8 -*-
# python 3

import csv

starting = 11   # first column with values for parties
total = 43      # total number of columns
nvotes = 10  # column with n of votes

levels = {
    '3': 5,
    '2': 3,
    '1': 1
}

pbop = {
    "554821": [],
    "582786": [],
    "554782": [],
    "554791": []
}

inpbop = {}
with open("pbop.csv") as fin:
    dr = csv.DictReader(fin)
    for row in dr:
        inpbop[row['ID_OKRSKY']] = row

out_parts = {}
names_parts = {}
supregions_parts = {}
for key in levels:
    level = levels[key]

    i = 0
    out = {}
    names = {}
    supregions = {}
    dReader = csv.reader(open('cz_2017_okrsky.csv'))
    for row in dReader:
        if i > 1:
            if row[0] in inpbop.keys() and key == '3':
                code = inpbop[row[0]]['OBEC']
                lev = inpbop[row[0]]['OBEC']
                code2 = inpbop[row[0]]['ČTVRŤ']
                extra = True
            else:
                lev = level
                code = row[lev]
                extra = False
            try:
                out[code]
            except Exception:
                out[code] = [0 for count in range(total)]
                if extra:
                    names[code] = inpbop[row[0]]['obec jméno']
                    supregions[code] = inpbop[row[0]]['KRAJ']
                else:
                    names[code] = row[lev + 1]
                    supregions[code] = row[1]
            if extra:
                try:
                    out_parts[code2]
                except Exception:
                    out_parts[code2] = [0 for count in range(total)]
                    names_parts[code2] = inpbop[row[0]]['čtvrť jméno']
                    supregions_parts[code2] = inpbop[row[0]]['KRAJ']

            for j in range(starting, total):
                if row[j] == '':
                    row[j] = 0
                out[code][j] += int(row[j])
                if extra:
                    out_parts[code2][j] += int(row[j])

        i = i + 1

    with open('regions_' + str(key) + '.csv', 'w') as outfile:
        outwriter = csv.writer(outfile, quoting=csv.QUOTE_NONNUMERIC)
        for ki in sorted(out):
            o = [ki, names[ki], supregions[ki]]
            for j in range(starting, total):
                o = o + [out[ki][j]]
            outwriter.writerow(o)

with open('regions_4.csv', 'w') as outfile:
    outwriter = csv.writer(outfile, quoting=csv.QUOTE_NONNUMERIC)
    for ki in sorted(out_parts):
        o = [ki, names_parts[ki], supregions_parts[ki]]
        for j in range(starting, total):
            o = o + [out_parts[ki][j]]
        outwriter.writerow(o)

#    if i > 3:
#      print(out)
#      raise(Exception,'')

more_info_okrsky.py

# copy info from previous elections

import csv

data = {}
prev = {}
with open("ep_2014_okrsky.csv") as fin:
    csvr = csv.reader(fin)
    for row in csvr:
        prev[row[4]] = row

with open("cz_2017_okrsky.csv", "w") as fout:
    csvw = csv.writer(fout)
    with open("cz_2017_okrsky_neuplny.csv") as fin:
        csvr = csv.reader(fin)
        for row in csvr:
            try:
                muni = row[5]
                row[1] = prev[muni][0]
                row[2] = prev[muni][1]
                row[4] = prev[muni][3]
                row[6] = prev[muni][5]
            except Exception:
                print(row[5])
            csvw.writerow(row)

party_coords.csv

"","V1","V2","V3"
"V1",-55.013945079706,-4.88735307606943,-1.71570986493331
"V2",3.82217835798235,-0.511334802296691,-0.281545987999371
"V3",-0.370382689832446,-0.211248590871751,-0.102547061645411
"V4",20.1490080243871,1.0842536196088,-0.343286812883181
"V5",-9.77285154208872,-0.30307146946971,0.701443778937733
"V6",2.07164372343425,-0.611030657748181,-0.0938952567995609
"V7",-2.63417620419372,-2.37333789178732,0.709705289553227
"V8",29.2850183014266,-1.04499190619671,0.214446901094331
"V9",-16.6755281954015,-0.406674929432449,0.408581335626276
"V10",11.1648197616043,-2.23596358316812,0.0850238477709608
"V11",-7.61248874240455,-0.359582975863784,0.543474275351266
"V12",-13.440872475249,-0.790978982297545,0.872189639747259
"V13",3.87326233344495,-1.06983579044471,0.625260245992303
"V14",-2.02729773478543,-1.40955039364949,0.435350466323658
"V15",-27.6653233657575,-3.05141278671301,1.31382577278256
"V16",-3.89825080348604,-1.01307086275188,0.685142612053267
"V17",-2.69009392349726,-2.51266764987882,-0.520035029423837
"V18",3.9482927002193,1.85039086316419,-0.263806973066941
"V19",-0.0470183965678778,-1.10287231373439,-0.73611380726054
"V20",-34.7325057151097,-1.38210479512539,1.66110547600821
"V21",33.9777845801202,3.53561558171892,-0.695669101860787
"V22",1.51359700119274,-1.08190472288875,-0.381679469536227
"V23",7.38996648545086,-0.197599337354774,-0.981696050324543
"V24",5.06404881466932,1.97625446959023,0.520735109164692
"V25",1.45767214365428,-1.15392994291806,0.49080967984407
"V26",-9.38138805276991,-0.679751474226223,0.82339181837819
"V27",1.32413258180135,-1.58533028337029,0.365225624850415
"V28",9.56332796563531,0.0932346288276214,-0.0971896732292084
"V29",29.337769220907,5.52173708910601,-1.36666106472715
"V30",6.59768975850967,0.217809745890777,0.336723844682175
"V31",0.497902339274887,-1.35287909343898,0.0649439319497803

pbop_coords.csv

"","V1","V2","V3"
"1",-265.959567865207,-9.63889836571301,1.14209388836853
"2",-236.255714238345,-7.41638404441591,0.653801343243011
"3",-168.274563465423,-2.62031332088572,-0.0681663135927044
"4",-117.692343577663,0.902879637820557,-1.51370994117994
"5",-178.902655165133,-3.20864836849638,-0.0115996073623243
"6",-174.198363740077,-3.35517272464168,0.9235291511203
"7",-216.510340581347,-5.25288216800365,1.85287870491373
"8",-93.210705844319,2.19247638025145,-1.85482917646367
"9",-112.60642468919,1.41476757435461,-2.96093387572273
"10",-114.85006942667,1.23557964618582,-1.26552374109711
"11",-135.420756872319,-1.07609129384291,-4.01864038431717
"12",-142.108355007302,-1.29812728463125,-3.37747679569377
"13",-121.281355058593,-0.713629355583505,-3.55675320191382
"14",-160.681099839941,-2.6401614372362,-3.62208698077648
"15",-98.8837598485099,3.30857201780207,-3.34738877864832
"16",-60.1608952137781,3.7939519841021,-3.24930845288466
"17",-199.201784265556,-6.89188688154539,-3.47379240067735
"18",-156.136381715167,-4.9392698976663,-2.94806064532047
"19",-146.004174174769,-2.42252388125121,-0.392380314594657
"20",-62.7078444357594,4.19806261131397,-3.73903080433902
"21",-188.342209994774,-3.06764722336188,-1.35754613326722
"22",-97.9632542931782,3.67767320310477,-4.73588977354495
"23",-120.765073387771,-0.653991539422039,-2.63188595796939
"24",-155.77641369019,-3.02663934754013,-2.25254442225219
"25",-134.323679670254,-0.929854397852975,-3.57438090725097
"26",-70.3167992361097,4.83935673782234,-2.78810781573871
"27",-184.261312142103,-4.94281195917386,-3.21850146072381
"28",-97.4896390550573,1.28593584537032,-2.91556354857943
"29",-184.456108138207,-6.32126334343933,-2.61832179495386
"30",-149.040036959942,-3.074279273045,-2.5376555094107
"31",-161.894396007398,-2.40675475578205,-2.31792030705948
"32",-189.744457878939,-8.13790274936991,-0.94214560225863
"33",-122.000443716807,0.316763839253102,-1.21206578907385
"34",-168.644483109567,-3.19866738303091,-2.98193330882687
"35",-146.570433225756,-1.09508566917141,-1.99760166441431
"36",-145.078012358118,-1.12733790678668,-1.48305052890217
"37",-116.959445371245,0.558813873933756,-1.66573088412754
"38",138.913168338987,22.6883463268918,-5.86000277640004
"39",65.203879084554,16.1142127141335,-5.47219376475199
"40",-3.8306016183704,11.2418579745688,-5.6717569784175
"41",35.473685225461,13.903329693486,-5.25623467481087
"42",166.813661890628,24.405148194229,-6.83541515950464
"43",208.842458073828,29.0600873149003,-6.95719114836291
"44",46.8886607544337,14.4318727753164,-5.82161372816011
"45",189.429835826971,26.4783187792084,-6.5094804857699
"46",-21.1787107270931,8.38515152434498,-2.45679007473104
"47",-176.297616544986,-4.05459122545001,-1.09279076231529
"48",-103.024467991975,1.80410553940577,-1.94758186068725
"49",-51.7788695773162,5.42709566014348,-2.35020020533498
"50",-183.324193321661,-3.93249865129085,-1.69578969955115
"51",-133.049376473048,-2.86588451897526,3.1574756718152
"52",-86.2536979981898,1.93706340732437,-2.11433522897787
"53",-49.67568602957,5.90487321910981,-2.39027828110064
"54",-126.517758983703,-2.38479608590527,-0.142769131640412
"55",-159.201463295024,-4.2150136793774,-1.91014928466834
"56",-198.863436069523,-5.9432933189714,-1.99708571858492
"57",-94.4161360736365,1.51914550941955,-3.42866269196555
"58",-236.529397855082,-8.53921241416516,0.597736565672095
"59",-101.397660667637,1.45476610906765,-3.59034914776115
"60",-70.9283958779428,5.35560495999903,-2.57179806233722
"61",-169.789232574593,-3.39130710514929,-2.58609103869903
"62",-73.0383864286657,4.75914942250632,-2.75107568921567
"63",-79.9395071399615,3.06621409115634,-1.53573881306297
"64",-151.397122825134,-3.23146474811467,-3.11727363300191
"65",-54.7671807224171,6.54868176620942,-2.9045612785243
"66",-86.5558145534878,7.62009028657545,-4.18794207122675
"67",-31.6369654757797,10.0225149848731,-5.38007238492642
"68",-26.6713624451101,10.8403108663533,-5.29359605005353
"69",-7.85851541177583,12.5876105466953,-5.71105764447693
"70",31.8823882190774,17.9692185774086,-5.74853984907261
"71",30.9060568067559,15.6394014207825,-6.72318549403172
"72",68.1163489301253,18.5815815439633,-6.32783139473649
"73",86.8341863232586,19.4434885010433,-6.14578307457866
"74",101.799183765257,20.9706476926948,-7.273431108316
"75",40.9705377411399,17.2994772086812,-5.63966022931029
"76",75.1766744251694,19.0119535507433,-6.04895721426511
"77",-35.9326084173113,9.62503279701738,-6.05814859973029
"78",44.2136752889771,16.3207536853772,-6.10311510782094
"79",-28.7387630653547,11.1023368926101,-5.41450671661875
"80",-10.4105237648684,12.3729577592853,-5.99268259405205
"81",-43.7849746175795,10.3459415408115,-6.22595279352285
"82",17.6043419742785,14.2965093845397,-5.99700627841066
"83",20.2401530888958,16.1322961315374,-6.40552203688735
"84",88.6444321577941,20.967539788571,-6.68869404101408
"85",58.0859003146986,18.4171786386713,-6.24132744455936
"86",67.9364093510618,19.7493858847597,-6.47652365065143
"87",70.1095189565075,20.2956952366268,-6.27449430180472
"88",73.1253236866169,19.9558023943008,-6.23168028348052
"89",32.7439799203723,16.1751976715895,-5.74163576722387
"90",-26.0115142090312,13.4935753823834,-5.2519358947609
"91",-86.6063761296896,4.88508465241812,-7.40001877956776
"92",-82.8161757678581,4.14385879680331,-6.02725195615989
"93",21.7972141912845,10.9134835620654,-7.72633931006159
"94",-86.4958461354438,5.2044035284994,-8.29571453602037
"95",122.843931193878,23.5279872189781,-7.29097615169737
"96",208.857155677052,28.7029490640253,-7.75923475615715
"97",116.3945627873,22.9663354003028,-6.16295640361218
"98",83.3904295884212,16.8029597982598,-7.21637168982078
"99",185.07973463756,26.641551046294,-6.71340824612418
"100",133.572740708106,22.6476664293666,-6.7182257973262
"101",104.578652899648,20.0091970670203,-7.77650731475882
"102",172.748572137899,25.5230332422245,-6.1529251957974
"103",142.652203445161,25.2429502265676,-7.54806712017099
"104",131.443885960852,22.7286486759577,-6.95238647809295
"105",183.100034942212,26.0643303374184,-6.65543650521958
"106",198.262899567984,27.7602016503827,-7.35887372490407
"107",103.869085909349,20.6840066548686,-6.63053831059392
"108",159.177291913984,24.574381427388,-6.64620845293825
"109",152.006958858721,24.479907855321,-6.36891382640471
"110",146.142475545935,22.4794602333864,-6.32377858416224
"111",135.035339213148,22.1484003205744,-5.83565922012008
"112",102.07829207688,22.7618561005462,-5.98896652595473
"113",134.298575329358,21.3546434675366,-5.29991709990514
"114",24.1124957793217,12.6556972751487,-5.84707745861109
"115",34.2904470505885,15.1042571127131,-4.13466505877808
"116",43.6476232616578,15.5369773673605,-6.38954180360806
"117",-17.584834588287,10.5235128489271,-6.43726679689663
"118",-45.1630981085747,6.48970822569619,-4.8199865850908
"119",-20.3036430797142,10.9813775136644,-6.10505327525078

pbop_coords_rot.csv

"","Comp.1","Comp.2"
"1",374.30922479828,-1.27207092634589
"2",344.522534689946,-1.16444851014287
"3",276.374519261652,-0.628586605478661
"4",225.671691351887,-0.184627878986201
"5",287.016068242985,-0.873344819965781
"6",282.337649460144,-0.35931671650133
"7",324.668431554383,-1.77691067727204
"8",201.1641878236,0.444591220986724
"9",220.561315632076,-0.29714544232456
"10",222.812102184404,-0.29399623905242
"11",243.500579930022,0.40162800624958
"12",250.185056832361,0.0999040623537258
"13",229.376145038929,1.14620930736204
"14",268.805871371515,-0.0148660710531785
"15",206.732564936336,-1.11181089189589
"16",168.090366763843,1.43305838357507
"17",307.541098636176,1.21088538283718
"18",264.454904354129,2.63267024788244
"19",254.15688702237,0.916139098251907
"20",170.597905098401,0.830972642920732
"21",296.41567551269,-1.75224178778441
"22",205.78600967806,-1.40778269024425
"23",228.856780391399,1.12713587978957
"24",263.946440090002,0.754054615990656
"25",242.395425606397,0.341648526317783
"26",178.133389448426,-0.403501707157306
"27",292.493948467725,0.436371255937127
"28",205.500918438927,1.01367182461515
"29",292.795965163175,1.79536338783133
"30",257.234427103722,1.32844358380023
"31",269.997194267111,-0.342457321460877
"32",298.210204504063,3.19280178399374
"33",230.012437077563,0.0627283080319274
"34",276.788542382492,-0.08093816009362
"35",254.61758387612,-0.451523114671998
"36",253.13225783292,-0.30263792942714
"37",224.967950025819,0.215708450657924
"38",-31.8516658340622,-1.83259891769216
"39",42.1460130264388,-1.04387944270624
"40",111.350098069231,-1.58607868700192
"41",71.9580529130204,-1.16515776355167
"42",-59.8009656331148,-1.36186563914949
"43",-102.065095139674,-2.71520368965145
"44",60.536707505814,-0.799243558193881
"45",-82.5100086958055,-1.65972965213447
"46",128.868500852447,-0.0950302921074613
"47",284.485176989469,0.173763098331305
"48",210.97826155172,0.0641753172474656
"49",159.606281664761,0.460529685580811
"50",291.480677550589,-0.497548822120911
"51",241.276455621113,2.37141881882287
"52",194.248470900851,1.24337367086932
"53",157.472171386583,0.148719243259364
"54",234.727219359221,2.40268371066609
"55",267.453947070809,1.67089327558893
"56",307.129591448474,0.291662296102669
"57",202.418590606635,1.02157489257786
"58",344.883203419967,-0.0664665716900127
"59",209.383762169192,0.539687490834249
"60",178.702733340303,-0.966005228909848
"61",277.944852381642,0.0215732347982421
"62",180.852912329247,-0.536412808294039
"63",187.865306080949,0.6115553877364
"64",259.596586294036,1.30078478637432
"65",162.497711435238,-0.891355211757833
"66",194.105156112663,-4.44587318568049
"67",139.166647117359,-2.54538434749979
"68",134.152291644852,-2.97228334878858
"69",115.260412078712,-3.24275724959319
"70",75.2203285407455,-5.49948866153531
"71",76.3758987307026,-3.25317422538056
"72",39.0494771510728,-3.27588641320376
"73",20.3215683665108,-2.67111138431749
"74",5.28296873559222,-3.02308407728859
"75",66.2124061609493,-4.12095696588379
"76",31.9771194852054,-3.1527068441355
"77",143.480219571332,-2.48510951756315
"78",63.0557564784669,-2.89156538003977
"79",136.192863862683,-3.39521122306443
"80",117.821391478665,-3.22837092225777
"81",151.2521424406,-3.81799333625832
"82",89.7418986647146,-2.95480822606831
"83",86.9705740135585,-4.57880726864429
"84",18.397662617492,-4.04890272460105
"85",49.0620555468519,-3.89653253650034
"86",39.1375240421002,-4.45418729815497
"87",36.9283416226066,-4.82885021681388
"88",33.9483612801509,-4.25411334398239
"89",74.5016982244941,-3.6435733243444
"90",133.286936174193,-5.56580840092907
"91",194.369485024467,-1.72320124101941
"92",190.648872298742,-0.687790454405945
"93",85.8264797327711,0.745804659799018
"94",194.234317683163,-2.03289659793402
"95",-15.8973319729192,-3.92654502507041
"96",-102.051813654825,-2.3580099719873
"97",-9.423791439762,-3.87106011940703
"98",23.9613074221135,-0.308030368761386
"99",-78.1860018859075,-2.16271100277526
"100",-26.5244172695363,-2.20975255548171
"101",2.58721595141252,-1.84717893603232
"102",-65.8051306465262,-2.01211875558076
"103",-35.7790579211163,-4.0869227639896
"104",-24.4084186063892,-2.45699801393563
"105",-76.1672190727256,-1.74210360422424
"106",-91.4162757538827,-2.24679509858296
"107",3.24182795462712,-2.57542094170251
"108",-52.201227202275,-2.12786961447623
"109",-45.0454717537497,-2.59452295488023
"110",-39.0424870670241,-1.05890253791889
"111",-27.9434841800565,-1.59761683702727
"112",4.86461366374081,-4.78697410896029
"113",-27.1468926550716,-0.863918735268231
"114",83.3820215797796,-0.809978677376573
"115",73.0437339333297,-2.45495463394136
"116",63.6813784974497,-2.15446477382654
"117",125.118380011437,-1.94574057018159
"118",152.927664525454,-0.0813657818713275
"119",127.793046662318,-2.61485787748713

regions_0.csv

0,Česká republika,,5060607,572941,8735,3758,368335,491,3852,262144,393094,74332,36525,438,79227,5076,8030,546375,359,436,117,4276,268806,1500063,3722,9856,293643,1573,35995,10593,10402,538557,18556,300

regions_1.csv

"1100","Hlavní město Praha","1100",611450,99182,642,407,34079,491,221,30920,28158,14686,2600,438,12857,472,943,107590,177,93,0,423,77325,124445,358,539,29143,182,5851,1243,565,35547,1873,0
"2100","Středočeský kraj","2100",649987,84093,1348,406,43358,0,453,52602,47592,8717,5064,0,10488,677,854,77752,0,342,0,543,39100,188521,364,1196,19149,216,4155,1146,1203,59049,1599,0
"3100","Jihočeský kraj","3100",315319,38232,557,255,23035,0,439,14435,29414,4326,2435,0,5303,270,613,33143,0,0,0,267,16713,91012,204,556,16983,243,3327,636,762,31062,1097,0
"3200","Plzeňský kraj","3200",271510,32833,558,184,21643,0,395,13180,23502,3321,2395,0,4138,328,724,27201,182,0,0,224,13095,84114,0,603,9499,136,2009,1009,631,28686,920,0
"4100","Karlovarský kraj","4100",122142,10796,896,0,8530,0,0,6453,9960,1549,1231,0,1544,211,280,12264,0,0,0,153,4495,43268,0,343,2885,0,799,311,428,15233,513,0
"4200","Ústecký kraj","4200",339686,32197,631,234,22464,0,0,12299,33628,5013,2920,0,4595,466,811,28004,0,0,0,321,12336,127574,292,1275,6127,113,2048,476,1527,42777,1558,0
"5100","Liberecký kraj","5100",208817,21468,327,196,11811,0,0,26780,13981,2907,1719,0,3152,192,405,23859,0,0,0,182,8825,62302,269,481,4297,135,1290,356,374,22878,631,0
"5200","Královéhradecký kraj","5200",278720,32242,531,297,18128,0,275,14184,19792,3650,2388,0,4310,284,322,29932,0,0,0,276,14308,88551,380,619,16294,0,2037,431,600,28038,851,0
"5300","Pardubický kraj","5300",258169,28313,509,355,19294,0,258,12855,20002,3261,2429,0,3998,186,385,27146,0,0,0,225,10864,79551,250,480,17599,0,1492,564,722,26202,1229,0
"6100","Kraj Vysočina","6100",262764,25989,324,137,24631,0,306,11251,24829,3204,2070,0,3565,235,261,26086,0,0,0,219,10163,75247,0,600,24295,89,1562,584,556,25237,1324,0
"6200","Jihomoravský kraj","6200",583442,69319,768,477,49248,0,383,21222,46966,9147,3781,0,10421,448,930,53207,0,0,0,532,26356,159909,522,1222,52346,173,3849,1471,859,67973,1613,300
"7100","Olomoucký kraj","7100",305639,27266,426,282,22760,0,307,13580,26853,3588,1942,0,3963,436,448,25955,0,0,0,213,9903,95950,248,488,25257,117,1678,766,675,41397,1141,0
"7200","Zlínský kraj","7200",294679,28752,615,195,20454,0,220,17168,20669,3685,1747,0,4812,299,393,24859,0,0,0,245,8443,84750,184,477,33631,0,2138,537,417,38020,1969,0
"8100","Moravskoslezský kraj","8100",547789,40944,598,327,48417,0,592,14462,47651,6583,3790,0,5892,568,654,47332,0,0,117,450,14142,194069,650,970,35362,166,3664,1057,1083,76027,2222,0
"9999","Zahraničí","9999",10494,1315,5,6,483,0,3,753,97,695,14,0,189,4,7,2045,0,1,0,3,2738,800,1,7,776,3,96,6,0,431,16,0

regions_2.csv

"1100","Hlavní město Praha","1100",611450,99182,642,407,34079,491,221,30920,28158,14686,2600,438,12857,472,943,107590,177,93,0,423,77325,124445,358,539,29143,182,5851,1243,565,35547,1873,0
"2101","Benešov","2100",50386,5279,70,23,3748,0,24,4371,3805,567,341,0,658,47,54,5334,0,32,0,48,2289,16251,23,101,2267,18,300,106,116,4413,101,0
"2102","Beroun","2100",44601,6675,90,39,3105,0,26,2155,3845,636,358,0,842,39,72,5535,0,26,0,30,2568,12652,25,93,1245,13,255,74,93,4002,108,0
"2103","Kladno","2100",74107,8797,111,40,5068,0,93,4151,6767,1014,591,0,1416,75,84,8682,0,35,0,66,3760,22227,52,177,1562,27,508,114,172,8319,199,0
"2104","Kolín","2100",48207,4604,150,23,3223,0,32,8841,4057,431,300,0,653,49,53,4173,0,25,0,22,1827,13707,16,89,1056,12,289,69,80,4280,146,0
"2105","Kutná Hora","2100",36827,3443,131,27,3552,0,21,3674,3240,296,289,0,380,46,38,3461,0,18,0,23,1302,11689,16,82,1263,8,165,69,55,3448,91,0
"2106","Mělník","2100",49063,6343,115,28,3107,0,24,3349,3822,672,439,0,910,65,53,5718,0,24,0,69,2342,14820,31,105,1098,14,303,95,120,5253,144,0
"2107","Mladá Boleslav","2100",58562,6990,115,37,4213,0,40,4080,4033,809,630,0,841,68,71,5812,0,33,0,44,2559,19991,35,129,1314,21,353,157,95,5953,139,0
"2108","Nymburk","2100",47177,5626,93,23,3527,0,36,3573,3288,627,418,0,641,46,71,5305,0,35,0,55,2670,14730,24,101,1425,23,248,100,95,4295,102,0
"2109","Praha-východ","2100",85497,15295,269,62,4049,0,49,6721,3891,1252,573,0,1564,85,138,12917,0,42,0,68,7457,20818,41,120,2676,33,668,113,124,6272,200,0
"2110","Praha-západ","2100",70884,12048,91,65,3120,0,45,5925,3079,1340,431,0,1348,70,118,11210,0,37,0,69,8243,15662,57,67,2334,14,572,91,93,4594,161,0
"2111","Příbram","2100",58185,6438,80,29,4299,0,41,4082,4965,785,506,0,860,62,77,6853,0,24,0,25,2896,17588,32,87,2382,14,331,103,113,5381,132,0
"2112","Rakovník","2100",26491,2555,33,10,2347,0,22,1680,2800,288,188,0,375,25,25,2752,0,11,0,24,1187,8386,12,45,527,19,163,55,47,2839,76,0
"3101","České Budějovice","3100",97068,12861,112,74,6163,0,116,5123,8126,1499,616,0,1985,82,205,10175,0,0,0,71,5689,27065,83,151,5023,95,1519,236,200,9483,316,0
"3102","Český Krumlov","3100",27586,3370,50,30,1760,0,63,1015,2760,393,264,0,425,25,61,2562,0,0,0,27,1342,8274,33,41,1447,36,297,42,151,3042,76,0
"3103","Jindřichův Hradec","3100",45365,5009,75,42,3917,0,57,1589,4814,634,355,0,774,44,91,4668,0,0,0,28,1877,13011,20,106,2995,34,283,72,84,4637,149,0
"3104","Písek","3100",34981,4174,125,22,2756,0,44,1167,3487,402,253,0,538,39,69,4011,0,0,0,32,1990,9866,19,55,1939,14,245,63,72,3437,162,0
"3105","Prachatice","3100",23730,3270,66,18,1724,0,33,1184,2403,329,172,0,334,16,38,2179,0,0,0,14,1057,6588,12,47,1409,11,182,50,68,2416,110,0
"3106","Strakonice","3100",34379,3660,71,26,2565,0,54,1451,3163,384,299,0,424,27,60,3651,0,0,0,47,1538,10599,20,74,1980,21,344,95,100,3598,128,0
"3107","Tábor","3100",52210,5888,58,43,4150,0,72,2906,4661,685,476,0,823,37,89,5897,0,0,0,48,3220,15609,17,82,2190,32,457,78,87,4449,156,0
"3201","Domažlice","3200",27834,3084,43,15,2492,0,42,1630,2756,245,364,0,258,31,58,2217,12,0,0,15,756,8570,0,65,1442,13,185,68,55,3337,81,0
"3202","Klatovy","3200",42977,4874,112,27,3500,0,81,2306,3688,413,436,0,490,41,69,4303,23,0,0,34,1691,13792,0,89,2071,24,213,130,109,4333,128,0
"3203","Plzeň-město","3200",88649,12744,170,79,6694,0,101,3605,5649,1341,513,0,1790,101,336,10228,59,0,0,72,6279,25430,0,177,3299,31,832,338,170,8334,277,0
"3204","Plzeň-jih","3200",29576,3249,72,26,2506,0,56,1601,2940,373,253,0,430,47,78,2575,38,0,0,21,1268,9355,0,60,725,14,198,136,90,3359,106,0
"3205","Plzeň-sever","3200",37720,4511,62,22,2966,0,59,2131,3428,405,366,0,608,64,101,3573,22,0,0,38,1605,11775,0,114,967,41,301,200,96,4128,137,0
"3206","Rokycany","3200",23189,2762,62,6,1772,0,29,967,2350,285,222,0,340,28,56,2271,14,0,0,22,891,7510,0,61,543,5,186,76,53,2564,114,0
"3207","Tachov","3200",21565,1609,37,9,1713,0,27,940,2691,259,241,0,222,16,26,2034,14,0,0,22,605,7682,0,37,452,8,94,61,58,2631,77,0
"4101","Cheb","4100",36295,3084,174,0,2495,0,0,1889,3348,549,306,0,381,76,100,4075,0,0,0,42,1212,12804,0,104,979,0,180,58,89,4242,108,0
"4102","Karlovy Vary","4100",50455,5049,265,0,3366,0,0,3062,3635,624,544,0,592,70,130,5323,0,0,0,67,2265,17039,0,115,1295,0,383,165,172,6077,217,0
"4103","Sokolov","4100",35392,2663,457,0,2669,0,0,1502,2977,376,381,0,571,65,50,2866,0,0,0,44,1018,13425,0,124,611,0,236,88,167,4914,188,0
"4201","Děčín","4200",54782,4510,84,48,3607,0,0,2480,4602,650,513,0,756,99,120,4523,0,0,0,47,1904,21405,41,217,1082,27,309,62,258,7095,343,0
"4202","Chomutov","4200",48315,4292,114,22,3225,0,0,1612,4920,644,473,0,682,60,121,3792,0,0,0,40,1328,18894,33,174,690,19,320,62,142,6471,185,0
"4203","Litoměřice","4200",55822,6457,131,42,3507,0,0,2220,6030,876,535,0,915,84,97,5279,0,0,0,47,2344,18770,54,181,1393,20,325,98,215,6010,192,0
"4204","Louny","4200",37739,3526,57,17,2676,0,0,992,4418,461,324,0,397,56,47,2715,0,0,0,33,1394,14295,24,147,771,14,211,54,164,4798,148,0
"4205","Most","4200",42560,3594,114,26,2980,0,0,1503,4536,788,293,0,540,36,68,3023,0,0,0,56,1241,16740,17,175,448,13,244,42,250,5614,219,0
"4206","Teplice","4200",51109,5137,65,27,3444,0,0,1492,4697,733,463,0,585,71,112,4143,0,0,0,54,1970,19476,34,213,871,13,252,90,269,6693,205,0
"4207","Ústí nad Labem","4200",49359,4681,66,52,3025,0,0,2000,4425,861,319,0,720,60,246,4529,0,0,0,44,2155,17994,89,168,872,7,387,68,229,6096,266,0
"5101","Česká Lípa","5100",44257,3703,49,27,2709,0,0,5261,3905,613,373,0,613,55,71,4288,0,0,0,34,1386,14264,59,121,624,41,231,72,120,5471,167,0
"5102","Jablonec nad Nisou","5100",43345,5390,38,37,2319,0,0,4150,2627,532,413,0,677,44,58,6137,0,0,0,79,2039,12468,38,83,695,26,335,72,79,4857,152,0
"5103","Liberec","5100",81516,7735,138,75,4580,0,0,11494,4909,1303,542,0,1222,62,221,8883,0,0,0,40,3654,25335,89,196,1360,40,519,144,111,8647,217,0
"5104","Semily","5100",39699,4640,102,57,2203,0,0,5875,2540,459,391,0,640,31,55,4551,0,0,0,29,1746,10235,83,81,1618,28,205,68,64,3903,95,0
"5201","Hradec Králové","5200",85218,9888,155,122,5241,0,74,3589,5968,1233,624,0,1506,76,135,9743,0,0,0,66,5676,26916,149,116,4550,0,895,152,131,7954,259,0
"5202","Jičín","5200",40060,4017,104,61,2674,0,41,3374,3003,483,416,0,530,41,40,4478,0,0,0,28,1636,13202,56,111,1730,0,294,64,89,3455,133,0
"5203","Náchod","5200",54949,6059,98,34,4259,0,69,2359,3391,717,427,0,742,45,49,5391,0,0,0,62,2577,17194,74,118,4875,0,297,74,127,5767,144,0
"5204","Rychnov nad Kněžnou","5200",39550,4184,80,35,2599,0,30,1711,3219,479,396,0,642,46,41,3789,0,0,0,43,1685,12682,54,138,2849,0,215,49,93,4336,155,0
"5205","Trutnov","5200",58943,8094,94,45,3355,0,61,3151,4211,738,525,0,890,76,57,6531,0,0,0,77,2734,18557,47,136,2290,0,336,92,160,6526,160,0
"5301","Chrudim","5300",52753,5178,75,78,4124,0,50,2620,4702,532,460,0,812,34,62,5191,0,0,0,43,1752,17187,36,105,3743,0,309,88,111,5103,358,0
"5302","Pardubice","5300",84478,10524,128,138,6044,0,64,4132,6064,1168,603,0,1444,66,167,9291,0,0,0,66,4262,26804,124,167,3908,0,632,167,182,8044,289,0
"5303","Svitavy","5300",51441,5388,126,41,4319,0,57,2489,4613,572,687,0,697,39,50,4900,0,0,0,48,1791,14932,41,92,4681,0,221,138,173,5201,145,0
"5304","Ústí nad Orlicí","5300",69497,7223,180,98,4807,0,87,3614,4623,989,679,0,1045,47,106,7764,0,0,0,68,3059,20628,49,116,5267,0,330,171,256,7854,437,0
"6101","Havlíčkův Brod","6100",49372,5482,91,20,4162,0,55,2244,4808,689,414,0,561,31,62,5106,0,0,0,37,1771,15388,0,91,3504,14,316,101,108,4181,136,0
"6102","Jihlava","6100",56391,5920,66,40,4468,0,57,2040,4856,906,452,0,919,55,59,5924,0,0,0,52,2441,15552,0,138,4982,20,432,151,133,6458,270,0
"6103","Pelhřimov","6100",37285,4002,61,16,4421,0,40,2195,3470,433,252,0,552,22,35,3900,0,0,0,23,1557,10202,0,98,2526,9,180,73,73,3061,84,0
"6104","Třebíč","6100",58131,4956,46,18,5010,0,72,2540,6245,558,500,0,777,51,56,5406,0,0,0,50,1859,17126,0,159,5408,24,304,134,113,6491,228,0
"6105","Žďár nad Sázavou","6100",61585,5629,60,43,6570,0,82,2232,5450,618,452,0,756,76,49,5750,0,0,0,57,2535,16979,0,114,7875,22,330,125,129,5046,606,0
"6201","Blansko","6200",55661,5480,50,44,5406,0,30,1862,5561,739,428,0,885,41,92,4955,0,0,0,52,1631,15327,42,138,5866,23,309,136,92,6287,164,21
"6202","Brno-město","6200",185636,28601,127,192,14396,0,109,6661,10269,4467,774,0,3716,131,308,20718,0,0,0,190,12924,45592,162,334,14273,57,1754,528,201,18674,398,80
"6203","Brno-venkov","6200",111932,13611,105,92,8301,0,96,5044,8558,1561,731,0,2105,90,183,9778,0,0,0,140,5288,30941,85,230,10313,32,713,355,161,13079,271,69
"6204","Břeclav","6200",56358,6474,78,44,4223,0,30,2371,5315,616,489,0,943,42,84,4693,0,0,0,32,1884,16676,112,102,4532,13,254,103,82,7007,125,34
"6205","Hodonín","6200",75389,6897,273,56,6690,0,44,2502,6812,791,518,0,1311,56,117,5982,0,0,0,50,1911,21326,49,175,9380,24,360,143,138,9543,202,39
"6206","Vyškov","6200",44518,4015,70,25,5452,0,35,1276,4822,516,390,0,724,37,64,3580,0,0,0,41,1131,11530,31,138,4053,4,224,115,98,5892,225,30
"6207","Znojmo","6200",53948,4241,65,24,4780,0,39,1506,5629,457,451,0,737,51,82,3501,0,0,0,27,1587,18517,41,105,3929,20,235,91,87,7491,228,27
"7101","Jeseník","7100",17911,1237,18,13,1353,0,19,1099,1781,162,111,0,183,24,15,1293,0,0,0,16,722,5949,19,46,785,8,90,32,39,2859,38,0
"7102","Olomouc","7100",112995,11288,143,99,8563,0,116,4572,8664,1675,709,0,1642,184,196,11212,0,0,0,66,4803,34125,90,164,8935,32,763,392,209,13917,436,0
"7103","Prostějov","7100",52738,4552,50,65,4558,0,45,1609,5238,645,357,0,578,63,72,4250,0,0,0,37,1398,15516,31,78,4733,30,223,107,223,8111,169,0
"7104","Přerov","7100",63279,5533,114,36,4296,0,69,2191,5855,514,359,0,835,65,109,4501,0,0,0,44,1462,21108,68,105,6257,24,360,134,97,8827,316,0
"7105","Šumperk","7100",58716,4656,101,69,3990,0,58,4109,5315,592,406,0,725,100,56,4699,0,0,0,50,1518,19252,40,95,4547,23,242,101,107,7683,182,0
"7201","Kroměříž","7200",52781,4389,115,31,3840,0,51,2140,5083,684,308,0,739,59,120,3984,0,0,0,53,1338,16004,36,96,4632,0,315,103,112,8250,299,0
"7202","Uherské Hradiště","7200",73007,7715,82,32,5173,0,41,4783,6038,840,360,0,1060,67,72,5894,0,0,0,65,1991,18781,35,101,9798,0,542,95,96,8751,595,0
"7203","Vsetín","7200",70320,7120,93,46,4894,0,61,3505,4089,973,526,0,1276,76,91,6239,0,0,0,49,1951,20528,48,128,8492,0,423,181,117,9089,325,0
"7204","Zlín","7200",98571,9528,325,86,6547,0,67,6740,5459,1188,553,0,1737,97,110,8742,0,0,0,78,3163,29437,65,152,10709,0,858,158,92,11930,750,0
"8101","Bruntál","8100",40575,2763,47,18,3462,0,36,1327,4862,440,385,0,432,65,57,2940,0,0,5,52,794,14852,28,67,1314,5,240,65,93,6123,103,0
"8102","Frýdek-Místek","8100",101439,7530,107,56,9301,0,155,3116,7694,1101,559,0,1116,87,90,8860,0,0,11,64,2253,34686,227,140,9769,32,748,179,145,13038,375,0
"8103","Karviná","8100",106196,5839,170,48,10602,0,103,2277,11334,1041,763,0,851,88,120,7699,0,0,14,92,1696,40004,106,246,5193,42,476,142,188,16575,487,0
"8104","Nový Jičín","8100",72390,6213,69,61,6003,0,84,1611,5785,1231,574,0,920,76,148,6986,0,0,13,58,1770,24248,88,112,5666,16,401,179,138,9729,211,0
"8105","Opava","8100",85906,6782,75,59,7117,0,69,2490,5909,1012,590,0,872,89,76,7761,0,0,9,67,3667,30226,62,156,6902,31,585,149,170,10664,317,0
"8106","Ostrava-město","8100",141283,11817,130,85,11932,0,145,3641,12067,1758,919,0,1701,163,163,13086,0,0,65,117,3962,50053,139,249,6518,40,1214,343,349,19898,729,0
"9999","Zahraničí","9999",10494,1315,5,6,483,0,3,753,97,695,14,0,189,4,7,2045,0,1,0,3,2738,800,1,7,776,3,96,6,0,431,16,0

regions_4.csv

"500054","Praha 1","1100",14036,2770,9,13,657,12,1,774,392,514,41,6,241,14,44,2332,5,0,0,12,2783,1654,1,7,954,3,133,11,2,617,34,0
"500089","Praha 2","1100",20814,3859,15,18,991,20,11,1086,587,688,58,8,472,14,37,3871,7,4,0,11,3577,2875,8,19,1173,11,203,38,8,1098,47,0
"500097","Praha 3","1100",32571,5288,25,20,1764,34,7,1565,1360,1125,137,11,698,17,54,6069,15,6,0,13,4785,5792,18,23,1451,11,290,60,37,1795,101,0
"500119","Praha 4","1100",63462,10281,55,47,3822,65,15,3158,2815,1459,250,33,1322,37,95,11134,16,12,0,62,7717,13451,42,45,3016,13,630,127,57,3489,197,0
"500143","Praha 5","1100",38802,6517,38,25,1932,27,12,2130,1402,1026,143,125,826,34,65,7021,12,6,0,27,5898,6769,14,35,2044,11,356,71,26,2086,124,0
"500178","Praha 6","1100",53196,8312,33,27,2893,35,18,3306,2458,1565,157,21,897,29,66,9189,15,3,0,32,8690,8958,27,30,3318,17,513,89,34,2349,115,0
"500186","Praha 7","1100",20064,3145,20,21,978,20,8,1034,590,848,66,5,427,23,25,3925,7,2,0,19,3359,2812,11,19,1410,6,202,37,11,996,38,0
"500208","Praha 8","1100",51154,7978,67,32,3001,39,19,2431,3153,1159,207,20,996,35,62,8755,27,27,0,34,5784,10956,29,52,2308,14,542,127,55,3092,153,0
"500216","Praha 9","1100",24951,4508,31,20,1434,23,10,1078,1114,504,93,7,526,24,27,4164,3,3,0,22,2783,5534,20,19,1024,14,227,57,20,1584,78,0
"500224","Praha 10","1100",51895,8137,40,34,3175,50,17,2334,2485,1212,230,15,1050,35,67,9355,9,8,0,30,6497,10856,37,53,2398,12,477,69,53,2998,162,0
"538060","Praha-Běchovice","1100",1105,237,1,2,43,1,1,46,54,11,10,1,20,1,1,175,1,0,0,0,124,240,1,1,51,1,5,1,1,74,1,0
"538078","Praha-Benice","1100",363,74,0,2,13,0,0,30,8,3,1,0,6,0,1,59,0,0,0,0,37,79,0,0,15,0,10,0,0,25,0,0
"538124","Praha-Březiněves","1100",721,147,1,0,44,1,0,32,41,8,3,0,9,0,2,101,0,0,0,0,90,162,0,0,28,3,10,1,1,36,1,0
"538175","Praha-Dolní Počernice","1100",1339,290,1,1,61,1,1,59,47,24,11,0,44,0,1,211,0,0,0,1,148,275,2,1,68,1,8,2,2,76,3,0
"538205","Praha-Dubeč","1100",1905,335,10,2,110,0,0,77,92,34,6,3,57,2,5,268,0,1,0,6,219,427,0,5,82,0,26,3,1,122,12,0
"538213","Praha 20","1100",7944,1293,11,2,458,6,5,373,544,137,72,0,134,9,21,1303,1,1,0,5,688,1843,2,11,373,1,95,21,8,507,20,0
"538302","Praha-Klánovice","1100",1877,458,3,2,74,0,1,93,60,33,8,0,37,0,2,295,0,0,0,1,249,375,1,0,66,0,15,6,4,85,9,0
"538353","Praha-Koloděje","1100",784,170,0,0,34,0,1,41,34,10,5,0,11,0,2,140,0,0,0,0,94,176,2,2,25,0,2,3,1,31,0,0
"538361","Praha-Kolovraty","1100",1965,319,1,2,88,2,0,189,55,36,14,0,54,0,5,326,0,0,0,2,256,400,2,1,104,0,20,2,1,84,2,0
"538388","Praha-Královice","1100",194,31,0,0,19,0,0,10,10,2,0,0,2,0,1,37,0,0,0,0,15,39,0,2,7,0,1,1,0,17,0,0
"538400","Praha-Křeslice","1100",595,116,1,0,17,0,0,31,6,10,4,0,14,0,1,110,0,0,0,0,95,120,0,2,20,0,6,0,2,40,0,0
"538531","Praha-Nedvězí","1100",167,31,4,0,7,0,3,4,6,2,1,0,5,0,0,27,0,0,0,0,14,37,0,0,5,0,4,0,2,14,1,0
"538736","Praha-Satalice","1100",1248,223,1,0,68,0,2,141,38,16,6,0,35,2,0,168,2,0,0,2,132,254,1,0,61,0,14,5,1,74,2,0
"538931","Praha 22","1100",5067,971,11,3,256,0,1,332,167,100,33,1,142,6,14,852,0,0,0,5,612,1031,2,1,184,0,38,16,6,272,11,0
"538949","Praha 21","1100",5497,1163,2,1,268,5,1,224,201,68,19,1,101,3,5,913,1,0,0,0,641,1297,4,1,218,2,29,12,1,299,17,0
"539007","Praha-Vinoř","1100",2158,337,8,4,107,1,2,201,85,35,8,1,40,2,2,318,1,0,0,0,204,486,1,1,138,1,11,2,2,154,6,0
"539449","Praha-Lipence","1100",1442,330,0,0,57,3,0,56,55,22,4,0,33,0,3,220,1,0,0,2,201,295,1,3,51,0,14,13,2,72,4,0
"539465","Praha-Lochkov","1100",418,73,1,0,18,0,0,23,16,5,5,0,15,1,1,70,0,0,0,2,40,101,0,1,16,0,4,2,0,23,1,0
"539589","Praha-Přední Kopanina","1100",311,67,0,1,15,0,0,12,10,7,3,0,5,1,2,62,0,0,0,0,31,58,0,0,15,0,4,3,0,15,0,0
"539601","Praha 16","1100",4346,865,6,3,211,6,6,210,181,55,28,8,89,6,6,772,0,0,0,1,509,927,2,6,170,1,43,9,9,211,6,0
"539635","Praha-Řeporyje","1100",2069,405,7,0,107,2,0,105,49,43,5,5,55,1,3,372,0,1,0,1,235,425,1,4,109,0,20,4,1,105,4,0
"539678","Praha-Slivenec","1100",1844,355,1,0,68,4,0,249,53,17,14,3,40,3,1,291,0,0,0,0,248,305,0,3,58,1,20,5,1,102,2,0
"539694","Praha 13","1100",28221,4444,24,15,1601,15,12,1409,1273,631,123,92,742,27,43,5410,7,1,0,19,3173,5678,18,29,1253,6,269,62,31,1735,79,0
"539724","Praha-Šeberov","1100",1581,343,1,1,53,0,0,61,58,19,3,1,34,2,1,252,1,0,0,2,218,341,3,3,57,1,23,8,4,86,5,0
"539791","Praha-Újezd","1100",1577,292,1,1,55,0,0,80,59,31,8,0,38,2,2,272,0,0,0,0,205,337,3,2,67,1,15,4,1,95,6,0
"539864","Praha-Zbraslav","1100",5173,905,7,4,255,4,1,249,215,124,22,2,102,5,12,915,1,0,0,10,657,1045,4,2,263,1,63,8,2,280,15,0
"539899","Praha-Zličín","1100",2801,472,1,0,111,2,0,169,125,33,15,4,50,2,6,490,1,0,0,2,347,623,1,2,131,0,33,5,4,166,6,0
"545911","Moravská Ostrava a Přívoz","8100",14700,1379,9,16,1110,0,12,420,1188,239,92,0,221,20,16,1716,0,0,11,9,612,4876,16,22,520,3,154,30,45,1889,75,0
"545970","Plzeň 1","3200",23541,3020,37,24,1880,0,20,917,1639,340,146,0,501,25,92,2794,19,0,0,13,1524,6869,0,56,789,7,225,111,39,2371,83,0
"545988","Plzeň 2-Slovany","3200",16622,2729,35,15,1216,0,17,660,968,255,77,0,354,19,70,1951,7,0,0,19,1316,4340,0,24,728,7,168,38,44,1516,49,0
"546003","Plzeň 3","3200",21810,3068,45,21,1603,0,30,777,1435,390,134,0,411,24,72,2668,21,0,0,16,1622,6209,0,43,833,9,180,82,47,2004,66,0
"546046","Slezská Ostrava","8100",7981,785,9,7,668,0,4,164,687,104,53,0,78,13,5,676,0,0,10,1,242,2949,7,17,317,4,88,16,37,990,50,0
"546135","Ostrava-Jih","8100",42304,2823,49,25,3726,0,32,868,3761,453,287,0,546,49,30,3688,0,0,18,36,889,15603,34,73,1483,15,317,105,128,7056,210,0
"546208","Plzeň 4","3200",12244,1804,17,6,985,0,19,503,777,173,62,0,269,12,48,1250,5,0,0,11,861,3701,0,25,471,6,111,38,15,1045,30,0
"546224","Poruba","8100",29247,2241,13,17,2765,0,42,815,2616,383,183,0,349,22,36,2700,0,0,9,25,735,10391,38,55,1248,7,258,67,57,4028,147,0
"547034","Praha 11","1100",39116,5100,48,18,2513,30,17,1548,2310,757,192,13,846,29,57,6763,11,5,0,23,3598,10213,31,35,1622,14,373,86,53,2674,137,0
"547042","Praha-Kunratice","1100",4238,799,2,6,151,1,1,270,152,95,24,1,95,4,12,713,0,0,0,0,641,839,4,2,169,1,29,5,0,213,9,0
"547051","Praha-Libuš","1100",4509,733,5,4,218,6,1,188,218,77,27,0,106,3,10,830,1,1,0,3,510,1017,3,4,173,2,48,9,2,285,25,0
"547107","Praha 12","1100",28428,4095,24,13,1750,23,11,1146,1774,544,160,18,601,21,41,5034,11,1,0,17,2729,6803,21,25,1162,7,279,62,30,1875,151,0
"547115","Praha-Velká Chuchle","1100",1304,260,0,0,51,1,0,77,52,28,2,3,19,0,1,213,0,1,0,0,209,243,0,3,49,0,5,1,3,82,1,0
"547140","Praha-Lysolaje","1100",680,78,0,0,20,1,1,131,12,19,0,0,12,0,0,89,0,0,0,0,110,125,1,0,56,0,5,1,0,16,3,0
"547158","Praha-Nebušice","1100",1181,186,3,0,52,1,0,113,50,35,3,2,11,1,1,177,1,0,0,2,128,283,2,0,42,0,17,4,1,63,3,0
"547174","Praha 17","1100",11826,1659,35,14,727,5,2,552,712,228,50,5,270,7,23,2115,1,2,0,7,1088,2751,8,14,478,3,123,29,13,872,33,0
"547271","Praha-Suchdol","1100",3393,510,3,1,147,4,4,434,145,83,12,0,64,1,3,537,0,0,0,1,414,655,0,0,165,2,28,5,2,166,7,0
"547298","Praha-Ďáblice","1100",1842,347,0,2,86,0,0,172,84,19,10,1,43,1,2,280,1,0,0,0,242,334,2,2,60,0,25,6,4,115,4,0
"547301","Praha-Dolní Chabry","1100",2253,483,0,2,85,0,1,125,72,36,7,1,47,2,4,392,0,0,0,1,309,412,1,2,112,1,24,5,1,117,11,0
"547310","Praha-Čakovice","1100",4999,914,2,2,250,1,1,360,225,73,20,0,108,1,14,771,1,1,0,7,476,1175,2,2,224,2,40,11,6,297,13,0
"547328","Praha-Troja","1100",693,138,0,0,25,1,1,66,16,17,1,1,10,3,0,94,1,0,0,0,135,107,0,0,47,0,6,2,0,22,0,0
"547344","Praha 19","1100",3471,630,11,0,212,1,1,199,175,60,25,1,77,2,8,546,3,0,0,4,325,730,1,3,159,2,35,9,2,237,13,0
"547361","Praha 14","1100",20018,3004,39,16,1193,14,7,817,929,401,124,10,470,25,34,3561,5,3,0,21,2013,4581,12,23,803,5,183,55,30,1544,96,0
"547379","Praha-Dolní Měcholupy","1100",1315,274,2,0,67,2,0,61,39,21,4,0,28,2,2,230,0,0,0,1,168,268,1,1,59,0,7,1,1,69,7,0
"547387","Praha 15","1100",16200,2544,17,18,905,13,13,702,713,318,67,6,364,21,22,2886,2,4,0,8,1624,3928,8,21,579,9,142,36,15,1162,53,0
"547395","Praha-Petrovice","1100",3120,450,8,3,203,4,0,161,152,75,8,2,75,3,8,585,0,0,0,2,309,712,0,5,132,0,31,7,3,173,9,0
"547409","Praha-Štěrboholy","1100",972,213,1,0,39,2,0,48,33,16,3,0,9,2,4,158,0,0,0,1,125,235,0,1,35,0,7,0,1,36,3,0
"547417","Praha 18","1100",8235,1224,5,5,520,3,5,348,397,168,48,1,233,7,12,1372,6,0,0,2,817,2001,3,11,286,2,69,25,7,625,33,0
"550973","Brno-střed","6200",27710,4723,16,21,1806,0,12,1010,1175,1064,92,0,588,13,34,3771,0,0,0,20,2681,5502,19,47,2133,8,290,59,28,2538,52,8
"550990","Brno-Žabovřesky","6200",11355,1975,6,12,846,0,9,399,605,240,44,0,219,8,31,1328,0,0,0,16,855,2685,8,14,1001,3,97,30,11,889,18,6
"551007","Brno-Královo Pole","6200",12730,2119,13,13,953,0,4,429,725,270,42,0,249,6,20,1553,0,0,0,12,1074,2978,10,24,890,1,103,31,7,1168,32,4
"551031","Brno-sever","6200",21887,3562,10,26,1713,0,10,849,1208,531,101,0,423,16,38,2366,0,0,0,20,1608,5193,15,40,1760,17,230,78,21,1999,48,5
"551058","Brno-Židenice","6200",9821,1374,2,9,746,0,4,290,541,213,35,0,239,12,29,1076,0,0,0,12,668,2357,5,21,892,2,91,20,11,1139,25,8
"551066","Brno-Černovice","6200",3551,550,2,5,339,0,5,109,224,92,17,0,72,3,2,387,0,0,0,1,182,837,12,3,267,3,31,11,4,384,8,1
"551074","Brno-jih","6200",3733,502,3,4,301,0,5,113,261,59,12,0,74,0,5,435,0,0,0,3,212,1004,2,6,222,0,16,8,10,459,14,3
"551082","Brno-Bohunice","6200",7351,935,6,5,666,0,4,214,492,129,39,0,147,7,8,752,0,0,0,10,373,2126,10,17,531,1,61,25,11,750,25,7
"551091","Brno-Starý Lískovec","6200",6419,870,3,1,572,0,1,163,472,132,40,0,115,5,10,575,0,0,0,6,264,1890,4,8,430,3,46,17,4,776,11,1
"551112","Brno-Nový Lískovec","6200",5367,723,4,4,407,0,3,165,289,166,23,0,143,5,8,622,0,0,0,7,326,1422,4,7,350,2,66,16,10,575,16,4
"551147","Brno-Kohoutovice","6200",6690,875,4,7,587,0,4,235,469,158,30,0,112,3,11,624,0,0,0,8,401,1829,5,13,525,2,66,23,6,683,8,2
"551171","Brno-Jundrov","6200",2351,422,2,3,175,0,0,103,111,98,10,0,45,2,6,245,0,0,0,3,167,568,4,5,154,0,24,8,2,188,6,0
"551198","Brno-Bystrc","6200",12479,1779,12,22,1085,0,12,520,737,262,66,0,235,7,15,1390,0,0,0,16,688,3194,12,17,885,1,125,54,13,1301,25,6
"551210","Brno-Kníničky","6200",595,104,0,1,34,0,0,26,31,14,0,0,7,1,0,65,0,0,0,0,59,154,0,1,39,0,3,0,0,56,0,0
"551228","Brno-Komín","6200",4340,757,1,4,317,0,2,161,195,142,16,0,70,1,12,403,0,0,0,3,330,1164,3,1,354,2,44,9,6,337,5,1
"551236","Brno-Medlánky","6200",2881,531,6,3,210,0,3,151,120,67,9,0,41,3,5,278,0,0,0,4,234,641,0,8,243,2,34,8,0,272,5,3
"551244","Brno-Řečkovice a Mokrá Hora","6200",8104,1282,7,16,678,0,3,297,459,169,43,0,160,7,7,787,0,0,0,12,572,2092,10,17,651,1,85,23,3,709,10,4
"551252","Brno-Maloměřice a Obřany","6200",2848,444,4,2,186,0,2,107,131,56,13,0,76,3,9,296,0,0,0,1,175,732,4,12,220,0,34,7,5,315,13,1
"551279","Brno-Vinohrady","6200",6612,831,5,8,625,0,7,244,463,116,33,0,122,8,13,676,0,0,0,10,323,1640,8,15,491,1,57,23,10,863,15,5
"551287","Brno-Líšeň","6200",13232,1819,12,12,1056,0,3,474,824,217,57,0,257,4,18,1439,0,0,0,8,827,3499,11,22,886,2,110,31,16,1593,28,7
"551295","Brno-Slatina","6200",4620,615,2,4,427,0,14,133,256,70,24,0,98,3,6,495,0,0,0,2,250,1200,7,16,344,4,56,14,11,554,14,1
"551309","Brno-Tuřany","6200",2893,379,2,0,213,0,0,155,149,48,9,0,60,3,6,281,0,0,0,4,161,773,3,3,240,0,27,7,1,364,4,1
"551317","Brno-Chrlice","6200",1709,224,3,3,128,0,1,75,81,19,3,0,48,2,5,183,0,0,0,3,81,487,0,5,142,1,6,2,3,199,4,1
"551325","Brno-Bosonohy","6200",1370,211,1,2,63,0,0,39,57,20,4,0,17,3,3,162,0,0,0,1,69,414,2,2,142,1,18,6,0,126,6,1
"551368","Brno-Žebětín","6200",2444,412,1,4,134,0,0,93,68,55,4,0,39,2,3,275,0,0,0,6,170,597,3,0,321,0,20,12,3,218,4,0
"551376","Brno-Ivanovice","6200",1057,261,0,0,42,0,0,36,45,19,3,0,26,2,0,102,0,0,0,1,80,269,0,3,76,0,3,2,0,87,0,0
"551406","Brno-Jehnice","6200",653,137,0,0,26,0,1,33,31,18,3,0,16,0,2,79,0,0,0,1,44,155,1,1,39,0,9,2,5,49,1,0
"551422","Brno-Ořešín","6200",336,59,0,0,43,0,0,18,30,12,2,0,9,2,1,29,0,0,0,0,13,66,0,0,18,0,0,0,0,34,0,0
"551431","Brno-Útěchov","6200",498,126,0,1,18,0,0,20,20,11,0,0,9,0,1,44,0,0,0,0,37,124,0,6,27,0,2,2,0,49,1,0
"554219","Nová Bělá","8100",1106,146,0,0,67,0,3,27,97,4,0,0,18,2,2,87,0,0,1,0,36,328,1,1,118,0,13,2,2,147,4,0
"554227","Vítkovice","8100",1976,162,4,0,183,0,1,34,203,19,8,0,22,8,2,156,0,0,0,2,34,676,4,5,58,0,13,4,4,341,33,0
"554235","Stará Bělá","8100",2172,262,0,0,139,0,1,62,173,23,10,0,35,0,4,181,0,0,0,1,83,644,2,1,275,0,24,2,0,242,8,0
"554243","Pustkovec","8100",721,117,1,0,56,0,0,15,53,8,3,0,10,0,1,61,0,0,0,0,26,252,0,3,48,1,5,2,0,58,1,0
"554286","Mariánské Hory a Hulváky","8100",4697,383,6,5,394,0,4,110,418,71,32,0,44,8,8,413,0,0,4,5,128,1668,2,14,205,0,64,10,10,665,26,0
"554308","Petřkovice","8100",1584,181,0,0,114,0,2,34,99,12,21,0,11,1,3,154,0,0,0,2,65,585,2,1,79,0,12,2,4,195,5,0
"554324","Lhotka","8100",721,108,0,1,56,0,0,11,47,2,4,0,17,2,0,62,0,0,0,1,24,251,3,1,34,1,6,1,5,83,1,0
"554332","Hošťálkovice","8100",904,78,0,1,60,0,1,37,67,6,5,0,7,1,0,58,0,0,0,1,41,366,0,0,56,0,5,4,1,109,0,0
"554367","Nová Ves","8100",283,31,1,0,19,0,1,16,20,2,1,0,3,0,1,24,0,0,0,0,11,83,0,0,11,0,5,3,0,50,1,0
"554375","Proskovice","8100",669,81,0,1,51,0,1,8,42,15,2,0,2,0,1,63,0,0,0,0,20,253,0,0,38,0,4,1,1,76,9,0
"554430","Michálkovice","8100",1351,110,1,1,96,0,3,18,148,15,18,0,14,0,1,140,0,0,1,1,42,447,3,6,52,1,16,0,3,211,3,0
"554537","Radvanice a Bartovice","8100",2922,244,4,3,214,0,2,78,277,35,23,0,22,5,2,222,0,0,0,6,65,1074,6,6,121,1,15,2,8,467,20,0
"554561","Krásné Pole","8100",1424,181,2,2,106,0,0,46,97,21,6,0,23,1,1,159,0,0,0,1,42,437,1,1,106,0,8,3,1,167,12,0
"554570","Martinov","8100",617,62,0,0,50,0,0,14,49,8,2,0,5,1,1,52,0,0,0,1,20,226,0,1,34,0,10,0,1,75,5,0
"554588","Polanka nad Odrou","8100",2643,250,5,3,224,0,7,93,152,36,15,0,40,5,4,253,0,0,4,3,80,951,2,4,153,0,11,11,3,319,15,0
"554669","Hrabová","8100",1930,203,3,0,141,0,5,49,156,20,18,0,24,1,4,179,0,0,4,0,65,700,0,5,109,0,17,6,5,206,10,0
"554685","Svinov","8100",2348,240,4,0,187,0,2,59,152,48,15,0,19,2,7,234,0,0,0,3,83,870,0,4,157,0,22,6,2,223,9,0
"554715","Třebovice","8100",1121,135,2,0,81,0,1,33,64,8,2,0,11,0,0,96,0,0,0,0,74,357,3,0,111,1,9,2,1,129,1,0
"554723","Plesná","8100",837,86,1,0,59,0,0,34,74,8,4,0,16,0,0,72,0,0,0,1,34,281,1,0,72,0,15,2,0,73,4,0
"554731","Plzeň 5-Křimice","3200",955,147,2,2,75,0,0,45,55,7,5,0,20,1,4,122,0,0,0,0,67,268,0,2,21,0,8,2,0,99,3,0
"554758","Plzeň 6-Litice","3200",1034,130,4,2,75,0,1,40,61,19,4,0,20,1,3,121,0,0,0,0,92,289,0,1,64,1,9,4,3,85,5,0
"554766","Plzeň 7-Radčice","3200",533,80,2,0,31,0,0,32,25,2,8,0,16,1,0,47,0,0,0,0,39,155,0,0,15,0,10,5,3,62,0,0
"554774","Plzeň 8-Černice","3200",906,166,2,0,59,0,0,51,38,12,8,0,13,1,4,89,0,0,0,0,74,241,0,0,39,0,13,4,1,88,3,0
"557978","Plzeň 10-Lhota","3200",681,116,2,0,49,0,1,34,32,6,1,0,11,2,3,96,0,0,0,3,56,167,0,4,23,1,13,5,0,52,4,0
"559199","Plzeň 9-Malesice","3200",397,71,0,0,16,0,0,17,20,5,0,0,7,0,3,48,0,0,0,1,34,108,0,2,16,0,2,0,3,43,1,0

regions_coords.csv

"","V1","V2","V3"
"1",-126.580760971797,0.364149802562008,-1.29981097561824
"2",58.0551969734965,13.195216617336,-5.00219982327301
"3",94.8874661772229,17.4732536504848,-5.60398330888646
"4",109.041656341178,18.3323283651032,-6.18664939094928
"5",156.437950606475,22.5276616185903,-6.03136070679291
"6",167.087575672251,23.0882605207778,-6.57771886398321
"7",96.3996693376325,15.5034440422962,-4.73389928385461
"8",99.249683864546,18.8804276615314,-5.52993692399843
"9",115.721031141343,20.0012647435876,-5.65388745258362
"10",136.872740215962,21.4635895262138,-5.35194668470147
"11",111.257972592794,21.8308177372535,-6.37463799506354
"12",168.991395573106,26.0643467666653,-6.35027513944159
"13",145.674371443967,25.4580201272915,-6.11518855945034
"14",193.21670552661,27.6138702673889,-6.4711305445325
"15",-276.42736212058,-9.04811346937559,6.24157906574719

regions_coords_rot.csv

"","Comp.1","Comp.2"
"1",234.575015742881,-0.34276831175172
"2",49.5011077831771,1.30703001056369
"3",12.4470651249245,-0.0770141481152752
"4",-1.73095606375618,0.173632487624993
"5",-49.3101911124899,-0.301681480053844
"6",-59.971038069557,-0.0275878305154308
"7",11.0935661144173,2.00503981838521
"8",7.98814744537899,-1.13868028019051
"9",-8.52040613253214,-0.967754440685012
"10",-29.7216927124205,-0.771189172532245
"11",-4.2141215915147,-3.14078670372355
"12",-62.1018041277915,-2.8456466593781
"13",-38.8087892137319,-4.06495074199441
"14",-86.3740956901128,-2.49560703834434
"15",384.698740929755,-2.67979885474181

subregions_coords.csv

"","V1","V2","V3"
"1",-126.580760971797,0.364149802562008,-1.29981097561824
"2",111.060972218791,17.3054543723822,-4.94593398453627
"3",42.8267331135141,11.8991554409468,-5.75396601565307
"4",96.5136973091264,16.8546778206612,-5.73120746422767
"5",109.938055225757,12.8320908162614,-4.02829855195165
"6",144.524672381962,18.5901438468035,-5.32558190176214
"7",79.7282386662944,15.4009836337327,-5.88251992291356
"8",108.693444185256,17.7876841027012,-6.0724992401784
"9",83.8865243129879,15.5601550529897,-5.20012874766355
"10",-72.6527891319555,3.15061578755067,-4.10517851214127
"11",-108.708100181715,0.561071678920297,-2.35742695803011
"12",97.6636625063116,16.3335034126771,-4.9357331014597
"13",141.816840107128,19.1732223516905,-5.52437488115218
"14",66.1944543572949,15.697938837152,-5.53286618446934
"15",112.749721320529,19.3088427397685,-6.312702759921
"16",125.452302462853,19.7798282509534,-5.81608554693187
"17",93.6992096270191,17.3190272024866,-5.39417338591787
"18",92.3900733574781,16.8119501599056,-6.57310374358949
"19",124.246443816325,20.0518361631083,-5.64963096088325
"20",91.0133692292568,16.0578520048756,-4.75747042614451
"21",156.261339014097,21.7596930785695,-7.03865394563684
"22",124.805089545907,19.2533907152592,-6.07170400359148
"23",39.5397534617544,14.2006538413337,-5.59772224741536
"24",139.272773374862,20.0263555623407,-6.4569966188222
"25",119.171179005859,18.4083738719571,-6.43658881288191
"26",127.552639053221,18.8890834773912,-6.56586717082494
"27",191.858480631278,23.1577858165766,-5.91554317497839
"28",155.671203061761,21.6211725408938,-5.59433568376347
"29",130.45281343759,20.6870920694754,-5.87665101889272
"30",189.886836183009,25.636127249444,-6.61127170256728
"31",175.911391093852,24.3039080448255,-6.31652806173786
"32",182.238515781006,24.2032530537728,-6.79845510309985
"33",130.391015826289,19.0319916133212,-6.31657629062657
"34",181.379392817501,23.7771640191554,-6.7844712028099
"35",188.799377079789,24.5752389033229,-6.78527996903577
"36",162.809608573942,23.3636786188914,-6.87980950038762
"37",151.243087789124,22.3196762452906,-6.15935542554003
"38",151.129569952617,19.6301917244085,-5.32409525982411
"39",56.2128137006379,13.222894187866,-4.99278328110098
"40",101.425985464063,15.8079130620033,-4.39252198459653
"41",59.8020902934921,11.7496506439897,-4.29920038090979
"42",80.297132996088,17.6162858096311,-4.87049533515904
"43",114.531247185605,17.3364718679492,-4.8088799184539
"44",113.452141688271,21.7646504266805,-5.76811309255877
"45",129.923279634279,21.7422519870892,-5.90590573234774
"46",80.3563591357319,16.8198412403392,-6.38263715764654
"47",143.414357281038,21.2756135521721,-5.57311566059922
"48",88.5871918201322,17.3436780412052,-5.71104191803416
"49",135.204825479844,21.3012907741955,-5.79556003806406
"50",112.271825634607,21.1542576045902,-5.47012512823634
"51",123.749163768916,18.7413535494924,-5.53873551802817
"52",120.588720024096,21.9963429889872,-5.65564356774678
"53",117.474477605994,17.8080128443658,-5.22138739343782
"54",169.035024413204,24.0123408805379,-5.53894030107267
"55",139.52679423065,22.452443387669,-4.67456254585729
"56",154.79171367455,24.0173238704352,-6.1015913729473
"57",10.6990009336285,14.5273516323057,-5.81824694253289
"58",105.133536221696,21.4692689736059,-6.33464587004047
"59",139.83633953734,22.7791716675553,-6.85382528220072
"60",169.526843704232,26.9193077385115,-6.31584103741304
"61",184.286904536049,26.4232969297296,-6.8251284186442
"62",204.112781192462,28.0847384913547,-6.7804445969491
"63",200.716001950465,27.7446260588628,-6.43014718762015
"64",134.207473193841,23.5288147373913,-5.91986496705307
"65",188.454920176745,28.3745287012091,-6.97391603333222
"66",186.785522610491,27.7985828016059,-6.72821860124118
"67",182.222516587699,25.6782623871275,-6.01566024181761
"68",190.539948206944,28.6489214867783,-6.87563251429653
"69",133.927969815429,23.7985347453501,-5.9050030105799
"70",136.193261978242,25.5259801484897,-6.18504807382278
"71",133.68143652636,24.4255192824233,-5.70092525350384
"72",220.007292497538,27.5207461221285,-6.8739399599507
"73",187.693321682235,27.9545307224109,-6.12927345620219
"74",233.834104178633,29.981298629785,-6.83391808058069
"75",171.804505454816,26.5740532900134,-6.44473742453317
"76",167.127003579037,26.5107865464715,-5.77029322723016
"77",179.767031994389,26.2599498201315,-6.63342107626306
"78",-276.42736212058,-9.04811346937559,6.24157906574719

subregions_coords_rot.csv

"","Comp.1","Comp.2"
"1",234.575015742881,-0.34276831175172
"2",-3.66376721307462,1.35530413050216
"3",64.7842910281934,1.40800528964689
"4",10.8741988657257,0.666864526325595
"5",-2.19440008467302,5.72713261758268
"6",-37.1254319522976,2.691959858838
"7",27.7219363773422,0.803207399272684
"8",-1.34121058666668,0.689372287511878
"9",23.5639402165247,0.969769660402548
"10",180.594310021531,1.09735295718705
"11",216.741707008361,0.858847900694115
"12",9.76852106944127,1.27638838072193
"13",-34.4715016644491,1.89887083562941
"14",41.1910319089931,-0.551401649353981
"15",-5.50404045636561,-0.509858829999061
"16",-18.204544831709,0.0141484609334623
"17",13.6437443740323,-0.0162013113171064
"18",14.9885317117672,0.386926355320042
"19",-17.0236559199695,-0.351344025734822
"20",16.4200010045293,1.03103344886924
"21",-49.0740528683183,0.450120397214194
"22",-17.5181386746789,0.488350555446697
"23",67.8811858398199,-1.14353789905017
"24",-32.0019579091459,0.849363592215261
"25",-11.8353939904395,0.890114531518212
"26",-20.228776013757,1.06644507600504
"27",-84.6714930562685,1.84059034764918
"28",-48.4748902779899,0.542058267257
"29",-23.2606991625472,-0.49921401102205
"30",-82.899735817002,-0.784373342264242
"31",-68.8629044523385,-0.54934421808266
"32",-75.1627725310884,0.0458871859701833
"33",-23.0696349103776,1.14598230439665
"34",-74.2729544301256,0.40347337004749
"35",-81.7326294023057,0.188207760208456
"36",-55.7277191306278,-0.636769253007077
"37",-44.1149753816339,-0.500656645532548
"38",-43.7914435785518,2.17170943336909
"39",51.3356819028583,1.13533268555445
"40",6.05883411449577,2.09464381238807
"41",47.8726331698454,2.88480302607509
"42",26.9815119952912,-1.36081113657123
"43",-7.12583674342398,1.59581400005306
"44",-6.39639327689931,-2.90320214256414
"45",-22.815318423113,-1.59255956368549
"46",26.9847623103197,-0.562174095717265
"47",-36.2285661205355,-0.07212748450144
"48",18.7381729358788,-0.440620149282267
"49",-28.0461933688235,-0.739845888167697
"50",-5.17195051612607,-2.38699936323571
"51",-16.4253981325442,0.916228357178988
"52",-13.5292301892044,-2.57598758107126
"53",-10.0969325290092,1.35592645802829
"54",-61.9847988378872,-0.796514795752885
"55",-32.4449603517191,-1.54942309426923
"56",-47.7855135681559,-1.91554270283932
"57",96.6080289012241,-3.72505403509903
"58",1.91983102962966,-3.25937681156671
"59",-32.7791128401367,-1.85093889859127
"60",-62.7024838143085,-3.65610756448819
"61",-77.378529647148,-2.00713782741678
"62",-97.2736198140569,-2.11278113552394
"63",-93.8606445609202,-2.03939444003492
"64",-27.2261254223339,-3.03855490675745
"65",-81.6863944639249,-3.62638472875412
"66",-79.9770628511437,-3.18277752521616
"67",-75.262192241037,-1.42585471699505
"68",-83.7864968252789,-3.73685354482668
"69",-26.9685748509369,-3.32931034421307
"70",-29.3620416022739,-4.87428060734828
"71",-26.7718372995379,-3.97365699642568
"72",-113.075323353337,-0.307305498347166
"73",-80.8942784769332,-3.2672429292009
"74",-127.052230806957,-1.67883673762673
"75",-64.946163182027,-3.13376038190072
"76",-60.2780427761186,-3.43654471885142
"77",-72.8597277393324,-2.19781920824191
"78",384.698740929755,-2.67979885474181

zahranicni_okrsky.csv

Albánie ,Tirana ,1,Albánie - Tirana 
Rakousko ,Vídeň ,2,Rakousko - Vídeň 
Belgie ,Brusel ,3,Belgie - Brusel 
Bosna a Hercegovina ,Sarajevo ,4,Bosna a Hercegovina - Sarajevo 
Bulharsko ,Sofie ,5,Bulharsko - Sofie 
Bělorusko ,Minsk ,6,Bělorusko - Minsk 
Chorvatsko ,Záhřeb ,7,Chorvatsko - Záhřeb 
Dánsko ,Kodaň ,8,Dánsko - Kodaň 
Estonsko ,Tallinn ,9,Estonsko - Tallinn 
Finsko ,Helsinky ,10,Finsko - Helsinky 
Francie ,Paříž ,11,Francie - Paříž 
Německo ,Berlín ,12,Německo - Berlín 
Německo ,Drážďany ,13,Německo - Drážďany 
Německo ,Mnichov ,14,Německo - Mnichov 
Německo ,Düsseldorf ,15,Německo - Düsseldorf 
Řecko ,Athény ,16,Řecko - Athény 
Svatý stolec ,Vatikán ,17,Svatý stolec - Vatikán 
Maďarsko ,Budapešť ,18,Maďarsko - Budapešť 
Irsko ,Dublin ,19,Irsko - Dublin 
Itálie ,Řím ,20,Itálie - Řím 
Lotyšsko ,Riga ,21,Lotyšsko - Riga 
Litva ,Vilnius ,22,Litva - Vilnius 
Lucembursko ,Lucemburk ,23,Lucembursko - Lucemburk 
Nizozemsko ,Haag ,24,Nizozemsko - Haag 
Norsko ,Oslo ,25,Norsko - Oslo 
Polsko ,Varšava ,26,Polsko - Varšava 
Portugalsko ,Lisabon ,27,Portugalsko - Lisabon 
Rumunsko ,Bukurešť ,28,Rumunsko - Bukurešť 
Rusko ,Moskva ,29,Rusko - Moskva 
Rusko ,Sankt Peterburg ,30,Rusko - Sankt Peterburg 
Rusko ,Jekatěrinburg ,31,Rusko - Jekatěrinburg 
Slovensko ,Bratislava ,32,Slovensko - Bratislava 
Slovinsko ,Lublaň ,33,Slovinsko - Lublaň 
Španělsko ,Madrid ,34,Španělsko - Madrid 
Švédsko ,Stockholm ,35,Švédsko - Stockholm 
Švýcarsko ,Bern ,36,Švýcarsko - Bern 
Ukrajina ,Kyjev ,37,Ukrajina - Kyjev 
Ukrajina ,Lvov ,38,Ukrajina - Lvov 
Spojené království ,Londýn ,39,Spojené království - Londýn 
Srbská republika ,Bělehrad ,40,Srbská republika - Bělehrad 
Moldavsko ,Kišiněv ,41,Moldavsko - Kišiněv 
Makedonie ,Skopje ,42,Makedonie - Skopje 
Republika Kosovo ,Priština ,43,Republika Kosovo - Priština 
Černá Hora ,Podgorica ,44,Černá Hora - Podgorica 
Čína ,Hongkong ,45,Čína - Hongkong 
Čína ,Peking ,46,Čína - Peking 
Čína ,Šanghaj ,47,Čína - Šanghaj 
Čína ,Chengdu ,48,Čína - Chengdu 
Kypr ,Nikósie ,49,Kypr - Nikósie 
Gruzie ,Tbilisi ,50,Gruzie - Tbilisi 
Indie ,Dillí ,51,Indie - Dillí 
Indonésie ,Jakarta ,52,Indonésie - Jakarta 
Írán ,Teherán ,53,Írán - Teherán 
Irák ,Bagdád ,54,Irák - Bagdád 
Irák ,Erbíl ,55,Irák - Erbíl 
Irák ,Balad ,56,Irák - Balad 
Izrael ,Tel Aviv ,57,Izrael - Tel Aviv 
Japonsko ,Tokio ,58,Japonsko - Tokio 
Kazachstán ,Astana ,59,Kazachstán - Astana 
Jordánsko ,Ammán ,60,Jordánsko - Ammán 
Korea ,Soul ,61,Korea - Soul 
"Korea, lidově demokr.rep. ",Pchjongjang ,62,"Korea, lidově demokr.rep. - Pchjongjang "
Kuvajt ,Kuvajt ,63,Kuvajt - Kuvajt 
Libanon ,Bejrút ,64,Libanon - Bejrút 
Malajsie ,Kuala Lumpur ,65,Malajsie - Kuala Lumpur 
Mongolsko ,Ulánbátar ,66,Mongolsko - Ulánbátar 
Pákistán ,Islámábád ,67,Pákistán - Islámábád 
Filipíny ,Manila ,68,Filipíny - Manila 
Saúdská Arábie ,Rijád ,69,Saúdská Arábie - Rijád 
Vietnam ,Hanoj ,70,Vietnam - Hanoj 
Sýrie ,Damašek ,71,Sýrie - Damašek 
Thajsko ,Bangkok ,72,Thajsko - Bangkok 
Spojené arabské emiráty ,Abú Dhabí ,73,Spojené arabské emiráty - Abú Dhabí 
Turecko ,Ankara ,74,Turecko - Ankara 
Turecko ,Istanbul ,75,Turecko - Istanbul 
Uzbekistán ,Taškent ,76,Uzbekistán - Taškent 
Afghánistán ,Kábul ,77,Afghánistán - Kábul 
Afghánistán ,Bagram ,78,Afghánistán - Bagram 
Ázerbájdžán ,Baku ,79,Ázerbájdžán - Baku 
Arménská republika ,Jerevan ,80,Arménská republika - Jerevan 
Myanmar ,Rangun ,81,Myanmar - Rangun 
Kambodžské království ,Phnompenh ,82,Kambodžské království - Phnompenh 
Argentina ,Buenos Aires ,83,Argentina - Buenos Aires 
Brazílie ,Brasília ,84,Brazílie - Brasília 
Brazílie ,Sao Paulo ,85,Brazílie - Sao Paulo 
Kanada ,Ottawa ,86,Kanada - Ottawa 
Kanada ,Toronto ,87,Kanada - Toronto 
Chile ,Santiago de Chile ,88,Chile - Santiago de Chile 
Kuba ,Havana ,89,Kuba - Havana 
Mexiko ,Mexiko ,90,Mexiko - Mexiko 
Peru ,Lima ,91,Peru - Lima 
Kolumbie ,Bogota ,92,Kolumbie - Bogota 
Spojené státy ,Los Angeles ,93,Spojené státy - Los Angeles 
Spojené státy ,New York ,94,Spojené státy - New York 
Spojené státy ,Washington ,95,Spojené státy - Washington 
Spojené státy ,Chicago ,96,Spojené státy - Chicago 
Alžírsko ,Alžír ,97,Alžírsko - Alžír 
Senegal ,Dakar ,98,Senegal - Dakar 
Etiopie ,Addis Abeba ,99,Etiopie - Addis Abeba 
Ghana ,Akkra ,100,Ghana - Akkra 
Maroko ,Rabat ,101,Maroko - Rabat 
Nigérie ,Abuja ,102,Nigérie - Abuja 
Jihoafrická republika ,Pretoria ,103,Jihoafrická republika - Pretoria 
Tunisko ,Tunis ,104,Tunisko - Tunis 
Egypt ,Káhira ,105,Egypt - Káhira 
Keňa ,Nairobi ,106,Keňa - Nairobi 
Zambie ,Lusaka ,107,Zambie - Lusaka 
Austrálie ,Canberra ,108,Austrálie - Canberra 
Austrálie ,Sydney ,109,Austrálie - Sydney