如何统计特定县内Google Maps标记的公园数量?
解决指定县内Google Maps公园统计的思路
核心问题拆解
要完成这个统计,关键解决两个问题:获取目标县的精准边界范围,以及在该范围内准确搜索并过滤公园地点。
方案一:全Google API实现(无需外部数据源)
步骤1:定位目标县的地理信息
调用Google Geocoding API,传入县的完整名称(比如address=XX县, XX省, 中国),或者用components参数精准限定(components=administrative_area_level_2:XX县|country:CN),获取以下关键信息:
- 县的中心坐标(
geometry.location) - 县的矩形视口范围(
geometry.viewport,包含西南、东北两个坐标) - 县的行政标识(
address_components中administrative_area_level_2的名称,用于后续验证)
步骤2:搜索县范围内的公园
调用Google Places API的Nearby Search接口,参数设置:
location:县的中心坐标bounds:传入步骤1获取的viewport西南、东北坐标,限定搜索范围为县的矩形区域type=park:指定搜索地点类型为公园- 处理分页:Nearby Search每次最多返回20条结果,通过
next_page_token循环调用,获取所有符合条件的公园结果,记录每个公园的place_id(用于去重)和坐标。
步骤3:过滤出县内的公园
由于矩形视口可能包含县外区域,需要对每个搜索到的公园做精准验证:
调用Google Reverse Geocoding API,传入公园的坐标,检查返回的address_components中是否包含目标县的administrative_area_level_2信息。如果匹配,则计入统计。
成本优化提示
- 优先用
bounds而非radius参数,缩小搜索范围,减少返回结果数量,降低后续Reverse Geocoding的调用次数 - 利用
place_id去重,避免重复调用API验证同一个公园
方案二:结合开源行政边界数据(降低API成本)
如果不想过多依赖Reverse Geocoding的API调用,可以用开源行政边界数据替代:
步骤1:获取县的边界多边形
从开源数据源下载目标县的shapefile行政边界数据,通过地理处理工具(比如Python的geopandas库)提取出边界的经纬度多边形坐标集合。
步骤2:搜索公园并做空间判断
- 同方案一的步骤2,用Places Nearby Search获取矩形范围内的所有公园
- 对每个公园的坐标,用点-in-polygon算法(比如
shapely库的within方法)判断是否在县的边界多边形内,符合条件的计入统计
注意事项
- Google Places API有调用频次和配额限制,提前估算所需调用量,避免超出免费额度或产生意外费用
- 部分偏远地区的公园可能未被Google Maps收录,统计结果会存在一定误差
- 确保Geocoding时的县名准确,避免定位到同名的其他行政区域
内容的提问来源于stack exchange,提问作者Jerry Zhang
相关产品推荐
相关产品推荐

