c# poi写入e_Python | 爬取兴趣点详细攻略(POI)

利用百度地图爬取POI

  • 申请百度地图AK
  • 利用Python爬取POI
  • 将坐标信息转化为shp文件

申请百度地图AK

  • 登录的百度地图开放平台 lbsyun.baidu.com

点击控制台

f35648f640fb54f6925077cf6e83d158.png点击控制台右侧应用管理中的‘我的应用’

adedf6369539b05a8ceaf3813f439ad2.png

点击‘创建应用’

e4d3344b0dcf69320e9da4a21a042082.png

应用名称可以随便填写一个

616dd45936845afc75ca11d1c27103e1.png

IP白名单填写 0.0.0.0/0 即可,然后点击提交。

e1611badfa4582ca5bf8b3f4a79c9d6d.png

这样我们的AK就有了,接下来爬取的时候,我们就会用到。

fb7cb5e94a45f220292828d9d7e05edd.png

爬取POI(以北京地区的公园为例)

本次我们就爬取北京地区公园的位置信息。需要注意是,要把get_json函数中的ak的值替换为你刚申请的AK。

# -*- coding: utf-8 -*-   import requestsimport jsonimport osrimport shapefileclass point:        def __init__(self, name, lat,lon):      self.name = name      self.lat = lat      self.lon=londef get_json(loc,page_num=0):        header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0'}        pa={        'q':'公园',        'region':loc,        'scope':'2',        'page_size':20,        'page_num':page_num,        'output':'json',        'ak':'替换为你的AK'        }    r=requests.get("http://api.map.baidu.com/place/v2/search",params=pa,headers=header)    my_json=json.loads(r.text)    return my_jsonpage=0last_page=Falseinfo_list=[]while not last_page:    park_info=get_json(loc='北京',page_num=page)    if park_info['results']:        for each_park in park_info['results']:                        try:                park_name=each_park['name']            except:                park_name=None            try:                park_lat=each_park['location']['lat']            except:                park_lat=None            try:                park_lon=each_park['location']['lng']            except:                park_lon=None                        info_list.append(point(park_name,park_lat,park_lon))        print('正在爬取第{}页'.format(page+1))        page=page+1    else:        last_page=True

位置信息储存为shp文件

接下来我们就需要把爬取下来的信息存储为shp文件,这里我们使用的是shapefile库(pip install pyshp安装)。

save_path=r'E:\park.shp'file = shapefile.Writer(save_path,encoding='gbk')file.field('name', 'C', '40')    for j in info_list:    if j.lat==None or j.lon==None:        continue    else:        file.point(j.lon,j.lat)        file.record(j.name)file.close()proj = osr.SpatialReference() proj.ImportFromEPSG(4326) wkt = proj.ExportToWkt()f = open(save_path.replace(".shp", ".prj"), 'w') f.write(wkt)#写入投影信息f.close()

好了,现在我们就把北京所有的公园信息爬取下来了。我们在ArcGIS中看一看我们存储的数据吧。21fe47c438047c3f1b0ec92c85d536ce.png

今天的内容就分享到这里啦!如果感觉文章内容对您有帮助的话,欢迎点赞、关注、转发!

3d1e0077c22f5d31088cc616cf1af70b.png欢迎扫码关注

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python爬取POI数据存储到CSV文件中非常简单。以下是一个基本的步骤: 1. 首先,你需要在Python中打开一个CSV文件,并准备写入数据。你可以使用Python内置的CSV模块来实现这一,例如: ```python import csv with open('poi_data.csv', mode='w', newline='') as file: writer = csv.writer(file) writer.writerow(['name', 'latitude', 'longitude', 'category']) ``` 在这个例子中,我们创建了一个名为`poi_data.csv`的新文件,并写入了一个标题行。 2. 接下来,你需要将每个POI的数据写入CSV文件中。你可以使用`writerow`方法将数据写入文件。例如,如果你的POI数据是一个Python列表,其中每个元素包含名称、纬度、经度和类别信息,你可以使用以下代码将其写入CSV文件: ```python import csv poi_data = [ ['POI 1', 39.9087, 116.3975, 'Restaurant'], ['POI 2', 39.9138, 116.3636, 'Hotel'], ['POI 3', 39.9230, 116.3883, 'Attraction'] ] with open('poi_data.csv', mode='a', newline='') as file: writer = csv.writer(file) for poi in poi_data: writer.writerow(poi) ``` 在这个例子中,我们打开了一个名为`poi_data.csv`的现有文件,并将每个POI的数据写入文件中。我们使用`a`模式打开文件,这意味着我们将数据追加到文件的末尾。 3. 最后,记得在程序结束时关闭CSV文件。你可以在文件处理完成后使用`close`方法来关闭文件,或者使用Python的`with`语句来自动关闭文件。例如,如果你在第一步中使用了`with`语句来打开CSV文件,那么文件将在代码块结束时自动关闭。 希望这可以帮助你将Python爬取POI数据存储到CSV文件中!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值