中国行政区划四至点位获取、区划shp、geojson下载及流式裁剪链接
Project description
sizhi模块by:pianshilengyubing
项目描述:
1.作用:
此模块用来获取地图省市县乡镇四级行政区划的四至点位,默认左上右下,经度在前,纬度在后,请按该顺序编写代码。
利用该模块,可以省去爬虫等工作时需要手动获取四至点位并转换坐标系的过程,便于节省代码,批量使用,还可使得代码更为可控。
有获取行政区划的四至点位(包含全部区划的最小矩形即包络矩形)与自行输入俩种方式。
1.6版本返回为字典
2.0删除了api请求,全部更改为本地数据,并增加了乡镇级的四至获取。
3.0增加了api可以下载行政区划shp和geojson文件,并且提供url以方便使用gdal的api对数据进行流式裁剪。由于用的自己服务器,如果后续占用资源过多,可能会考虑放在github上
2.使用:
获取四至点位:
有获取行政区划的四至点位与自行输入俩种方式。
请求方式:
box=sizhi.box()
①按行政区划输入:
需要下载的行政区划中文,请务必加上市、区、县、乡、镇、街道后缀。可输入省市县,以及乡镇街道。eg:北京市、东城区、石门街镇、北王力乡、荷花街道。
通过区划获取,只对中国城市有效。如果区划有变动,需要手动更新dic。
②自行输入:
自行在百度坐标拾取系统(http://api.map.baidu.com/lbsapi/getpoint/index.html)上拾取点位,左上右下,按提示输入。
无论通过哪种方式输入均会提示选择后续代码的坐标系,坐标基于百度地图请输入1,高德腾讯地图请输入2,无偏移地图请输入3。其中1输出坐标系为bd09,2输出坐标系为gcj02,3输出坐标系为wgs84.
获取shp、geojson和url:
请求方式:
bound=sizhi.bound()
①获取shp、geojson:
需要下载的行政区划中文,请务必加上市、区、县、乡、镇、街道后缀。可输入省市县,以及乡镇街道。eg:北京市、东城区、石门街镇、北王力乡、荷花街道。
可以返回文件保存路径。
②获取url:
返回url,用于流式裁剪,可以裁剪栅格数据等。
clip_command = [
'gdalwarp',
'-cutline', '/vsimem/temp_boundary.geojson', # 使用 gdalwarp 的内存文件系统
'-crop_to_cutline',
'-co', 'COMPRESS=LZW',
'-dstnodata', '0',
intermediate_tif,
output_tiff_path
]
# 首先将 GeoJSON 写入 /vsimem/temp_boundary.geojson
gdal.FileFromMemBuffer('/vsimem/temp_boundary.geojson', requests.get('http://api.ykghs.top/get_boundary/东城区').text)
subprocess.run(clip_command, check=True)
3.示例:
import sizhi
box=sizhi.box()
........
........
返回值:['北京市', [[115.42984813547287, 41.06702959551089], [117.5210935092895, 39.448668299439845]]]
左上右下,俩个点位的经纬度列表。
如果不想在运行后在命令行里输入序号进行选择,也可输入:
box(shurutype=None,ad_city=None,ditutp=None)
shurutype为输入方式,'1'为按区划输入,'2'为手动输入.
ad_city为城市名称,也可以是手动输入时的地块名称.
ditutp为坐标系选择,'1'为bd09,'2'为gcj02,'3'为wgs84.
bound=sizhi.bound()
........
........
返回值:
bound值为shp数据或geojson数据下载的保存路径
bound值为url链接
如果不想在运行后在命令行里输入序号进行选择,也可输入:
bound=sizhi.bound(city_name,down_load_type)
city_name为城市名,down_load_type为'1'时为下载shp,为'2'时为下载geojson,为'3'时返回url链接
4.适用:
基于python3.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.