Skip to content

Commit

Permalink
Merge branch 'issue_6' into devel
Browse files Browse the repository at this point in the history
  • Loading branch information
internaut committed Feb 5, 2021
2 parents 14f8739 + 7afdd97 commit d8ece63
Show file tree
Hide file tree
Showing 40 changed files with 1,335 additions and 715 deletions.
7 changes: 7 additions & 0 deletions examples/brandenburg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "FeatureCollection",
"name": "Germany_AL4",
"features": [
{ "type": "Feature", "properties": { "srid": "4326", "id": "62504", "name": "Brandenburg", "localname": "Brandenburg", "official_name": "", "boundary": "adminstrative", "admin_level": "4", "note": "", "wikidata": "Q1208", "wikipedia": "de:Brandenburg", "timestamp": "2018\/07\/19 01:55:20", "rpath": "62504,51477,0", "alltags": { "ref": "BB", "name": "Brandenburg", "name:am": "ብራንደንቡርግ", "name:an": "Brandemburgo", "name:ar": "براندنبورغ", "name:ay": "Brandenburg suyu", "name:az": "Brandenburq", "name:ba": "Бранденбург", "name:be": "Брандэнбург", "name:bg": "Бранденбург", "name:bn": "ব্রান্ডেনবুর্গ", "name:ca": "Brandenburg", "name:ce": "Бранденбург", "name:cs": "Braniborsko", "name:cv": "Бранденбург", "name:de": "Brandenburg", "name:el": "Βρανδεμβούργο", "name:eo": "Brandenburgio", "name:es": "Brandemburgo", "name:eu": "Brandenburgo", "name:fa": "براندنبورگ", "name:fr": "Brandebourg", "name:fy": "Brandenburch", "name:gl": "Brandeburgo", "name:gn": "Brandeburgo", "name:he": "ברנדנבורג", "name:hi": "ब्रैंडेनबर्ग", "name:hy": "Բրանդենբուրգ", "name:ia": "Brandeburgo", "name:ie": "Brandenburgia", "name:is": "Brandenborg", "name:it": "Brandeburgo", "name:ja": "ブランデンブルク州", "name:ka": "ბრანდენბურგი", "name:kk": "Бранденбург", "name:ko": "브란덴부르크 주", "name:la": "Brandenburgum", "name:lb": "Brandenburg", "name:li": "Brandeburg", "name:lt": "Brandenburgas", "name:lv": "Brandenburga", "name:mk": "Бранденбург", "name:mn": "Бранденбург", "name:mr": "ब्रांडेनबुर्ग", "name:ne": "ब्रान्डेनबर्ग", "name:nl": "Brandenburg", "name:oc": "Brandeborg", "name:os": "Бранденбург", "name:pa": "ਬ੍ਰਾਂਡਨਬੁਰਕ", "name:pl": "Brandenburgia", "name:ps": "براندنبورگ", "name:pt": "Brandemburgo", "name:ru": "Бранденбург", "name:sk": "Brandenbursko", "name:sq": "Brandenburgu", "name:sr": "Бранденбург", "name:th": "รัฐบรันเดินบวร์ค", "name:tl": "Brandeburgo", "name:uk": "Бранденбург", "name:ur": "برندنبرگ", "name:vo": "Brandänburgän", "name:yi": "בראנדנבורג", "name:zh": "勃兰登堡", "boundary": "administrative", "name:hsb": "Braniborska", "wikidata": "Q1208", "ISO3166-2": "DE-BB", "wikipedia": "de:Brandenburg", "admin_level": "4", "alt_name:cs": "Země Braniborsko", "border_type": "state", "name:prefix": "Bundesland", "de:regionalschluessel": "12", "TMC:cid_58:tabcd_1:Class": "Area", "TMC:cid_58:tabcd_1:LCLversion": "12.0", "TMC:cid_58:tabcd_1:LocationCode": "267", "de:amtlicher_gemeindeschluessel": "12" } }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 11.267612, 53.121972 ], [ 11.393711, 53.10984 ], [ 11.395417, 53.140179 ], [ 11.42153, 53.141106 ], [ 11.53464, 53.125218 ], [ 11.569435, 53.165502 ], [ 11.550948, 53.20823 ], [ 11.629009, 53.241997 ], [ 11.699607, 53.244091 ], [ 11.728497, 53.21695 ], [ 11.827851, 53.227466 ], [ 11.795949, 53.253312 ], [ 11.861657, 53.248446 ], [ 11.892566, 53.278955 ], [ 11.948175, 53.271419 ], [ 11.973662, 53.297528 ], [ 12.018622, 53.299422 ], [ 12.014026, 53.33423 ], [ 12.055753, 53.349153 ], [ 12.045029, 53.370756 ], [ 12.061792, 53.371256 ], [ 12.079668, 53.366857 ], [ 12.081924, 53.346194 ], [ 12.106835, 53.34353 ], [ 12.139637, 53.361395 ], [ 12.168702, 53.339156 ], [ 12.229785, 53.358135 ], [ 12.260042, 53.323897 ], [ 12.310277, 53.327242 ], [ 12.393245, 53.302036 ], [ 12.392042, 53.284889 ], [ 12.428612, 53.274005 ], [ 12.445349, 53.249652 ], [ 12.529791, 53.264621 ], [ 12.605645, 53.244335 ], [ 12.660175, 53.254649 ], [ 12.674905, 53.248638 ], [ 12.67066, 53.229694 ], [ 12.757725, 53.224094 ], [ 12.739304, 53.199295 ], [ 12.764253, 53.188972 ], [ 12.848072, 53.200874 ], [ 12.879718, 53.179359 ], [ 12.965443, 53.200246 ], [ 12.979795, 53.19081 ], [ 12.942102, 53.174467 ], [ 12.980444, 53.162734 ], [ 13.078718, 53.200462 ], [ 13.10653, 53.214958 ], [ 13.104125, 53.236278 ], [ 13.149808, 53.25066 ], [ 13.180433, 53.251228 ], [ 13.203488, 53.22126 ], [ 13.229785, 53.216611 ], [ 13.252443, 53.262103 ], [ 13.298454, 53.28097 ], [ 13.360916, 53.277759 ], [ 13.386071, 53.244784 ], [ 13.405712, 53.246824 ], [ 13.44252, 53.286519 ], [ 13.43781, 53.299583 ], [ 13.48359, 53.291228 ], [ 13.502451, 53.327389 ], [ 13.523603, 53.319917 ], [ 13.516355, 53.352135 ], [ 13.556168, 53.376039 ], [ 13.550068, 53.399166 ], [ 13.624767, 53.408976 ], [ 13.64059, 53.447112 ], [ 13.711784, 53.48137 ], [ 13.812113, 53.484135 ], [ 13.826096, 53.498866 ], [ 13.778005, 53.513742 ], [ 13.791149, 53.558362 ], [ 13.82185, 53.518072 ], [ 13.87974, 53.504012 ], [ 13.875533, 53.473292 ], [ 13.918138, 53.45541 ], [ 13.902906, 53.43181 ], [ 13.918155, 53.421914 ], [ 14.001263, 53.434914 ], [ 14.081912, 53.410847 ], [ 14.121929, 53.441704 ], [ 14.179376, 53.422526 ], [ 14.224816, 53.434292 ], [ 14.242334, 53.421925 ], [ 14.230912, 53.367779 ], [ 14.099028, 53.26147 ], [ 14.264627, 53.259103 ], [ 14.261981, 53.276502 ], [ 14.302061, 53.286208 ], [ 14.316346, 53.312279 ], [ 14.402259, 53.330064 ], [ 14.415453, 53.324377 ], [ 14.406803, 53.308729 ], [ 14.421205, 53.276137 ], [ 14.449841, 53.260722 ], [ 14.404364, 53.209488 ], [ 14.376247, 53.199131 ], [ 14.366777, 53.168451 ], [ 14.38642, 53.140675 ], [ 14.349985, 53.057392 ], [ 14.257073, 53.001979 ], [ 14.143936, 52.961109 ], [ 14.160814, 52.886771 ], [ 14.123005, 52.837765 ], [ 14.216389, 52.816773 ], [ 14.28029, 52.774268 ], [ 14.350431, 52.751291 ], [ 14.46523, 52.661411 ], [ 14.596211, 52.610643 ], [ 14.639014, 52.573317 ], [ 14.603838, 52.531031 ], [ 14.633926, 52.491484 ], [ 14.548115, 52.432337 ], [ 14.534376, 52.395 ], [ 14.584829, 52.306347 ], [ 14.575288, 52.289048 ], [ 14.689475, 52.256758 ], [ 14.71555, 52.236128 ], [ 14.685814, 52.193906 ], [ 14.705567, 52.168914 ], [ 14.680016, 52.143383 ], [ 14.681812, 52.11564 ], [ 14.759094, 52.065383 ], [ 14.748422, 52.031928 ], [ 14.714029, 52.003683 ], [ 14.721659, 51.994475 ], [ 14.704855, 51.976008 ], [ 14.721287, 51.951315 ], [ 14.694184, 51.901895 ], [ 14.611105, 51.857131 ], [ 14.590107, 51.821362 ], [ 14.645475, 51.795528 ], [ 14.668163, 51.725857 ], [ 14.7474, 51.675669 ], [ 14.76512, 51.60747 ], [ 14.729824, 51.581589 ], [ 14.696636, 51.596762 ], [ 14.70554, 51.576932 ], [ 14.674128, 51.550852 ], [ 14.609559, 51.550107 ], [ 14.599006, 51.571187 ], [ 14.567686, 51.581087 ], [ 14.516481, 51.55428 ], [ 14.387123, 51.541567 ], [ 14.332329, 51.504899 ], [ 14.273278, 51.532376 ], [ 14.136602, 51.543333 ], [ 14.142298, 51.522966 ], [ 14.108512, 51.521879 ], [ 14.073806, 51.492216 ], [ 14.08894, 51.477779 ], [ 14.032744, 51.475003 ], [ 14.062587, 51.445421 ], [ 14.036877, 51.434537 ], [ 14.044861, 51.419073 ], [ 14.015904, 51.404489 ], [ 14.028122, 51.396264 ], [ 14.003784, 51.395536 ], [ 14.000596, 51.372537 ], [ 13.970463, 51.375699 ], [ 13.972375, 51.393434 ], [ 13.955527, 51.397329 ], [ 13.882903, 51.374429 ], [ 13.83426, 51.383752 ], [ 13.763328, 51.359064 ], [ 13.767724, 51.371696 ], [ 13.599149, 51.368673 ], [ 13.570333, 51.385659 ], [ 13.542538, 51.369405 ], [ 13.523314, 51.380931 ], [ 13.520726, 51.403668 ], [ 13.462982, 51.412214 ], [ 13.475845, 51.418519 ], [ 13.446034, 51.430853 ], [ 13.421893, 51.421568 ], [ 13.428913, 51.431774 ], [ 13.400668, 51.454248 ], [ 13.374004, 51.438229 ], [ 13.378692, 51.425301 ], [ 13.320841, 51.437384 ], [ 13.328584, 51.426473 ], [ 13.285623, 51.410778 ], [ 13.286452, 51.399297 ], [ 13.260211, 51.401434 ], [ 13.268686, 51.384585 ], [ 13.216339, 51.395353 ], [ 13.201536, 51.431875 ], [ 13.174032, 51.428282 ], [ 13.20328, 51.451605 ], [ 13.182092, 51.49191 ], [ 13.201199, 51.491789 ], [ 13.208042, 51.524272 ], [ 13.185566, 51.557986 ], [ 13.142584, 51.567988 ], [ 13.154377, 51.600253 ], [ 13.120197, 51.619986 ], [ 13.08593, 51.608095 ], [ 13.050548, 51.647505 ], [ 13.154312, 51.686403 ], [ 13.154189, 51.710474 ], [ 13.186882, 51.715693 ], [ 13.152096, 51.744237 ], [ 13.163733, 51.75484 ], [ 13.14744, 51.766448 ], [ 13.17055, 51.787018 ], [ 13.123927, 51.85429 ], [ 13.150508, 51.859678 ], [ 13.149145, 51.872145 ], [ 13.118628, 51.883107 ], [ 13.040988, 51.870573 ], [ 13.026893, 51.880785 ], [ 13.045574, 51.900435 ], [ 12.973468, 51.900767 ], [ 12.976643, 51.920968 ], [ 12.955935, 51.922641 ], [ 12.960558, 51.934642 ], [ 12.852415, 51.935165 ], [ 12.844325, 51.967582 ], [ 12.776118, 51.964935 ], [ 12.756244, 51.986499 ], [ 12.668292, 52.01306 ], [ 12.597264, 51.98152 ], [ 12.539432, 51.984922 ], [ 12.535818, 52.002928 ], [ 12.494043, 52.011615 ], [ 12.480728, 52.033175 ], [ 12.429478, 52.018333 ], [ 12.276527, 52.103891 ], [ 12.216113, 52.170543 ], [ 12.247333, 52.183879 ], [ 12.248787, 52.211782 ], [ 12.282094, 52.216715 ], [ 12.296648, 52.22846 ], [ 12.24541, 52.249863 ], [ 12.262923, 52.295045 ], [ 12.30809, 52.344632 ], [ 12.284122, 52.364199 ], [ 12.306555, 52.377714 ], [ 12.291711, 52.386111 ], [ 12.302269, 52.405309 ], [ 12.27461, 52.416183 ], [ 12.297198, 52.423694 ], [ 12.289413, 52.430579 ], [ 12.330787, 52.478274 ], [ 12.308522, 52.479194 ], [ 12.329612, 52.496642 ], [ 12.271845, 52.487501 ], [ 12.257958, 52.518197 ], [ 12.23607, 52.523873 ], [ 12.221768, 52.500231 ], [ 12.184673, 52.495722 ], [ 12.167122, 52.514696 ], [ 12.18874, 52.532226 ], [ 12.142172, 52.528285 ], [ 12.18152, 52.575218 ], [ 12.166939, 52.627464 ], [ 12.23646, 52.628728 ], [ 12.23259, 52.688766 ], [ 12.197363, 52.718902 ], [ 12.222162, 52.739826 ], [ 12.205848, 52.76049 ], [ 12.220406, 52.78989 ], [ 12.244407, 52.786606 ], [ 12.25762, 52.80487 ], [ 12.233428, 52.859922 ], [ 12.197054, 52.877878 ], [ 12.123719, 52.853635 ], [ 12.125539, 52.89439 ], [ 12.112775, 52.875695 ], [ 12.022564, 52.89038 ], [ 11.979908, 52.876112 ], [ 11.83449, 52.910145 ], [ 11.823288, 52.92125 ], [ 11.846216, 52.95132 ], [ 11.788134, 52.960208 ], [ 11.743077, 52.987857 ], [ 11.692056, 52.979161 ], [ 11.676296, 53.008221 ], [ 11.627038, 53.011963 ], [ 11.637715, 53.039368 ], [ 11.510955, 53.047305 ], [ 11.446347, 53.078476 ], [ 11.340537, 53.054726 ], [ 11.273544, 53.098469 ], [ 11.267612, 53.121972 ] ], [ [ 13.08835, 52.41964 ], [ 13.138103, 52.397856 ], [ 13.12722, 52.391666 ], [ 13.13108, 52.387236 ], [ 13.245947, 52.421126 ], [ 13.249725, 52.404957 ], [ 13.296755, 52.41625 ], [ 13.312082, 52.399139 ], [ 13.34328, 52.411273 ], [ 13.388437, 52.377865 ], [ 13.420834, 52.376127 ], [ 13.41878, 52.409995 ], [ 13.463563, 52.421065 ], [ 13.479767, 52.395947 ], [ 13.53843, 52.400603 ], [ 13.5355, 52.38899 ], [ 13.59275, 52.39383 ], [ 13.605798, 52.37361 ], [ 13.642682, 52.377509 ], [ 13.63632, 52.346819 ], [ 13.64843, 52.338276 ], [ 13.699975, 52.375599 ], [ 13.686815, 52.385306 ], [ 13.739034, 52.407335 ], [ 13.740057, 52.432333 ], [ 13.729895, 52.433924 ], [ 13.726043, 52.435298 ], [ 13.723017, 52.436721 ], [ 13.723066, 52.437057 ], [ 13.76116, 52.43771 ], [ 13.701267, 52.468224 ], [ 13.704616, 52.454756 ], [ 13.648568, 52.478744 ], [ 13.611369, 52.470653 ], [ 13.65695, 52.529883 ], [ 13.625691, 52.530182 ], [ 13.63739, 52.54225 ], [ 13.586412, 52.549782 ], [ 13.581446, 52.571081 ], [ 13.508126, 52.592159 ], [ 13.497131, 52.606708 ], [ 13.52287, 52.644812 ], [ 13.489883, 52.655517 ], [ 13.47951, 52.67551 ], [ 13.450794, 52.662706 ], [ 13.469909, 52.651915 ], [ 13.424448, 52.635545 ], [ 13.394554, 52.647554 ], [ 13.357644, 52.622977 ], [ 13.302609, 52.62719 ], [ 13.310177, 52.65737 ], [ 13.282752, 52.660761 ], [ 13.283772, 52.641113 ], [ 13.262141, 52.64072 ], [ 13.264234, 52.626865 ], [ 13.22057, 52.628242 ], [ 13.201643, 52.606479 ], [ 13.217397, 52.587477 ], [ 13.164528, 52.598793 ], [ 13.128966, 52.587302 ], [ 13.153538, 52.57324 ], [ 13.145686, 52.552791 ], [ 13.130503, 52.556023 ], [ 13.117393, 52.517033 ], [ 13.168632, 52.509253 ], [ 13.117693, 52.47732 ], [ 13.109278, 52.450632 ], [ 13.123153, 52.438709 ], [ 13.08835, 52.41964 ] ], [ [ 13.503438, 52.618993 ], [ 13.505442, 52.619687 ], [ 13.505449, 52.619884 ], [ 13.503814, 52.619223 ], [ 13.503438, 52.618993 ] ] ], [ [ [ 12.265677, 52.231337 ], [ 12.272055, 52.231249 ], [ 12.275011, 52.230527 ], [ 12.272864, 52.228934 ], [ 12.265677, 52.231337 ] ] ], [ [ [ 12.282741, 52.227261 ], [ 12.283196, 52.228181 ], [ 12.286261, 52.227816 ], [ 12.285645, 52.227026 ], [ 12.282741, 52.227261 ] ] ], [ [ [ 12.276428, 52.227809 ], [ 12.278846, 52.22944 ], [ 12.282289, 52.228014 ], [ 12.280859, 52.227598 ], [ 12.276428, 52.227809 ] ] ], [ [ [ 12.286549, 52.225852 ], [ 12.286796, 52.226286 ], [ 12.290414, 52.225202 ], [ 12.290055, 52.22474 ], [ 12.286549, 52.225852 ] ] ], [ [ [ 11.267355, 53.12452 ], [ 11.269086, 53.12301 ], [ 11.268632, 53.12211 ], [ 11.267954, 53.122929 ], [ 11.267355, 53.12452 ] ] ], [ [ [ 12.218076, 52.86133 ], [ 12.221282, 52.863301 ], [ 12.222102, 52.862805 ], [ 12.219041, 52.861117 ], [ 12.218076, 52.86133 ] ] ], [ [ [ 12.260021, 52.229894 ], [ 12.260818, 52.230771 ], [ 12.26174, 52.230569 ], [ 12.26097, 52.229695 ], [ 12.260021, 52.229894 ] ] ] ] } }
]
}
Binary file modified examples/duplicate_points.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
48 changes: 23 additions & 25 deletions examples/duplicate_points.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
Duplicate points, i.e. points with exactly the same coordinates will belong to the same Voronoi region.
Author: Markus Konrad <markus.konrad@wzb.eu>
March 2018
January 2021
"""


Expand All @@ -14,7 +14,7 @@
import numpy as np
import geopandas as gpd

from geovoronoi import coords_to_points, points_to_coords, voronoi_regions_from_coords, get_points_to_poly_assignments
from geovoronoi import coords_to_points, points_to_coords, voronoi_regions_from_coords, points_to_region
from geovoronoi.plotting import subplot_for_map, plot_voronoi_polys_with_points_in_area


Expand All @@ -23,6 +23,9 @@
geovoronoi_log.setLevel(logging.INFO)
geovoronoi_log.propagate = True


#%%

N_POINTS = 20
N_DUPL = 10
COUNTRY = 'Sweden'
Expand Down Expand Up @@ -61,56 +64,51 @@

print('duplicated %d random points -> we have %d coordinates now' % (N_DUPL, len(coords)))

# if we didn't know in advance how many duplicates we have (and which points they are), we could find out like this:
# unique_coords, unique_ind, dupl_counts = np.unique(coords, axis=0, return_index=True, return_counts=True)
# n_dupl = len(coords) - len(unique_ind)
# n_dupl
# >>> 10

#%%

#
# calculate the Voronoi regions, cut them with the geographic area shape and assign the points to them
#
# the duplicate coordinates will belong to the same voronoi region
#

poly_shapes, pts, poly_to_pt_assignments = voronoi_regions_from_coords(coords, area_shape,
accept_n_coord_duplicates=N_DUPL)
region_polys, region_pts = voronoi_regions_from_coords(coords, area_shape)

# poly_to_pt_assignments is a nested list because a voronoi region might contain several (duplicate) points

print('\n\nvoronoi region to points assignments:')
for i_poly, pt_indices in enumerate(poly_to_pt_assignments):
for i_poly, pt_indices in region_pts.items():
print('> voronoi region', i_poly, '-> points', str(pt_indices))

print('\n\npoints to voronoi region assignments:')
pts_to_poly_assignments = np.array(get_points_to_poly_assignments(poly_to_pt_assignments))
for i_pt, i_poly in enumerate(pts_to_poly_assignments):
pts_to_poly_assignments = points_to_region(region_pts)
for i_pt, i_poly in pts_to_poly_assignments.items():
print('> point ', i_pt, '-> voronoi region', i_poly)


#
# plotting
#
#%% plotting

# make point labels: counts of duplicates per points
count_per_pt = [sum(pts_to_poly_assignments == i_poly) for i_poly in pts_to_poly_assignments]
pt_labels = list(map(str, count_per_pt))
# make point labels: counts of duplicate assignments per points
count_per_pt = {pt_indices[0]: len(pt_indices) for pt_indices in region_pts.values()}
pt_labels = list(map(str, count_per_pt.values()))
distinct_pt_coords = coords[np.asarray(list(count_per_pt.keys()))]

# highlight voronoi regions with point duplicates
count_per_poly = np.array(list(map(len, poly_to_pt_assignments)))
vor_colors = np.repeat('blue', len(poly_shapes)) # default color
vor_colors[count_per_poly > 1] = 'red' # hightlight color
vor_colors = {i_poly: (1,0,0) if len(pt_indices) > 1 else (0,0,1)
for i_poly, pt_indices in region_pts.items()}

fig, ax = subplot_for_map()

plot_voronoi_polys_with_points_in_area(ax, area_shape, poly_shapes, coords,
plot_voronoi_polys_with_points_in_area(ax, area_shape, region_polys, distinct_pt_coords,
plot_voronoi_opts={'alpha': 0.2},
plot_points_opts={'alpha': 0.4},
voronoi_color=list(vor_colors),
voronoi_color=vor_colors,
voronoi_edgecolor=(0,0,0,1),
point_labels=pt_labels,
points_markersize=np.array(count_per_pt)*10)
points_markersize=np.square(np.array(list(count_per_pt.values())))*10)

ax.set_title('%d random points (incl. %d duplicates)\nand their Voronoi regions in %s' % (len(pts), N_DUPL, COUNTRY))
ax.set_title('%d random points (incl. %d duplicates)\nand their Voronoi regions in %s' % (len(coords), N_DUPL, COUNTRY))

plt.tight_layout()
plt.savefig('duplicate_points.png')
Expand Down
Binary file modified examples/random_points_across_italy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit d8ece63

Please sign in to comment.