python实现3D地图可视化
作者:机关枪小哥哥 发布时间:2023-08-27 10:24:50
标签:python,地图,可视化
基于python代码的3D地图可视化,供大家参考,具体内容如下
介绍
使用Python对地图进行3D可视化。以地图为地图,可以在三维空间对轨迹、点进行可视化。
库
我们使用了多个库:
1.gdal;
主要是用于读取地图信息,这个库在GIS中很常用,使用C++代码编写的,如果安装不了需要在pypi里面找一下对应的资源。
2.opencv;
很常用的图像处理库。
3.matplotlib;
常用的可视化库
结果
废话不多说直接上结果:
代码
直接上代码,代码很简单。
from osgeo import gdal
import cv2
gdal.UseExceptions()
ds = gdal.Open('E:/Pythoncode/读取地理信息/无标题.tif')
bandg = ds.GetRasterBand(1)
elevationg = bandg.ReadAsArray()
bandr = ds.GetRasterBand(2)
elevationr = bandr.ReadAsArray()
bandb = ds.GetRasterBand(3)
elevationb = bandb.ReadAsArray()
import matplotlib.pyplot as plt
nrows, ncols = elevationr.shape
elevation= cv2.merge([elevationg,elevationr,elevationb])#
# I'm making the assumption that the image isn't rotated/skewed/etc.
# This is not the correct method in general, but let's ignore that for now
# If dxdy or dydx aren't 0, then this will be incorrect
x0, dx, dxdy, y0, dydx, dy = ds.GetGeoTransform()
x1 = x0 + dx * ncols
y1 = y0 + dy * nrows
plt.imshow(elevation, cmap='gist_earth', extent=[x0, x1, y1, y0])
plt.show()
from PIL import Image
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
fig = plt.figure()
ax = Axes3D(fig)
img = Image.open('E:/Pythoncode/读取地理信息/无标题.tif')
xx=[]
yy=[]
colall=[]
x = img.size[0]
y = img.size[1]
for i in range(x):
for j in range(y):
r = hex(img.getpixel((i, j))[0])[2:]
b = hex(img.getpixel((i, j))[1])[2:]
g = hex(img.getpixel((i, j))[2])[2:]
if len(r) == 1:
r = '0' + r
if len(b) == 1:
b = '0' + b
if len(g) == 1:
g = '0' + g
col = '#' + r + b + g
colall.append(col)
xx.append(x0 + dx * i)
yy.append(y0 + dy * j)
# col = '#FF00FF'
ax.scatter(xx, yy, 5, c=colall, alpha=0.5)
plt.show()
来源:https://blog.csdn.net/qq_38684480/article/details/90080673


猜你喜欢
- python的日志管理模块可以用自带的logging模块,也可以用第三方的Loguru模块,关于logging和loguru模块的简单使用可
- 在 Python 中,你可以使用 sorted() 方法或 sort() 方法对数据进行排序。在本文中,我将提供 sorted() 和 so
- MySQL手册中find_in_set函数的语法解释:FIND_IN_SET(str,strlist)str 要查询的字符串 strlist
- 在写代码时,经常会遇到多个矩阵数组拼接的情况,numpy里dstack, hstack, vstack, 都有拼接的作用,那么这些函数是怎么
- 其中 offset and fetch 最重要的新特性是 用来 分页,既然要分析 分页,就肯定要和之前的分页方式来比较了,特别是 Row_N
- 一.使用DOM生成和读取XML文件 实例一: <?php //Creates XML string and XML document
- #!/usr/bin/python #-*- encoding: utf-8 -*- import types class NotInteg
- 可编辑table及其中加入下拉选项<template> <div> &
- 举例写文章详情页面的时候的一个场景:首先更改文章详情中的 PV,然后读取文章详情,然后根据文章详情中文章 Id 查阅该文章评论和该文章作者信
- 目录abspathbasenamedirnameexistsgetatimegetctimegetsizeisabsisdirisfilei
- 这也许是学习一门语言时大家都会问的一个问题,其实我个人认为无所谓哪个最好,关键在于哪个用着顺手,方便。还有很多人乐于去做排名,去看排名,哪个
- 本文实例讲述了Python OS模块。分享给大家供大家参考,具体如下:os模块在自动化测试中,经常需要查找操作文件,比如查找配置文件(从而读
- 背景:在自动化化测试过程中,不方便准确获取页面的元素,或者在重构过程中方法修改造成元素层级改变,因此通过设置id准备定位。一、python准
- 一、new做了哪些事先看看new的使用场景:// 1、创建一个构造函数function Vehicle(name, price) { &nb
- 本文实例讲述了GO语言获取系统环境变量的方法。分享给大家供大家参考。具体实现方法如下:package mainimport ( &
- 一、创建数据表1、基本语法create table 表名 ( 字段名 字段类型 [字段属性], &n
- 当数据文件过大时,由于计算机内存有限,需要对大文件进行分块读取:import pandas as pdf = open('E:/学习
- 科学设计你的网站网页:来自 Eye-Tracking研究的23节必修课 ——Christina Laun在网络设计领域关于Eye-
- 边缘检测Canny边缘检测器是一种被广泛使用的算法,并被认为是边缘检测最优的算法,该方法使用了比高斯差分算法更复杂的技巧,如多向灰度梯度和滞
- 本文实例讲述了php购物车实现方法。分享给大家供大家参考。具体分析如下:这里我们为你提供个简单的php购物车代码,从增加购物产品与发生购买了