在anaconda Jupyter Notebook生成潮州市地图

1.安装虚拟环境(可选)

2.安装库(如果在虚拟环境下,记得要在虚拟环境中安装库)

3.虚拟环境关联开发工具(Jupyter Notebook)

4.在官网下载geojson文件

    天地图 服务中心  https://cloudcenter.tianditu.gov.cn/administrativeDivision/

5.打开Jupyter Noterbook(如前面是在虚拟环境中安装库,需要在虚拟环境在启动Jupyter Notebook)

代码

import os
import sys
import geopandas as gpd
import folium
from folium.plugins import StripePattern

# ================== 路径管理增强模块(Jupyter适配版)==================
# 动态构建文件路径(使用os.getcwd()替代__file__)
current_dir = os.getcwd()  # 获取Jupyter当前工作目录[6,8](@ref)
geo_path = os.path.join(current_dir, '潮州市_市.geojson')
output_dir = os.path.join(current_dir, 'outputs')

# 调试信息打印(新增)
print(f"当前工作目录: {current_dir}")
print(f"GeoJSON文件路径: {geo_path}")

# 路径校验逻辑(适配Jupyter环境)
if not os.path.exists(geo_path):
    print(f"[错误] GeoJSON文件不存在于路径: {geo_path}")
    print("排查步骤:")
    print(f"  1. 执行命令: !ls -l {geo_path}")  # Jupyter魔法命令验证文件存在性[5](@ref)
    print(f"  2. 确认文件编码: !file -i {geo_path}")  # 验证文件编码
    sys.exit(1)

# 创建输出目录(保留原逻辑)
os.makedirs(output_dir, exist_ok=True)

# ================== 数据加载模块 ==================
try:
    # 中文路径处理(保留编码参数)
    chaozhou = gpd.read_file(geo_path, encoding='utf-8-sig')
    print("坐标系类型:", chaozhou.crs)
    
    # 坐标系强制转换(保留原逻辑)
    if chaozhou.crs != 'EPSG:4326':
        print(f"正在转换坐标系:{chaozhou.crs} -> WGS84")
        chaozhou = chaozhou.to_crs(epsg=4326)

except Exception as e:
    print(f"文件加载失败,错误详情:{str(e)}")
    sys.exit(2)

# ================== 地图生成模块(保留原逻辑)==================
# 计算动态中心点
center_lat = chaozhou.geometry.centroid.y.mean()
center_lon = chaozhou.geometry.centroid.x.mean()

# 创建高德矢量地图
m = folium.Map(
    location=[center_lat, center_lon],
    zoom_start=9,
    tiles='https://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}',
    attr='高德地图',
    control_scale=True
)

# 行政区划样式函数
def style_function(feature):
    return {
        'fillColor': '#ffffff',
        'color': '#ff0000',
        'weight': 2,
        'fillOpacity': 0.1,
        'dashArray': '5,5'
    }

# 添加GeoJSON图层
folium.GeoJson(
    chaozhou,
    name='潮州市行政边界',
    style_function=style_function,
    tooltip=folium.GeoJsonTooltip(
        fields=['name'],
        aliases=['行政区: '],
        localize=True,
        labels=True
    )
).add_to(m)

# 添加图例组件(保留原逻辑)
legend_html = '''
    

 

       图例

       行政区界:                    style="color:red">
    

'''
m.get_root().html.add_child(folium.Element(legend_html))

# ================== 输出模块(适配跨平台打开方式)==================
output_path = os.path.join(output_dir, 'chaozhou_gaode_map.html')
m.save(output_path)
print(f"地图已生成,文件位置: {output_path}")
print(f"打开方式建议: 直接点击Jupyter文件列表中的 {output_path}")  # 替代Linux专属指令

5.运行即可。

你可能感兴趣的:(jupyter,python,linux,json)