diff --git a/opencellid_parsing/003c.convert_data_into_xy_center_at_00.py b/opencellid_parsing/003c.convert_data_into_xy_center_at_00.py index 3d5faae..9ccd334 100644 --- a/opencellid_parsing/003c.convert_data_into_xy_center_at_00.py +++ b/opencellid_parsing/003c.convert_data_into_xy_center_at_00.py @@ -44,8 +44,10 @@ code_to_country = pickle.load(open(code_to_country_fp, 'rb')) ############################ pickle_fp_with_groundtruth = '{}/with_groundtruth_converted.pickle'.format(folderpath) +tmp_fp_with_groundtruth = '{}/with_groundtruth_converted.boundary'.format(folderpath) all_data = [] +boundaries = [] for filepath in glob.glob("{}/with_groundtruth/*/*/*/*/*.csv".format(folderpath)): __, __, radio, mcc, mnc, area, cell_and_loc = list(filter(None, filepath.rstrip('.csv').split('/'))) cell, cell_lon, cell_lat = cell_and_loc.split('_') @@ -54,6 +56,12 @@ for filepath in glob.glob("{}/with_groundtruth/*/*/*/*/*.csv".format(folderpath) cell_lat = float(cell_lat) cell_lat_rad = cell_lat * np.pi / 180 data = [] + min_x = float('inf') + min_y = float('inf') + min_sig = float('inf') + max_x = float('-inf') + max_y = float('-inf') + max_sig = float('-inf') with open(filepath, 'r') as f: lines = f.readlines() for line in lines: @@ -64,6 +72,12 @@ for filepath in glob.glob("{}/with_groundtruth/*/*/*/*/*.csv".format(folderpath) lat = float(tmp[1]) sig = float(tmp[2]) x, y = convert_gps_into_xy((lat, lon), (cell_lat_rad, cell_lon_rad)) + min_x = min(min_x, x) + min_y = min(min_y, y) + min_sig = min(min_sig, sig) + max_x = max(max_x, x) + max_y = max(max_y, y) + max_sig = max(max_sig, sig) data.append([lon, lat, sig, x, y]) all_data.append({ 'radio': radio, @@ -76,7 +90,13 @@ for filepath in glob.glob("{}/with_groundtruth/*/*/*/*/*.csv".format(folderpath) 'latitude': cell_lat, 'x': 0.0, 'y': 0.0, + 'boundary': (min_x, min_y, max_x, max_y), 'measurements': np.array(data) # lon, lat, sig, x, y }) + boundaries.append((min_x, max_x, min_y, max_y, min_sig, max_sig)) pickle.dump(all_data, open(pickle_fp_with_groundtruth, 'wb')) +with open(tmp_fp_with_groundtruth, 'w') as f: + f.write("#min_x,max_x,min_y,max_y,min_sig,max_sig\n") + for boundary in boundaries: + f.write("{:.4f},{:.4f},{:.4f},{:.4f},{:.0f},{:.0f}\n".format(boundary[0], boundary[1], boundary[2], boundary[3], boundary[4], boundary[5])) diff --git a/opencellid_parsing/003d_optional.generate_image.py b/opencellid_parsing/003d_optional.generate_image.py new file mode 100644 index 0000000..7414f62 --- /dev/null +++ b/opencellid_parsing/003d_optional.generate_image.py @@ -0,0 +1,48 @@ +#!/usr/bin/python + +import os +import sys +import glob +import pickle +import numpy as np +import matplotlib.pyplot as plt + + +def blocking_display_signal_map( + data_vector: np.ndarray, + fp: str, + vmin: float = -80.0, + vmax: float = -40.0 +): + ''' + ''' + plt.scatter(data_vector[:, 3], data_vector[:, 4], s=50, c=data_vector[:, 2]) + plt.colorbar() + # plt.show() + plt.draw() + plt.savefig("{}.png".format(fp), dpi=50) + plt.pause(0.1) + q = input("press Enter to continue... type q to quit: ") + if q == 'q': + sys.exit() + plt.close() + + +if len(sys.argv) < 3: + print('Usage: {} pickle_fp'.format(sys.argv[0])) + sys.exit(0) + +pickle_fp = sys.argv[1] + +############################ +# load +############################ +all_data = pickle.load(open(pickle_fp, 'rb')) + +for data in all_data: + filename = ( + "{}_{}_{}_{}_{}_{}.png" + .format(data['country_code'], data['radio'], data['mcc'], data['mnc'], data['area'], data['cell']) + ) + blocking_display_signal_map(data['measurements'], filename) +