当前位置: 首页 > news >正文

gma视角的历史地图集3:自夏至宋3000年5座洛阳城

古代洛阳地区,沿洛水之北自东向西洛河两岸,于不足30公里的范围内,分布着二里头遗址、偃师商城遗址、周王城遗址、汉魏洛阳城遗址和隋唐洛阳城遗址等五大都城遗址,人称 “五都贯洛”。都城遗址分布密集,联系密切,时间跨度大,在全世界罕见。

“五都贯洛”的历史意义:

  • 连续性: 五座都城跨越夏商至隋唐近3000年,见证中国早期国家形成到帝国鼎盛。
  • 文化融合: 河洛地区成为华夏文明的核心,辐射中原文化。
  • 文明演进: 从二里头(早期国家)→商周(礼制成熟)→汉唐(帝国巅峰),体现中国古代都城制度的连续性。
  • 考古价值: 五座遗址均被列入“中国百年百大考古发现”,二里头、汉魏洛阳城为国家级大遗址保护项目。

自夏至宋3000年5座洛阳城简介

都城名称时代位置主要特点
二里头遗址夏(约前1900-前1600)洛阳偃师区中国最早广域王权都城,宫殿基址、青铜作坊
偃师商城商(约前1600-前1260)洛阳偃师区商汤“西亳”,宫城布局规整,体现商代“宫庙分离”制度。
周王城-汉晋河南县西周初-西晋末(前1040-311?)洛阳市西工区周天子宗庙,反映周礼文化。
周成周城-汉魏洛阳城西周初-唐初(前1040-627?)洛阳市瀍河区、偃师区、孟津区丝绸之路起点,北魏规模达100平方公里,首创里坊制
隋唐洛阳城隋-北宋末(605-1140)洛阳市瀍河区、老城区、西工区、洛龙区武则天“神都”,现存明堂、天堂遗址,应天门遗址等

gma绘制自夏至宋3000年5座洛阳城

环境和数据准备

安装 gma:pip install gma

本文基于:gma 2.1.7,Python 3.12

本文用到历史行政区划数据以及其他相关数据:
链接: https://pan.baidu.com/s/1BbtnVAdypITrI5Jaj8w6SA?pwd=jh95
提取码: jh95

注意:本文用到的 自夏至宋3000年5座洛阳城 数据为 洛 根据历史资料自制,不保证其完全准确,其他用途使用时请斟酌!!

注意:本文用到的 自夏至宋3000年5座洛阳城 数据为 洛 根据历史资料自制,不保证其完全准确,其他用途使用时请斟酌!!

注意:本文用到的 自夏至宋3000年5座洛阳城 数据为 洛 根据历史资料自制,不保证其完全准确,其他用途使用时请斟酌!!

绘图代码

