目录
什么是地理可视化?
地理可视化是将地理信息数据转化为地图等图像形式展现,这种方式的优点在于用交互式图表等形式更加容易展现和理解地理信息的空间分布。
应用:目前地理可视化技术不但在科学研究领域有广泛的应用,在商业决策领域也越来越重要,越来越多的企业使用地理可视化技术来探索和发现业务市场的动向,并作出更加科学合理的决策。
发展:随着计算机、图形、图像等现代科技技术的飞速发展,人们现在已经可以用丰富的色彩、动画技术、三维立体显示及仿真等手段实现地理可视化,专门的综合性学科—地理信息系统学科(GIS)也应运而生。
目前地理可视化使用的技术非常多,应用的领域和实现的功能也根据软件的不同而不同,本篇仅粗浅的讨论地图上点线面制作,使用的工具是Python。
经纬度坐标体系
经纬度坐标分类
地理坐标体系是用来描述地球表面位置的一种标准体系,由于计量方法不同,同一地点在不同坐标体系内的数值计量是不一样的。不同地图工具所使用的经纬度坐标体系是不一样的,因此当我们在制作地图要注意经纬度数值计量与坐标体系对应。
1、GPS,WGS-84,原始坐标体系。一般用国际标准的GPS记录仪记录下来的坐标,都是GPS的坐标。但是由于保密性原因,国内任何一个地图产品都不允许使用GPS坐标。
2、GCJ-02,国测局02年发布的坐标体系。又称“火星坐标”。在中国,必须至少使用GCJ-02的坐标体系。比如谷歌,腾讯,高德都在用这个坐标体系。GCJ-02也是国内最广泛使用的坐标体系。
3、其他坐标体系。一般都是由GCJ-02进过偏移算法得到的。这种体系根据每个公司的不同,坐标体系不一样。比如,百度和搜狗就使用自己的坐标体系,与其他坐标体系不兼容。
当前市面上一些主流地图产品采用的坐标体系如下:
经纬度坐标体系 | 地图产品 |
---|---|
CGCS-2000 | 天地图 |
WGS-84 | 谷歌地球 谷歌地图(境外)高德地图(境外)百度地图(境外)微软Bing地图 OSM |
GCJ-02(火星坐标) | 谷歌地图(境内)高德地图(境内)腾讯地图 搜搜地图 阿里云地图 灵图地图 Mapbox(境内)(?猜测) |
BD-09 | 百度地图(境内) |
经纬度坐标转化
不用的坐标体系中的测量值可以用转化工具转化成另外坐标体系中的值(大多数情况是百度坐标转化为GCJ-02)
下面介绍两个可用于经纬度转化的Python库
1.Transbigdata
TransBigData依赖geopandas,在安装TransBigData前需要安装geopandas。
经纬度的测量值可以是以dataframe形式的点坐标(经度列 纬度列),也可以是以地理要素信息(Geodataframe,可用于存储面线)形式的整体转化。
使用手册:坐标距离 — TransBigData 0.4.10 文档
#转化gdf整体要素
import pandas as pd
import geopandas as gpd
import json
import transbigdata as tbd
# 导入完整数据集,用geopandas读取json数据,读入的数据就是gdf
data=gpd.read_file(r'C:\Users\HUAWEI\Desktop\商圈经纬度\aa.json')
#gdf整体转化
data1 = tbd.transform_shape(data,tbd.gcj02towgs84)
#转化dataframe列
data['Lng'],data['Lat'] = tbd.wgs84tobd09(data['Lng'],data['Lat'])
data['Lng'],data['Lat'] = tbd.wgs84togcj02(data['Lng'],data['Lat'])
data['Lng'],data['Lat'] = tbd.gcj02tobd09(data['Lng'],data['Lat'])
data['Lng'],data['Lat'] = tbd.gcj02towgs84(data['Lng'],data['Lat'])
data['Lng'],data['Lat'] = tbd.bd09togcj02(data['Lng'],data['Lat'])
data['Lng'],data['Lat'] = tbd.bd09towgs84(data['Lng'],data['Lat'])
data['Lng'],data['Lat'] = tbd.bd09mctobd09(data['Lng'],data['Lat'])
2. CoordinatesConverter
使用方法与TransBigData类似
#df转化
import pandas as pd
import CoordinatesConverter
#从excel中读取数据成dataframe
dfn=pd.read_excel(r'C:\Users\HUAWEI\Desktop\AA.xlsx')
#整列转化
dfn['经度'],dfn['纬度'] = CoordinatesConverter.bd09towgs84(dfn['经度'],dfn['纬度']) #百度转wgs84
下篇介绍python中几个常用的地理可视化的包。