爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6998|回复: 2

[其他] HDF格式的中国大陆城市的边界经纬度数据

[复制链接]

新浪微博达人勋

发表于 2019-8-19 20:07:32 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

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() #写入完成后,记得关掉。







province_city_boundary_lon_lat.hdf

18.64 MB, 下载次数: 71, 下载积分: 金钱 -5

城市边界经纬度数据

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-5-20 15:55:42 | 显示全部楼层
请问您的 shp文件可以共享出来吗?我想写成其他格式的文件
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-5-20 23:44:42 | 显示全部楼层
WENXING 发表于 2020-5-20 15:55
请问您的 shp文件可以共享出来吗?我想写成其他格式的文件

https://blog.csdn.net/weixin_43718675/article/details/93410875  具体下载可以参考这个链接
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表