Enhancing GeoJSON from Tianditu for ECharts Compatibility

Processinng Tianditu GeoJSON for ECharts Integration

When using GeoJSON data downloaded from Tianditu directly with ECharts 4+, certain properties like center coordinates, administrative levels, and adcodes may be missing. A Python script can merge these missing properties from a reference JSON file.

Python Processing Script

import json

def read_json(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        return json.load(file)

def write_json(data, output_path):
    with open(output_path, 'w', encoding='utf-8') as file:
        json.dump(data, file, ensure_ascii=False, indent=2)

def enhance_features(tianditu_data, reference_data):
    ref_map = {feat['properties']['name']: feat for feat in reference_data['features']}
    
    for feature in tianditu_data['features']:
        region_name = feature['properties']['name']
        for ref_name, ref_feature in ref_map.items():
            if ref_name in region_name:
                feature['properties'].update({
                    k: v for k, v in ref_feature['properties'].items() 
                    if k != 'geometry'
                })
                break

def process_files(tianditu_path, reference_path, output_path):
    tianditu = read_json(tianditu_path)
    reference = read_json(reference_path)
    enhance_features(tianditu, reference)
    write_json(tianditu, output_path)

# Configuration
TIANDITU_FILE = 'china_regions.geojson'
REFERENCE_FILE = 'echarts_reference.json'
OUTPUT_FILE = 'enhanced_map.json'

process_files(TIANDITU_FILE, REFERENCE_FILE, OUTPUT_FILE)

Frontend Implementation

function initializeMap() {
  fetch('/maps/enhanced_map.json')
    .then(response => response.json())
    .then(geoData => {
      echarts.registerMap('china', geoData);
      
      const chart = echarts.init(document.getElementById('map-container'));
      chart.setOption({
        series: [{
          type: 'map',
          map: 'china',
          roam: true,
          label: {
            show: true,
            fontSize: 12
          },
          emphasis: {
            label: { color: '#640000' },
            itemStyle: { areaColor: '#ffdf33' }
          },
          data: []
        }]
      });
    });
}

Key Processing Steps

  1. Preserve original Tianditu coordinates while merging properties
  2. Maintain abbreviated region names from reference data
  3. Transfer administrative metadata (adcode, level, center points)
  4. Generate compatible output for ECharts visualization

Tags: geojson echarts tianditu python data-processing

Posted on Wed, 13 May 2026 15:54:19 +0000 by tripc1