- 积分
- 9239
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2016-12-4
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
自己使用python生成的中国大陆城市的边界经纬度数据,具体代码如下
import shapefile
import numpy as np
from mpl_toolkits.basemap import Basemap
import matplotlib
import matplotlib.pyplot as plt
import os
import h5py
os.chdir('G:/wh')
#改变字体颜色
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['font.family']='sans-serif'
plt.rcParams['axes.unicode_minus']=False
file=shapefile.Reader('gadm36_CHN_shp/gadm36_CHN_2.shp') #读取城市.shp文件
shapes=file.shapes() #获取point
records=file.records() #获取省-市名称
#for i in range(344):
# print(records[i][3], records[i][6],records[i][8])
# print(records[i][6])
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))
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):
if pro_city_name[0]==pro_name:
city=pro.create_group(pro_city_name[1])
city['longitude']=points[:,0]
city['latitude']=points[:,1]
# city['中文名字']=pro_city_name[2]
f.close() #写入完成后,记得关掉。
|
|