‘壹’ python 实现批量转换坐标系
https://github.com/wandergis/coordTransform_py/archive/master.zip
‘贰’ python将高斯坐标转换经纬度 经纬度坐标与高斯坐标的转换代码
#网上搜来的
# 高斯坐标转经纬度算法 # B=大地坐标X # C=大地坐标Y # IsSix=6度带或3度带
import math
def GetLatLon2(B, C,IsSix):
#带号
D = math.trunc( C/ 1000000)
#中央经线(单位:弧度)
K = 0
if IsSix:
K = D * 6 - 3 #6度带计算
else:
K = D * 3 #3度带计算
L = B/(6378245*(1-0.006693421623)*1.0050517739)
M = L +(0.00506237764 * math.sin(2*L)/2-0.00001062451*math.sin(4*L)/4+0.0000002081*math.sin(6*L)/6)/1.0050517739
N = L +(0.00506237764 * math.sin(2*M)/2-0.00001062451*math.sin(4*M)/4+0.0000002081*math.sin(6*M)/6)/1.0050517739
O = L +(0.00506237764 * math.sin(2*N)/2-0.00001062451*math.sin(4*N)/4+0.0000002081*math.sin(6*N)/6)/1.0050517739
P = L +(0.00506237764 * math.sin(2*O)/2-0.00001062451*math.sin(4*O)/4+0.0000002081*math.sin(6*O)/6)/1.0050517739
Q = L +(0.00506237764 * math.sin(2*P)/2-0.00001062451*math.sin(4*P)/4+0.0000002081*math.sin(6*P)/6)/1.0050517739
R = L +(0.00506237764 * math.sin(2*Q)/2-0.00001062451*math.sin(4*Q)/4+0.0000002081*math.sin(6*Q)/6)/1.0050517739
S = math.tan(R)
T = 0.006738525415*(math.cos(R))**2
U = 6378245/math.sqrt(1-0.006693421623*(math.sin(R))**2)
V = 6378245*(1-0.006693421623)/(math.sqrt((1-0.006693421623*(math.sin(R))**2)))**3
W = 5+3*S**2+T-9*T*S**2
X = 61+90*S**2+45*S**4
Y = 1+2*S**2+T**2
Z = 5+28*S**2+24*S**4+6*T+8*T*S**2
Lat= (180/math.pi)*(R-(C-D*1000000-500000)**2*S/(2*V*U)+(C-D*1000000-500000)**4*W/(24*U**3*V)-(C-D*1000000-500000)**6*X/(7200*U**5*V))
Lon= (180/math.pi)*(C-D*1000000-500000)*(1-(C-D*1000000-500000)**2*Y/(6*U**2)+(C-D*1000000-500000)**4*Z/(120*U**4))/(U*math.cos(P))
Lat = Lat
Lon = K + Lon
return (Lon, Lat)
‘叁’ python用矩阵输出地图坐标 错误:only length-1 arrays can be converted to Python scalars
看这个提示是因为你的传入的参数应该长度为1的数组,
错误翻译就是:只有长度为1的数组才能被转换成python scalars
‘肆’ 如何用python实现百度地图墨卡托坐标跟经纬度坐标互转
麦哲伦机器:
系统设置
地图单位
自定义坐标系
横向墨卡托
原点纬度0
原点经度126(通化)
比例因子1
通用迷单位1
原点向东偏移500000
原点向北偏移0
完成
系统设置
地图单位
参考椭球
用户
DA-108
DF0.0000005
DX1
DY-129
DZ-48
X旋转0
Y旋转0
Z旋转0
比例因子0
完成
以上就OK了
这样从经纬度转为公里网坐标。反向选择为“度分秒”格式,地图单位选为“wgs84”就可以改成经纬度格式了。
‘伍’ python画图要用图形库吗
matplotlib,是最经典的Python可视化绘图库。matplotlib就是MATLAB Plot Library,即模仿Matlab的绘图库,其绘图风格与Matlab类似。
seaborn,是基于matplotlib的,纯粹由Python开发的图形可视化库,在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易。"make a well-defined set of hard things easy",“默认情况下就能创建赏心悦目的图表”。
basemap,Python的basemap库负责实现地理信息可视化,其功能之强大较GMT有过之而无不及。其底图数据库与GMT相同,封装了大量常用的地图投影、坐标转换功能,利用简洁的Python语法支持绘出多种多样的地理地图。
‘陆’ 使用 Python 地图绘制工具 -- folium 全攻略
1. 准备工作
有朋友可能没用过 folium ,它其实就是 python 的一个 专业绘制地图 的第三方库,所以在使用之前需要先安装它。
在安装完成之后,我们可以在 jupyterlab 进行演示如下:
对于上面的输出,其实是一个 可交互 的地图,支持放大缩写拖拽等等。
如果你想将输出存在本地,可以这样来:
可以看到本地就存了这个一个文件,浏览器打开就可以进行交互式操作了。
以上就是一个平平淡淡的过程......
2. 关于folium.Map()
在上一部分我们可以看到这个 map 玩意直接就是一个地图啦,这里我们就介绍一下它常用的几个参数。
参数可真多啊!!
以上是常用的一些参数,而最常用的莫过于 location 、 zoom_start 和 tiles 等。
内建地图样式 还有一下几种:
我们简单试下 location 和 zoo_start 参数:
可以看到 清华大学校区
以上对 Map 的参数进行了简单的介绍,接下来,我们就来看看地图底图样式的选取情况吧~
3. 内建地图底图样式
我们看到 folium 其实有好几种内建地图底图样式,其中部分需要去申请 key ,由于我这边没有申请成功就不做演示了。
地势地形底图
黑白无标记底图
水墨画底图
以上就是内建地图底图样式的一些展示,部分需要key的大家可以去这个网站申请:
另外,在这里也可以找到一些地图底图
我后续也会去研究这些地图底图样式,试着分享更多有趣的地图分享给大家。
当然了,国内咱们用的较多的地图是高德、网络和腾讯地图等,接下来我们就来玩玩!
4. 多种第三方地图底图样式
这里我将演示高德地图、智图GeoQ和腾讯地图等
高德地图的 中英文地图、卫星影像图、街道图与常规图
中英文地图
纯英文地图
卫星影像图
街道图
常规图
反正我觉得这个蛮好的,用起来简单
多种风格地图,即拿即用
彩色版
暖色版
灰色版
蓝黑版
英文版
中国行政区划边界
水系专题
街道网图
暖色街道网图
需要注册一个key
天地图影像
天地图影像注记
天地图矢量
天地图矢量注记
天地图地形
天地图地形注记
网络地图我这边测试失败了,暂时没有找到合适的替换方案。
5. 补充
其实,我们还可以找更多的 地图底图瓦片URL 来进行替换,多样化我们的地图绘制。
另外,大家在用经纬度坐标点进行地图绘制的时候,比如标记点、绘制区域、热力图绘制等等, 需要考虑经纬度坐标是哪个地图系下面的,然后再用对应地图系的相关底图进行绘制才准确!
‘柒’ python对卫星地图tif文件转换
pathjoin那里错了。应该是:
图一中的错误表明,imread返回值img是None
imread的第一个参数,即使传入的是一个无效的文件名,它也不会抛出错误,而是返回一个None.
第一个参数的赋值是this.dir = os.path.join(dir + ...)
这种写法并不好,一般来说,应该是写成
this.dir = os.path.join(dir , filename)
并且,你应当在这之后检查一下这个文件是否存在:
if not os.path.isfile(this.dir):
....raise FileNotFoundError(this.dir)
然后才可以交给imread()去读取
‘捌’ 【可视化】python地图可视化_Folium
Folium是Leaflet.js的Python的API,即可以使用Python语言调用Leaflet的地图可视化能力。
其中,Leaflet是一个非常轻的前端地图可视化库。
默认参数为OpenStreetMap地图,(0,0)经纬度坐标,全球范围缩放
最简单的配置,初始化中心位置和缩放尺度
文档说内置“Mapbox Bright”和“Mapbox Control Room”,本次实验中无法加载
瓦片地址参考 http://openwhatevermap.xyz
瓦片地址参考页面顶部链接
各种要素可以设置颜色、大小、文字标记等属性,具体看操作手册
这里以高德地图为底图,添加点、线、面形状
以高德地图API的坐标提取器为准,取操场位置的坐标,并打在默认地图和高德地图上,可以看到坐标不同
做地图可视化的方法,通常有
其中
python语言近年来比较热,也有很多可视化库可以用,但是在地图的可视化方面很弱。有一些可视化库也支持一点点,如plotly内置的mapbox可视化;还有上面提到的的pyecharts可以做形状,底图(应该)可以用网络地图。但是这些或者不灵活、或者限定了底图,基本能力还是有的,虽然都不全。
背景完,具体内容到页面顶部。
‘玖’ python可视化神器——pyecharts库
无意中从今日头条中看到的一篇文章,可以生成简单的图表。据说一些大数据开发们也是经常用类似的图表库,毕竟有现成的,改造下就行,谁会去自己造轮子呢。
pyecharts是什么?
pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是网络开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒, pyecharts 是为了与 Python 进行对接,方便在 Python 中直接使用数据生成图 。使用pyecharts可以生成独立的网页,也可以在flask、django中集成使用。
安装很简单:pip install pyecharts
如需使用 Jupyter Notebook 来展示图表,只需要调用自身实例即可,同时兼容 Python2 和 Python3 的 Jupyter Notebook 环境。所有图表均可正常显示,与浏览器一致的交互体验,简直不要太强大。
参考自pyecharts官方文档: http://pyecharts.org
首先开始来绘制你的第一个图表
使用 Jupyter Notebook 来展示图表,只需要调用自身实例即可
add() 主要方法,用于添加图表的数据和设置各种配置项
render() 默认将会在根目录下生成一个 render.html 的文件,文件用浏览器打开。
使用主题
自 0.5.2+ 起,pyecharts 支持更换主体色系
使用 pyecharts-snapshot 插件
如果想直接将图片保存为 png, pdf, gif 格式的文件,可以使用 pyecharts-snapshot。使用该插件请确保你的系统上已经安装了 Nodejs 环境。
安装 phantomjs $ npm install -g phantomjs-prebuilt
安装 pyecharts-snapshot $ pip install pyecharts-snapshot
调用 render 方法 bar.render(path='snapshot.png') 文件结尾可以为 svg/jpeg/png/pdf/gif。请注意,svg 文件需要你在初始化 bar 的时候设置 renderer='svg'。
图形绘制过程
基本上所有的图表类型都是这样绘制的:
chart_name = Type() 初始化具体类型图表。
add() 添加数据及配置项。
render() 生成本地文件(html/svg/jpeg/png/pdf/gif)。
add() 数据一般为两个列表(长度一致)。如果你的数据是字典或者是带元组的字典。可利用 cast() 方法转换。
多次显示图表
从 v0.4.0+ 开始,pyecharts 重构了渲染的内部逻辑,改善效率。推荐使用以下方式显示多个图表。如果使是 Numpy 或者 Pandas,可以参考这个示例
当然你也可以采用更加酷炫的方式,使用 Jupyter Notebook 来展示图表,matplotlib 有的,pyecharts 也会有的
Note: 从 v0.1.9.2 版本开始,废弃 render_notebook() 方法,现已采用更加 pythonic 的做法。直接调用本身实例就可以了。
比如这样
还有这样
如果使用的是自定义类,直接调用自定义类示例即可
图表配置
图形初始化
通用配置项
xyAxis:平面直角坐标系中的 x、y 轴。(Line、Bar、Scatter、EffectScatter、Kline)
dataZoom:dataZoom 组件 用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响。(Line、Bar、Scatter、EffectScatter、Kline、Boxplot)
legend:图例组件。图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。
label:图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。
lineStyle:带线图形的线的风格选项(Line、Polar、Radar、Graph、Parallel)
grid3D:3D笛卡尔坐标系组配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D)
axis3D:3D 笛卡尔坐标系 X,Y,Z 轴配置项,适用于 3D 图形。(Bar3D, Line3D, Scatter3D)
visualMap:是视觉映射组件,用于进行‘视觉编码’,也就是将数据映射到视觉元素(视觉通道)
markLine&markPoint:图形标记组件,用于标记指定的特殊数据,有标记线和标记点两种。(Bar、Line、Kline)
tooltip:提示框组件,用于移动或点击鼠标时弹出数据内容
toolbox:右侧实用工具箱
图表详细
Bar(柱状图/条形图)
Bar3D(3D 柱状图)
Boxplot(箱形图)
EffectScatter(带有涟漪特效动画的散点图)
Funnel(漏斗图)
Gauge(仪表盘)
Geo(地理坐标系)
GeoLines(地理坐标系线图)
Graph(关系图)
HeatMap(热力图)
Kline/Candlestick(K线图)
Line(折线/面积图)
Line3D(3D 折线图)
Liquid(水球图)
Map(地图)
Parallel(平行坐标系)
Pie(饼图)
Polar(极坐标系)
Radar(雷达图)
Sankey(桑基图)
Scatter(散点图)
Scatter3D(3D 散点图)
ThemeRiver(主题河流图)
TreeMap(矩形树图)
WordCloud(词云图)
用户自定义
Grid 类:并行显示多张图
Overlap 类:结合不同类型图表叠加画在同张图上
Page 类:同一网页按顺序展示多图
Timeline 类:提供时间线轮播多张图
统一风格
注:pyecharts v0.3.2以后,pyecharts 将不再自带地图 js 文件。如用户需要用到地图图表,可自行安装对应的地图文件包。
地图文件被分成了三个 Python 包,分别为:
全球国家地图:
echarts-countries-pypkg
中国省级地图:
echarts-china-provinces-pypkg
中国市级地图:
echarts-china-cities-pypkg
直接使用python的pip安装
但是这里大家一定要注意,安装完地图包以后一定要重启jupyter notebook,不然是无法显示地图的。
显示如下:
总得来说,这是一个非常强大的可视化库,既可以集成在flask、Django开发中,也可以在做数据分析的时候单独使用,实在是居家旅行的必备神器啊
‘拾’ 如何用Python批量获取经纬度坐标
在MapGIS67“投影变换”子系统中的“用户文件投影转换”功能模块中,
打开坐标文本文件,设置好相关参数,
点击“投影变换”,然后点击“写到文件”,
就把转换好的坐标数据保存成文本文件了!