1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 基于python的pyshp库读取.shp数据来获取中国城市边界的经纬度数据 并生成hdf文件

基于python的pyshp库读取.shp数据来获取中国城市边界的经纬度数据 并生成hdf文件

时间:2023-05-10 01:44:07

相关推荐

基于python的pyshp库读取.shp数据来获取中国城市边界的经纬度数据 并生成hdf文件

在之前博客中记录了如何获取省界经纬度数据

下面介绍如何获取城市区域的边界经纬度数据,具体思路同上一篇博客

/weixin_43718675/article/details/93410875

import shapefileimport numpy as npfrom mpl_toolkits.basemap import Basemapimport matplotlibimport matplotlib.pyplot as pltimport osimport h5pyfile=shapefile.Reader('gadm36_CHN_shp/gadm36_CHN_2.shp') #读取城市.shp文件shapes=file.shapes() #获取point records=file.records() #获取省-市名称

打开records文件,如下

pro_city_points=[] #建立城市边界列表pro_city_names=[] #建立城市名称列表pro_names=[] #建立省份列表for i in range(len(shapes)):points=shapes[i].points #h获取经纬度数据 pro_name=file.records()[i][3] #获取省名称city_name=file.records()[i][6] #获取市区名称city_ch_name=file.records()[i][8] #获取市区中文名称pro_city_name=[pro_name,city_name,city_ch_name]lon =[] lat =[] #将每个tuple的lon和lat组合起来[lon.append(points[i][0]) for i in range(len(points))] [lat.append(points[i][1]) for i in range(len(points))] lon=np.array(lon).reshape(-1,1)lat=np.array(lat).reshape(-1,1) loc=np.concatenate((lon,lat),axis=1)pro_city_points.append(loc)pro_city_names.append(pro_city_name)pro_names.append(pro_name)pro_names=list(set(pro_names)) #使用集合去掉重复的省名称

打开,如下图

将各个城市的边界数据保存为hdf文件,

file_name='province_city_boundary_lon_lat.hdf' #保存的目标文件名和路径f=h5py.File(file_name,mode='w') #创建一个hdf文件for pro_name in pro_names[0:]:#每一个省份创建一个群组 pro = f.create_group(pro_name)for pro_city_name,points in zip(pro_city_names,pro_city_points):#将对应省份的城市的放在一个group下if pro_city_name[0]==pro_name: city=pro.create_group(pro_city_name[1])city['longitude']=points[:,0]city['latitude']=points[:,1]f.close() #写入完成后,记得关掉。

生成结果如下:

下载使用链接为:

/forum.php?mod=viewthread&tid=92137&extra=

如果没有金币下载,可以私聊我,我发给你

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。