2025年python 抓取行政区划

python 抓取行政区划这是 地图时空大数据爬取 第 6 章的内容 这篇博客主要是抓取一下行政区划数据 最小是能抓到区县的行政区划数据 然后书里是用 arcpy 和 arcgis 再加上 python 一起来处理的 有些麻烦 我统一用 python 来处理了 改写了下代码 因为很简单 就不多说了 直接放代码 import

大家好,我是讯享网,很高兴认识大家。

这是《地图时空大数据爬取》第6章的内容,这篇博客主要是抓取一下行政区划数据,最小是能抓到区县的行政区划数据。然后书里是用arcpy和arcgis再加上python一起来处理的,有些麻烦,我统一用python来处理了,改写了下代码,因为很简单,就不多说了,直接放代码。


讯享网

import basics import geopandas as gpd import pandas as pd import numpy as np import matplotlib.pyplot as plt import json import urllib from urllib.parse import quote import string from shapely.geometry import Point from shapely.geometry import Polygon from shapely.geometry import LineString import pyproj 

讯享网
讯享网# 功能:采集行政区域边界 # 返回保存边界信息的BoundryWithAttr对象 def getDistrictBoundry(ak,citycode): districtBoundryUrl = "http://restapi.amap.com/v3/config/district?key="+ak+"&keywords="+citycode+"&subdistrict=0&extensions=all" print(districtBoundryUrl) districtBoundryUrl = quote(districtBoundryUrl, safe=string.printable) json_obj = urllib.request.urlopen(districtBoundryUrl) # json_obj = response.read().decode('utf-8','ignore').replace(u'\xa9', u'') json_data=json.load(json_obj) districts=json_data['districts'] try: polyline = districts[0]['polyline'] centerLon=districts[0]['center'].split(',')[0] centerLat=districts[0]['center'].split(',')[1] except Exception as e: print("error!") pointscoords=polyline.split(';') point=basics.PointWithAttr(0,centerLon,centerLat,"行政区域",citycode) districtBoundry=basics.BoundryWithAttr(point,pointscoords) return districtBoundry 
ak = "放上你的ak就行" citycodes={ 
   '上城区':'','下城区':'','江干区':'',"拱墅区":'',"西湖区":'','滨江区':'', '萧山区':'','余杭区':'','富阳区':'','临安区':'','桐庐县':'','淳安县':'', '建德市':''} polygon_list = [] centerX_list = [] centerY_list = [] for citycode in citycodes.keys(): districtBoundry = getDistrictBoundry(ak,citycode) tmp = districtBoundry.boundrycoords for i in range(len(tmp)): tmp[i] = [float(tmp[i].split(',')[0]) , float(tmp[i].split(',')[1])] tmp = Polygon(tmp) polygon_list.append(tmp) centerX_list.append(districtBoundry.point.lon) centerY_list.append(districtBoundry.point.lat) 
讯享网# 将爬取得到的杭州市行政区保存为shp文件 gdf = { 
   'geometry':polygon_list , 'centerLon':centerX_list , 'centerLat':centerY_list , 'name':citycodes.keys(),'adacode':citycodes.values()} gdf = gpd.GeoDataFrame(gdf , crs = None) gdf 
小讯
上一篇 2025-03-05 18:30
下一篇 2025-03-12 07:55

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/126359.html