美文网首页
唯一坐标转换问题

唯一坐标转换问题

作者: Null_ice | 来源:发表于2018-09-12 10:40 被阅读0次

现在有一个二维坐标组成的数组,例如
[[0,7],[8,10],[12,19],[13,15],[2,9],[19,22],[25,27],[30,33]];

这些坐标可以按照以下规则进行转换,例如:

1.坐标之间可以组成连续的坐标,则这些坐标可以转化为一个坐标,
[0,7] & [8,10] -> [0,10]

2.坐标之间存在包含关系,则这些坐标可以转换为一个坐标,
[12,19] & [13,15] -> [12,19]

需要经过重新计算将数组内的坐标转换为唯一坐标(即 既不包含(或者被包含)其他坐标,也不能和其他坐标连续的坐标),例子里的坐标的转化结果为:
[[0,7],[8,10],[12,19],[13,15],[2,9],[19,22],[25,27],[30,33]]
->
[[0,10],[12,22],[25,27],[30,33]]

请写出转化算法:
def merge(list):

def by_rule_merge_ranges(list):
    merge_list = []
    def _merge(ranges):
        copy_ranges = copy.deepcopy(ranges)
        ranges_length = len(ranges)-1
        start_offset = copy_ranges[0][0]
        end_offset = copy_ranges[0][1]
        for j in range(ranges_length):
            if j < ranges_length:
                next_start_offset = ranges[j + 1][0]
                next_end_offset = ranges[j + 1][1]
                if start_offset <= (next_end_offset + 1) and start_offset >= next_start_offset and end_offset >= next_end_offset:
                    start_offset = next_start_offset
                    copy_ranges.remove(ranges[j+1])
                elif end_offset >= (next_start_offset - 1) and end_offset <= next_end_offset and start_offset <= next_start_offset:
                    end_offset = next_end_offset
                    copy_ranges.remove(ranges[j + 1])
                elif start_offset >= next_start_offset and end_offset <= next_end_offset:
                    start_offset = next_start_offset
                    end_offset = next_end_offset
                    copy_ranges.remove(ranges[j + 1])
                elif start_offset <= next_start_offset and end_offset >= next_end_offset:
                    copy_ranges.remove(ranges[j + 1])
        copy_ranges.remove(copy_ranges[0])
        merge_list.append({
            'startOffset': start_offset,
            'endOffset': end_offset,
            'count': 0
        })
        if len(copy_ranges) == 0:
            return 
        else:
            _merge(copy_ranges)
    _merge(list)
    return merge_list

相关文章

  • 唯一坐标转换问题

    现在有一个二维坐标组成的数组,例如[[0,7],[8,10],[12,19],[13,15],[2,9],[19,...

  • 解决坐标转换、坐标偏移问题

    一、坐标体系 首先我们要明白,开发者能接触到哪些坐标体系呢? 第一种分类: 1、 GPS,WGS-84,原始坐标体...

  • GIS中坐标投影转换的问题

    GIS中坐标投影转换的问题 一、地理坐标与投影坐标的区别(考研初试复试常考题): 地理坐标:地理坐标系统(Geog...

  • 坐标转换

    http://blog.csdn.net/qq_35607510/article/details/53992602...

  • 坐标转换

    (CGRect)convertRect:(CGRect)rect toView:(nullable UIView ...

  • 坐标转换

    近两天需要把平面坐标转换为标准的WGS84后使用百度逆地址编码搜索出资料记录一下 类库 程序ProjNet4Geo...

  • 坐标转换

    1、将米转换成坐标度数 2、根据坐标点和半径将地图缩放到合适等级

  • 👈坐标转换

    / 将像素point由point所在视图转换到目标视图view中,返回在目标视图view中的像素值 -(CGPoi...

  • 坐标转换

  • 坐标转换

    世界空间 如何转换为 屏幕空间?

网友评论

      本文标题:唯一坐标转换问题

      本文链接:https://www.haomeiwen.com/subject/qdamgftx.html