test_squad_prc.py
3.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import urllib.request
import json
import os
import datetime
from imageio import imread
import cv2
import numpy as np
import loca_data
import duamel_model
import matplotlib.pyplot as plt
import sher_duam_class
import dateutil.parser
def GetXYPoint(_geo_lon, _geo_lan):
lan_scale = 79497.3714882
lon_scale = 111162.6
pixel_size = 152.8740566
geo_lan = 44.417242
geo_lon = 38.72287
size = 256
grad_by_px_lon = pixel_size / lon_scale # Количество градусов в одном пикселе по долготе
grad_by_px_lan = pixel_size / lan_scale # Количество градусов в одном пикселе по широте
min_lon = geo_lon - ((size / 2) * grad_by_px_lon) # Минимальная долгота картинки
min_lan = geo_lan - ((size / 2) * grad_by_px_lan) # Минимальная широта картинки
max_lon = geo_lon + ((size / 2) * grad_by_px_lon) # Максимальная долгота картинки
max_lan = geo_lan + ((size / 2) * grad_by_px_lan) # Максимальная широта картинки
lon_delta = _geo_lon - min_lon
lan_delta = _geo_lan - max_lan
y_delta = lan_delta * lan_scale
x_delta = lon_delta * lon_scale
my = y_delta // pixel_size
mx = x_delta // pixel_size
result = dict(x = abs(mx), y = abs(my))
return result
# path
path = 'dj_286m_1591083600.png'
# Reading an image in default
# mode
image = cv2.imread(path)
# Window name in which image is
# displayed
window_name = 'Image'
#Получаем полигон водосбора
pol = []
points = loca_data.GetGeoCoordPolygon()
for p in points:
val = GetXYPoint(p[3], p[2])
val_m = [val["x"], val["y"]]
pol.append(val_m)
pts = np.array(pol, np.int32)
# Получаем полилинию для русла реки
rpol = []
rpoints = loca_data.GetRiverCoordynateLine()
for rp in rpoints:
rval = GetXYPoint(rp[3], rp[2])
rval_m = [rval["x"], rval["y"]]
rpol.append(rval_m)
rpts = np.array(rpol, np.int32)
isClosed = True
# Blue color in BGR
color = (255, 0, 0)
rcolor = (0, 255, 0)
lcolor = (0, 0, 255)
# Line thickness of 2 px
thickness = 1
# Using cv2.polylines() method
# Draw a Blue polygon with
# thickness of 1 px
image = cv2.polylines(image, [pts], isClosed, color, thickness)
image = cv2.polylines(image, [rpts], False, rcolor, thickness)
# Формируем разлиновку по радарным квадратам
x0 = 10
y0 = 20
x = x0
y = y0
i = 0
x = x0 + (i * 24)
while x < 255:
lx = [[x, 0],[x, 255]]
lxpcx = np.array(lx, np.int32)
image = cv2.polylines(image, [lxpcx], False, lcolor, thickness)
i = i + 1
x = x0 + (i * 24)
i = 0
y = y0 + (i * 24)
while y < 255:
ly = [[0, y],[255, y]]
lypcx = np.array(ly, np.int32)
image = cv2.polylines(image, [lypcx], False, lcolor, thickness)
i = i + 1
y = y0 + (i * 24)
# Displaying the image
while(1):
cv2.imshow('image', image)
if cv2.waitKey(20) & 0xFF == 27:
break
cv2.destroyAllWindows()