QGIS 地图绘制:扬州、镇江
对应文章:source\_posts\江南江北送君归:从扬州到镇江.md
本篇专用 GeoPackage 文件名:
1
| travel_map_yangzhou_zhenjiang.gpkg
|
本篇 .gpkg 只保存铁路 OSM 图层、车站图层和自绘路线。DataV 行政区 GeoJSON 直接导入使用,不需要导出为 .gpkg。
1. 地图范围
建议范围:
1 2 3 4
| X 最小值:117.0 Y 最小值:31.5 X 最大值:120.0 Y 最大值:33.3
|
如果只做扬州、镇江局部图:
1 2 3 4
| X 最小值:119.0 Y 最小值:31.7 X 最大值:119.8 Y 最大值:32.8
|
2. 行政区数据
1 2 3 4
| 安徽地级市:https://geo.datav.aliyun.com/areas_v3/bound/340000_full.json 江苏地级市:https://geo.datav.aliyun.com/areas_v3/bound/320000_full.json 扬州县区:https://geo.datav.aliyun.com/areas_v3/bound/321000_full.json 镇江县区:https://geo.datav.aliyun.com/areas_v3/bound/321100_full.json
|
推荐图层名:
1 2 3 4
| datav_anhui_prefecture datav_jiangsu_prefecture datav_yangzhou_county datav_zhenjiang_county
|
省份底图颜色:
3. 高亮区域
江苏去过城市:
1 2 3 4 5 6
| SELECT * FROM "datav_jiangsu_prefecture" WHERE "name" IN ( '扬州市', '镇江市' )
|
合肥作为起点可弱化或单独高亮:
1 2 3
| SELECT * FROM "datav_anhui_prefecture" WHERE "name" = '合肥市'
|
县级重点建议标高邮:
1 2 3
| SELECT * FROM "datav_yangzhou_county" WHERE "name" = '高邮市'
|
瓜洲属于扬州内部的镇级地点,DataV 县区图层里通常不会直接有 瓜洲镇,建议用点标注,不要为它单独找镇级边界。
4. 车站图层
从 china_railwayosm__points 搜索并导出为:
1
| station_yangzhou_zhenjiang
|
车站查询语句统一使用不带“站”的名称:
1 2 3 4 5 6 7 8 9 10
| SELECT * FROM "points" WHERE "name" IN ( '合肥南', '高邮', '扬州东', '扬州', '镇江' ) GROUP BY "name"
|
扬州市区实际到达站按票面选择 扬州东 或 扬州。
5. 样式与图层顺序
普通地级市底图:
1 2 3 4 5
| 安徽:#E6F0D8 江苏:#E8E0F2 填充不透明度:100% 边界:#333333 线宽:0.26 mm
|
高亮区域:
1 2 3 4 5 6
| 经过地级市:填充 #A8E6A1,不透明度 50%,边界 #2E7D4F,线宽 0.7-0.9 mm 起点地级市:填充 #F4C95D,不透明度 65%,边界 #A65F00,线宽 0.8-1.0 mm 终点地级市:填充 #D8B4F8,不透明度 65%,边界 #6D3F99,线宽 0.8-1.0 mm 经过县区:填充 #5FBF72,不透明度 50%,边界 #4F7F55,线宽 0.15-0.25 mm 省界:无填充,边界 #222222,线宽 0.8-1.0 mm 边界层级:省界 > 起点/终点地级市 > 经过地级市 > 普通地级市 > 经过县区
|
标签:
1 2 3
| 市名:华文新魏,13 pt,#333333,白色描边 0.8 mm 县名:华文楷体,10 pt,#0E3D22,白色描边 0.5 mm 车站名:宋体,9 pt,#111111,白色描边 0.6-0.8 mm
|
铁路与底图:
1 2 3 4 5 6
| 普通铁路:#B8B8B8,不透明度 80-100%,线宽 0.2-0.3 mm 行程线底层:黑色简单线,1.2 mm 行程线上层:白色简单线,1.0 mm,自定义虚线,短横 2.0 mm,空格 4.5 mm,端点平端或方角 渡轮线:蓝灰色虚线,0.6-0.8 mm 车站点:粉色圆点 #E88AA5,描边 #7A2E42,大小 2.2-2.8 mm OpenStreetMap 底图:不透明度 35-55%
|
图层顺序从上到下:
1 2 3 4 5 6 7 8 9 10 11 12 13
| station_yangzhou_zhenjiang 各类 label 图层 trip_route_yangzhou_zhenjiang trip_ferry_zhenyang china_railwayosm__lines china_railwayosm__multilinestrings start_city end_city 各省 visited 图层 各县区重点图层 province_boundary datav_anhui_prefecture / datav_jiangsu_prefecture OpenStreetMap
|
6. 铁路与行程线
把 china_railway.osm.pbf 拖入 QGIS,只把铁路相关子图层导出到本篇 .gpkg:
1 2
| china_railwayosm__lines china_railwayosm__multilinestrings
|
车站点按第 4 节查询后导出为:
1
| station_yangzhou_zhenjiang
|
铁路图层:
1
| trip_route_yangzhou_zhenjiang
|
启用捕捉与追踪:
1 2 3 4 5 6 7
| 视图 -> 工具栏 -> 捕捉工具栏 工程 -> 捕捉选项... 模式:高级配置 china_railwayosm__lines:顶点和线段,8 像素 china_railwayosm__multilinestrings:顶点和线段,8 像素 其他图层:关闭捕捉 trip_route_yangzhou_zhenjiang:先关闭捕捉
|
然后:
1 2 3 4
| 选中 trip_route_yangzhou_zhenjiang 点击铅笔进入编辑模式 选择“添加线要素”或“线段数字化” 在捕捉工具栏点击“启用追踪 / Trace Digitizing”
|
如果找不到追踪按钮:
1 2 3
| Ctrl + K 搜索:追踪 或搜索:Trace
|
追踪绘制:
1 2 3
| 合肥南 -> 高邮 高邮 -> 扬州东/扬州 镇江 -> 合肥南
|
渡江段另建线图层:
绘制:
渡轮不是铁路,不要使用黑白铁轨样式。建议用深蓝或蓝灰色虚线,线宽约 0.6-0.8 mm,标签写 镇扬汽渡。
遇到铁路枢纽、并行铁路或追踪跳远时,把长段拆成短段,在转折点附近多点几次。
7. 导出图片
主图先在主画布设置范围:
1 2 3 4 5
| from qgis.core import QgsRectangle
rect = QgsRectangle(117.0, 31.5, 120.0, 33.3) iface.mapCanvas().setExtent(rect) iface.mapCanvas().refresh()
|
打印布局建议:
1 2 3 4 5 6
| 布局名:layout_yangzhou_zhenjiang 页面尺寸:300 mm x 180 mm 地图框:铺满页面 导出文件:map_yangzhou_zhenjiang.png 格式:PNG DPI:300
|
操作:
1 2 3 4 5 6
| 项目 -> 新建打印布局 页面属性 -> 自定义页面大小:300 mm x 180 mm 添加项目 -> 添加地图 把地图框拉满页面 选中地图框 -> 项目属性 -> 范围 -> 设置为地图画布范围 布局 -> 导出为图像
|
扬州、镇江局部图可使用范围 119.0, 31.7, 119.8, 32.8,页面尺寸建议 200 mm x 275 mm。如果边缘标签显示不全,先外扩范围,不要直接截图。