数据集笔记:获取西安乡镇边界

我是从公众号 GIS遥感数据处理应用 上找到的乡镇边界数据

1 读取乡镇边界shp文件

import geopandas as gpd
shp_path = "陕西省_乡镇边界.shp"
gdf = gpd.read_file(shp_path, encoding='GBK')
gdf

1.1 读西安边界

gdf_city_xian=gdf_city[gdf_city['Name']=='西安市']
gdf_city_xian

 

2 方法1:根据名字找到西安的街道和乡镇(有问题)

根据陕西省乡级行政区划统计表_陕西省人民政府 (shaanxi.gov.cn),获取对应的乡镇

a='西一路街道、长乐中路街道、中山门街道、韩森寨街道、解放门街道、自强路街道、太华路街道、长乐西路街道、胡家庙街道'
b='南院门街道、柏树林街道、长乐坊街道、东关南街街道、太乙路街道、文艺路街道、长安路街道、张家村街道'
c='青年路街道、北院门街道、北关街道、红庙坡街道、环城西路街道、西关街道、土门街道、桃园路街道、枣园街道'
d='纺织城街道、十里铺街道、红旗街道、席王街道、洪庆街道、狄寨街道、灞桥街道、新筑街道、新合街道'
e='张家堡街道、三桥街道、辛家庙街道、徐家湾街道、大明宫街道、谭家街道、草滩街道、六村堡街道、未央宫街道、汉城街道、建章路街道、未央湖街道'
f='小寨路街道、大雁塔街道、长延堡街道、电子城街道、等驾坡街道、鱼化寨街道、丈八街道、曲江街道、杜城街道、漳浒寨街道'
g='凤凰路街道、新华路街道、振兴街道、新兴街道、北屯街道、武屯街道、关山街道'
h='骊山街道、秦陵街道、新丰街道、代王街道、斜口街道、行者街道、马额街道、零口街道、雨金街道、栎阳街道、相桥街道、徐杨街道、西泉街道、新市街道、交口街道、北田街道、油槐街道、何寨街道、铁炉街道、任留街道、穆寨街道、小金街道、仁宗街道'
i='韦曲街道、郭杜街道、马王街道、滦镇街道、子午街道、太乙宫街道、引镇街道、斗门街道、王寺街道、东大街道、王曲街道、杜曲街道、鸣犊街道、细柳街道、黄良街道、兴隆街道、大兆街道、高桥街道、五台街道、王莽街道、灵沼街道、五星街道、杨庄街道、炮里街道、魏寨街道'
j='鹿苑街道、泾渭街道、崇皇街道、姬家街道、通远街道、耿镇街道、张卜街道'
k='甘亭街道、余下街道、五竹街道、玉蝉街道、秦渡街道、草堂街道、庞光街道、大王街道、祖庵街道、渭丰街道、涝店街道、甘河街道、蒋村街道、石井街道'
l='蓝关街道、洩湖镇、华胥镇、前卫镇、汤峪镇、焦岱镇、玉山镇、三里镇、普化镇、葛牌镇、蓝桥镇、辋川镇、灞源镇、孟村镇、安村镇、小寨镇、三官庙镇、九间房镇、厚镇'
m='二曲街道、哑柏镇、终南镇、马召镇、集贤镇、楼观镇、尚村镇、广济镇、厚畛子镇、四屯镇、竹峪镇、青化镇、翠峰镇、九峰镇、富仁镇、司竹镇、骆峪镇、陈河镇、板房子镇、王家河镇'

county=[]
for i in [a,b,c,d,e,f,g,h,i,j,k,l,m]:
    for j in i.split('、'):
        county.append(j)
len(county)
#172
gdf_xian=gdf[gdf['Name'].isin(county)]
gdf_xian

gdf_xian.to_csv('xian_county.csv')

 用kepler.gl可视化一下这些乡镇:

会发现有些不在西安的被考虑了,在西安的没有考虑

3 方法2:根据西安的地理位置找寻对应的乡镇1(直接within+sjoin)(有点小问题)

xian_true_county=gpd.sjoin(gdf,gdf_city_xian,how='inner',predicate='within')
xian_true_county

会发现少了很多乡镇

4 方法3:根据西安的地理位置找寻对应的乡镇1(buffer+within+sjoin)

方法2的问题在于,有些subzone的边界和西安的边界并没有“严丝合缝”

解决方法是给西安边界加一个buffer:

gdf_city_xian=gdf_city[gdf_city['Name']=='西安市']
gdf_city_xian['geometry'] = gdf_city_xian.geometry.buffer(0.01)
gdf_city_xian.to_csv('xian_city01.csv')

然后用同样的方式sjoin

xian_true_county=gpd.sjoin(gdf,gdf_city_xian,how='inner',predicate='within')
xian_true_county

这样就可以了 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值