This is a very short introduction to what I have implemented.

Ideas

  • No longer use quad-trees (ie. bisect squares into 4). Instead, we have the following approach:
    • Convert data to grid points
    • Generate the coarsest mesh first (8 Km)
    • Around each point, generate a square domain, half of the distance to the next point
    • Estimate the quality of that square domain. If accepted, add new 6 points. This number is needed to ensure the continuity of the grid as expected
    • Proceed the same way for every point on the coarsest mesh. This will create a new mesh that we will call mesh level 1.
    • Apply the same idea to every point of mesh level 1, resulting into mesh level 2.
    • Stop refining once the distance between points is the smallest acceptable (500 m or other)
    • Convert grid points back to longitude/latitude
  • Estimation based around population and vs_500
    • total_score_domain = w_v*score_vs500 + w_p*score_population. w_v + w_p = 1.0
    • Initially w_v=w_p=0.5
    • score_vs500 = 1 if vs_500 < 0.5 Km/s, 0 if vs_500 > 2 Km/s and linearly between 0 and 1 for other values
    • score_population = 1 if population in domain > k*min_population_acceptable, 0 if population < min_population_acceptable. Linearly valued between 0 and 1 otherwise. (in the image k=10 just for the example)
    • For vs_500 we use the minimal value of vs_500 found in the tentative domain
    • For population, we use the max value of population found in the tentative domain
    • Arbitrarily: if total_score_domain > 0.5 then refine the region. We can change this value, making it smaller will accept lots more of points
    • Other idea: use mean instead of max for population.

Results

We consider a grid over an 850km x 300km grid around the South Island. If we have a uniform grid. A mesh with 500m spacing for this domain would contain 1701x601 =  1022301 points. In the following we will compare to that quantity.

Make the coefficients w_v and w_p vary and discuss the resulting non-uniform grids. 

  • w_v = 1.0 gives us a population based grid only: (30k grid points)
  • w_p = 1.0 seems to give a fine grid only based around Canterbury: (80k grid points)
  • Any other values will result in grids in between those extremes. For example, if w_v=w_p=0.5, we get the green points on top of the population grid: . Here, the green points are the supplementary points added to the pure population grid.

Remarks

  • The colored map of the vs_500 values looks like:
  • No labels