将矩形划分为N个相等的子矩形

时间:2018-11-04 19:59:10

标签: python python-3.x

我有一个由经度和纬度对定义的矩形网格。我想将此矩形划分为N个相等的子矩形。例如,假设我们有一个由以下四个点定义的矩形:

1: (0,0)
2: (0,2)
3: (2,2)
4: (2,0)

假设我们希望将此矩形划分为4个相等的子矩形,以便我们具有以下内容:

First subrectangle:
1. [(0,0),(0,1),(1,1),(1,1)]
Second subrectangle:
2. [(0,1),(0,2),(1,2),(1,1)]
Third subrectangle:
3. [(1,1),(1,2),(2,2),(2,1)]
Fourth subrectangle:
4. [(1,0),(1,1),(2,1),(2,0)]

子矩形的顺序无关紧要。

我的方法是构造纬度和经度列表,并使用双循环调用每个列表中的项目。

def sub_rectangles(factor,westlimit=0, southlimit=0, eastlimit=2, northlimit=2):
    table=list()
    #Divide the difference between the limits by the factor
    lat_adj_factor=(northlimit-southlimit)/factor
    lon_adj_factor=(eastlimit-westlimit)/factor
    #Create longitude and latitude lists
    lat_list=[]
    lon_list=[]
    for i in range(factor+1):
        lon_list.append(westlimit)
        westlimit+=lon_adj_factor
    for i in range(factor+1):
        lat_list.append(southlimit)
        southlimit+=lat_adj_factor
    #Build a list of longitude and latitude pairs
    for i in range(0,len(lon_list)-1):
        for j in range(0,len(lat_list)-1):
            table.append([lon_list[i],lat_list[j],lon_list[i+1],lat_list[j],lon_list[i+1],[lat_list[j+1]]]) 
    return table

不幸的是,输出大部分都是胡说八道。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我认为错误在于坐标对构造。我相信以下作品;你同意吗?

我更改了这一行:

1535824320        7195.99          163110          66.58            1564         297.24           96361      1
1535824380        7197.00          118069          66.71            1924         297.18          125395      0
1535824440        7190.00          189429          66.65            6147         297.13           89798      0
1535824500        7192.20           69587          66.65            9680         297.24           70676      0
1535824560        7193.99           76146          66.59            5012         297.37           44880      0
1535824620        7193.38           59251          66.54           16273         297.37          101982      0
1535824680        7194.00          186177          66.59            4778         297.33           77169      0

到以下内容:

table.append([lon_list[i],lat_list[j],lon_list[i+1],lat_list[j],lon_list[i+1],[lat_list[j+1]]])

给出以下结果: table.append([(lon_list[i],lat_list[j]),(lon_list[i+1],lat_list[j]),(lon_list[i],lat_list[j+1]),(lon_list[i+1],lat_list[j+1])])