numpy_test.py
1.9 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
# coding=utf-8
#author: 4N
#createtime: 2021/9/29
#email: nheweijun@sina.com
def determine_level(xysize, origin_extent, extent, max_level):
'''
根据范围判断调用金字塔的哪一层
:param xysize:
:param origin_extent:
:param extent:
:param max_level:
:return:
'''
x = xysize[0]
y = xysize[1]
level = -1
pixel = x * y * (((extent[2] - extent[0]) * (extent[3] - extent[1])) / (
(origin_extent[2] - origin_extent[0]) * (origin_extent[3] - origin_extent[1])))
while pixel > 100000 and level < max_level - 1:
level += 1
x = x / 2
y = y / 2
pixel = x * y * (((extent[2] - extent[0]) * (extent[3] - extent[1])) / (
(origin_extent[2] - origin_extent[0]) * (origin_extent[3] - origin_extent[1])))
return level
import math
def determine_level2(xysize, origin_extent, extent, max_level):
'''
根据范围判断调用金字塔的哪一层
:param xysize:
:param origin_extent:
:param extent:
:param max_level:
:return:
'''
x = xysize[0]
y = xysize[1]
level_up = round (math.sqrt( round (math.sqrt((x * y * (((extent[2] - extent[0]) * (extent[3] - extent[1])) / (
(origin_extent[2] - origin_extent[0]) * (origin_extent[3] - origin_extent[1])))) / 100000))))
return level_up - 1 if level_up < max_level else max_level - 1
import time
t1 = time.time()
print(determine_level2([108488,90777],[111.639350712, 28.9170588759, 111.751508603, 29.032941696],
[111.739350712, 29.0070588759, 111.751508603, 29.032941696],9))
print(time.time()-t1)
t1 = time.time()
print(determine_level([108488,90777],[111.639350712, 28.9170588759, 111.751508603, 29.032941696],
[111.739350712, 29.0070588759, 111.751508603, 29.032941696],9))
print(time.time()-t1)