You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将规则分布的地理点转换为匹配绘图位置的C1值矩阵?

地理点转匹配绘图位置的C1值矩阵

数据集样例

freguesiaDatetimeC1latitudelongitudegeometry
Parque das Nações2022-09-07 09:30:00+00:0072.3738.753769-9.095670POINT (-9.09567 38.75377)
Parque das Nações2022-09-07 09:30:00+00:004.6538.753769-9.093873POINT (-9.09387 38.75377)
Parque das Nações2022-09-07 09:30:00+00:00433.1838.755170-9.101060POINT (-9.10106 38.75517)
Parque das Nações2022-09-07 09:30:00+00:00274.4338.755170-9.099263POINT (-9.09926 38.75517)
Parque das Nações2022-09-07 09:30:00+00:00212.0938.755170-9.097466POINT (-9.09747 38.75517)
Parque das Nações2022-09-07 09:30:00+00:0049.8638.755170-9.095670POINT (-9.09567 38.75517)

完整数据集复现字典

{'freguesia': {0: 'Parque das Nações', 1: 'Parque das Nações', 2: 'Parque das Nações', 3: 'Parque das Nações', 4: 'Parque das Nações', 5: 'Parque das Nações', 6: 'Parque das Nações', 7: 'Parque das Nações', 8: 'Parque das Nações', 9: 'Parque das Nações', 10: 'Parque das Nações', 11: 'Parque das Nações', 12: 'Parque das Nações', 13: 'Parque das Nações', 14: 'Parque das Nações'}, 'Datetime': {0: '2022-09-07 09:30:00+00:00', 1: '2022-09-07 09:30:00+00:00', 2: '2022-09-07 09:30:00+00:00', 3: '2022-09-07 09:30:00+00:00', 4: '2022-09-07 09:30:00+00:00', 5: '2022-09-07 09:30:00+00:00', 6: '2022-09-07 09:30:00+00:00', 7: '2022-09-07 09:30:00+00:00', 8: '2022-09-07 09:30:00+00:00', 9: '2022-09-07 09:30:00+00:00', 10: '2022-09-07 09:30:00+00:00', 11: '2022-09-07 09:30:00+00:00', 12: '2022-09-07 09:30:00+00:00', 13: '2022-09-07 09:30:00+00:00', 14: '2022-09-07 09:30:00+00:00'}, 'C1': {0: 72.37, 1: 4.65, 2: 433.18, 3: 274.43, 4: 212.09, 5: 49.86, 6: 3.82, 7: 173.22, 8: 75.16, 9: 506.67, 10: 433.19, 11: 136.86, 12: 2.24, 13: 0.0, 14: 0.0}, 'latitude': {0: 38.7537686909, 1: 38.7537686909, 2: 38.7551697675, 3: 38.7551697675, 4: 38.7551697675, 5: 38.7551697675, 6: 38.7551697675, 7: 38.7565708166, 8: 38.7565708166, 9: 38.7565708166, 10: 38.7565708166, 11: 38.7565708166, 12: 38.7565708166, 13: 38.7565708166, 14: 38.7565708166}, 'longitude': {0: -9.09566985629, 1: -9.09387322572, 2: -9.10105974799, 3: -9.09926311742, 4: -9.09746648685, 5: -9.09566985629, 6: -9.09387322572, 7: -9.10285637856, 8: -9.10105974799, 9: -9.09926311742, 10: -9.09746648685, 11: -9.09566985629, 12: -9.09387322572, 13: -9.09207659515, 14: -9.09027996458}}

数据加载代码

import geopandas as gpd
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# 从复现字典创建DataFrame
test = pd.DataFrame(上述复现字典)

crs={'init':'epsg:4326'}
gps_data = gpd.GeoDataFrame(
    test, geometry=gpd.points_from_xy(test.longitude, test.latitude, crs=crs))

# 绘制地理点
gps_data.plot()

转换为匹配绘图位置的矩阵

核心逻辑

绘图时,纬度越高的点显示在图的上方,经度越大的点显示在图的右侧。因此矩阵需要:

  • 行:按纬度从高到低排列(对应图从上到下)
  • 列:按经度从低到高排列(对应图从左到右)
  • 无数据的位置填充0

实现代码

# 获取唯一纬度并按降序排序(对应矩阵行顺序)
unique_lats = sorted(gps_data['latitude'].unique(), reverse=True)
# 获取唯一经度并按升序排序(对应矩阵列顺序)
unique_lons = sorted(gps_data['longitude'].unique())

# 创建全0矩阵
matrix = np.zeros((len(unique_lats), len(unique_lons)))

# 遍历数据点,填充对应位置的C1值
for idx, row in gps_data.iterrows():
    lat_idx = unique_lats.index(row['latitude'])
    lon_idx = unique_lons.index(row['longitude'])
    matrix[lat_idx][lon_idx] = row['C1']

# 转换为列表格式输出
result_matrix = matrix.tolist()
print(result_matrix)

输出结果

[
 [173.22, 75.16, 506.67, 433.19, 136.86, 2.24, 0.0, 0.0],
 [0.0, 433.18, 274.43, 212.09, 49.86, 3.82, 0.0, 0.0],
 [0.0, 0.0, 0.0, 0.0, 72.37, 4.65, 0.0, 0.0]
]

内容的提问来源于stack exchange,提问作者William

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 22:32:51