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
- Preserve original Tianditu coordinates while merging properties
- Maintain abbreviated region names from reference data
- Transfer administrative metadata (adcode, level, center points)
- Generate compatible output for ECharts visualization