python 根据shp文件解析经纬度市县信息

该博客介绍了如何利用Python的Shapely和shapefile库读取和操作Shapefile地理数据。通过示例展示了如何查找指定经纬度坐标点(43.146, 125.247)所在省份、城市和县的名称。通过遍历shapefile的记录和边界,实现了基于空间位置的快速查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from shapely.geometry import Point
from shapely.geometry.polygon import Polygon
from shapely.geometry import shape
import time
import shapefile
try:
    file = shapefile.Reader(os.getcwd()+r"\\shp\HEBEI.shp", encoding='gbk')

except:
    print('No shpfile!')
else:
    attribute_box=[]
    border_shape = file
    border = border_shape.shapes()
    attribute = file.records()
    sf = file.shapeRecords()
    for i in range(len(sf)):
        attribute_box.append(sf[i].shape.bbox)
        # print(attribute[i])
        # print(sf[i].shape.bbox)
    print('Success read shpfile')
    print(attribute_box)
lat = 43.146
lon = 125.247
point = Point(lon, lat)
sheng = '' 
shi = '' 
xian = ''  
for i in range(len(sf)):
    # print(sf[i].shape.bbox)
    [lon_min,lat_min,lon_max,lat_max]=attribute_box[i]
    if lat_min<lat<lat_max and lon_min<lon<lon_max:            ###提高速度
        # if point.within(shape(sf[i].shape)):
        if shape(sf[i].shape).contains(point):
            geo_attr = attribute[i]
            # print(geo_attr)
            xian = geo_attr['XIAN_NAME']
            shi = geo_attr['SHI_NAME]
            sheng = geo_attr['SHENG_NAME']
            print(lg, ly, lc)
            break


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值