py 可视化图层

news2024/9/20 9:32:21

五张图:数据资源可联系1493175691@qq.com

import numpy as np
import matplotlib.pyplot as plt
from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from cartopy.io.shapereader import Reader
from matplotlib import pyplot as plt
from matplotlib.colors import LightSource, ListedColormap
from mpl_toolkits.axes_grid1 import make_axes_locatable
from osgeo import gdal
from osgeo import osr
from matplotlib import rcParams
config = {"font.family":'Times New Roman',"font.size":18,"mathtext.fontset":'stix'}
rcParams.update(config)
# 设置DEM路径
dem_file = r"..\2.DEM\裁剪\裁剪最后.tif"
# 使用GDAL驱动并读取DEM数据
ds = gdal.Open(dem_file)
tif_proj =ds.GetProjection()
tif_geotrans =ds.GetGeoTransform()
#确保TIFF的坐标系统信息
tif_crs = osr.SpatialReference(wkt=tif_proj)
# 读取TIFF数据到numpy数组
band = ds.GetRasterBand(1)
data = band.ReadAsArray()
# 设置无效值
nodata = ds.GetRasterBand(1).GetNoDataValue()
if np.any(data == nodata):
    data = np.ma.masked_equal(data, nodata)
ls=LightSource(azdeg=360,altdeg=30)
# 自定义色带
colors = ["#2B6743","#80A363","#F0EF9B","#C79F4B","#923100","#692610", "#470900"]
cmap = ListedColormap(colors)
rgb=ls.shade(data,cmap=cmap,blend_mode='overlay',vert_exag=2,dx=10,dy=10,fraction=1.05)
region=[-125, -67, 23, 50]
fig = plt.figure(figsize=(16,9))
ax = fig.add_subplot(111,projection=ccrs.PlateCarree())
proj=ccrs.PlateCarree()
ax.set_extent(region, crs = proj)
ax.stock_img()
extent=(tif_geotrans[0],tif_geotrans[0]+tif_geotrans[1]*data.shape[1],tif_geotrans[3]+tif_geotrans[5]*data.shape[0],tif_geotrans[3])
img = ax.imshow(rgb,aspect='auto',origin='upper',cmap=cmap,extent=extent,transform=ccrs.PlateCarree())
# 设置colorbar
img2 = ax.imshow(data,cmap=cmap)
cbar=plt.colorbar(img2,shrink=0.85,orientation='vertical',extend='both',pad=0.01,aspect=30)
cbar.set_label('DEM/m')
cbar.ax.tick_params(labelsize=12, direction='in', right=False)
ax.set_xticks(np.arange(region[0], region[1] + 1, 10), crs = proj)
ax.set_yticks(np.arange(region[-2], region[-1] + 1, 10), crs = proj)
ax.xaxis.set_major_formatter(LongitudeFormatter(zero_direction_label=False))
ax.yaxis.set_major_formatter(LatitudeFormatter())
ax.add_geometries(Reader(r'..\原始‘数据\美国西海岸shp\USA.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='white',linewidth=0.4)
# ax.add_geometries(Reader(r'E:\work\2024年\Wecaht2\南大\Aug28\python\投影坐标系shp\投影坐标系shp.shp').geometries(),ccrs.PlateCarree(),facecolor='none',edgecolor='black',linewidth=2)

ax.set_title('立体DEM地形图',{'family':'simhei','size':18,'color':'k'})
plt.savefig('./地形图.png',dpi=200,bbox_inches='tight',pad_inches=0)
plt.show()

import geopandas as gpd
import matplotlib.pyplot as plt

# 读取 shapefile 文件
shapefile_path = r'..\投影坐标系shp\投影坐标系shp.shp'  # 替换为你的shapefile路径
gdf = gpd.read_file(shapefile_path)

# 确保你的shapefile中有表示大小的数据列,例如'population'或其他数值字段
# 此字段将用于控制圆形的大小
size_column = 'Shape_Leng'  # 替换为你数据中用于定义大小的字段名

# 创建一个较小的图,显示区域边界
fig, ax = plt.subplots(figsize=(10, 6))  # 将图的大小调整为 10x6 英寸
gdf.boundary.plot(ax=ax, linewidth=1, color="gray")

# 获取每个区域的中心点,用于绘制气泡图
gdf['coords'] = gdf['geometry'].apply(lambda x: x.representative_point().coords[:])
gdf['coords'] = [coords[0] for coords in gdf['coords']]

# 根据 size_column 的值确定气泡大小
# 调整 scale_factor 以适应气泡的大小
scale_factor = 10000  # 该值可以调整,适应你的数据
gdf.plot(ax=ax, color='none', edgecolor='gray')
plt.scatter(x=[point[0] for point in gdf['coords']],
            y=[point[1] for point in gdf['coords']],
            s=gdf[size_column] / scale_factor,  # 调整s参数以控制气泡大小
            color='blue', alpha=0.5, edgecolor='white')

# 去除坐标轴
ax.set_axis_off()

# 设置标题
plt.title("Map with Proportional Symbols", fontsize=15)
plt.savefig('./比例符号图.png',dpi=200,bbox_inches='tight',pad_inches=0)
# 我使用的是各个县的周长数据,巧妇难为无米之炊啊

# 显示图像
plt.show()

import geopandas as gpd
import matplotlib.pyplot as plt
from matplotlib import rcParams

config = {"font.family":'Times New Roman',"font.size":12,"mathtext.fontset":'stix'}
rcParams.update(config)


# 读取 shapefile 文件
shapefile_path = r'..\投影坐标系shp\投影坐标系shp.shp' # 替换为你的shapefile路径
gdf = gpd.read_file(shapefile_path)

# 检查数据是否加载正确
print(gdf.head())
fig, ax = plt.subplots(1, 1, figsize=(10, 8))

# 可视化 Shape_Area 字段
gdf.plot(column='Shape_Area', cmap='viridis', legend=True,
         legend_kwds={'label': "Area by Shape_Area(m²)",
                      'orientation': "horizontal"},
         edgecolor='white', linewidth=0.3, ax=ax)

# 设置标题和显示
plt.title("Area heat map of counties in the United States")
plt.savefig('./面积图.png',dpi=600,bbox_inches='tight',pad_inches=0)
plt.show()

# # -*- coding: utf-8 -*-
# """
# Created on Mon Jun  1 08:07:10 2020
# @author: cbq
# """
#
# import os
# from pyecharts import options as opts
# from pyecharts.charts import Geo
# from pyecharts.globals import ChartType, SymbolType
#
# # 手动定义一些美国主要城市的经纬度坐标
# city_coordinates = {
#     "Los Angeles": [-118.2437, 34.0522],
#     "New York": [-74.0060, 40.7128],
#     "Chicago": [-87.6298, 41.8781],
#     "Houston": [-95.3698, 29.7604],
#     "Phoenix": [-112.0740, 33.4484],
# }
#
# # 创建 Geo 对象
# geo = Geo()
#
# # 添加美国地图
# geo.add_schema(
#     maptype="world",  # 改为 "world" 测试地图是否正常加载,"USA" 是目标地图
#     itemstyle_opts=opts.ItemStyleOpts(color="#323c48", border_color="#111"),
# )
#
# # 手动添加城市坐标
# for city, coord in city_coordinates.items():
#     geo.add_coordinate(city, coord[0], coord[1])
#
# # 添加城市和路径数据
# geo.add(
#     "Cities",
#     [("Los Angeles", 55), ("New York", 66), ("Chicago", 77), ("Houston", 88), ("Phoenix", 42)],
#     type_=ChartType.EFFECT_SCATTER,
#     color="white",
# )
#
# geo.add(
#     "Migration Path 1",
#     [("Los Angeles", "New York"), ("Los Angeles", "Chicago"), ("Los Angeles", "Houston")],
#     type_=ChartType.LINES,
#     effect_opts=opts.EffectOpts(
#         symbol=SymbolType.ARROW, symbol_size=6, color="blue"
#     ),
#     linestyle_opts=opts.LineStyleOpts(curve=0.2),
# )
#
# geo.add(
#     "Migration Path 2",
#     [("Phoenix", "Chicago"), ("Phoenix", "Houston"), ("Chicago", "New York")],
#     type_=ChartType.LINES,
#     effect_opts=opts.EffectOpts(
#         symbol=SymbolType.ARROW, symbol_size=8, color="yellow"
#     ),
#     linestyle_opts=opts.LineStyleOpts(curve=0.2),
# )
#
# geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
# geo.set_global_opts(title_opts=opts.TitleOpts(title="Geo-Lines-background"))
#
# # 渲染并生成 HTML 文件
# geo.render("geo_lines_background.html")
#
# # 自动打开生成的HTML文件
# os.system("start geo_lines_background.html")



import geopandas as gpd
import matplotlib.pyplot as plt

# 读取shapefile文件
gdf = gpd.read_file(r'..\原始‘数据\美国西海岸shp\USA.shp')

# 绘制地图
fig, ax = plt.subplots(figsize=(10, 6))
gdf.boundary.plot(ax=ax, linewidth=1, color="gray")

# 添加点和箭头
points = [
    {"name": "Los Angeles", "coord": (-118.2437, 34.0522), "dx": 5, "dy": 2, "color": "blue"},
    {"name": "Phoenix", "coord": (-112.0740, 33.4484), "dx": 2, "dy": 3, "color": "red"},
    {"name": "San Francisco", "coord": (-122.4194, 37.7749), "dx": 3, "dy": -1, "color": "green"},
    {"name": "Las Vegas", "coord": (-115.1398, 36.1699), "dx": -1, "dy": 4, "color": "purple"},
]

# 绘制点和箭头
for point in points:
    ax.plot(point["coord"][0], point["coord"][1], 'o', color=point["color"], markersize=10)
    ax.text(point["coord"][0], point["coord"][1], point["name"], fontsize=12, ha='right')
    ax.arrow(point["coord"][0], point["coord"][1], point["dx"], point["dy"],
             head_width=0.5, head_length=1, fc=point["color"], ec=point["color"])

# 保存为图片
plt.title("migration map", fontsize=15)
plt.savefig('migration_map.png',dpi=600)

# 显示地图
plt.show()

 

import rasterio
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap, BoundaryNorm

# 读取土地利用分类数据 (tif文件)
tif_path = r'普通版裁剪.tif'
with rasterio.open(tif_path) as src:
    landuse = src.read(1)  # 读取第一个波段

# 检查数据中的唯一值
unique_values = np.unique(landuse)
print(f"Unique values in the dataset: {unique_values}")

# 假设红色背景的值是230,可以掩盖这些值
# 如果其他值是背景色,可以在这里添加掩盖条件
landuse = np.ma.masked_where(landuse == 32767, landuse)

# 定义颜色映射(根据ArcGIS中的显示效果)
colors = [
    '#C8C8C8', '#C8C864', '#00FF00', '#00A000', '#006400',  # 10, 11, 30, 40, 50
    '#FFFF00', '#A0A000', '#00A0A0', '#0080FF', '#0000FF',  # 60, 61, 70, 71, 80
    '#A000FF', '#FF00FF', '#FF00A0', '#A00000', '#FF0000',  # 90, 100, 110, 120, 130
    '#FF8000', '#FFA000', '#FFD000', '#FF0000', '#008000',  # 140, 150, 152, 160, 170
    '#804000', '#00A0FF', '#808000', '#C0C000', '#FF0000'   # 180, 190, 200, 210, 220
]
cmap = ListedColormap(colors)

# 定义分类边界
boundaries = [
    10, 11, 30, 40, 50, 60, 61, 70, 71, 80,
    90, 100, 110, 120, 130, 140, 150, 152, 160, 170,
    180, 190, 200, 210, 220, 230
]
norm = BoundaryNorm(boundaries, cmap.N, clip=True)

# 创建图形和轴
fig, ax = plt.subplots(figsize=(15, 10))

# 显示土地利用分类数据
img = ax.imshow(landuse, cmap=cmap, norm=norm)

# 创建颜色条(图例)
cbar = plt.colorbar(img, ax=ax, boundaries=boundaries, ticks=[i for i in boundaries])
cbar.ax.set_yticklabels([f'Class {i}' for i in boundaries])  # 根据实际分类调整

# 设置标题
ax.set_title('Land Use Classification')

# 移除坐标轴
ax.axis('off')
plt.savefig('migration_map.png',dpi=600)
# 显示图像
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2082865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

长亭雷池 WAF 部署及使用过程中遇到的问题

1、安装过程中遇到的问题 这里推荐使用官方的脚本命令,大概看了一下是先判断是否有容器,如果没有容器环境就安装,但是这一步就报错了。这里需要更换成阿里云或是国内其它的源来安装。 bash -c "$(curl -fsSLk https://waf-ce.chaitin.…

黑神话悟空丨资源合集,光追配置+修改器+各种奇奇怪怪的MOD

国产3A大作 黑神话悟空 推出了一些奇奇怪怪的mod(非官方),作为一款备受瞩目的单机作品,黑神话悟空 不仅在剧情和画面上表现出色,同时也为玩家提供了丰富的Mod支持。 哈哈哈哈,总是就是奇奇怪怪,悟空被玩坏了&#xff…

unicode编码存在转义字符,导致乱码问题的解决方案

【前言】   本篇是为了记录一次解码出现乱码的解决方案,篇幅较短,废话不多说,请食用 【问题】后端针对一个字符串进行unicode编码后的,前端解码后出现乱码问题 unicode编码后的字符串,直接交给前端解码,…

【搜索引擎】ElasticSearch 8.x版本

1 ElasticSearch 8.x概述 1.1 Elasticsearch 8.X 来了 1.2 Elasticsearch 新特性 1.3 Elasticsearch 课程升级 2 ElasticSearch 安装 & 使用 2.1 Java 17 安装 2.1.1 下载软件 2.1.2 软件升级 2.2 Elasticsearch 安装 & 使用 2.2.1 下载软件 2.2.2 安装软件 2.2.3…

Visio po解版的详细介绍

一、Visio简介 Visio是一款流程图、组织结构图、地平图、工程图等各类专业图表的制作软件。自问世以来,凭借其友好的用户界面、丰富的图形库和强大的编辑功能,已成为行业内使用最广泛的图形设计软件之一。无论是初学者还是专业人士,都能在Vi…

首发!《物流运输行业电子签最佳实践案例集》重磅发布

近日,法大大重磅发布《物流运输行业电子签最佳实践案例集》,旨在分享在物流行业深耕近10年的经验,为物流企业提供基于电子签技术的数字化创新参考。 该案例集精选中原大易、G7易流、河北快运、万联易达、浙江新颜物流、内蒙古多蒙德、天津小…

使用C++封装顺序表

作业&#xff1a;使用C手动封装一个顺序表&#xff0c;包含成员数组一个&#xff0c;成员变量N个 #include <iostream>using namespace std;using datatypeint; #define MAX 20struct SeqList { private: //私有datatype *data;int size0; …

【Node】【7】函数

函数可以作为变量传递 function execute(someFunction, value) {someFunction(value); }execute(function(word){ console.log(word) }, "Hello");函数传递让http服务器工作,向createServer 传递了一个回调函数&#xff0c;该回调函数会在每次接收到 HTTP 请求时被调…

由浅入深学习 C 语言:Hello World【基础篇】

目录 1. 第一个 C 语言程序 2. 源文件 3. 编译程序 3.1 为什么要编译程序 3.2 C 程序编译过程 4. 预处理器指令 5. 头文件 5.1 什么是头文件 5.2 如何使用头文件 6. 注释 7. main 函数 7.1 函数格式 7.2 main 函数特性 8. 语句 9. return 语句 1. 第一个 C 语言程…

Qt QCustomPlot画色阶图

工作中用到QCustomPlot画曲线图和色阶图&#xff0c;并且在色阶图上添加文字&#xff0c;圆圈或者几条线段画一些图形&#xff0c;这里写个简单的例子把这几个功能记录一下&#xff0c;代码在这里&#xff1a; https://download.csdn.net/download/Sakuya__/89681279https://…

ARP(地址解析协议)详解

1. 引言 在计算机网络中&#xff0c;数据链路层使用MAC地址来传输数据&#xff0c;而网络层使用IP地址来标识设备。当一个设备需要发送数据给另一个设备时&#xff0c;它只知道目标设备的IP地址&#xff0c;而不知道其对应的MAC地址。此时&#xff0c;地址解析协议&#xff08;…

MES、ERP、SCM、WMS、APS、SCADA、PLM、QMS、CRM的区别与联系

你是否与我一样&#xff0c;也曾有过类似的疑惑&#xff1a; 企业数字化转型过程中可能会用到哪些系统&#xff1f;其中&#xff0c;又是在哪些情况下才会用到这些系统&#xff1f; 有了这些疑问&#xff0c;你肯定想知道答案。 为了解决你的心头之患&#xff0c;我花了整整…

Linux C创建进程及父子进程虚拟地址空间(附源码)

1.Linux创建进程 Linux允许一个进程创建新进程&#xff0c;新进程即为子进程&#xff0c;子进程还可以创建新的子进程&#xff0c;形成进程树型结构模型。 #include <sys/types.h> #include <unistd.h> pid_t fork(void); 返回值&#xff1a;成功&#xff1a;子进…

npm包下载慢的解决方案(手把手教你跟换yarn和pnpm设置镜像源)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 一、npm镜像源二、更换镜像源的步骤1、查看当前镜像源2、改成淘宝镜像源3、删除镜像&#xff0c;恢复默认镜像 三、以…

图森未来创始人之争后续:一场新的争夺战又拉开序幕?

自动驾驶明星公司图森未来&#xff0c;此前陷入一场权力斗争风波。 如今&#xff0c;重掌控制权的创始人陈默和CEO吕程主导下&#xff0c;近期宣布进入生成式AI应用领域&#xff1b;另一个负气出走的创始人侯晓迪&#xff0c;则带着L4级别自动驾驶的理想开始新的创业。 曾经的…

Maven学习(零基础到面试)

1.什么是Maven? maven是一款用于管理和构建java项目的工具 2.Maven的作用&#xff1f; 1.依赖管理&#xff1a;方便快捷的管理项目以来的资源&#xff08;jar包&#xff09;&#xff0c;避免版本冲突问题。 以前的项目需要创建lib包&#xff0c;将网上的jar包资源放入其中使用…

C语言 ——— 将动态版本的通讯录实现为文件存储联系人模式

目录 前言 在退出通讯录之前 在运行通讯录之前 前言 在这篇博客中&#xff0c;实现了动态版本的通讯录&#xff0c;接下来会增加函数&#xff0c;能用文件存储通讯录中的联系人 C语言 ——— 在控制台实现通讯录&#xff08;增删查改、动态开辟内存空间&#xff09;-CSDN…

python如何调用函数库

python对函数库引用的第一种方式 格式是&#xff1a; import<库名> 例如&#xff1a; import turtle 如果需要用到函数库中函数&#xff0c;需要使用&#xff1a; <库名>.<函数名> 例如&#xff1a; import turtleturtle.fd(100) python对函数库引用的第…

书生大模型实战营第三期基础岛第四课——llamaindex+Internlm2 RAG实践

llamaindexInternlm2 RAG实践 基础作业&#xff1a;配置基础环境创建LLAMAINDEX文件夹存放课程相关文件创建模型下载脚本download_hf.py下载 Sentence Transformer 模型下载 NLTK 相关资源LlamaIndex HuggingFaceLLMLlamaIndex RAG新建脚本llamaindex_RAG.pyLlamaIndex web部署…

Ubuntu美化为类Windows风格

博主的系统为 Ubuntu22.04 参考文献&#xff1a;How to Make Ubuntu Look Like Windows 11 | 22.04 GNOME 43 / 42 | Linux AF Tech 可能遇到的bug的解决方法&#xff1a;如何在 Linux 中安装和更改 GNOME 主题 先来一下视频演示&#xff1a; 下面正式开始安装。在主文件夹下打…