Pycharm中用Python调用DBSCAN的时空大数据分析遇到的困难+mapbox+python包下载
注一、引入mapbox
若用到mapbox,需要到其官网注册一个账号——>获取一个Token——>将其写在代码中(如下),就可以使用mapbox提供的功能啦!
import transbigdata as tbd
#设置mapbox token,引号部分填入mapbox token即可
#tbd.set_mapboxtoken("pk.xxxxxxxxx...xxxxx")
#设置地图底图存储路径
tbd.set_imgsavepath(r'D:\Pycharm\WebGIS\map\\')#Windows系统
注二、mapbox注册
mapbox注册时需要翻墙,翻墙时要开全局模式!可注册一个gmail邮箱用于注册账号,由于没有信用卡,会提示信用卡有问题,这时候也没关系,它会发送一个验证邮件给你,新改的验证方式是信用卡验证,可去搜一个信用卡随机生成器来用于验证邮箱(但不要用于非法用途)
https://www.suijidaquan.com/credit-card-generator
注三、坐标转换
让我们来看一下这段代码
stopdata.crs={'init':'epsg:4326'}
stopdata = stopdata.to_crs(epsg=2416)
由于Python/Pycharn版本原因,极大可能会报错,我们需要将上面的代码改成下面这个样子。
# 将数据转换为投影坐标系,并提取其中的xy坐标
from pyproj import CRS
# 由 地理坐标系wgs84 转换为 投影坐标系,初始为4326,转后为2416
stopdata.crs=CRS.from_epsg(4326)
stopdata = stopdata.to_crs(epsg=2416)
注四、代码修改
获取投影坐标系下的坐标
# 获取投影坐标系下的坐标
stopdata['x']=stopdata.geometry.x
stopdata['y']=stopdata.geometry.y
# 提取完后将数据的坐标系转换回wgs84
stopdata = stopdata.to_crs(epsg=4326)
print(stopdata)
注五、代码修改
markersize是聚集区域在图上的大小,stopdata[‘group’]!=-1极大可能会报错(我目前不知道原因)
stopdata[stopdata['group']!=-1].plot(column='group',ax=ax,markersize=2)
改成这样:
stopdata.plot(column='group',ax=ax,markersize=2)
注六、下载包
使用DBSCAN需要引入包,但下载非常慢,总是提示超时失败,所以改用下面这种方法下载DBSCAN包非常有效,其他包也可以用这种方法。
pip install 包名字 -i https://pypi.tuna.tsinghua.edu.cn/simple ;
其他下载方法推荐看一个博主的
链接: link