【找数字、找等值元素】

【找数字】

给一个二维数组nums,对于每一个元素num[i],找出距离最近的且值相等的元素,输出横纵坐标差值的绝对值之和,如果没有等值元素,则输出 -1

输入描述

输入第一行为二维数组的行
输入第二行为二维数组的列
输入的数字以空格隔开。

输出描述

数组形式返回所有坐标值。

解题: 

1.先遍历将相同数字的坐标放在一块

2,再次遍历,求出最小坐标和

rows = int(input())
cols = int(input())
d = {}
ret = []
l = []
for i in range(rows):
    s = list(map(int,input().split()))
    l.append(s)
    for j in range(cols):
        if s[j] not in d:
            d[s[j]] = [(i,j)]
        else:
            a = d[s[j]]
            a.append((i, j))
            d[s[j]] = a
#{0: [(0, 0)], 3: [(0, 1), (1, 4)], 5: [(0, 2), (1, 1), (2, 1)], 4: [(0, 3), (2, 2), (2, 4)], 2: [(0, 4), (1, 0), (2, 0), (2, 3)], 7: [(1, 2)], 8: [(1, 3)]}
print(d)
for i in range(rows):
    for j in range(cols):
        k = l[i][j]
        mds = None
        for ii,jj in d[k]:
            # 代表不是元素本身
            if i != ii or j != jj:
                ds = abs(ii - i) + abs(jj-j)
                if mds is None:
                    mds = ds
                else:
                    mds = min(mds,ds)
        l[i][j] = -1 if mds is None else mds
print(l)

在GIS中为等值线添加数值标注是提升地图可视化效果的重要步骤,尤其在地形图、气象图和环境科学等领域应用广泛。以下是几种常用的方法: ### 使用ArcGIS中的Maplex标注引擎 ArcGIS提供了强大的标注工具,特别是Maplex标注引擎,能够更灵活地控制标注的位置和样式[^4]。具体操作如下: 1. 在图层上右键,激活“标注”工具栏。 2. 在“标注”工具栏中,选择“Maplex标注引擎”。 3. 在“标注管理器”中,到“放置属性”,然后选择“等值线放置”。 4. 可以根据需要调整字体颜色、大小以及晕圈设置,以增强标注的可读性。 ### 生成等值线后直接进行标注 如果你已经生成了等值线,并希望快速为其添加数值标注,可以按照以下步骤操作[^2]: 1. 在生成的等值线图层上右键,选择“属性”。 2. 在“标注”选项卡中启用标注功能。 3. 设置标注字段为你想要显示的数值字段(通常是等值线的高度或值)。 4. 调整字体、大小和其他样式参数,确保标注清晰可见。 ### 将标注转换为注记 如果你想将标注保存为独立的图形元素以便后续编辑或发布服务,可以将标注转换为注记[^2]: 1. 在等值线图层上右键,选择“标注转注记”。 2. 在弹出的对话框中选择存储位置,建议选择地理数据库中的要素类来保存注记。 3. 完成转换后,注记将以点要素的形式存在,每个注记对应一条等值线的值。 ### 使用Python脚本自动化处理 对于大规模数据集或重复性任务,可以使用Python脚本结合ArcPy库来自动化生成等值线并添加标注。以下是一个简单的示例代码: ```python import arcpy # 设置工作空间 arcpy.env.workspace = "C:/data" # 输入栅格数据 input_raster = "dem.tif" # 输出等值线文件 output_contour = "contour_lines.shp" # 等值线间距 contour_interval = 50 # 生成等值线 arcpy.Contour_3d(input_raster, output_contour, contour_interval) # 添加标注 arcpy.AddLabels_management(output_contour, "ELEVATION", "arial.ttf", 12, "BLACK", "CENTER") # 将标注转换为注记 annotation_output = "contour_annotation.gdb/contour_annotation" arcpy.ConvertLabelsToAnnotation_cartography(output_contour, annotation_output) ``` ### 注意事项 - **等值线类型**:在生成等值线时,确保选择正确的等值线类型(如`CONTOUR`),以便生成线状等值线而非面状区域[^2]。 - **标注精度**:根据数据的分辨率和用途,合理设置标注的精度和间隔,避免过多或过少的标注影响地图的可读性。 - **视觉优化**:通过调整字体颜色、背景色、晕圈等参数,确保标注在复杂背景下依然清晰可见。 通过以上方法,用户可以根据具体需求选择最适合的方式在等值线上添加数值标注,从而提高地图的表现力和实用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值