地理数据可视化基础

1.获取shp文件的方法

方法一

参考这篇博文:
获取省市县的轮廓shp文件

方法二

参考了以下几篇博文
利用OpenStreetMap获取城市路网数据
OSM路网数据(xml或json格式)如何转为shapefile格式
概括成如下步骤:
1.先在openstreetmap官网上搜索城市名,得到城市ID,开源网站Openstreetmap的官网网址为:https://www.openstreetmap.org/relation/3020001
在这里插入图片描述

2.通过OverpassAPI获取,网址为:API
在这里插入图片描述
选择Query and Convert Forms,在输入框中输入:

<osm-script timeout="1800" element-limit="100000000">
  <union>
    <area-query ref="3603020001"/>
    <recurse type="node-relation" into="rels"/>
    <recurse type="node-way"/>
    <recurse type="way-relation"/>
  </union>
  <union>
    <item/>
    <recurse type="way-node"/>
  </union>
  <print mode="body"/>
</osm-script>

其中,ref的值为3600000000+上一步获得的ID数字。
点击Query。
3.访问Geoconverter网站
将上一步下载的interpreter放入代转换的文件,选择输出格式为shp文件即可。

2.利用OpenStreetMap获取城市POI(兴趣点)数据

需要使用pandana库(Pandana has some support for creating a Network from the OpenStreetMap API),pandana的官方说明

#导入需要的库
import pandana, matplotlib.pyplot as plt
from pandana.loaders import osm
%matplotlib inline
import pandas as pd
import pandana as pdna
#利用OSM的api获取指定区域内的POI信息
# bbox = [30.66, 120.85,31.89, 122.20] #上海的经纬度范围
# amenity = 'school' #兴趣点种类
# pois = osm.node_query(bbox[0], bbox[1], bbox[2], bbox[3], tags='"amenity"="{}"'.format(amenity))
# pois.to_csv("{}.csv".format(amenity),index=False, encoding='utf-8')
# 根据给定的经纬度范围利用OSM下载区域内路网
bbox = [30.66, 120.85,31.89, 122.20] #上海的经纬度范围
network_filename='./shapefile/shanghai_net.h5'#保存路网文件路径
network = osm.network_from_bbox(bbox[0], bbox[1], bbox[2], bbox[3])
network=pandana.Network(network[0]["x"],network[0]["y"], network[1]["from"], network[1]["to"],
                 network[1][["distance"]])

猜你喜欢

转载自blog.csdn.net/qq_39805362/article/details/109317844