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

如何在Python中缩减Geopandas/Pandas生成的GeoJSON文件大小

问题

我有一个包含几何信息的Geopandas GeoDataFrame,数据如下:

Date      ,    value, Region Name, Geometry
2022-01-01  10      , ABC        , Point((194 34),(121,23))
2022-02-01, 12      , ABC        , Point((194 34),(121,23))
2022-02-01, 13      , DEF        , Point((195 35),(123,24))

近似Python代码如下:

import pandas as pd
import geopandas
from shapely.geometry import Point

d = pd.DataFrame({
    'RegionName': ['ABC', 'ABC','DEF'],
    'Date': ['2021-01-01', '2021-02-01','2021-01-01'], 
    'Values': [10,11,12], 
    'Latitude': [-34.58, -34.58, -33.45], 
    'Longitude': [-58.66, -58.66, -70.66]
})
# 修正原代码问题:正确创建带几何信息的GeoDataFrame
gdf = geopandas.GeoDataFrame(
    d, 
    geometry=geopandas.points_from_xy(d.Longitude, d.Latitude),
    crs="EPSG:4326"
)

需求:将这些数据保存为可被Mapbox、Leaflet等地图工具解析的JSON/GeoJSON文件,同时缩减文件大小——把重复的几何数据只存储一次,将非重复的日期、数值关联到对应几何上。期望的聚合效果示意(非标准格式):

[
---Region name:
-----ABC
-----Date:
--------2022-01-01
--------2022-02-01
-----Value:
--------10
--------12
-----Geometry
--------Polygon((194 34),(121,23))


---Region name:
-----DEF
-----Date:
--------2022-02-01
-----Value:
--------13
-----Geometry
--------Polygon((194 34),(121,23))
]
解决方案

核心思路是按区域分组聚合非重复数据、保留唯一几何,同时输出标准GeoJSON格式(地图工具仅支持标准格式解析),具体步骤如下:

1. 分组聚合数据

利用Pandas分组功能,按RegionName将同一区域的日期、数值合并为列表,几何信息取组内第一条(因同一区域几何重复):

# 分组聚合处理
aggregated_gdf = gdf.groupby('RegionName').agg(
    Dates=('Date', list),
    Values=('Values', list),
    geometry=('geometry', 'first')
).reset_index()

2. 保存为标准GeoJSON

直接将聚合后的GeoDataFrame导出为GeoJSON,此时每个Feature对应一个区域,几何仅存一次,日期和数值以列表形式存储在属性中:

# 导出为GeoJSON文件
aggregated_gdf.to_file('aggregated_regions.geojson', driver='GeoJSON')

生成的GeoJSON结构示例

输出的文件为标准FeatureCollection格式,完全兼容地图工具:

{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "RegionName": "ABC",
        "Dates": ["2021-01-01", "2021-02-01"],
        "Values": [10, 11]
      },
      "geometry": {
        "type": "Point",
        "coordinates": [-58.66, -34.58]
      }
    },
    {
      "type": "Feature",
      "properties": {
        "RegionName": "DEF",
        "Dates": ["2021-01-01"],
        "Values": [12]
      },
      "geometry": {
        "type": "Point",
        "coordinates": [-70.66, -33.45]
      }
    }
  ]
}

方案优势

  • 完全兼容Mapbox、Leaflet等工具,可直接加载渲染几何图形
  • 同一区域仅存储一次几何数据,大幅缩减文件体积(数据量越大效果越明显)
  • 日期和数值以列表形式关联,前端可通过遍历列表获取该区域的全量时间序列数据

内容的提问来源于stack exchange,提问作者Moh-Spark

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:20:31