init: KG_ICH 项目初始化

- data/: 非遗地理编码数据(GIS shapefile + CSV)
- dofile/kg_project/: 知识图谱构建代码(纳入主仓库)
- dofile/visulization/: 可视化数据与路线图
- officefile/: 文献、草稿、bib 文档
- officefile/latex/: Overleaf 同步目录(独立管理,不纳入)
- output/: 输出目录
- logs/: 日志目录
This commit is contained in:
2026-05-30 00:52:36 +08:00
commit 834cad729f
44 changed files with 8586 additions and 0 deletions
+102
View File
@@ -0,0 +1,102 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pandas as pd
import json
import time
import os
from urllib.request import urlopen, quote
# 添加skill scripts到路径
skill_dir = r'C:\Users\xiaopeng\.claude\skills\geocoding-cn\scripts'
if skill_dir not in os.sys.path:
os.sys.path.insert(0, skill_dir)
from coordinate_transform import CoordinateTransformer
# 读取数据
input_file = r'E:\Project\2026_KG_ICH\data\黑龙江国家级和省级非遗名单-地理编码-最终.xlsx'
df = pd.read_excel(input_file)
# 百度地图API配置
AK = "L5SlQ1Kwmg6zaESvmc6RKG37yK2va7Ry"
BASE_URL = 'https://api.map.baidu.com/geocoding/v3/'
def geocode_with_retry(address):
"""尝试多次地理编码,使用不同的地址格式"""
attempts = [
address, # 原始地址
f"黑龙江省{address}", # 添加省名
f"{address}黑龙江", # 省名在后
f"中国黑龙江省{address}", # 添加国家
]
for attempt in attempts:
try:
encoded_address = quote(attempt)
url = f'{BASE_URL}?address={encoded_address}&output=json&ak={AK}'
req = urlopen(url, timeout=10)
response = req.read().decode()
result = json.loads(response)
if result['status'] == 0:
location = result['result']['location']
return location['lat'], location['lng'], attempt
except Exception as e:
continue
time.sleep(0.2)
return None, None, None
# 问题记录索引(0-based
problematic_indices = [20, 127, 148, 161, 185, 199, 214, 58, 223]
print("=== 重新地理编码问题记录 ===\n")
success_count = 0
for idx in problematic_indices:
if idx >= len(df):
continue
row = df.iloc[idx]
original_address = str(row.iloc[1]) # 项目保护单位列
print(f"Row {idx+1}: {original_address}")
print(f" Old coords: {row['wgs84_lat']:.4f}N, {row['wgs84_lon']:.4f}E")
# 尝试重新地理编码
lat, lon, used_address = geocode_with_retry(original_address)
if lat and lon:
# 转换为WGS84
wgs_lon, wgs_lat = CoordinateTransformer.bd09_to_wgs84(lon, lat)
print(f" New BD09: {lat:.4f}N, {lon:.4f}E")
print(f" New WGS84: {wgs_lat:.4f}N, {wgs_lon:.4f}E")
print(f" Used address: {used_address}")
# 检查是否在合理范围内
if 43 <= wgs_lat <= 53 and 121 <= wgs_lon <= 135:
print(f" OK: Within Heilongjiang range")
# 更新数据
df.at[idx, 'bd09_lat'] = lat
df.at[idx, 'bd09_lon'] = lon
df.at[idx, 'wgs84_lat'] = wgs_lat
df.at[idx, 'wgs84_lon'] = wgs_lon
df.at[idx, 'geocode_status'] = 'success'
success_count += 1
else:
print(f" WARNING: Still outside range (43-53N, 121-135E)")
else:
print(f" FAILED: Geocoding failed")
print()
time.sleep(0.3)
# 保存更新后的文件
output_file = r'E:\Project\2026_KG_ICH\data\黑龙江国家级和省级非遗名单-地理编码-最终-修正.xlsx'
df.to_excel(output_file, index=False)
print(f"\n{'='*60}")
print(f"Correction complete!")
print(f"Successfully corrected: {success_count}/{len(problematic_indices)} records")
print(f"Saved to: {output_file}")