参考这几位大神的博客
https://www.cnblogs.com/feffery/p/11142816.html
https://blog.csdn.net/qq_27484665/article/details/106653733?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-2
(GitHub要求的包以及各种相关的包都装上,开始安装老是报错,最后不知道怎么就好了)
网上基本上都是在Jupyter Notebook上面运行,我直接在Vscode中运行,不是在Vscode中写Jupyter文件
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple GDAL3.1.0
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple fiona1.7.10
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple rasterio1.0a12
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple geopandas0.5.0
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple
ipywidgets==7.4.2
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas==0.24.2
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple
Shapely1.7.0
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple
traitlets4.3.2
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple traittypes==0.2.1
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple keplergl
#示例1
from keplergl import KeplerGl
map=KeplerGl()
map.save_to_html(file_name='ls.html')
#示例2
import os,sys
import pandas as pd
path=sys.path[0]
filename=os.path.join(path,'data.csv')
print(os.path.exists(filename))
data=pd.read_csv(filename)
print(data.head())
map_2=KeplerGl()
map_2.add_data(name='data',data=data)
map_2.save_to_html(file_name='data.html')
#示例3
from keplergl import KeplerGl
import json
with open('gis_osm_natural_a_free_1-geo.json') as b:
geojson = json.load(b)
map_3 = KeplerGl(data={
'geojson':geojson})
map_3.save_to_html(file_name='geojson.html')
如果有shp文件 也可以先转成geojson
从某个博文摘抄的,类似代码很多,要注意的是它的编码转换
import shapefile
import json
import codecs
from tqdm import tqdm
def Shp2JSON(filename,shp_encoding='utf-8',json_encoding='utf-8'):
'''
这个函数用于将shp文件转换为GeoJSON文件
:param filename: shp文件对应的文件名(去除文件拓展名)
:return:
'''
'''创建shp IO连接'''
reader = shapefile.Reader(filename,encoding=shp_encoding)
'''提取所有field部分内容'''
fields = reader.fields[1:]
'''提取所有field的名称'''
field_names = [field[0] for field in fields]
'''初始化要素列表'''
buffer = []
sr = reader.shapeRecord()
# while True:
# if sr:
for sr in tqdm(reader.iterShapeRecords()):
'''提取每一个矢量对象对应的属性值'''
record = sr.record
'''属性转换为列表'''
record = [r.decode('gb2312','ignore') if isinstance(r, bytes)
else r for r in record]
'''对齐属性与对应数值的键值对'''
atr = dict(zip(field_names, record))
'''获取当前矢量对象的类型及矢量信息'''
geom = sr.shape.__geo_interface__
'''向要素列表追加新对象'''
buffer.append(dict(type="Feature",
geometry=geom,
properties=atr))
# for sr in tqdm():
'''写出GeoJSON文件'''
# newfilename=os.path.join()
geojson = codecs.open(filename[:-4] + "-geo.json","w", encoding=json_encoding)
geojson.write(json.dumps({
"type":"FeatureCollection",
"features":buffer}) + '\n')
geojson.close()
print('转换成功!')
if __name__ == '__main__':
import os
# path=
os.chdir(r"F:\资料\OSM")
# Shp2JSON(filename='gis_osm_roads_free_1.shp',
Shp2JSON(filename='gis_osm_natural_a_free_1.shp',
shp_encoding='utf-8',
json_encoding='gbk')