首页 > 解决方案 > 将一个矩形分成 N 个相等的子矩形

问题描述

我有一个由经度和纬度对定义的矩形网格。我想把这个矩形分成 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

不幸的是,输出大多是胡说八道。有什么建议么?

标签: pythonpython-3.x

解决方案


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

我改变了这一行:

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])])

这给出了这个结果: [[(0, 0), (1.0, 0), (0, 1.0), (1.0, 1.0)], [(0, 1.0), (1.0, 1.0), (0, 2.0), (1.0, 2.0)], [(1.0, 0), (2.0, 0), (1.0, 1.0), (2.0, 1.0)], [(1.0, 1.0), (2.0, 1.0), (1.0, 2.0), (2.0, 2.0)]]


推荐阅读