import matplotlib.pyplot as plt
from gma.map import inres, plot
from gma import io
import numpy as npselGDBsInfo = {"夏斟鄩城": {'数据库路径': "夏斟鄩.gdb",'存世时间': '约前1900-约前1600','存世朝代': '夏\n(太康-夏桀)'},"商西亳城": {'数据库路径':"商西亳.gdb",'存世时间': '约前1600-约前1260' ,'存世朝代': '商\n(商汤-仲丁)'},"周王城-汉晋河南县":{'数据库路径': "周王城.gdb", '存世时间': '前1040-311?', '存世朝代': '西周初-西晋末\n(周成王姬诵-晋怀帝司马炽)'},"周成周城-汉魏洛阳城": {'数据库路径': "汉魏洛阳城.gdb", '存世时间': '前1040-627?','存世朝代': '西周初-唐初\n(周成王姬诵-唐高祖李渊)'},"隋唐洛阳城": {'数据库路径': "隋唐洛阳城.gdb",'存世时间': '605-1140','存世朝代': '隋-北宋末\n(隋炀帝杨广-宋钦宗赵桓)'},
}lyRiver = io.ReadVector("其他要素.gdb", "古水系")
np.random.seed(0)
radColors = np.random.uniform(size = (50, 3))osmGDB = io.Open("OSM_河南.gdb")newBou = [112.332, 34.542, 112.856, 34.857]
MapF = plot.MapFrame(BaseMapProj = 3857, Extent = newBou)###### 一些底图
MapL0 = MapF.AddLayer(lyRiver, FaceColor = '#AFEEEE', LineColor='none')#########################
cors = { 'gis_osm_landuse_a_free_1': '#EEE8AA', 'gis_osm_railways_free_1': 'black','gis_osm_water_a_free_1': '#87CEFA', 'gis_osm_waterways_free_1': '#87CEFA',    
} ## 定义部分图层的颜色
for layer in osmGDB.iteritems():radFColor = cors.get(layer.Name, np.random.uniform(size = 3))radLColor = cors.get(layer.Name, 'lightgray')if 'Point' in layer.GeomType:continuetry:nly = layer.Clip(MapF.FrameFeature)MapF.AddLayer(nly, FaceColor = radFColor, LineColor = radLColor, PointSize=1, alpha = 0.3)except:pass
MapF.SetBackground('#F0FFF044')
#########################i = 0
for n, infos in selGDBsInfo.items():gdb = io.Open(infos['数据库路径'])bou = [1e100, 1e100, 1e-100, 1e-100]for gi, ly in enumerate(gdb):if gdb.Name == '隋唐洛阳城' and gi > 6: # 隋唐洛阳城 不绘制西苑了continueif 'Point' in ly.GeomType:continueMapL = MapF.AddLayer(ly, FaceColor = radColors[i], LineColor = radColors[i], PointSize = 5)i += 1### 记录所有图层的范围Lbou = MapL.GMALayer.Boundarybou = [min(bou[0], Lbou[0]), min(bou[1], Lbou[1]),max(bou[2], Lbou[2]), max(bou[3], Lbou[3])]## 添加标注if n in ['隋唐洛阳城', "周成周城-汉魏洛阳城"]:x, y0 = (bou[0] + bou[2]) * 0.5, bou[3] + (bou[3] - bou[1]) * 0.3elif n in ['周王城-汉晋河南县']:x, y0 = bou[0] + (bou[2] - bou[0]) * -0.6, bou[3] + (bou[3] - bou[1]) * 0.55elif n in ['夏斟鄩城']:x, y0 = bou[0] + (bou[2] - bou[0]) * 1.4, bou[1] + (bou[3] - bou[1]) * -0.8else:x, y0 = bou[2] + (bou[2] - bou[0]) * 2, bou[3] + (bou[3] - bou[1]) * 1y1 = y0 + 200s = f"{infos['存世时间']}\n{infos['存世朝代']}"MapF.Axes.text(x, y0, s, fontdict = {'family':'SimSun', 'size':5}, ha = 'center', va = 'top')MapF.Axes.text(x, y1, n, fontdict = {'family':'SimHei', 'size':7}, ha = 'center', va = 'bottom')MapF.SetFrame(FrameWidth=0.2)
plt.savefig("三千年五座洛阳城.jpg", dpi = 300, bbox_inches = 'tight')

http://www.dtcms.com/a/293189.html

相关文章:

  • 【锁】MySQL中有哪几种锁?
  • opencv-图像处理
  • 视频编解码技术的未来趋势:从H.266到AI驱动的绿色革命
  • 【AI 学习笔记】Tool Calling:让 AI 不再“纸上谈兵“
  • 深入解析 Fetch API 的 credentials 属性:Cookie 携带机制
  • 洛谷 P3478 [POI 2008] STA-Station
  • Ollama Docker 容器向容器内传输AI模型并挂载模型
  • 基于快速S变换的配电网故障选线
  • Android开发:Java与Kotlin深度对比
  • IDC权威认可:瑞数信息双项入选《中国大模型安全保护市场概览》
  • CSS+JavaScript 禁用浏览器复制功能的几种方法
  • AWE2026启动:加码AI科技,双展区联动开启产业新格局
  • LeetCode 刷题【11. 盛最多水的容器】
  • Zap日志库指南
  • PCIe Base Specification解析(三)
  • java多线程编程自用笔记
  • 论文笔记:EMR-MERGING: Tuning-Free High-Performance Model Merging
  • 2025.7.22 测试 总结
  • Qt/C++源码/监控设备模拟器/支持onvif和gb28181/多路批量模拟/虚拟监控摄像头
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | ImageCarousel(图片轮播组件)
  • linux应用:spi_ioc_transfer结构cs_change说明
  • 【实时Linux实战系列】实时文件系统的特性与优化
  • 深入解析Hadoop中的Region分裂与合并机制
  • Adam、AdamW介绍,以及AdamW优势
  • 数控机床上滚珠螺杆故障怎么解决?
  • HITL节点介绍(Human-in-the-loop nodes)(指在自动化流程(如AI工作流或系统)中,允许人类在关键步骤直接参与、干预或修正的节点)
  • 【Verilog】竞争、冒险
  • 11.Java三大特性
  • 知识付费平台源码开发详解:内容审核、版权保护与防盗机制全方案
  • IMU(LSM6DSMTR+LIS2MDLTR)